diff --git a/.dorpsgek.yml b/.dorpsgek.yml index 4b09738b87..2a1dc5f0f5 100644 --- a/.dorpsgek.yml +++ b/.dorpsgek.yml @@ -14,3 +14,7 @@ notifications: pull-request: issue: tag-created: + workflow-run: + only: + - .github/workflows/release.yml + - .github/workflows/ci-nightly.yml diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 2183044d93..bc833cbc7c 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -1,4 +1,4 @@ -name: CI +name: CI - Build on: pull_request: @@ -17,79 +17,22 @@ jobs: emscripten: name: Emscripten - runs-on: ubuntu-20.04 - container: - # If you change this version, change the number in the cache step too. - image: emscripten/emsdk:3.1.42 - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup cache - uses: actions/cache@v4 - with: - path: /emsdk/upstream/emscripten/cache - key: 3.1.42-${{ runner.os }} - - - name: Patch Emscripten to support LZMA - run: | - cd /emsdk/upstream/emscripten - patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch - - - name: Build (host tools) - run: | - mkdir build-host - cd build-host - - echo "::group::CMake" - cmake .. -DOPTION_TOOLS_ONLY=ON - echo "::endgroup::" - - echo "::group::Build" - echo "Running on $(nproc) cores" - cmake --build . -j $(nproc) --target tools - echo "::endgroup::" - - - name: Install GCC problem matcher - uses: ammaraskar/gcc-problem-matcher@master - - - name: Build - run: | - mkdir build - cd build - - echo "::group::CMake" - emcmake cmake .. -DHOST_BINARY_DIR=../build-host - echo "::endgroup::" - - echo "::group::Build" - echo "Running on $(nproc) cores" - cmake --build . -j $(nproc) --target openttd - echo "::endgroup::" + uses: ./.github/workflows/ci-emscripten.yml + secrets: inherit linux: strategy: fail-fast: false matrix: include: - - name: Clang - Debug + - name: Clang compiler: clang-15 cxxcompiler: clang++-15 libraries: libsdl2-dev - - name: Clang - Release - compiler: clang-15 - cxxcompiler: clang++-15 - libraries: libsdl2-dev - extra-cmake-parameters: -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPTION_USE_ASSERTS=OFF - name: GCC - SDL2 compiler: gcc cxxcompiler: g++ libraries: libsdl2-dev - - name: GCC - SDL1.2 - compiler: gcc - cxxcompiler: g++ - libraries: libsdl1.2-dev - name: GCC - Dedicated compiler: gcc cxxcompiler: g++ @@ -99,317 +42,57 @@ jobs: name: Linux (${{ matrix.name }}) - runs-on: ubuntu-latest - env: - CC: ${{ matrix.compiler }} - CXX: ${{ matrix.cxxcompiler }} + uses: ./.github/workflows/ci-linux.yml + secrets: inherit - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup vcpkg caching - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install dependencies - run: | - echo "::group::Update apt" - sudo apt-get update - echo "::endgroup::" - - echo "::group::Install dependencies" - sudo apt-get install -y --no-install-recommends \ - liballegro4-dev \ - libcurl4-openssl-dev \ - libfontconfig-dev \ - libharfbuzz-dev \ - libicu-dev \ - liblzma-dev \ - liblzo2-dev \ - ${{ matrix.libraries }} \ - zlib1g-dev \ - # EOF - - echo "::group::Install vcpkg dependencies" - - # Disable vcpkg integration, as we mostly use system libraries. - mv vcpkg.json vcpkg-disabled.json - - # We only use breakpad from vcpkg, as its CMake files - # are a bit special. So the Ubuntu's variant doesn't work. - vcpkg install breakpad - - echo "::endgroup::" - env: - DEBIAN_FRONTEND: noninteractive - - - name: Get OpenGFX - run: | - mkdir -p ~/.local/share/openttd/baseset - cd ~/.local/share/openttd/baseset - - echo "::group::Download OpenGFX" - curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip - echo "::endgroup::" - - echo "::group::Unpack OpenGFX" - unzip opengfx-all.zip - echo "::endgroup::" - - rm -f opengfx-all.zip - - - name: Install GCC problem matcher - uses: ammaraskar/gcc-problem-matcher@master - - - name: Build - run: | - mkdir build - cd build - - echo "::group::CMake" - cmake .. -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake ${{ matrix.extra-cmake-parameters }} - echo "::endgroup::" - - echo "::group::Build" - echo "Running on $(nproc) cores" - cmake --build . -j $(nproc) - echo "::endgroup::" - - - name: Test - run: | - ( - cd build - ctest -j $(nproc) --timeout 120 - ) - - # Re-enable vcpkg. - mv vcpkg-disabled.json vcpkg.json - - # Check no tracked files have been modified. - git diff --exit-code + with: + compiler: ${{ matrix.compiler }} + cxxcompiler: ${{ matrix.cxxcompiler }} + libraries: ${{ matrix.libraries }} + extra-cmake-parameters: ${{ matrix.extra-cmake-parameters }} macos: strategy: fail-fast: false matrix: include: - - arch: x64 - full_arch: x86_64 + - name: arm64 - Debug + arch: arm64 + full_arch: arm64 + extra-cmake-parameters: -DCMAKE_BUILD_TYPE=Debug + - name: arm64 - Release + arch: arm64 + full_arch: arm64 + extra-cmake-parameters: -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPTION_USE_ASSERTS=OFF - name: Mac OS (${{ matrix.arch }}) + name: Mac OS (${{ matrix.name }}) - runs-on: macos-latest - env: - MACOSX_DEPLOYMENT_TARGET: 10.13 + uses: ./.github/workflows/ci-macos.yml + secrets: inherit - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup vcpkg caching - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install OpenGFX - run: | - mkdir -p ~/Documents/OpenTTD/baseset - cd ~/Documents/OpenTTD/baseset - - echo "::group::Download OpenGFX" - curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip - echo "::endgroup::" - - echo "::group::Unpack OpenGFX" - unzip opengfx-all.zip - echo "::endgroup::" - - rm -f opengfx-all.zip - - - name: Install GCC problem matcher - uses: ammaraskar/gcc-problem-matcher@master - - - name: Build - run: | - mkdir build - cd build - - echo "::group::CMake" - cmake .. \ - -DCMAKE_OSX_ARCHITECTURES=${{ matrix.full_arch }} \ - -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-osx \ - -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \ - # EOF - echo "::endgroup::" - - echo "::group::Build" - echo "Running on $(sysctl -n hw.logicalcpu) cores" - cmake --build . -j $(sysctl -n hw.logicalcpu) - echo "::endgroup::" - - - name: Test - run: | - cd build - ctest -j $(sysctl -n hw.logicalcpu) --timeout 120 + with: + arch: ${{ matrix.arch }} + full_arch: ${{ matrix.full_arch }} + extra-cmake-parameters: ${{ matrix.extra-cmake-parameters }} windows: - strategy: - fail-fast: false - matrix: - os: [windows-latest, windows-2019] - arch: [x86, x64] - - name: Windows (${{ matrix.os }} / ${{ matrix.arch }}) - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup vcpkg caching - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install OpenGFX - shell: bash - run: | - mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset" - cd "C:/Users/Public/Documents/OpenTTD/baseset" - - echo "::group::Download OpenGFX" - curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip - echo "::endgroup::" - - echo "::group::Unpack OpenGFX" - unzip opengfx-all.zip - echo "::endgroup::" - - rm -f opengfx-all.zip - - - name: Install MSVC problem matcher - uses: ammaraskar/msvc-problem-matcher@master - - - name: Configure developer command prompt for ${{ matrix.arch }} - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: ${{ matrix.arch }} - - - name: Build - shell: bash - env: - NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] " - run: | - mkdir build - cd build - - echo "::group::CMake" - cmake .. \ - -GNinja \ - -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \ - -DCMAKE_TOOLCHAIN_FILE="c:\vcpkg\scripts\buildsystems\vcpkg.cmake" \ - # EOF - echo "::endgroup::" - - echo "::group::Build" - cmake --build . - echo "::endgroup::" - - - name: Test - shell: bash - run: | - cd build - ctest --timeout 120 - - - msys2: strategy: fail-fast: false matrix: include: - - msystem: MINGW64 - arch: x86_64 - - msystem: MINGW32 - arch: i686 + - os: windows-latest + arch: x86 + - os: windows-latest + arch: x64 - name: MinGW (${{ matrix.arch }}) + name: Windows (${{ matrix.arch }}) - runs-on: windows-latest + uses: ./.github/workflows/ci-windows.yml + secrets: inherit - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup MSYS2 - uses: msys2/setup-msys2@v2 - with: - msystem: ${{ matrix.msystem }} - release: false - install: >- - git - make - mingw-w64-${{ matrix.arch }}-cmake - mingw-w64-${{ matrix.arch }}-gcc - mingw-w64-${{ matrix.arch }}-lzo2 - mingw-w64-${{ matrix.arch }}-libpng - mingw-w64-${{ matrix.arch }}-lld - mingw-w64-${{ matrix.arch }}-ninja - - - name: Install OpenGFX - shell: bash - run: | - mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset" - cd "C:/Users/Public/Documents/OpenTTD/baseset" - - echo "::group::Download OpenGFX" - curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip - echo "::endgroup::" - - echo "::group::Unpack OpenGFX" - unzip opengfx-all.zip - echo "::endgroup::" - - rm -f opengfx-all.zip - - - name: Install GCC problem matcher - uses: ammaraskar/gcc-problem-matcher@master - - - name: Build - shell: msys2 {0} - env: - NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] " - run: | - mkdir build - cd build - - echo "::group::CMake" - cmake .. \ - -GNinja \ - -DCMAKE_CXX_FLAGS="-fuse-ld=lld" \ - # EOF - echo "::endgroup::" - - echo "::group::Build" - cmake --build . - echo "::endgroup::" - - - name: Test - shell: msys2 {0} - run: | - cd build - ctest --timeout 120 + with: + os: ${{ matrix.os }} + arch: ${{ matrix.arch }} check_annotations: name: Check Annotations @@ -418,7 +101,6 @@ jobs: - linux - macos - windows - - msys2 if: always() && github.event_name == 'pull_request' diff --git a/.github/workflows/ci-emscripten.yml b/.github/workflows/ci-emscripten.yml new file mode 100644 index 0000000000..6e39fcf087 --- /dev/null +++ b/.github/workflows/ci-emscripten.yml @@ -0,0 +1,65 @@ +name: CI (Emscripten) + +on: + workflow_call: + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + emscripten: + name: CI + + runs-on: ubuntu-20.04 + container: + # If you change this version, change the number in the cache step too. + image: emscripten/emsdk:3.1.57 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Fix dubious ownership + run: | + git config --global --add safe.directory ${GITHUB_WORKSPACE} + + - name: Setup cache + uses: actions/cache@v4 + with: + path: /emsdk/upstream/emscripten/cache + key: 3.1.57-${{ runner.os }} + + - name: Add liblzma support + run: | + cp ${GITHUB_WORKSPACE}/os/emscripten/ports/liblzma.py /emsdk/upstream/emscripten/tools/ports/contrib/ + + - name: Build (host tools) + run: | + mkdir build-host + cd build-host + + echo "::group::CMake" + cmake .. -DOPTION_TOOLS_ONLY=ON + echo "::endgroup::" + + echo "::group::Build" + echo "Running on $(nproc) cores" + cmake --build . -j $(nproc) --target tools + echo "::endgroup::" + + - name: Install GCC problem matcher + uses: ammaraskar/gcc-problem-matcher@master + + - name: Build + run: | + mkdir build + cd build + + echo "::group::CMake" + emcmake cmake .. -DHOST_BINARY_DIR=../build-host + echo "::endgroup::" + + echo "::group::Build" + echo "Running on $(nproc) cores" + cmake --build . -j $(nproc) --target openttd + echo "::endgroup::" diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml new file mode 100644 index 0000000000..bfe345412a --- /dev/null +++ b/.github/workflows/ci-linux.yml @@ -0,0 +1,123 @@ +name: CI (Linux) + +on: + workflow_call: + inputs: + compiler: + required: true + type: string + cxxcompiler: + required: true + type: string + libraries: + required: true + type: string + extra-cmake-parameters: + required: true + type: string + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + linux: + name: CI + + runs-on: ubuntu-latest + env: + CC: ${{ inputs.compiler }} + CXX: ${{ inputs.cxxcompiler }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup vcpkg caching + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg + ${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics + + - name: Install dependencies + run: | + echo "::group::Update apt" + sudo apt-get update + echo "::endgroup::" + + echo "::group::Install dependencies" + sudo apt-get install -y --no-install-recommends \ + liballegro4-dev \ + libcurl4-openssl-dev \ + libfontconfig-dev \ + libharfbuzz-dev \ + libicu-dev \ + liblzma-dev \ + liblzo2-dev \ + ${{ inputs.libraries }} \ + zlib1g-dev \ + # EOF + + echo "::group::Install vcpkg dependencies" + + # Disable vcpkg integration, as we mostly use system libraries. + mv vcpkg.json vcpkg-disabled.json + + # We only use breakpad from vcpkg, as its CMake files + # are a bit special. So the Ubuntu's variant doesn't work. + ${{ runner.temp }}/vcpkg/vcpkg install breakpad + + echo "::endgroup::" + env: + DEBIAN_FRONTEND: noninteractive + + - name: Get OpenGFX + run: | + mkdir -p ~/.local/share/openttd/baseset + cd ~/.local/share/openttd/baseset + + echo "::group::Download OpenGFX" + curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip + echo "::endgroup::" + + echo "::group::Unpack OpenGFX" + unzip opengfx-all.zip + echo "::endgroup::" + + rm -f opengfx-all.zip + + - name: Install GCC problem matcher + uses: ammaraskar/gcc-problem-matcher@master + + - name: Build + run: | + mkdir build + cd build + + echo "::group::CMake" + cmake .. -DCMAKE_TOOLCHAIN_FILE=${{ runner.temp }}/vcpkg/scripts/buildsystems/vcpkg.cmake ${{ inputs.extra-cmake-parameters }} + echo "::endgroup::" + + echo "::group::Build" + echo "Running on $(nproc) cores" + cmake --build . -j $(nproc) + echo "::endgroup::" + + - name: Test + run: | + ( + cd build + ctest -j $(nproc) --timeout 120 + ) + + # Re-enable vcpkg. + mv vcpkg-disabled.json vcpkg.json + + # Check no tracked files have been modified. + git diff --exit-code diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml new file mode 100644 index 0000000000..f4cabfddf5 --- /dev/null +++ b/.github/workflows/ci-macos.yml @@ -0,0 +1,90 @@ +name: CI (MacOS) + +on: + workflow_call: + inputs: + arch: + required: true + type: string + full_arch: + required: true + type: string + extra-cmake-parameters: + required: false + type: string + default: "" + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + macos: + name: CI + + runs-on: macos-14 + env: + MACOSX_DEPLOYMENT_TARGET: 10.13 + + steps: + - name: Setup Xcode version + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup vcpkg caching + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg + ${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics + + - name: Install OpenGFX + run: | + mkdir -p ~/Documents/OpenTTD/baseset + cd ~/Documents/OpenTTD/baseset + + echo "::group::Download OpenGFX" + curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip + echo "::endgroup::" + + echo "::group::Unpack OpenGFX" + unzip opengfx-all.zip + echo "::endgroup::" + + rm -f opengfx-all.zip + + - name: Install GCC problem matcher + uses: ammaraskar/gcc-problem-matcher@master + + - name: Build + run: | + mkdir build + cd build + + echo "::group::CMake" + cmake .. \ + -DCMAKE_OSX_ARCHITECTURES=${{ inputs.full_arch }} \ + -DVCPKG_TARGET_TRIPLET=${{ inputs.arch }}-osx \ + -DCMAKE_TOOLCHAIN_FILE=${{ runner.temp }}/vcpkg/scripts/buildsystems/vcpkg.cmake \ + ${{ inputs.extra-cmake-parameters }} \ + # EOF + echo "::endgroup::" + + echo "::group::Build" + echo "Running on $(sysctl -n hw.logicalcpu) cores" + cmake --build . -j $(sysctl -n hw.logicalcpu) + echo "::endgroup::" + + - name: Test + run: | + cd build + ctest -j $(sysctl -n hw.logicalcpu) --timeout 120 diff --git a/.github/workflows/ci-mingw.yml b/.github/workflows/ci-mingw.yml new file mode 100644 index 0000000000..6a244ee6b4 --- /dev/null +++ b/.github/workflows/ci-mingw.yml @@ -0,0 +1,83 @@ +name: CI (MinGW) + +on: + workflow_call: + inputs: + arch: + required: true + type: string + msystem: + required: true + type: string + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + mingw: + name: CI + + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup MSYS2 + uses: msys2/setup-msys2@v2 + with: + msystem: ${{ inputs.msystem }} + release: false + install: >- + git + make + mingw-w64-${{ inputs.arch }}-cmake + mingw-w64-${{ inputs.arch }}-gcc + mingw-w64-${{ inputs.arch }}-lzo2 + mingw-w64-${{ inputs.arch }}-libpng + mingw-w64-${{ inputs.arch }}-lld + mingw-w64-${{ inputs.arch }}-ninja + + - name: Install OpenGFX + shell: bash + run: | + mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset" + cd "C:/Users/Public/Documents/OpenTTD/baseset" + + echo "::group::Download OpenGFX" + curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip + echo "::endgroup::" + + echo "::group::Unpack OpenGFX" + unzip opengfx-all.zip + echo "::endgroup::" + + rm -f opengfx-all.zip + + - name: Install GCC problem matcher + uses: ammaraskar/gcc-problem-matcher@master + + - name: Build + shell: msys2 {0} + env: + NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] " + run: | + mkdir build + cd build + + echo "::group::CMake" + cmake .. \ + -GNinja \ + -DCMAKE_CXX_FLAGS="-fuse-ld=lld" \ + # EOF + echo "::endgroup::" + + echo "::group::Build" + cmake --build . + echo "::endgroup::" + + - name: Test + shell: msys2 {0} + run: | + cd build + ctest --timeout 120 diff --git a/.github/workflows/ci-nightly.yml b/.github/workflows/ci-nightly.yml new file mode 100644 index 0000000000..15bc55a97c --- /dev/null +++ b/.github/workflows/ci-nightly.yml @@ -0,0 +1,82 @@ +name: CI - Nightly + +on: + schedule: + - cron: '0 3 * * *' + workflow_dispatch: + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + linux: + strategy: + fail-fast: false + matrix: + include: + - name: GCC - SDL1.2 + compiler: gcc + cxxcompiler: g++ + libraries: libsdl1.2-dev + + name: Linux (${{ matrix.name }}) + + uses: ./.github/workflows/ci-linux.yml + secrets: inherit + + with: + compiler: ${{ matrix.compiler }} + cxxcompiler: ${{ matrix.cxxcompiler }} + libraries: ${{ matrix.libraries }} + extra-cmake-parameters: + + macos: + strategy: + fail-fast: false + matrix: + include: + - arch: x64 + full_arch: x86_64 + + name: Mac OS (${{ matrix.arch }}) + + uses: ./.github/workflows/ci-macos.yml + secrets: inherit + + with: + arch: ${{ matrix.arch }} + full_arch: ${{ matrix.full_arch }} + + mingw: + strategy: + fail-fast: false + matrix: + include: + - msystem: MINGW64 + arch: x86_64 + - msystem: MINGW32 + arch: i686 + + name: MinGW (${{ matrix.arch }}) + + uses: ./.github/workflows/ci-mingw.yml + secrets: inherit + + with: + msystem: ${{ matrix.msystem }} + arch: ${{ matrix.arch }} + + check_annotations: + name: Check Annotations + needs: + - linux + - macos + - mingw + + if: always() + + runs-on: ubuntu-latest + + steps: + - name: Check annotations + uses: OpenTTD/actions/annotation-check@v5 diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml new file mode 100644 index 0000000000..b748e8db2e --- /dev/null +++ b/.github/workflows/ci-windows.yml @@ -0,0 +1,87 @@ +name: CI (Windows) + +on: + workflow_call: + inputs: + arch: + required: true + type: string + os: + required: true + type: string + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + windows: + name: CI + + runs-on: ${{ inputs.os }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup vcpkg caching + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}\vcpkg + ${{ runner.temp }}\vcpkg\bootstrap-vcpkg.bat -disableMetrics + + - name: Install OpenGFX + shell: bash + run: | + mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset" + cd "C:/Users/Public/Documents/OpenTTD/baseset" + + echo "::group::Download OpenGFX" + curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip + echo "::endgroup::" + + echo "::group::Unpack OpenGFX" + unzip opengfx-all.zip + echo "::endgroup::" + + rm -f opengfx-all.zip + + - name: Install MSVC problem matcher + uses: ammaraskar/msvc-problem-matcher@master + + - name: Configure developer command prompt for ${{ inputs.arch }} + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ inputs.arch }} + + - name: Build + shell: bash + env: + NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] " + run: | + mkdir build + cd build + + echo "::group::CMake" + cmake .. \ + -GNinja \ + -DVCPKG_TARGET_TRIPLET=${{ inputs.arch }}-windows-static \ + -DCMAKE_TOOLCHAIN_FILE="${{ runner.temp }}\vcpkg\scripts\buildsystems\vcpkg.cmake" \ + # EOF + echo "::endgroup::" + + echo "::group::Build" + cmake --build . + echo "::endgroup::" + + - name: Test + shell: bash + run: | + cd build + ctest --timeout 120 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c5a432d80b..4d10111a4e 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -26,6 +26,19 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Setup vcpkg caching + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg + ${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics + - name: Install dependencies run: | echo "::group::Update apt" @@ -44,13 +57,28 @@ jobs: libsdl2-dev \ zlib1g-dev \ # EOF + + echo "::group::Install vcpkg dependencies" + + # Disable vcpkg integration, as we mostly use system libraries. + mv vcpkg.json vcpkg-disabled.json + + # We only use breakpad from vcpkg, as its CMake files + # are a bit special. So the Ubuntu's variant doesn't work. + ${{ runner.temp }}/vcpkg/vcpkg install breakpad + echo "::endgroup::" env: DEBIAN_FRONTEND: noninteractive - - name: Set number of make jobs + - name: Prepare build run: | - echo "MAKEFLAGS=-j$(nproc)" >> $GITHUB_ENV + mkdir build + cd build + + echo "::group::CMake" + cmake .. -DCMAKE_TOOLCHAIN_FILE=${{ runner.temp }}/vcpkg/scripts/buildsystems/vcpkg.cmake + echo "::endgroup::" - name: Initialize CodeQL uses: github/codeql-action/init@v3 @@ -58,8 +86,14 @@ jobs: languages: cpp config-file: ./.github/codeql/codeql-config.yml - - name: Autobuild - uses: github/codeql-action/autobuild@v3 + - name: Build + run: | + cd build + + echo "::group::Build" + echo "Running on $(nproc) cores" + cmake --build . -j $(nproc) + echo "::endgroup::" - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/preview-build.yml b/.github/workflows/preview-build.yml index 0bb79ed4b9..9cf6e9573c 100644 --- a/.github/workflows/preview-build.yml +++ b/.github/workflows/preview-build.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest container: # If you change this version, change the number in the cache step too. - image: emscripten/emsdk:3.1.42 + image: emscripten/emsdk:3.1.57 steps: - name: Checkout @@ -38,12 +38,11 @@ jobs: uses: actions/cache@v4 with: path: /emsdk/upstream/emscripten/cache - key: 3.1.42-${{ runner.os }} + key: 3.1.57-${{ runner.os }} - - name: Patch Emscripten to support LZMA + - name: Add liblzma support run: | - cd /emsdk/upstream/emscripten - patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch + cp ${GITHUB_WORKSPACE}/os/emscripten/ports/liblzma.py /emsdk/upstream/emscripten/tools/ports/contrib/ - name: Build (host tools) run: | diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 97ab31955b..bfbe13cacc 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -7,6 +7,7 @@ on: - synchronize branches: - master + - release/** concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number }} diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index d3e0ea776c..c5ce597f4c 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -124,7 +124,7 @@ jobs: ) echo "::group::Install breakpad dependencies" - cargo install dump_syms + cargo install --locked dump_syms echo "::endgroup::" - name: Install GCC problem matcher diff --git a/.github/workflows/release-macos.yml b/.github/workflows/release-macos.yml index 6e673f2d8b..7859af6e68 100644 --- a/.github/workflows/release-macos.yml +++ b/.github/workflows/release-macos.yml @@ -12,11 +12,16 @@ jobs: macos: name: MacOS - runs-on: macos-latest + runs-on: macos-14 env: MACOSX_DEPLOYMENT_TARGET: 10.13 steps: + - name: Setup Xcode version + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + - name: Download source uses: actions/download-artifact@v4 with: @@ -40,6 +45,11 @@ jobs: core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg + ${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics + - name: Install dependencies env: HOMEBREW_NO_AUTO_UPDATE: 1 @@ -52,7 +62,7 @@ jobs: echo "::endgroup::" echo "::group::Install breakpad dependencies" - cargo install dump_syms + cargo install --locked dump_syms echo "::endgroup::" - name: Install GCC problem matcher @@ -76,7 +86,7 @@ jobs: echo "::endgroup::" - name: Import code signing certificates - uses: Apple-Actions/import-codesign-certs@v2 + uses: Apple-Actions/import-codesign-certs@v3 with: # The certificates in a PKCS12 file encoded as a base64 string p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }} @@ -94,7 +104,7 @@ jobs: cmake ${GITHUB_WORKSPACE} \ -DCMAKE_OSX_ARCHITECTURES=arm64 \ -DVCPKG_TARGET_TRIPLET=arm64-osx \ - -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DCMAKE_TOOLCHAIN_FILE=${{ runner.temp }}/vcpkg/scripts/buildsystems/vcpkg.cmake \ -DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \ @@ -115,7 +125,7 @@ jobs: cmake ${GITHUB_WORKSPACE} \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DVCPKG_TARGET_TRIPLET=x64-osx \ - -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DCMAKE_TOOLCHAIN_FILE=${{ runner.temp }}/vcpkg/scripts/buildsystems/vcpkg.cmake \ -DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \ diff --git a/.github/workflows/release-windows.yml b/.github/workflows/release-windows.yml index 5b5f6cd1d4..d47b3645e5 100644 --- a/.github/workflows/release-windows.yml +++ b/.github/workflows/release-windows.yml @@ -53,6 +53,11 @@ jobs: core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}\vcpkg + ${{ runner.temp }}\vcpkg\bootstrap-vcpkg.bat -disableMetrics + - name: Install dependencies shell: bash run: | @@ -61,7 +66,7 @@ jobs: echo "::endgroup::" echo "::group::Install breakpad dependencies" - cargo install dump_syms + cargo install --locked dump_syms echo "::endgroup::" - name: Install MSVC problem matcher @@ -95,21 +100,6 @@ jobs: with: arch: ${{ matrix.host }} - - name: Import code signing certificate - shell: powershell - # If this is run on a fork, there may not be a certificate set up - continue in this case - continue-on-error: true - run: | - $tempFile = [System.IO.Path]::GetTempFileName() - $bytes = [System.Convert]::FromBase64String($env:WINDOWS_CERTIFICATE_P12) - [IO.File]::WriteAllBytes($tempFile, $bytes) - $pwd = ConvertTo-SecureString $env:WINDOWS_CERTIFICATE_PASSWORD -AsPlainText -Force - Import-PfxCertificate -FilePath $tempFile -CertStoreLocation Cert:\CurrentUser\My -Password $pwd - Remove-Item $tempFile - env: - WINDOWS_CERTIFICATE_P12: ${{ secrets.WINDOWS_CERTIFICATE_P12 }} - WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }} - - name: Build (with installer) if: inputs.is_tag == 'true' shell: bash @@ -121,12 +111,11 @@ jobs: cmake ${GITHUB_WORKSPACE} \ -GNinja \ -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \ - -DCMAKE_TOOLCHAIN_FILE="c:\vcpkg\scripts\buildsystems\vcpkg.cmake" \ + -DCMAKE_TOOLCHAIN_FILE="${{ runner.temp }}\vcpkg\scripts\buildsystems\vcpkg.cmake" \ -DOPTION_USE_NSIS=ON \ -DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \ - -DWINDOWS_CERTIFICATE_COMMON_NAME="${WINDOWS_CERTIFICATE_COMMON_NAME}" \ # EOF echo "::endgroup::" @@ -134,7 +123,12 @@ jobs: cmake --build . --target openttd echo "::endgroup::" env: - WINDOWS_CERTIFICATE_COMMON_NAME: ${{ secrets.WINDOWS_CERTIFICATE_COMMON_NAME }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} + AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} + AZURE_CODESIGN_ACCOUNT_NAME: ${{ secrets.AZURE_CODESIGN_ACCOUNT_NAME }} + AZURE_CODESIGN_ENDPOINT: ${{ secrets.AZURE_CODESIGN_ENDPOINT }} + AZURE_CODESIGN_PROFILE_NAME: ${{ secrets.AZURE_CODESIGN_PROFILE_NAME }} - name: Build (without installer) if: inputs.is_tag != 'true' @@ -147,11 +141,10 @@ jobs: cmake ${GITHUB_WORKSPACE} \ -GNinja \ -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \ - -DCMAKE_TOOLCHAIN_FILE="c:\vcpkg\scripts\buildsystems\vcpkg.cmake" \ + -DCMAKE_TOOLCHAIN_FILE="${{ runner.temp }}\vcpkg\scripts\buildsystems\vcpkg.cmake" \ -DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \ - -DWINDOWS_CERTIFICATE_COMMON_NAME="${WINDOWS_CERTIFICATE_COMMON_NAME}" \ # EOF echo "::endgroup::" @@ -159,7 +152,12 @@ jobs: cmake --build . --target openttd echo "::endgroup::" env: - WINDOWS_CERTIFICATE_COMMON_NAME: ${{ secrets.WINDOWS_CERTIFICATE_COMMON_NAME }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} + AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} + AZURE_CODESIGN_ACCOUNT_NAME: ${{ secrets.AZURE_CODESIGN_ACCOUNT_NAME }} + AZURE_CODESIGN_ENDPOINT: ${{ secrets.AZURE_CODESIGN_ENDPOINT }} + AZURE_CODESIGN_PROFILE_NAME: ${{ secrets.AZURE_CODESIGN_PROFILE_NAME }} - name: Create breakpad symbols shell: bash @@ -193,13 +191,15 @@ jobs: - name: Sign installer if: inputs.is_tag == 'true' shell: bash - # If this is run on a fork, there may not be a certificate set up - continue in this case - continue-on-error: true run: | - cd ${GITHUB_WORKSPACE}/build/bundles - ../../os/windows/sign.bat *.exe "${WINDOWS_CERTIFICATE_COMMON_NAME}" + ${GITHUB_WORKSPACE}/os/windows/sign.bat "${GITHUB_WORKSPACE}/build/bundles" env: - WINDOWS_CERTIFICATE_COMMON_NAME: ${{ secrets.WINDOWS_CERTIFICATE_COMMON_NAME }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} + AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} + AZURE_CODESIGN_ACCOUNT_NAME: ${{ secrets.AZURE_CODESIGN_ACCOUNT_NAME }} + AZURE_CODESIGN_ENDPOINT: ${{ secrets.AZURE_CODESIGN_ENDPOINT }} + AZURE_CODESIGN_PROFILE_NAME: ${{ secrets.AZURE_CODESIGN_PROFILE_NAME }} - name: Store bundles uses: actions/upload-artifact@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 8569e5ec7b..487eb8520d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -343,7 +343,7 @@ if(NOT OPTION_DEDICATED) endif() endif() -include(CheckAtomic) +include(3rdparty/llvm/CheckAtomic) if(APPLE) link_package(Iconv TARGET Iconv::Iconv) diff --git a/CODINGSTYLE.md b/CODINGSTYLE.md index 263b495333..5b499a9bee 100644 --- a/CODINGSTYLE.md +++ b/CODINGSTYLE.md @@ -248,12 +248,46 @@ Templates are a very powerful C++ tool, but they can easily confuse beginners. T * Templates are to be documented in a very clear and verbose manner. Never assume anything in the documentation. * the template keyword and the template layout get a separate line. typenames are either "T" or preceded by a "T", integers get a single capital letter or a descriptive name preceded by "T". ```c++ -template +template int Func(); ``` * If you are writing one or more template class in the dedicated header file, use file.hpp for its name instead of file.h. This will let others know that it is template library (includes also implementation), not just header with declarations. +### Code Comment Vertical Alignment + +When adding code or comments to an existing formatted section, follow the existing style if possible without editing the preexisting lines. + +If your addition cannot be aligned with existing code, do not align the comments with anything and use only a single space between the code and the comment. + +Good: + +```c++ +enum Vehicle { + BUS, ///< Take the bus. ++ CAR, ///< Drive your car. + BIKE, ///< Ride your bike ++ TRAIN, ///< Catch the train. +} +``` + +"Car" is shorter than Bike which allows you to easily align the new comment. "Train" is longer. It is *NOT* desirable to change the vertical comment alignment of this enum. + +Bad: + +```c++ +enum Vehicle { +- BUS, ///< Take the bus. +- BIKE, ///< Ride your bike ++ BUS, ///< Take the bus. ++ CAR, ///< Drive your car. ++ BIKE, ///< Ride your bike ++ TRAIN, ///< Catch the train. +} +``` + +OpenTTD used to vertically-align inline Doxygen comments as shown above. OpenTTD has since stopped strictly following this rule to keep diffs smaller and reduce pollution to the git blame history for non-functional changes. + ### Other important rules * Put a space before and after binary operators: "a + b", "a == b", "a & b", "a <<= b", etc.. Exceptions are ".", "->" and "[]" (no spaces) and "," (just space after it). * Put parenthesis where it improves readability: "*(b++)" instead of "*b++", and "if ((a & b) && c == 2)" instead of "if (a & b && c == 2)". diff --git a/COMPILING.md b/COMPILING.md index 578b5e4568..74e816253e 100644 --- a/COMPILING.md +++ b/COMPILING.md @@ -29,7 +29,7 @@ open most older savegames or use the content downloading system. ## Windows -You need Microsoft Visual Studio 2017 or more recent. +You need Microsoft Visual Studio 2022 or more recent. You can download the free Visual Studio Community Edition from Microsoft at https://visualstudio.microsoft.com/vs/community/. @@ -65,7 +65,7 @@ To install both the x64 (64bit) and x86 (32bit) variants (though only one is nec You can open the folder (as a CMake project). CMake will be detected, and you can compile from there. If libraries are installed but not found, you need to set VCPKG_TARGET_TRIPLET in CMake parameters. -For Visual Studio 2017 you also need to set CMAKE_TOOLCHAIN_FILE. +For Visual Studio 2022 you also need to set CMAKE_TOOLCHAIN_FILE. (Typical values are shown in the MSVC project file command line example) Alternatively, you can create a MSVC project file via CMake. For this @@ -75,7 +75,7 @@ that comes with vcpkg. After that, you can run something similar to this: ```powershell mkdir build cd build -cmake.exe .. -G"Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE="\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET="x64-windows-static" +cmake.exe .. -G"Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE="\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET="x64-windows-static" ``` Change `` to where you have installed vcpkg. After this @@ -83,7 +83,7 @@ in the build folder are MSVC project files. MSVC can rebuild the project files himself via the `ZERO_CHECK` project. ## All other platforms -Minimum required version of CMake is 3.9. +Minimum required version of CMake is 3.16. By default this produces a Debug build with assertations enabled. This is a far slower build than release builds. @@ -110,17 +110,14 @@ builds. - `-DOPTION_USE_ASSERTS=OFF`: disable asserts. Use with care, as assert statements capture early signs of trouble. Release builds have them disabled by default. -- `-DOPTION_USE_THREADS=OFF`: disable the use of threads. This will block - the interface in many places, and in general gives a worse experience of - the game. Use with care. - `-DOPTION_TOOLS_ONLY=ON`: only build tools like `strgen`. Does not build the game itself. Useful for cross-compiling. ## Supported compilers -Every compiler that is supported by CMake and supports C++17, should be +Every compiler that is supported by CMake and supports C++20, should be able to compile OpenTTD. As the exact list of compilers changes constantly, -we refer to the compiler manual to see if it supports C++17, and to CMake +we refer to the compiler manual to see if it supports C++20, and to CMake to see if it supports your compiler. ## Compilation of base sets diff --git a/CREDITS.md b/CREDITS.md index 1988223bf9..e8001f7e54 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -3,14 +3,15 @@ - Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3) - Christoph Elsenhans (frosch) - General coding (since 0.6) - Loïc Guilloux (glx) - General / Windows Expert (since 0.4.5) +- Koen Bussemaker (Kuhnovic) - General / Ship pathfinder (since 14) - Charles Pigott (LordAro) - General / Correctness police (since 1.9) - Michael Lutz (michi_cc) - General / Path based signals (since 0.7) - Niels Martin Hansen (nielsm) - Music system, general coding (since 1.9) - Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1) -- Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5) +- Peter Nelson (peter1138) - Spiritual descendant from NewGRF gods (since 0.4.5) - Remko Bijker (Rubidium) - Coder and way more (since 0.4.5) - Patric Stout (TrueBrain) - NoProgrammer (since 0.3), sys op -- Tyler Trahan (2TallTyler) - General coding (since 13) +- Tyler Trahan (2TallTyler) - General / Time Lord (since 13) ### Inactive Developers: diff --git a/Doxyfile.in b/Doxyfile.in index 4e287889af..0e8eee4b2e 100644 --- a/Doxyfile.in +++ b/Doxyfile.in @@ -3,6 +3,8 @@ # OpenTTD 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 OpenTTD. If not, see . +# Doxyfile 1.9.4 + #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- @@ -13,6 +15,7 @@ PROJECT_BRIEF = PROJECT_LOGO = OUTPUT_DIRECTORY = ${CPACK_BINARY_DIR}/docs/source/ CREATE_SUBDIRS = YES +CREATE_SUBDIRS_LEVEL = 8 ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES @@ -35,8 +38,10 @@ STRIP_FROM_PATH = ./ STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES +JAVADOC_BANNER = NO QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO +PYTHON_DOCSTRING = YES INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 2 @@ -45,6 +50,7 @@ OPTIMIZE_OUTPUT_FOR_C = YES OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO +OPTIMIZE_OUTPUT_SLICE = NO EXTENSION_MAPPING = MARKDOWN_SUPPORT = YES TOC_INCLUDE_HEADINGS = 0 @@ -60,16 +66,19 @@ INLINE_GROUPED_CLASSES = NO INLINE_SIMPLE_STRUCTS = NO TYPEDEF_HIDES_STRUCT = NO LOOKUP_CACHE_SIZE = 0 +NUM_PROC_THREADS = 1 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = NO EXTRACT_PRIVATE = YES +EXTRACT_PRIV_VIRTUAL = NO EXTRACT_PACKAGE = NO EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = YES EXTRACT_ANON_NSPACES = YES +RESOLVE_UNNAMED_PARAMS = YES HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO @@ -78,6 +87,7 @@ INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO HIDE_COMPOUND_REFERENCE= NO +SHOW_HEADERFILE = YES SHOW_INCLUDE_FILES = YES SHOW_GROUPED_MEMB_INC = NO FORCE_LOCAL_INCLUDES = NO @@ -107,9 +117,11 @@ QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES +WARN_IF_INCOMPLETE_DOC = YES WARN_NO_PARAMDOC = NO WARN_AS_ERROR = NO WARN_FORMAT = "$file:$line: $text" +WARN_LINE_FORMAT = "at line $line of file $file" WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files @@ -150,6 +162,10 @@ REFERENCES_LINK_SOURCE = YES SOURCE_TOOLTIPS = YES USE_HTAGS = NO VERBATIM_HEADERS = YES +CLANG_ASSISTED_PARSING = NO +CLANG_ADD_INC_PATHS = YES +CLANG_OPTIONS = +CLANG_DATABASE_PATH = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- @@ -175,6 +191,7 @@ HTML_DYNAMIC_SECTIONS = NO HTML_INDEX_NUM_ENTRIES = 100 GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_FEEDURL = DOCSET_BUNDLE_ID = org.doxygen.Project DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher @@ -197,12 +214,17 @@ GENERATE_ECLIPSEHELP = NO ECLIPSE_DOC_ID = org.doxygen.Project DISABLE_INDEX = NO GENERATE_TREEVIEW = YES +FULL_SIDEBAR = NO ENUM_VALUES_PER_LINE = 4 TREEVIEW_WIDTH = 250 EXT_LINKS_IN_WINDOW = NO +OBFUSCATE_EMAILS = YES +HTML_FORMULA_FORMAT = png FORMULA_FONTSIZE = 10 FORMULA_TRANSPARENT = YES +FORMULA_MACROFILE = USE_MATHJAX = NO +MATHJAX_VERSION = MathJax_2 MATHJAX_FORMAT = HTML-CSS MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/ MATHJAX_EXTENSIONS = @@ -221,6 +243,7 @@ GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex +LATEX_MAKEINDEX_CMD = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4 EXTRA_PACKAGES = @@ -232,9 +255,9 @@ PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO -LATEX_SOURCE_CODE = NO LATEX_BIB_STYLE = plain LATEX_TIMESTAMP = NO +LATEX_EMOJI_DIRECTORY = #--------------------------------------------------------------------------- # Configuration options related to the RTF output #--------------------------------------------------------------------------- @@ -244,7 +267,6 @@ COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = -RTF_SOURCE_CODE = NO #--------------------------------------------------------------------------- # Configuration options related to the man page output #--------------------------------------------------------------------------- @@ -259,12 +281,12 @@ MAN_LINKS = NO GENERATE_XML = NO XML_OUTPUT = xml XML_PROGRAMLISTING = YES +XML_NS_MEMB_FILE_SCOPE = NO #--------------------------------------------------------------------------- # Configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- GENERATE_DOCBOOK = NO DOCBOOK_OUTPUT = docbook -DOCBOOK_PROGRAMLISTING = NO #--------------------------------------------------------------------------- # Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- @@ -311,7 +333,6 @@ EXTERNAL_PAGES = YES #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES DIA_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO @@ -324,6 +345,8 @@ COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES UML_LOOK = NO UML_LIMIT_NUM_FIELDS = 10 +DOT_UML_DETAILS = NO +DOT_WRAP_THRESHOLD = 17 TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES @@ -331,6 +354,7 @@ CALL_GRAPH = NO CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES +DIR_GRAPH_MAX_DEPTH = 1 DOT_IMAGE_FORMAT = png INTERACTIVE_SVG = NO DOT_PATH = diff --git a/README.md b/README.md index 1943ed6bc3..96a3a6eb93 100644 --- a/README.md +++ b/README.md @@ -212,6 +212,9 @@ See `src/3rdparty/monocypher/LICENSE.md` for the complete license text. The OpenTTD Social Integration API in `src/3rdparty/openttd_social_integration_api` is licensed under the MIT license. See `src/3rdparty/openttd_social_integration_api/LICENSE` for the complete license text. +The atomic datatype support detection in `cmake/3rdparty/llvm/CheckAtomic.cmake` is licensed under the Apache 2.0 license. +See `cmake/3rdparty/llvm/LICENSE.txt` for the complete license text. + ## 4.0 Credits See [CREDITS.md](./CREDITS.md) diff --git a/cmake/CheckAtomic.cmake b/cmake/3rdparty/llvm/CheckAtomic.cmake similarity index 84% rename from cmake/CheckAtomic.cmake rename to cmake/3rdparty/llvm/CheckAtomic.cmake index 990c52c37c..86ab2ab136 100644 --- a/cmake/CheckAtomic.cmake +++ b/cmake/3rdparty/llvm/CheckAtomic.cmake @@ -1,3 +1,11 @@ +# +# This was originally part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See (https://llvm.org/)LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# +# Modifications have been made to suit building OpenTTD. +# + # atomic builtins are required for threading support. INCLUDE(CheckCXXSourceCompiles) @@ -48,6 +56,8 @@ else() check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB) # If not, check if the library exists, and atomics work with it. if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB) + # check_library_exists requires the C-compiler as the atomic functions are built-in declared. + enable_language(C) check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC) if(HAVE_LIBATOMIC) list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") @@ -69,6 +79,8 @@ else() check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB) # If not, check if the library exists, and atomics work with it. if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB) + # check_library_exists requires the C-compiler as the atomic functions are built-in declared. + enable_language(C) check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64) if(HAVE_CXX_LIBATOMICS64) list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") diff --git a/cmake/3rdparty/llvm/LICENSE.txt b/cmake/3rdparty/llvm/LICENSE.txt new file mode 100644 index 0000000000..fa6ac54000 --- /dev/null +++ b/cmake/3rdparty/llvm/LICENSE.txt @@ -0,0 +1,279 @@ +============================================================================== +The LLVM Project is under the Apache License v2.0 with LLVM Exceptions: +============================================================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +---- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +============================================================================== +Software from third parties included in the LLVM Project: +============================================================================== +The LLVM Project contains third party software which is under different license +terms. All such code will be identified clearly using at least one of two +mechanisms: +1) It will be in a separate directory tree with its own `LICENSE.txt` or + `LICENSE` file at the top containing the specific license and restrictions + which apply to that software, or +2) It will contain specific license and restriction terms at the top of every + file. + +============================================================================== +Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy): +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +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 disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +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 +CONTRIBUTORS 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 WITH THE +SOFTWARE. + diff --git a/cmake/CompileFlags.cmake b/cmake/CompileFlags.cmake index a85a915c3b..8da4be8bab 100644 --- a/cmake/CompileFlags.cmake +++ b/cmake/CompileFlags.cmake @@ -74,12 +74,6 @@ macro(compile_flags) # We use 'ABCD' multichar for SaveLoad chunks identifiers -Wno-multichar - - # Compilers complains about that we break strict-aliasing. - # On most places we don't see how to fix it, and it doesn't - # break anything. So disable strict-aliasing to make the - # compiler all happy. - -fno-strict-aliasing ) # Ninja processes the output so the output from the compiler diff --git a/cmake/InstallAndPackage.cmake b/cmake/InstallAndPackage.cmake index 9c9071fd00..feb0004d85 100644 --- a/cmake/InstallAndPackage.cmake +++ b/cmake/InstallAndPackage.cmake @@ -172,10 +172,10 @@ elseif(WIN32) set(CPACK_PACKAGE_FILE_NAME "openttd-#CPACK_PACKAGE_VERSION#-windows-${CPACK_SYSTEM_NAME}") - if(WINDOWS_CERTIFICATE_COMMON_NAME) + if(DEFINED ENV{AZURE_CODESIGN_PROFILE_NAME}) add_custom_command(TARGET openttd POST_BUILD - COMMAND "${CMAKE_SOURCE_DIR}/os/windows/sign.bat" "$" "${WINDOWS_CERTIFICATE_COMMON_NAME}" + COMMAND "${CMAKE_SOURCE_DIR}/os/windows/sign.bat" "${BINARY_DESTINATION_DIR}" ) endif() elseif(UNIX) diff --git a/cmake/Options.cmake b/cmake/Options.cmake index 3c8692fe4a..38d708c717 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -57,13 +57,6 @@ function(set_options) option(OPTION_DEDICATED "Build dedicated server only (no GUI)" OFF) option(OPTION_INSTALL_FHS "Install with Filesystem Hierarchy Standard folders" ${DEFAULT_OPTION_INSTALL_FHS}) option(OPTION_USE_ASSERTS "Use assertions; leave enabled for nightlies, betas, and RCs" ON) - if(EMSCRIPTEN) - # Although pthreads is supported, it is not in a way yet that is - # useful for us. - option(OPTION_USE_THREADS "Use threads" OFF) - else() - option(OPTION_USE_THREADS "Use threads" ON) - endif() option(OPTION_USE_NSIS "Use NSIS to create windows installer; enable only for stable releases" OFF) option(OPTION_TOOLS_ONLY "Build only tools target" OFF) option(OPTION_DOCS_ONLY "Build only docs target" OFF) @@ -85,7 +78,6 @@ function(show_options) message(STATUS "Option Dedicated - ${OPTION_DEDICATED}") message(STATUS "Option Install FHS - ${OPTION_INSTALL_FHS}") message(STATUS "Option Use assert - ${OPTION_USE_ASSERTS}") - message(STATUS "Option Use threads - ${OPTION_USE_THREADS}") message(STATUS "Option Use NSIS - ${OPTION_USE_NSIS}") if(OPTION_SURVEY_KEY) @@ -109,10 +101,6 @@ function(add_definitions_based_on_options) add_definitions(-DDEDICATED) endif() - if(NOT OPTION_USE_THREADS) - add_definitions(-DNO_THREADS) - endif() - if(OPTION_USE_ASSERTS) add_definitions(-DWITH_ASSERT) else() diff --git a/cmake/PackageBundle.cmake b/cmake/PackageBundle.cmake index 737f4809aa..e737c02005 100644 --- a/cmake/PackageBundle.cmake +++ b/cmake/PackageBundle.cmake @@ -4,6 +4,7 @@ set(CPACK_BUNDLE_NAME "OpenTTD") set(CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/os/macosx/openttd.icns") set(CPACK_BUNDLE_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist") set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/os/macosx/splash.png") +set(CPACK_BUNDLE_APPLE_ENTITLEMENTS "${CMAKE_SOURCE_DIR}/os/macosx/openttd.entitlements") set(CPACK_DMG_FORMAT "UDBZ") # Create a temporary Info.plist.in, where we will fill in the version via diff --git a/cmake/scripts/FindVersion.cmake b/cmake/scripts/FindVersion.cmake index c4ff99a7fd..5d53d89db5 100644 --- a/cmake/scripts/FindVersion.cmake +++ b/cmake/scripts/FindVersion.cmake @@ -49,14 +49,14 @@ if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git") string(SUBSTRING "${FULLHASH}" 0 10 SHORTHASH) # Get the last commit date - execute_process(COMMAND ${GIT_EXECUTABLE} show -s --pretty=format:%ci HEAD + set(ENV{TZ} "UTC0") + execute_process(COMMAND ${GIT_EXECUTABLE} show -s --date=iso-local --pretty=format:%cd HEAD OUTPUT_VARIABLE COMMITDATE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) string(REGEX REPLACE "([0-9]+)-([0-9]+)-([0-9]+).*" "\\1\\2\\3" COMMITDATE "${COMMITDATE}") set(REV_ISODATE "${COMMITDATE}") - string(SUBSTRING "${REV_ISODATE}" 0 4 REV_YEAR) # Get the branch execute_process(COMMAND ${GIT_EXECUTABLE} symbolic-ref -q HEAD @@ -113,7 +113,6 @@ elseif(EXISTS "${CMAKE_SOURCE_DIR}/.ottdrev") list(GET OTTDREV 3 REV_HASH) list(GET OTTDREV 4 REV_ISTAG) list(GET OTTDREV 5 REV_ISSTABLETAG) - list(GET OTTDREV 6 REV_YEAR) else() message(WARNING "No version detected; this build will NOT be network compatible") set(REV_VERSION "norev0000") @@ -122,14 +121,19 @@ else() set(REV_HASH "unknown") set(REV_ISTAG 0) set(REV_ISSTABLETAG 0) - set(REV_YEAR "1970") endif() +# Extract REV_YEAR and REV_DATE from REV_ISODATE +string(SUBSTRING "${REV_ISODATE}" 0 4 REV_YEAR) +string(SUBSTRING "${REV_ISODATE}" 4 4 REV_DATE) +# Drop leading 0 in REV_DATE if any +string(REGEX REPLACE "^0?([0-9]+)" "\\1" REV_DATE "${REV_DATE}") + message(STATUS "Version string: ${REV_VERSION}") if(GENERATE_OTTDREV) message(STATUS "Generating .ottdrev") - file(WRITE ${CMAKE_SOURCE_DIR}/.ottdrev "${REV_VERSION}\t${REV_ISODATE}\t${REV_MODIFIED}\t${REV_HASH}\t${REV_ISTAG}\t${REV_ISSTABLETAG}\t${REV_YEAR}\n") + file(WRITE ${CMAKE_SOURCE_DIR}/.ottdrev "${REV_VERSION}\t${REV_ISODATE}\t${REV_MODIFIED}\t${REV_HASH}\t${REV_ISTAG}\t${REV_ISSTABLETAG}\n") else() message(STATUS "Generating rev.cpp") configure_file("${CMAKE_SOURCE_DIR}/src/rev.cpp.in" diff --git a/cmake/scripts/GenerateWidget.cmake b/cmake/scripts/GenerateWidget.cmake index b6748422f5..ffa5e6edea 100644 --- a/cmake/scripts/GenerateWidget.cmake +++ b/cmake/scripts/GenerateWidget.cmake @@ -56,11 +56,14 @@ foreach(ENUM IN LISTS ENUM_LINES) endif() # Check for enum match - if("${LINE}" MATCHES "^ *enum *${ENUM_PATTERN} *\{") + if("${LINE}" MATCHES "^ *enum *${ENUM_PATTERN}( *: *[^ ]*)? *\{") # REGEX REPLACE does a REGEX MATCHALL and fails if an empty string is matched string(REGEX MATCH "[^ ]*" RESULT "${LINE}") string(REPLACE "${RESULT}" "" RM_INDENT "${LINE}") + string(REGEX MATCH " *: *[^ ]*" RESULT "${LINE}") + string(REPLACE "${RESULT}" "" LINE "${LINE}") + set(ACTIVE 1) if(ACTIVE_COMMENT GREATER 0) string(APPEND ${PLACE_HOLDER} "\n${COMMENT}") diff --git a/docs/desync.md b/docs/desync.md index 20003c9810..afbebb11c5 100644 --- a/docs/desync.md +++ b/docs/desync.md @@ -195,10 +195,11 @@ Last updated: 2014-02-23 'src/network/network_func.h'. (DEBUG_FAILED_DUMP_COMMANDS is explained later) - Put the 'commands-out.log' into the root save folder, and rename - it to 'commands.log'. - - Run 'openttd -D -d desync=3 -g startsavegame.sav'. - This replays the server log and creates new 'commands-out.log' - and 'dmp_cmds_*.sav' in your autosave folder. + it to 'commands.log'. Strip everything and including the "newgame" + entry from the log. + - Run 'openttd -D -d desync=0 -g startsavegame.sav'. + This replays the server log. Use "-d desync=3" to also create a + new 'commands-out.log' and 'dmp_cmds_*.sav' in your autosave folder. ## 3.2) Evaluation of the replay @@ -226,7 +227,7 @@ Last updated: 2014-02-23 savegames with your own ones from the replay. You can also comment/disable the 'NOT_REACHED' mentioned above, to get another 'dmp_cmds_*.sav' from the replay after the mismatch has already been detected. - See Section 3.2 on how to compare savegames. + See Section 3.3 on how to compare savegames. If the saves differ you have located the Desync between the last dmp_cmds that match and the first one that does not. The difference of the saves may point you in the direction of what causes it. @@ -252,16 +253,14 @@ Last updated: 2014-02-23 are replayed. Their internal state will thus not change in the replay and will differ. - To compare savegame more semantically, there exist some ugly hackish - tools at: - http://devs.openttd.org/~frosch/texts/zpipe.c - http://devs.openttd.org/~frosch/texts/printhunk.c + To compare savegame more semantically, easiest is to first export them + to a JSON format with for example: - The first one decompresses OpenTTD savegames. The second one creates - a textual representation of an uncompressed savegame, by parsing hunks - and arrays and such. With both tools you need to be a bit careful - since they work on stdin and stdout, which may not deal well with - binary data. + https://github.com/TrueBrain/OpenTTD-savegame-reader - If you have the textual representation of the savegames, you can - compare them with regular diff tools. + By running: + + python -m savegame_reader --export-json dmp_cmds_NNN.sav | jq . > NNN.json + + Now you can use any (JSON) diff tool to compare the two savegames in a + somewhat human readable way. diff --git a/docs/landscape.html b/docs/landscape.html index f592cd0f6a..c48aedcebc 100644 --- a/docs/landscape.html +++ b/docs/landscape.html @@ -876,6 +876,22 @@
  • m2: index into the array of stations
  • m3 bits 7..4: persistent random data for railway stations/waypoints and airports)
  • m3 bits 7..4: owner of tram tracks (road stop)
  • +
  • m3 bits 3..2: ground type (road waypoints) + + + + + + + + + + + + + +
    0  on bare land
    1  on grass
    2  paved
    +
  • m4: custom station id; 0 means standard graphics
  • m4: Roadtype for road stops
  • m5: graphics index (range from 0..255 for each station type): @@ -990,13 +1006,14 @@
  • m6 bit 7: rail station / waypoint may have catenary pylons
  • -
  • m6 bit 6: rail station / waypoint may have catenary wires
  • -
  • m6 bits 5..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy, waypoint)
  • +
  • m6 bits 6..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy, waypoint, road waypoint)
  • m6 bit 2: pbs reservation state for railway stations/waypoints
  • +
  • m6 bit 1: rail station / waypoint may have catenary wires
  • m6 bit 0: rail station / waypoint is blocked
  • m7 bits 4..0: owner of road (road stops)
  • m7: animation frame (railway stations/waypoints, airports)
  • +
  • m8 bit 15: Snow or desert present (road waypoints)
  • m8 bits 11..6: Tramtype
  • m8 bits 5..0: track type for railway stations/waypoints
  • m8 bits 5..0: custom road stop id; 0 means standard graphics
  • diff --git a/docs/landscape_grid.html b/docs/landscape_grid.html index a0fa527a6b..11e5952777 100644 --- a/docs/landscape_grid.html +++ b/docs/landscape_grid.html @@ -181,14 +181,14 @@ the array so you can quickly see what is used and what is not. OOOO OOOO OOOO OOOO - 5 + 5 rail station - OXX XXXXX - XXXX XXXX XXXX XXXX + OXX XXXXX + XXXX XXXX XXXX XXXX XXXX OOOO XXXX XXXX XXXX XXXX - XXXXX XOX + XXXXX XXX XXXX XXXX OOOO OOOO OOXX XXXX @@ -199,12 +199,17 @@ the array so you can quickly see what is used and what is not. road stop XXXX OOOO - OOXX XXXX - OOOO OXXX - OOXX XOOO - OOOX XXXX + OOXX XXXX + OOOO OXXX + OXXX XOOO + OOOX XXXX OOOO XXXX XX XXXXXX + + road waypoint + XXXX XXOO + XOOO XXXX XXOO OOOO + airport XXXX OOOO diff --git a/docs/openttd.6 b/docs/openttd.6 index 0319f98cc8..9e8ff63b34 100644 --- a/docs/openttd.6 +++ b/docs/openttd.6 @@ -20,7 +20,6 @@ .Op Fl M Ar musicset .Op Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar company .Op Fl p Ar password -.Op Fl P Ar password .Op Fl q Ar savegame .Op Fl r Ar width Ns x Ns Ar height .Op Fl s Ar driver @@ -100,10 +99,6 @@ play as. Password used to join server. Only useful with .Fl n . -.It Fl P Ar password -Password used to join company. -Only useful with -.Fl n . .It Fl q Ar savegame Write some information about the specified savegame and exit. .It Fl Q diff --git a/docs/releasing_openttd.md b/docs/releasing_openttd.md index acb3ad9bc7..426f183c16 100644 --- a/docs/releasing_openttd.md +++ b/docs/releasing_openttd.md @@ -7,15 +7,17 @@ This guide is for OpenTTD developers/maintainers, to release a new version of Op * If this is a beta version release, skip this step. * If this is an RC1 (first Release Candidate) build, create a new branch `release/nn` where `nn` is the major version number, then apply changes similar to [PR#9573](https://github.com/OpenTTD/OpenTTD/pull/9573). You also need to forwardport the changelog, as in [PR#10113](https://github.com/OpenTTD/OpenTTD/pull/10113). - * Update CMakeLists.txt - * Add a new (empty) AI compatibility script in bin/ai/ - * Add the new version to CheckAPIVersion in src/ai/ai_info.cpp + src/game/game_info.cpp - * Add the new version to src/script/api/ai_changelog.hpp + src/script/api/game_changelog.hpp - * Update the version of regression in bin/ai/regression/regression_info.nut - * Add a note to src/saveload/saveload.h about which savegame version is used in the branch. + * Update the version in `CMakeLists.txt` in the master branch, heading for the next major release, e.g. from 14.0 to 15.0. + * Add a new (empty) AI compatibility script in `bin/ai/` + * Add the new version to CheckAPIVersion in `src/ai/ai_info.cpp` and `src/game/game_info.cpp` + * Add the new version to `src/script/api/ai_changelog.hpp` and `src/script/api/game_changelog.hpp` + * Update the version of regression in `bin/ai/regression/regression_info.nut` + * Add a note to `src/saveload/saveload.h` about which savegame version is used in the branch. * If this is a later RC or release build and the release branch already exists, you'll need to backport fixes and language from master to this branch, which were merged after the branch diverged from master. You can use these two helper scripts: https://github.com/OpenTTD/scripts/tree/main/backport +* If this is a maintenance release, update the version in `CMakeLists.txt` in the release branch, e.g. from 14.0 to 14.1. + ## Step 1: Prepare changelog documentation 1. Update the [changelog](../changelog.txt) with new changes since the last release. @@ -29,20 +31,26 @@ This guide is for OpenTTD developers/maintainers, to release a new version of Op 1. Go to https://github.com/OpenTTD/website/new/main/_posts and write a new announcement post. See a [previous example](https://github.com/OpenTTD/website/pull/238) for a template. 2. Create a new branch for this post and open a PR for it. -3. Write announcement text for socials like Forum/Discord/Twitter/Reddit and include it in the PR. +3. Write announcement text for the store pages and socials like TT-Forums / Discord / Twitter / Reddit / Fosstodon / etc., and include it in the PR. 4. Create a Steam news image for that post and include it in the PR. -5. Check the website post (preview link via checks page) and make corrections. We usually just use the GitHub web interface for this and squash the result later. +5. Check the website post ("View Deployment" link) and make corrections. We usually just use the GitHub web interface for this and squash the result later. 6. Get this PR approved, but do not merge yet. ## Step 3: Make the actual OpenTTD release -1. Go to https://github.com/OpenTTD/OpenTTD/releases/new and create a new tag matching the release number. For the body of the release, see any older release. "Set as a pre-release" for a beta or RC, set as latest for a real release. -2. Merge website PR. -3. Wait for the OpenTTD release checks to be complete. -4. Check that website links to the new release are working and correct, using the [staging website](https://www-staging.openttd.org/). -5. If this is a full release, ask orudge to update the Microsoft Store and TrueBrain to move the release from the "testing" to "default" branch on Steam. +1. Confirm that the version in `CMakeLists.txt` matches the intended release version. +2. Go to https://github.com/OpenTTD/OpenTTD/releases/new and create a new tag matching the release number. For the body of the release, copy in the changelog. "Set as a pre-release" for a beta or RC. +3. Wait for the OpenTTD release workflow to be complete. +4. If this is a full release: + * for `Steam`: under Steamworks -> SteamPipe -> Builds, set the "testing" branch live on the "default" branch. This will request 2FA validation. + * for `GOG`: under Builds, "Publish" the freshly uploaded builds to `Master`, `GOG-use only` and `Testing`. + * for `Microsoft Store`: ask orudge to publish the new release. + +Access to `Steam`, `GOG` and/or `Microsoft Store` requires a developer account on that platform. +You will need access to the shared keystore in order to create such an account. +For help and/or access to either or both, please contact TrueBrain. ## Step 4: Tell the world -1. Tag and create a website release to trigger the actions that update the website. -2. After the website is live, make announcements on social media. You may need to coordinate with other developers who can make posts on Twitter, Reddit, Steam, and GOG. +1. Merge the website PR. This will publish the release post. +2. Make announcements on social media and store pages. You may need to coordinate with other developers who can make posts on TT-Forums, Twitter, Reddit, Fosstodon, Discord, Steam, GOG, Microsoft Store, etc. diff --git a/docs/symbol_server.md b/docs/symbol_server.md index c1c522a1b6..82d29d04cf 100644 --- a/docs/symbol_server.md +++ b/docs/symbol_server.md @@ -19,7 +19,7 @@ Now simply open up the `crash.dmp`, and start debugging. The best tool to use is `minidump-stackwalk` as published in the Rust's cargo index: ```bash -cargo install minidump-stackwalk +cargo install --locked minidump-stackwalk ``` For how to install Rust, please see [here](https://doc.rust-lang.org/cargo/getting-started/installation.html). diff --git a/known-bugs.txt b/known-bugs.txt index 1b9a465af7..e68758b1c6 100644 --- a/known-bugs.txt +++ b/known-bugs.txt @@ -215,16 +215,6 @@ Entry- and exit signals are not dragged [#4378]: for all other signal types where several in a row can serve one purpose or another. -Station build date is incorrect [#4415]: - The tile query tool will show the date of the last (re)construction - at the station and not the date of the first construction. This is - due to compatibility reasons with NewGRFs and the fact that it is - wrong to say that the station is built in a particular year when it - was completely destroyed/rebuilt later on. - The tile query tool can be fixed by changing the "Build date" text - to "Date at which the last (re)construction took place" but this is - deemed too specific and long for that window. - (Temporary) wrong colours when switching to full screen [#4511]: On Windows it can happen that you temporarily see wrong colours when switching to full screen OpenTTD, either by starting diff --git a/media/baseset/OpenTTD-Mono.ttf b/media/baseset/OpenTTD-Mono.ttf index 6022735dbe..853e8527c0 100644 Binary files a/media/baseset/OpenTTD-Mono.ttf and b/media/baseset/OpenTTD-Mono.ttf differ diff --git a/media/baseset/OpenTTD-Sans.ttf b/media/baseset/OpenTTD-Sans.ttf index a9ed5d8c83..406825f513 100644 Binary files a/media/baseset/OpenTTD-Sans.ttf and b/media/baseset/OpenTTD-Sans.ttf differ diff --git a/media/baseset/OpenTTD-Serif.ttf b/media/baseset/OpenTTD-Serif.ttf index d188e2c80c..318aa340f5 100644 Binary files a/media/baseset/OpenTTD-Serif.ttf and b/media/baseset/OpenTTD-Serif.ttf differ diff --git a/media/baseset/OpenTTD-Small.ttf b/media/baseset/OpenTTD-Small.ttf index a1c08fd49e..701de01d3c 100644 Binary files a/media/baseset/OpenTTD-Small.ttf and b/media/baseset/OpenTTD-Small.ttf differ diff --git a/media/baseset/OpenTTD-font.md b/media/baseset/OpenTTD-font.md index 25115cca90..39de7ca1b4 100644 --- a/media/baseset/OpenTTD-font.md +++ b/media/baseset/OpenTTD-font.md @@ -3,4 +3,4 @@ The OpenTTD TrueType font was created by Zephyris and is maintained on [Github](https://github.com/zephyris/openttd-ttf). It is licensed under GPL-2.0. -The currently included files correspond to release v0.5. +The currently included files correspond to release v0.6. diff --git a/media/baseset/openttd.grf b/media/baseset/openttd.grf index 7f4f6cbc49..6cee79959e 100644 Binary files a/media/baseset/openttd.grf and b/media/baseset/openttd.grf differ diff --git a/media/baseset/openttd.grf.hash b/media/baseset/openttd.grf.hash index 25a50247f5..f3b216de53 100644 --- a/media/baseset/openttd.grf.hash +++ b/media/baseset/openttd.grf.hash @@ -1 +1 @@ -4f03553f614a06d86dc06376db3353c7 +8bc3926cb50e19747de498357417d973 diff --git a/media/baseset/openttd/CMakeLists.txt b/media/baseset/openttd/CMakeLists.txt index 30844b8804..ee93ba80b1 100644 --- a/media/baseset/openttd/CMakeLists.txt +++ b/media/baseset/openttd/CMakeLists.txt @@ -20,6 +20,7 @@ if(GRFCODEC_FOUND) ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui.nfo ${CMAKE_CURRENT_SOURCE_DIR}/palette.nfo ${CMAKE_CURRENT_SOURCE_DIR}/roadstops.nfo + ${CMAKE_CURRENT_SOURCE_DIR}/road_waypoints.nfo ${CMAKE_CURRENT_SOURCE_DIR}/signals.nfo ${CMAKE_CURRENT_SOURCE_DIR}/sloped_tracks.nfo ${CMAKE_CURRENT_SOURCE_DIR}/tramtracks.nfo @@ -42,6 +43,7 @@ if(GRFCODEC_FOUND) ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_convert_tram.png ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_group_livery.png ${CMAKE_CURRENT_SOURCE_DIR}/roadstops.png + ${CMAKE_CURRENT_SOURCE_DIR}/road_waypoints.png ${CMAKE_CURRENT_SOURCE_DIR}/signals.png ${CMAKE_CURRENT_SOURCE_DIR}/sloped_tracks.png ${CMAKE_CURRENT_SOURCE_DIR}/tramtracks.png diff --git a/media/baseset/openttd/openttd.nfo b/media/baseset/openttd/openttd.nfo index c1ed751c55..3d59f08543 100644 --- a/media/baseset/openttd/openttd.nfo +++ b/media/baseset/openttd/openttd.nfo @@ -98,3 +98,4 @@ #include "mono.nfo" #include "tunnel_portals.nfo" #include "palette.nfo" +#include "road_waypoints.nfo" diff --git a/media/baseset/openttd/road_waypoints.nfo b/media/baseset/openttd/road_waypoints.nfo new file mode 100644 index 0000000000..4e7a27019b --- /dev/null +++ b/media/baseset/openttd/road_waypoints.nfo @@ -0,0 +1,14 @@ +// This file is part of OpenTTD. +// OpenTTD 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, version 2. +// OpenTTD 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 OpenTTD. If not, see . +// + + -1 * 0 0C "Road waypoints" +//@@LINT OFF + -1 * 3 05 19 04 +//@@LINT ON + -1 sprites/road_waypoints.png 8bpp 10 10 64 40 -5 -22 normal + -1 sprites/road_waypoints.png 8bpp 90 10 64 40 -31 -9 normal + -1 sprites/road_waypoints.png 8bpp 170 10 64 35 -31 -4 normal + -1 sprites/road_waypoints.png 8bpp 240 10 64 35 -57 -17 normal diff --git a/media/baseset/openttd/road_waypoints.png b/media/baseset/openttd/road_waypoints.png new file mode 100644 index 0000000000..2934cb5b22 Binary files /dev/null and b/media/baseset/openttd/road_waypoints.png differ diff --git a/os/emscripten/Dockerfile b/os/emscripten/Dockerfile index 178f56500b..543bf6b2de 100644 --- a/os/emscripten/Dockerfile +++ b/os/emscripten/Dockerfile @@ -1,4 +1,3 @@ -FROM emscripten/emsdk:3.1.42 +FROM emscripten/emsdk:3.1.57 -COPY emsdk-liblzma.patch / -RUN cd /emsdk/upstream/emscripten && patch -p1 < /emsdk-liblzma.patch +COPY ports/liblzma.py /emsdk/upstream/emscripten/tools/ports/contrib/liblzma.py diff --git a/os/emscripten/README.md b/os/emscripten/README.md index 9184b0144e..cdc038ade3 100644 --- a/os/emscripten/README.md +++ b/os/emscripten/README.md @@ -2,8 +2,8 @@ Please use docker with the supplied `Dockerfile` to build for emscripten. It takes care of a few things: -- Use a version of emscripten we know works -- Patch in LibLZMA support (as this is not supported by upstream) +- Use a version of emscripten we know works. +- Add LibLZMA library under contrib ports. First, build the docker image by navigating in the folder this `README.md` is in, and executing: ``` diff --git a/os/emscripten/cmake/FindLibLZMA.cmake b/os/emscripten/cmake/FindLibLZMA.cmake index cd6b44ad3d..0880d62f70 100644 --- a/os/emscripten/cmake/FindLibLZMA.cmake +++ b/os/emscripten/cmake/FindLibLZMA.cmake @@ -1,7 +1,7 @@ # LibLZMA is a custom addition to the emscripten SDK, so it is possible # someone patched their SDK. Test out if the SDK supports LibLZMA. include(CheckCXXSourceCompiles) -set(CMAKE_REQUIRED_FLAGS "-sUSE_LIBLZMA=1") +set(CMAKE_REQUIRED_FLAGS "--use-port=contrib.liblzma") check_cxx_source_compiles(" #include @@ -12,9 +12,9 @@ check_cxx_source_compiles(" if (LIBLZMA_FOUND) add_library(LibLZMA::LibLZMA INTERFACE IMPORTED) set_target_properties(LibLZMA::LibLZMA PROPERTIES - INTERFACE_COMPILE_OPTIONS "-sUSE_LIBLZMA=1" - INTERFACE_LINK_LIBRARIES "-sUSE_LIBLZMA=1" + INTERFACE_COMPILE_OPTIONS "--use-port=contrib.liblzma" + INTERFACE_LINK_LIBRARIES "--use-port=contrib.liblzma" ) else() - message(WARNING "You are using an emscripten SDK without LibLZMA support. Many savegames won't be able to load in OpenTTD. Please apply 'emsdk-liblzma.patch' to your local emsdk installation.") + message(WARNING "You are using an emscripten SDK without LibLZMA support. Many savegames won't be able to load in OpenTTD. Please copy liblzma.py to your ports/contrib folder in your local emsdk installation.") endif() diff --git a/os/emscripten/emsdk-liblzma.patch b/os/emscripten/emsdk-liblzma.patch deleted file mode 100644 index 7bfdd47de2..0000000000 --- a/os/emscripten/emsdk-liblzma.patch +++ /dev/null @@ -1,198 +0,0 @@ -From 84d0e9112d5c87a714abd21ec8547921f46f37b5 Mon Sep 17 00:00:00 2001 -From: milek7 -Date: Tue, 8 Dec 2020 01:03:31 +0100 -Subject: [PATCH] Add liblzma port - ---- - src/settings.js | 4 ++ - tools/ports/liblzma.py | 151 +++++++++++++++++++++++++++++++++++++++++ - tools/settings.py | 1 + - 3 files changed, 156 insertions(+) - create mode 100644 tools/ports/liblzma.py - -diff --git a/src/settings.js b/src/settings.js -index f93140d..7b6bec9 100644 ---- a/src/settings.js -+++ b/src/settings.js -@@ -1451,6 +1451,10 @@ var USE_GIFLIB = false; - // [compile+link] - var USE_LIBJPEG = false; - -+// 1 = use liblzma from emscripten-ports -+// [compile+link] -+var USE_LIBLZMA = false; -+ - // 1 = use libpng from emscripten-ports - // [compile+link] - var USE_LIBPNG = false; -diff --git a/tools/ports/liblzma.py b/tools/ports/liblzma.py -new file mode 100644 -index 0000000..6872a8b ---- /dev/null -+++ b/tools/ports/liblzma.py -@@ -0,0 +1,151 @@ -+# Copyright 2020 The Emscripten Authors. All rights reserved. -+# Emscripten is available under two separate licenses, the MIT license and the -+# University of Illinois/NCSA Open Source License. Both these licenses can be -+# found in the LICENSE file. -+ -+import os -+import shutil -+import logging -+from pathlib import Path -+ -+VERSION = '5.4.2' -+HASH = '149f980338bea3d66de1ff5994b2b236ae1773135eda68b62b009df0c9dcdf5467f8cb2c06da95a71b6556d60bd3d21f475feced34d5dfdb80ee95416a2f9737' -+ -+ -+def needed(settings): -+ return settings.USE_LIBLZMA -+ -+ -+def get(ports, settings, shared): -+ ports.fetch_project('liblzma', f'https://tukaani.org/xz/xz-{VERSION}.tar.gz', sha512hash=HASH) -+ -+ def create(final): -+ logging.info('building port: liblzma') -+ -+ ports.clear_project_build('liblzma') -+ -+ source_path = os.path.join(ports.get_dir(), 'liblzma', f'xz-{VERSION}', 'src', 'liblzma') -+ ports.write_file(os.path.join(source_path, 'config.h'), config_h) -+ ports.install_headers(os.path.join(source_path, 'api'), pattern='lzma.h') -+ ports.install_headers(os.path.join(source_path, 'api', 'lzma'), pattern='*.h', target='lzma') -+ -+ build_flags = ['-DHAVE_CONFIG_H', '-DTUKLIB_SYMBOL_PREFIX=lzma_', '-fvisibility=hidden'] -+ exclude_files = ['crc32_small.c', 'crc64_small.c', 'crc32_tablegen.c', 'crc64_tablegen.c', 'price_tablegen.c', 'fastpos_tablegen.c', -+ 'tuklib_exit.c', 'tuklib_mbstr_fw.c', 'tuklib_mbstr_width.c', 'tuklib_open_stdxxx.c', 'tuklib_progname.c'] -+ include_dirs_rel = ['../common', 'api', 'check', 'common', 'delta', 'lz', 'lzma', 'rangecoder', 'simple'] -+ -+ include_dirs = [os.path.join(source_path, p) for p in include_dirs_rel] -+ ports.build_port(source_path, final, 'liblzma', flags=build_flags, exclude_files=exclude_files, includes=include_dirs) -+ -+ return [shared.cache.get_lib('liblzma.a', create, what='port')] -+ -+ -+def clear(ports, settings, shared): -+ shared.cache.erase_lib('liblzma.a') -+ -+ -+def process_args(ports): -+ return [] -+ -+ -+def show(): -+ return 'liblzma (USE_LIBLZMA=1; public domain)' -+ -+ -+config_h = ''' -+#define ASSUME_RAM 128 -+#define ENABLE_NLS 1 -+#define HAVE_CHECK_CRC32 1 -+#define HAVE_CHECK_CRC64 1 -+#define HAVE_CHECK_SHA256 1 -+#define HAVE_CLOCK_GETTIME 1 -+#define HAVE_DCGETTEXT 1 -+#define HAVE_DECL_CLOCK_MONOTONIC 1 -+#define HAVE_DECL_PROGRAM_INVOCATION_NAME 1 -+#define HAVE_DECODERS 1 -+#define HAVE_DECODER_ARM 1 -+#define HAVE_DECODER_ARMTHUMB 1 -+#define HAVE_DECODER_DELTA 1 -+#define HAVE_DECODER_IA64 1 -+#define HAVE_DECODER_LZMA1 1 -+#define HAVE_DECODER_LZMA2 1 -+#define HAVE_DECODER_POWERPC 1 -+#define HAVE_DECODER_SPARC 1 -+#define HAVE_DECODER_X86 1 -+#define HAVE_DLFCN_H 1 -+#define HAVE_ENCODERS 1 -+#define HAVE_ENCODER_ARM 1 -+#define HAVE_ENCODER_ARMTHUMB 1 -+#define HAVE_ENCODER_DELTA 1 -+#define HAVE_ENCODER_IA64 1 -+#define HAVE_ENCODER_LZMA1 1 -+#define HAVE_ENCODER_LZMA2 1 -+#define HAVE_ENCODER_POWERPC 1 -+#define HAVE_ENCODER_SPARC 1 -+#define HAVE_ENCODER_X86 1 -+#define HAVE_FCNTL_H 1 -+#define HAVE_FUTIMENS 1 -+#define HAVE_GETOPT_H 1 -+#define HAVE_GETOPT_LONG 1 -+#define HAVE_GETTEXT 1 -+#define HAVE_IMMINTRIN_H 1 -+#define HAVE_INTTYPES_H 1 -+#define HAVE_LIMITS_H 1 -+#define HAVE_MBRTOWC 1 -+#define HAVE_MEMORY_H 1 -+#define HAVE_MF_BT2 1 -+#define HAVE_MF_BT3 1 -+#define HAVE_MF_BT4 1 -+#define HAVE_MF_HC3 1 -+#define HAVE_MF_HC4 1 -+#define HAVE_OPTRESET 1 -+#define HAVE_POSIX_FADVISE 1 -+#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1 -+#define HAVE_PTHREAD_PRIO_INHERIT 1 -+#define HAVE_STDBOOL_H 1 -+#define HAVE_STDINT_H 1 -+#define HAVE_STDLIB_H 1 -+#define HAVE_STRINGS_H 1 -+#define HAVE_STRING_H 1 -+#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1 -+#define HAVE_SYS_PARAM_H 1 -+#define HAVE_SYS_STAT_H 1 -+#define HAVE_SYS_TIME_H 1 -+#define HAVE_SYS_TYPES_H 1 -+#define HAVE_UINTPTR_T 1 -+#define HAVE_UNISTD_H 1 -+#define HAVE_VISIBILITY 1 -+#define HAVE_WCWIDTH 1 -+#define HAVE__BOOL 1 -+#define HAVE___BUILTIN_ASSUME_ALIGNED 1 -+#define HAVE___BUILTIN_BSWAPXX 1 -+#define MYTHREAD_POSIX 1 -+#define NDEBUG 1 -+#define PACKAGE "xz" -+#define PACKAGE_BUGREPORT "lasse.collin@tukaani.org" -+#define PACKAGE_NAME "XZ Utils" -+#define PACKAGE_STRING "XZ Utils 5.4.0" -+#define PACKAGE_TARNAME "xz" -+#define PACKAGE_VERSION "5.4.0" -+#define SIZEOF_SIZE_T 4 -+#define STDC_HEADERS 1 -+#define TUKLIB_CPUCORES_SYSCONF 1 -+#define TUKLIB_FAST_UNALIGNED_ACCESS 1 -+#define TUKLIB_PHYSMEM_SYSCONF 1 -+#ifndef _ALL_SOURCE -+# define _ALL_SOURCE 1 -+#endif -+#ifndef _GNU_SOURCE -+# define _GNU_SOURCE 1 -+#endif -+#ifndef _POSIX_PTHREAD_SEMANTICS -+# define _POSIX_PTHREAD_SEMANTICS 1 -+#endif -+#ifndef _TANDEM_SOURCE -+# define _TANDEM_SOURCE 1 -+#endif -+#ifndef __EXTENSIONS__ -+# define __EXTENSIONS__ 1 -+#endif -+#define VERSION "5.4.0" -+''' -diff --git a/tools/settings.py b/tools/settings.py -index 10d6ca0..827e4a9 100644 ---- a/tools/settings.py -+++ b/tools/settings.py -@@ -40,6 +40,7 @@ PORTS_SETTINGS = { - 'USE_SDL_NET', - 'USE_SDL_GFX', - 'USE_LIBJPEG', -+ 'USE_LIBLZMA', - 'USE_OGG', - 'USE_REGAL', - 'USE_BOOST_HEADERS', --- -2.34.1 diff --git a/os/emscripten/ports/liblzma.py b/os/emscripten/ports/liblzma.py new file mode 100644 index 0000000000..0adf0e5697 --- /dev/null +++ b/os/emscripten/ports/liblzma.py @@ -0,0 +1,139 @@ +import os +import logging + +VERSION = '5.4.6' +HASH = '495cc890d25c075c927c907b77e60d86dd8a4c377cea5b1172c8e916984149a7bb5fb32db25091f7219346b83155b47e4bc0404cc8529d992014cd7ed0c278b7' + +URL = 'https://github.com/tukaani-project/xz' +DESCRIPTION = 'liblzma provides a general-purpose data-compression library.' +LICENSE = 'LGPL-2.1' + +def get(ports, settings, shared): + ports.fetch_project('contrib.liblzma', f'https://github.com/tukaani-project/xz/releases/download/v{VERSION}/xz-{VERSION}.tar.xz', sha512hash=HASH) + + def create(final): + logging.info('building port: contrib.liblzma') + + ports.clear_project_build('contrib.liblzma') + + source_path = os.path.join(ports.get_dir(), 'contrib.liblzma', f'xz-{VERSION}', 'src', 'liblzma') + ports.write_file(os.path.join(source_path, 'config.h'), config_h) + ports.install_headers(os.path.join(source_path, 'api'), pattern='lzma.h') + ports.install_headers(os.path.join(source_path, 'api', 'lzma'), pattern='*.h', target='lzma') + + build_flags = ['-DHAVE_CONFIG_H', '-DTUKLIB_SYMBOL_PREFIX=lzma_', '-fvisibility=hidden'] + exclude_files = ['crc32_small.c', 'crc64_small.c', 'crc32_tablegen.c', 'crc64_tablegen.c', 'price_tablegen.c', 'fastpos_tablegen.c', + 'tuklib_exit.c', 'tuklib_mbstr_fw.c', 'tuklib_mbstr_width.c', 'tuklib_open_stdxxx.c', 'tuklib_progname.c'] + include_dirs_rel = ['../common', 'api', 'check', 'common', 'delta', 'lz', 'lzma', 'rangecoder', 'simple'] + + include_dirs = [os.path.join(source_path, p) for p in include_dirs_rel] + ports.build_port(source_path, final, 'contrib.liblzma', flags=build_flags, exclude_files=exclude_files, includes=include_dirs) + + return [shared.cache.get_lib('liblzma.a', create, what='port')] + + +def clear(ports, settings, shared): + shared.cache.erase_lib('liblzma.a') + + +def process_args(ports): + return [] + + +config_h = ''' +#define ASSUME_RAM 128 +#define ENABLE_NLS 1 +#define HAVE_CHECK_CRC32 1 +#define HAVE_CHECK_CRC64 1 +#define HAVE_CHECK_SHA256 1 +#define HAVE_CLOCK_GETTIME 1 +#define HAVE_DCGETTEXT 1 +#define HAVE_DECL_CLOCK_MONOTONIC 1 +#define HAVE_DECL_PROGRAM_INVOCATION_NAME 1 +#define HAVE_DECODERS 1 +#define HAVE_DECODER_ARM 1 +#define HAVE_DECODER_ARMTHUMB 1 +#define HAVE_DECODER_DELTA 1 +#define HAVE_DECODER_IA64 1 +#define HAVE_DECODER_LZMA1 1 +#define HAVE_DECODER_LZMA2 1 +#define HAVE_DECODER_POWERPC 1 +#define HAVE_DECODER_SPARC 1 +#define HAVE_DECODER_X86 1 +#define HAVE_DLFCN_H 1 +#define HAVE_ENCODERS 1 +#define HAVE_ENCODER_ARM 1 +#define HAVE_ENCODER_ARMTHUMB 1 +#define HAVE_ENCODER_DELTA 1 +#define HAVE_ENCODER_IA64 1 +#define HAVE_ENCODER_LZMA1 1 +#define HAVE_ENCODER_LZMA2 1 +#define HAVE_ENCODER_POWERPC 1 +#define HAVE_ENCODER_SPARC 1 +#define HAVE_ENCODER_X86 1 +#define HAVE_FCNTL_H 1 +#define HAVE_FUTIMENS 1 +#define HAVE_GETOPT_H 1 +#define HAVE_GETOPT_LONG 1 +#define HAVE_GETTEXT 1 +#define HAVE_IMMINTRIN_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_MBRTOWC 1 +#define HAVE_MEMORY_H 1 +#define HAVE_MF_BT2 1 +#define HAVE_MF_BT3 1 +#define HAVE_MF_BT4 1 +#define HAVE_MF_HC3 1 +#define HAVE_MF_HC4 1 +#define HAVE_OPTRESET 1 +#define HAVE_POSIX_FADVISE 1 +#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1 +#define HAVE_PTHREAD_PRIO_INHERIT 1 +#define HAVE_STDBOOL_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1 +#define HAVE_SYS_PARAM_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_UINTPTR_T 1 +#define HAVE_UNISTD_H 1 +#define HAVE_VISIBILITY 1 +#define HAVE_WCWIDTH 1 +#define HAVE__BOOL 1 +#define HAVE___BUILTIN_ASSUME_ALIGNED 1 +#define HAVE___BUILTIN_BSWAPXX 1 +#define MYTHREAD_POSIX 1 +#define NDEBUG 1 +#define PACKAGE "xz" +#define PACKAGE_BUGREPORT "lasse.collin@tukaani.org" +#define PACKAGE_NAME "XZ Utils" +#define PACKAGE_STRING "XZ Utils 5.4.0" +#define PACKAGE_TARNAME "xz" +#define PACKAGE_VERSION "5.4.0" +#define SIZEOF_SIZE_T 4 +#define STDC_HEADERS 1 +#define TUKLIB_CPUCORES_SYSCONF 1 +#define TUKLIB_FAST_UNALIGNED_ACCESS 1 +#define TUKLIB_PHYSMEM_SYSCONF 1 +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif +#define VERSION "5.4.0" +''' diff --git a/os/macosx/Info.plist.in b/os/macosx/Info.plist.in index 71619d8936..9ed3579a09 100644 --- a/os/macosx/Info.plist.in +++ b/os/macosx/Info.plist.in @@ -33,5 +33,7 @@ True LSMinimumSystemVersion 10.13.0 + LSApplicationCategoryType + public.app-category.simulation-games diff --git a/os/macosx/openttd.entitlements b/os/macosx/openttd.entitlements new file mode 100644 index 0000000000..47c24e0756 --- /dev/null +++ b/os/macosx/openttd.entitlements @@ -0,0 +1,11 @@ + + + + + + com.apple.security.cs.allow-dyld-environment-variables + + com.apple.security.cs.disable-library-validation + + + diff --git a/os/windows/sign.bat b/os/windows/sign.bat index 3954d4618c..b438127ae8 100644 --- a/os/windows/sign.bat +++ b/os/windows/sign.bat @@ -1,18 +1,2 @@ @echo off -REM Signing script -REM Arguments: sign.bat exe_to_sign certificate_subject_name - -REM This is a loose wrapper around the Microsoft signtool application (included in the Windows SDK). -REM See https://docs.microsoft.com/en-us/dotnet/framework/tools/signtool-exe for more details. - -REM Path to signtool.exe -IF NOT DEFINED SIGNTOOL_PATH (SET SIGNTOOL_PATH=signtool) - -REM URL of the timestamp server -IF NOT DEFINED SIGNTOOL_TIMESTAMP_URL (SET SIGNTOOL_TIMESTAMP_URL=http://timestamp.digicert.com) - -REM Sign with SHA-1 for Windows 7 and below -"%SIGNTOOL_PATH%" sign -v -n %2 -t %SIGNTOOL_TIMESTAMP_URL% -fd sha1 %1 - -REM Sign with SHA-256 for Windows 8 and above -"%SIGNTOOL_PATH%" sign -v -n %2 -tr %SIGNTOOL_TIMESTAMP_URL% -fd sha256 -td sha256 -as %1 +pwsh -File "%~dp0sign_azure.ps1" %1 diff --git a/os/windows/sign_azure.ps1 b/os/windows/sign_azure.ps1 new file mode 100644 index 0000000000..e19476fa6d --- /dev/null +++ b/os/windows/sign_azure.ps1 @@ -0,0 +1,40 @@ +# Signing script for Azure Code Signing +# Arguments: sign_azure.ps1 path_to_sign +# +# Environment variables must be set up before use: +# +# AZURE_TENANT_ID +# AZURE_CLIENT_ID +# AZURE_CLIENT_SECRET +# AZURE_CODESIGN_ACCOUNT_NAME +# AZURE_CODESIGN_ENDPOINT +# AZURE_CODESIGN_PROFILE_NAME + +Param +( + # Files folder + [Parameter(Mandatory=$true, Position=0)] + $FilesFolder +) + +if (!$Env:AZURE_CODESIGN_ENDPOINT -or !$Env:AZURE_CODESIGN_ACCOUNT_NAME -or !$Env:AZURE_CODESIGN_PROFILE_NAME -or + !$Env:AZURE_TENANT_ID -or !$Env:AZURE_CLIENT_ID -or !$Env:AZURE_CLIENT_SECRET) +{ + "Code signing variables not found; most likely running in a fork. Skipping signing." + exit +} + +Install-Module -Name AzureCodeSigning -Scope CurrentUser -RequiredVersion 0.3.0 -Force -Repository PSGallery + +$params = @{} + +$params["Endpoint"] = $Env:AZURE_CODESIGN_ENDPOINT +$params["CodeSigningAccountName"] = $Env:AZURE_CODESIGN_ACCOUNT_NAME +$params["CertificateProfileName"] = $Env:AZURE_CODESIGN_PROFILE_NAME +$params["FilesFolder"] = $FilesFolder +$params["FilesFolderFilter"] = "exe" +$params["FileDigest"] = "SHA256" +$params["TimestampRfc3161"] = "http://timestamp.acs.microsoft.com" +$params["TimestampDigest"] = "SHA256" + +Invoke-AzureCodeSigning @params diff --git a/regression/regression/result.txt b/regression/regression/result.txt index 8eedd0d71e..27a81675a9 100644 --- a/regression/regression/result.txt +++ b/regression/regression/result.txt @@ -6093,7 +6093,7 @@ ERROR: IsEnd() is invalid as Begin() is never called GetNumEngines(): 1 GetNumEngines(): 1 GetNumEngines(): 0 - GetName(): Group 0 + GetName(): Group 1 GetName(): (null : 0x00000000) AIVehicle.SellVehicle(): true AITile.DemolishTile(): true @@ -7510,7 +7510,7 @@ ERROR: IsEnd() is invalid as Begin() is never called BuildRailDepot(): false BuildRailDepot(): true BuildRailDepot(): true - BuildRailDepot(): false + BuildRailDepot(): true GetRailDepotFrontTile(): 33412 IsBuildable(): false DepotList @@ -7604,12 +7604,12 @@ ERROR: IsEnd() is invalid as Begin() is never called BuildRoadDepot(): false BuildRoadDepot(): true BuildRoadDepot(): true - BuildRoadDepot(): false + BuildRoadDepot(): true HasRoadType(Road): true HasRoadType(Tram): false - GetLastError(): 259 - GetLastErrorString(): ERR_ALREADY_BUILT - GetErrorCategory(): 1 + GetLastError(): 0 + GetLastErrorString(): ERR_NONE + GetErrorCategory(): 0 IsRoadTile(): false GetRoadDepotFrontTile(): 33412 IsRoadDepotTile(): true @@ -9471,7 +9471,7 @@ ERROR: IsEnd() is invalid as Begin() is never called IsStoppedInDepot(): false --Accounting-- GetCosts(): -5947 - Should be: -5946 + Should be: -5947 GetName(): Road Vehicle #1 SetName(): true GetName(): MyVehicleName @@ -9485,7 +9485,7 @@ ERROR: IsEnd() is invalid as Begin() is never called GetAgeLeft(): 5489 GetCurrentSpeed(): 7 GetRunningCost(): 421 - GetProfitThisYear(): -1 + GetProfitThisYear(): 0 GetProfitLastYear(): 0 GetCurrentValue(): 5947 GetVehicleType(): 1 @@ -9604,7 +9604,7 @@ ERROR: IsEnd() is invalid as Begin() is never called 16 => 0 14 => 0 13 => 0 - 12 => -1 + 12 => 0 ProfitLastYear ListDump: 17 => 0 16 => 0 diff --git a/src/3rdparty/md5/md5.h b/src/3rdparty/md5/md5.h index 29c7167944..a19f159168 100644 --- a/src/3rdparty/md5/md5.h +++ b/src/3rdparty/md5/md5.h @@ -57,8 +57,8 @@ static const size_t MD5_HASH_BYTES = 16; /** Container for storing a MD5 hash/checksum/digest. */ -struct MD5Hash : std::array { - MD5Hash() : std::array{} {} +struct MD5Hash : std::array { + MD5Hash() : std::array{} {} /** * Exclusively-or the given hash into this hash. diff --git a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp index 6f67796839..560edfc66b 100644 --- a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp +++ b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp @@ -650,8 +650,7 @@ public: _fs->AddInstruction(_OP_LOADINT, _exst._deref,_integer(constval)); } else if(ctype == OT_FLOAT && sizeof(SQFloat) == sizeof(SQInt32)) { - SQFloat f = _float(constval); - _fs->AddInstruction(_OP_LOADFLOAT, _exst._deref,*((SQInt32 *)&f)); + _fs->AddInstruction(_OP_LOADFLOAT, _exst._deref, std::bit_cast(_float(constval))); } else { _fs->AddInstruction(_OP_LOAD, _exst._deref, _fs->GetConstant(constval)); @@ -697,7 +696,7 @@ public: break; case TK_FLOAT: if(sizeof(SQFloat) == sizeof(SQInt32)) { - _fs->AddInstruction(_OP_LOADFLOAT, _fs->PushTarget(),*((SQInt32 *)&_lex._fvalue)); + _fs->AddInstruction(_OP_LOADFLOAT, _fs->PushTarget(), std::bit_cast(_lex._fvalue)); } else { _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetNumericConstant(_lex._fvalue)); diff --git a/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp b/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp index e6e64ba81a..54744292a9 100644 --- a/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp +++ b/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp @@ -199,7 +199,7 @@ void SQFuncState::Dump(SQFunctionProto *func) } } else if(inst.op==_OP_LOADFLOAT) { - printf("[%03d] %15s %d %f %d %d\n",n,g_InstrDesc[inst.op].name,inst._arg0,*((SQFloat*)&inst._arg1),inst._arg2,inst._arg3); + printf("[%03d] %15s %d %f %d %d\n",n,g_InstrDesc[inst.op].name,inst._arg0,std::bit_cast(inst._arg1),inst._arg2,inst._arg3); } else if(inst.op==_OP_ARITH){ printf("[%03d] %15s %d %d %d %c\n",n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); @@ -242,19 +242,20 @@ SQInteger SQFuncState::GetConstant(const SQObject &cons) void SQFuncState::SetIntructionParams(SQInteger pos,SQInteger arg0,SQInteger arg1,SQInteger arg2,SQInteger arg3) { - _instructions[pos]._arg0=(unsigned char)*((SQUnsignedInteger *)&arg0); - _instructions[pos]._arg1=(SQInt32)*((SQUnsignedInteger *)&arg1); - _instructions[pos]._arg2=(unsigned char)*((SQUnsignedInteger *)&arg2); - _instructions[pos]._arg3=(unsigned char)*((SQUnsignedInteger *)&arg3); + _instructions[pos]._arg0 = (unsigned char)std::bit_cast(arg0); + _instructions[pos]._arg1 = (SQInt32)std::bit_cast(arg1); + _instructions[pos]._arg2 = (unsigned char)std::bit_cast(arg2); + _instructions[pos]._arg3 = (unsigned char)std::bit_cast(arg3); } void SQFuncState::SetIntructionParam(SQInteger pos,SQInteger arg,SQInteger val) { switch(arg){ - case 0:_instructions[pos]._arg0=(unsigned char)*((SQUnsignedInteger *)&val);break; - case 1:case 4:_instructions[pos]._arg1=(SQInt32)*((SQUnsignedInteger *)&val);break; - case 2:_instructions[pos]._arg2=(unsigned char)*((SQUnsignedInteger *)&val);break; - case 3:_instructions[pos]._arg3=(unsigned char)*((SQUnsignedInteger *)&val);break; + case 0: _instructions[pos]._arg0 = (unsigned char)std::bit_cast(val); break; + case 1: + case 4: _instructions[pos]._arg1 = (SQInt32)std::bit_cast(val); break; + case 2: _instructions[pos]._arg2 = (unsigned char)std::bit_cast(val); break; + case 3: _instructions[pos]._arg3 = (unsigned char)std::bit_cast(val); break; }; } diff --git a/src/3rdparty/squirrel/squirrel/sqvm.cpp b/src/3rdparty/squirrel/squirrel/sqvm.cpp index 02dbc1625d..52a4dfe85c 100644 --- a/src/3rdparty/squirrel/squirrel/sqvm.cpp +++ b/src/3rdparty/squirrel/squirrel/sqvm.cpp @@ -51,7 +51,7 @@ bool SQVM::BW_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,con case BW_XOR: res = i1 ^ i2; break; case BW_SHIFTL: res = i1 << i2; break; case BW_SHIFTR: res = i1 >> i2; break; - case BW_USHIFTR:res = (SQInteger)(*((SQUnsignedInteger*)&i1) >> i2); break; + case BW_USHIFTR:res = (SQInteger)(std::bit_cast(i1) >> i2); break; default: { Raise_Error("internal vm error bitwise op failed"); return false; } } } @@ -472,10 +472,10 @@ bool SQVM::DerefInc(SQInteger op,SQObjectPtr &target, SQObjectPtr &self, SQObjec #define arg0 (_i_._arg0) #define arg1 (_i_._arg1) -#define sarg1 (*(const_cast(&_i_._arg1))) +#define sarg1 (std::bit_cast(_i_._arg1)) #define arg2 (_i_._arg2) #define arg3 (_i_._arg3) -#define sarg3 ((SQInteger)*((const signed char *)&_i_._arg3)) +#define sarg3 ((SQInteger)std::bit_cast(_i_._arg3)) SQRESULT SQVM::Suspend() { @@ -764,7 +764,7 @@ exception_restore: continue; case _OP_LOAD: TARGET = ci->_literals[arg1]; continue; case _OP_LOADINT: TARGET = (SQInteger)arg1; continue; - case _OP_LOADFLOAT: TARGET = *((const SQFloat *)&arg1); continue; + case _OP_LOADFLOAT: TARGET = std::bit_cast(arg1); continue; case _OP_DLOAD: TARGET = ci->_literals[arg1]; STK(arg2) = ci->_literals[arg3];continue; case _OP_TAILCALL: temp_reg = STK(arg1); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ebb946ae4e..5f7847ff8a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -52,6 +52,8 @@ add_files( animated_tile_func.h articulated_vehicles.cpp articulated_vehicles.h + autocompletion.cpp + autocompletion.h autoreplace.cpp autoreplace_base.h autoreplace_cmd.cpp @@ -75,6 +77,7 @@ add_files( bridge_map.cpp bridge_map.h build_vehicle_gui.cpp + cachecheck.cpp cargo_type.h cargoaction.cpp cargoaction.h @@ -136,6 +139,10 @@ add_files( dock_gui.cpp driver.cpp driver.h + dropdown.cpp + dropdown_common_type.h + dropdown_func.h + dropdown_type.h economy.cpp economy_base.h economy_cmd.h @@ -248,6 +255,7 @@ add_files( music_gui.cpp newgrf.cpp newgrf.h + newgrf_act5.h newgrf_airport.cpp newgrf_airport.h newgrf_airporttiles.cpp @@ -299,6 +307,7 @@ add_files( newgrf_storage.h newgrf_text.cpp newgrf_text.h + newgrf_text_type.h newgrf_town.cpp newgrf_town.h newgrf_townname.cpp @@ -330,6 +339,9 @@ add_files( palette_func.h pbs.cpp pbs.h + picker_func.h + picker_gui.cpp + picker_gui.h progress.cpp progress.h querystring_gui.h @@ -391,6 +403,8 @@ add_files( signs_func.h signs_gui.cpp signs_type.h + slider.cpp + slider_func.h slope_func.h slope_type.h smallmap_gui.cpp @@ -466,7 +480,6 @@ add_files( tilearea_type.h tilehighlight_func.h tilehighlight_type.h - tilematrix_type.hpp timetable.h timetable_cmd.cpp timetable_cmd.h diff --git a/src/ai/ai.hpp b/src/ai/ai.hpp index 9a33be9446..5750ae6c53 100644 --- a/src/ai/ai.hpp +++ b/src/ai/ai.hpp @@ -27,9 +27,8 @@ public: /** * Start a new AI company. * @param company At which slot the AI company should start. - * @param deviate Whether to apply random deviation to the configured AI. */ - static void StartNew(CompanyID company, bool deviate = true); + static void StartNew(CompanyID company); /** * Called every game-tick to let AIs do something. diff --git a/src/ai/ai_core.cpp b/src/ai/ai_core.cpp index 1e8336fd22..951ad0c525 100644 --- a/src/ai/ai_core.cpp +++ b/src/ai/ai_core.cpp @@ -33,14 +33,14 @@ return !_networking || (_network_server && _settings_game.ai.ai_in_multiplayer); } -/* static */ void AI::StartNew(CompanyID company, bool deviate) +/* static */ void AI::StartNew(CompanyID company) { assert(Company::IsValidID(company)); /* Clients shouldn't start AIs */ if (_networking && !_network_server) return; - Backup cur_company(_current_company, company, FILE_LINE); + Backup cur_company(_current_company, company); Company *c = Company::Get(company); AIConfig *config = c->ai_config.get(); @@ -56,12 +56,11 @@ /* Load default data and store the name in the settings */ config->Change(info->GetName(), -1, false); } - if (deviate) config->AddRandomDeviation(company); config->AnchorUnchangeableSettings(); c->ai_info = info; assert(c->ai_instance == nullptr); - c->ai_instance = new AIInstance(); + c->ai_instance = std::make_unique(); c->ai_instance->Initialize(info); c->ai_instance->LoadOnStack(config->GetToLoadData()); config->SetToLoadData(nullptr); @@ -82,7 +81,7 @@ assert(_settings_game.difficulty.competitor_speed <= 4); if ((AI::frame_counter & ((1 << (4 - _settings_game.difficulty.competitor_speed)) - 1)) != 0) return; - Backup cur_company(_current_company, FILE_LINE); + Backup cur_company(_current_company); for (const Company *c : Company::Iterate()) { if (c->is_ai) { PerformanceMeasurer framerate((PerformanceElement)(PFE_AI0 + c->index)); @@ -110,11 +109,10 @@ if (_networking && !_network_server) return; PerformanceMeasurer::SetInactive((PerformanceElement)(PFE_AI0 + company)); - Backup cur_company(_current_company, company, FILE_LINE); + Backup cur_company(_current_company, company); Company *c = Company::Get(company); - delete c->ai_instance; - c->ai_instance = nullptr; + c->ai_instance.reset(); c->ai_info = nullptr; c->ai_config.reset(); @@ -130,7 +128,7 @@ * for the server owner to unpause the script again. */ if (_network_dedicated) return; - Backup cur_company(_current_company, company, FILE_LINE); + Backup cur_company(_current_company, company); Company::Get(company)->ai_instance->Pause(); cur_company.Restore(); @@ -138,7 +136,7 @@ /* static */ void AI::Unpause(CompanyID company) { - Backup cur_company(_current_company, company, FILE_LINE); + Backup cur_company(_current_company, company); Company::Get(company)->ai_instance->Unpause(); cur_company.Restore(); @@ -146,7 +144,7 @@ /* static */ bool AI::IsPaused(CompanyID company) { - Backup cur_company(_current_company, company, FILE_LINE); + Backup cur_company(_current_company, company); bool paused = Company::Get(company)->ai_instance->IsPaused(); cur_company.Restore(); @@ -215,25 +213,30 @@ if (!_settings_game.ai_config[c]->ResetInfo(true)) { Debug(script, 0, "After a reload, the AI by the name '{}' was no longer found, and removed from the list.", _settings_game.ai_config[c]->GetName()); _settings_game.ai_config[c]->Change(std::nullopt); - if (Company::IsValidAiID(c)) { - /* The code belonging to an already running AI was deleted. We can only do - * one thing here to keep everything sane and that is kill the AI. After - * killing the offending AI we start a random other one in it's place, just - * like what would happen if the AI was missing during loading. */ - AI::Stop(c); - AI::StartNew(c, false); - } - } else if (Company::IsValidAiID(c)) { - /* Update the reference in the Company struct. */ - Company::Get(c)->ai_info = _settings_game.ai_config[c]->GetInfo(); } } + if (_settings_newgame.ai_config[c] != nullptr && _settings_newgame.ai_config[c]->HasScript()) { if (!_settings_newgame.ai_config[c]->ResetInfo(false)) { Debug(script, 0, "After a reload, the AI by the name '{}' was no longer found, and removed from the list.", _settings_newgame.ai_config[c]->GetName()); _settings_newgame.ai_config[c]->Change(std::nullopt); } } + + if (Company::IsValidAiID(c) && Company::Get(c)->ai_config != nullptr) { + AIConfig *config = Company::Get(c)->ai_config.get(); + if (!config->ResetInfo(true)) { + /* The code belonging to an already running AI was deleted. We can only do + * one thing here to keep everything sane and that is kill the AI. After + * killing the offending AI we start a random other one in it's place, just + * like what would happen if the AI was missing during loading. */ + AI::Stop(c); + AI::StartNew(c); + } else { + /* Update the reference in the Company struct. */ + Company::Get(c)->ai_info = config->GetInfo(); + } + } } } @@ -255,7 +258,7 @@ } /* Queue the event */ - Backup cur_company(_current_company, company, FILE_LINE); + Backup cur_company(_current_company, company); Company::Get(_current_company)->ai_instance->InsertEvent(event); cur_company.Restore(); @@ -289,7 +292,7 @@ /* When doing emergency saving, an AI can be not fully initialised. */ if (c->ai_instance != nullptr) { - Backup cur_company(_current_company, company, FILE_LINE); + Backup cur_company(_current_company, company); c->ai_instance->Save(); cur_company.Restore(); return; diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index 0cd83ea8b3..387e1dde8d 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -82,11 +82,11 @@ static constexpr NWidgetPart _nested_ai_config_widgets[] = { }; /** Window definition for the configure AI window. */ -static WindowDesc _ai_config_desc(__FILE__, __LINE__, +static WindowDesc _ai_config_desc( WDP_CENTER, nullptr, 0, 0, WC_GAME_OPTIONS, WC_NONE, 0, - std::begin(_nested_ai_config_widgets), std::end(_nested_ai_config_widgets) + _nested_ai_config_widgets ); /** @@ -97,7 +97,7 @@ struct AIConfigWindow : public Window { int line_height; ///< Height of a single AI-name line. Scrollbar *vscroll; ///< Cache of the vertical scrollbar. - AIConfigWindow() : Window(&_ai_config_desc) + AIConfigWindow() : Window(_ai_config_desc) { this->InitNested(WN_GAME_OPTIONS_AI); // Initializes 'this->line_height' as a side effect. this->vscroll = this->GetScrollbar(WID_AIC_SCROLLBAR); @@ -128,20 +128,20 @@ struct AIConfigWindow : public Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_AIC_DECREASE_NUMBER: case WID_AIC_INCREASE_NUMBER: case WID_AIC_DECREASE_INTERVAL: case WID_AIC_INCREASE_INTERVAL: - *size = maxdim(*size, NWidgetScrollbar::GetHorizontalDimension()); + size = maxdim(size, NWidgetScrollbar::GetHorizontalDimension()); break; case WID_AIC_LIST: this->line_height = GetCharacterHeight(FS_NORMAL) + padding.height; - resize->height = this->line_height; - size->height = 8 * this->line_height; + resize.height = this->line_height; + size.height = 8 * this->line_height; break; } } diff --git a/src/aircraft.h b/src/aircraft.h index 3ac5a6102e..6c47d6df56 100644 --- a/src/aircraft.h +++ b/src/aircraft.h @@ -73,14 +73,14 @@ struct AircraftCache { */ struct Aircraft final : public SpecializedVehicle { uint16_t crashed_counter; ///< Timer for handling crash animations. - byte pos; ///< Next desired position of the aircraft. - byte previous_pos; ///< Previous desired position of the aircraft. + uint8_t pos; ///< Next desired position of the aircraft. + uint8_t previous_pos; ///< Previous desired position of the aircraft. StationID targetairport; ///< Airport to go to next. - byte state; ///< State of the airport. @see AirportMovementStates + uint8_t state; ///< State of the airport. @see AirportMovementStates Direction last_direction; - byte number_consecutive_turns; ///< Protection to prevent the aircraft of making a lot of turns in order to reach a specific point. - byte turn_counter; ///< Ticks between each turn to prevent > 45 degree turns. - byte flags; ///< Aircraft flags. @see AirVehicleFlags + uint8_t number_consecutive_turns; ///< Protection to prevent the aircraft of making a lot of turns in order to reach a specific point. + uint8_t turn_counter; ///< Ticks between each turn to prevent > 45 degree turns. + uint8_t flags; ///< Aircraft flags. @see AirVehicleFlags AircraftCache acache; @@ -111,6 +111,7 @@ struct Aircraft final : public SpecializedVehicle { void OnNewEconomyDay() override; uint Crash(bool flooded = false) override; TileIndex GetOrderStationLocation(StationID station) override; + TileIndex GetCargoTile() const override { return this->First()->tile; } ClosestDepot FindClosestDepot() override; /** diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index 7ad284b5b7..33ab2eba38 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -134,7 +134,7 @@ static StationID FindNearestHangar(const Aircraft *v) const Station *next_dest = nullptr; if (max_range != 0) { if (v->current_order.IsType(OT_GOTO_STATION) || - (v->current_order.IsType(OT_GOTO_DEPOT) && v->current_order.GetDepotActionType() != ODATFB_NEAREST_DEPOT)) { + (v->current_order.IsType(OT_GOTO_DEPOT) && (v->current_order.GetDepotActionType() & ODATFB_NEAREST_DEPOT) == 0)) { last_dest = Station::GetIfValid(v->last_station_visited); next_dest = Station::GetIfValid(v->current_order.GetDestination()); } else { @@ -456,6 +456,7 @@ void Aircraft::OnNewCalendarDay() void Aircraft::OnNewEconomyDay() { if (!this->IsNormalAircraft()) return; + EconomyAgeVehicle(this); if ((++this->day_counter & 7) == 0) DecreaseVehicleValue(this); @@ -654,7 +655,7 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE, * ~ acceleration * 77 (km-ish/h / 256) */ uint spd = v->acceleration * 77; - byte t; + uint8_t t; /* Adjust speed limits by plane speed factor to prevent taxiing * and take-off speeds being too low. */ @@ -671,7 +672,7 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE, speed_limit = v->vcache.cached_max_speed; } - v->subspeed = (t = v->subspeed) + (byte)spd; + v->subspeed = (t = v->subspeed) + (uint8_t)spd; /* Aircraft's current speed is used twice so that very fast planes are * forced to slow down rapidly in the short distance needed. The magic @@ -698,7 +699,7 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE, spd = v->GetOldAdvanceSpeed(spd); spd += v->progress; - v->progress = (byte)spd; + v->progress = (uint8_t)spd; return spd >> 8; } @@ -824,7 +825,7 @@ template int GetAircraftFlightLevel(Aircraft *v, bool takeoff); * @param rotation The rotation of the airport. * @return The index of the entry point */ -static byte AircraftGetEntryPoint(const Aircraft *v, const AirportFTAClass *apc, Direction rotation) +static uint8_t AircraftGetEntryPoint(const Aircraft *v, const AirportFTAClass *apc, Direction rotation) { assert(v != nullptr); assert(apc != nullptr); @@ -1181,10 +1182,13 @@ static bool HandleCrashedAircraft(Aircraft *v) if (v->crashed_counter < 500 && st == nullptr && ((v->crashed_counter % 3) == 0) ) { int z = GetSlopePixelZ(Clamp(v->x_pos, 0, Map::MaxX() * TILE_SIZE), Clamp(v->y_pos, 0, Map::MaxY() * TILE_SIZE)); v->z_pos -= 1; - if (v->z_pos == z) { + if (v->z_pos <= z) { v->crashed_counter = 500; - v->z_pos++; + v->z_pos = z + 1; + } else { + v->crashed_counter = 0; } + SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos); } if (v->crashed_counter < 650) { @@ -1284,7 +1288,7 @@ void HandleMissingAircraftOrders(Aircraft *v) */ const Station *st = GetTargetAirportIfValid(v); if (st == nullptr) { - Backup cur_company(_current_company, v->owner, FILE_LINE); + Backup cur_company(_current_company, v->owner); CommandCost ret = Command::Do(DC_EXEC, v->index, DepotCommand::None, {}); cur_company.Restore(); @@ -1650,7 +1654,7 @@ static void AircraftEventHandler_HeliTakeOff(Aircraft *v, const AirportFTAClass /* Send the helicopter to a hangar if needed for replacement */ if (v->NeedsAutomaticServicing()) { - Backup cur_company(_current_company, v->owner, FILE_LINE); + Backup cur_company(_current_company, v->owner); Command::Do(DC_EXEC, v->index, DepotCommand::Service | DepotCommand::LocateHangar, {}); cur_company.Restore(); } @@ -1665,7 +1669,7 @@ static void AircraftEventHandler_Flying(Aircraft *v, const AirportFTAClass *apc) /* {32,FLYING,NOTHING_block,37}, {32,LANDING,N,33}, {32,HELILANDING,N,41}, * if it is an airplane, look for LANDING, for helicopter HELILANDING * it is possible to choose from multiple landing runways, so loop until a free one is found */ - byte landingtype = (v->subtype == AIR_HELICOPTER) ? HELILANDING : LANDING; + uint8_t landingtype = (v->subtype == AIR_HELICOPTER) ? HELILANDING : LANDING; const AirportFTA *current = apc->layout[v->pos].next; while (current != nullptr) { if (current->heading == landingtype) { @@ -1701,7 +1705,7 @@ static void AircraftEventHandler_Landing(Aircraft *v, const AirportFTAClass *) /* check if the aircraft needs to be replaced or renewed and send it to a hangar if needed */ if (v->NeedsAutomaticServicing()) { - Backup cur_company(_current_company, v->owner, FILE_LINE); + Backup cur_company(_current_company, v->owner); Command::Do(DC_EXEC, v->index, DepotCommand::Service, {}); cur_company.Restore(); } @@ -1812,8 +1816,8 @@ static bool AirportMove(Aircraft *v, const AirportFTAClass *apc) const AirportFTA *current = &apc->layout[v->pos]; /* we have arrived in an important state (eg terminal, hangar, etc.) */ if (current->heading == v->state) { - byte prev_pos = v->pos; // location could be changed in state, so save it before-hand - byte prev_state = v->state; + uint8_t prev_pos = v->pos; // location could be changed in state, so save it before-hand + uint8_t prev_state = v->state; _aircraft_state_handlers[v->state](v, apc); if (v->state != FLYING) v->previous_pos = prev_pos; if (v->state != prev_state || v->pos != prev_pos) UpdateAircraftCache(v); @@ -1949,7 +1953,7 @@ static const MovementTerminalMapping _airport_terminal_mapping[] = { * @param last_terminal Terminal number to stop examining. * @return A terminal or helipad has been found, and has been assigned to the aircraft. */ -static bool FreeTerminal(Aircraft *v, byte i, byte last_terminal) +static bool FreeTerminal(Aircraft *v, uint8_t i, uint8_t last_terminal) { assert(last_terminal <= lengthof(_airport_terminal_mapping)); Station *st = Station::Get(v->targetairport); diff --git a/src/airport.cpp b/src/airport.cpp index 936087f3c0..a1e68b0629 100644 --- a/src/airport.cpp +++ b/src/airport.cpp @@ -110,12 +110,12 @@ AirportMovingData RotateAirportMovingData(const AirportMovingData *orig, Directi AirportFTAClass::AirportFTAClass( const AirportMovingData *moving_data_, - const byte *terminals_, - const byte num_helipads_, - const byte *entry_points_, + const uint8_t *terminals_, + const uint8_t num_helipads_, + const uint8_t *entry_points_, Flags flags_, const AirportFTAbuildup *apFA, - byte delta_z_ + uint8_t delta_z_ ) : moving_data(moving_data_), terminals(terminals_), @@ -204,7 +204,7 @@ static AirportFTA *AirportBuildAutomata(uint nofelements, const AirportFTAbuildu * @param airport_type %Airport type to query FTA from. @see AirportTypes * @return Finite state machine of the airport. */ -const AirportFTAClass *GetAirport(const byte airport_type) +const AirportFTAClass *GetAirport(const uint8_t airport_type) { if (airport_type == AT_DUMMY) return &_airportfta_dummy; return AirportSpec::Get(airport_type)->fsm; @@ -215,7 +215,7 @@ const AirportFTAClass *GetAirport(const byte airport_type) * @param hangar_tile The tile on which the vehicle is build * @return The position (index in airport node array) where the aircraft ends up */ -byte GetVehiclePosOnBuild(TileIndex hangar_tile) +uint8_t GetVehiclePosOnBuild(TileIndex hangar_tile) { const Station *st = Station::GetByTile(hangar_tile); const AirportFTAClass *apc = st->airport.GetFTA(); diff --git a/src/airport.h b/src/airport.h index ac831c0971..d5df10e275 100644 --- a/src/airport.h +++ b/src/airport.h @@ -152,12 +152,12 @@ public: AirportFTAClass( const AirportMovingData *moving_data, - const byte *terminals, - const byte num_helipads, - const byte *entry_points, + const uint8_t *terminals, + const uint8_t num_helipads, + const uint8_t *entry_points, Flags flags, const AirportFTAbuildup *apFA, - byte delta_z + uint8_t delta_z ); ~AirportFTAClass(); @@ -167,7 +167,7 @@ public: * @param position Element number to get movement data about. * @return Pointer to the movement data. */ - const AirportMovingData *MovingData(byte position) const + const AirportMovingData *MovingData(uint8_t position) const { assert(position < nofelements); return &moving_data[position]; @@ -175,12 +175,12 @@ public: const AirportMovingData *moving_data; ///< Movement data. struct AirportFTA *layout; ///< state machine for airport - const byte *terminals; ///< %Array with the number of terminal groups, followed by the number of terminals in each group. - const byte num_helipads; ///< Number of helipads on this airport. When 0 helicopters will go to normal terminals. + const uint8_t *terminals; ///< %Array with the number of terminal groups, followed by the number of terminals in each group. + const uint8_t num_helipads; ///< Number of helipads on this airport. When 0 helicopters will go to normal terminals. Flags flags; ///< Flags for this airport type. - byte nofelements; ///< number of positions the airport consists of - const byte *entry_points; ///< when an airplane arrives at this airport, enter it at position entry_point, index depends on direction - byte delta_z; ///< Z adjustment for helicopter pads + uint8_t nofelements; ///< number of positions the airport consists of + const uint8_t *entry_points; ///< when an airplane arrives at this airport, enter it at position entry_point, index depends on direction + uint8_t delta_z; ///< Z adjustment for helicopter pads }; DECLARE_ENUM_AS_BIT_SET(AirportFTAClass::Flags) @@ -190,12 +190,12 @@ DECLARE_ENUM_AS_BIT_SET(AirportFTAClass::Flags) struct AirportFTA { AirportFTA *next; ///< possible extra movement choices from this position uint64_t block; ///< 64 bit blocks (st->airport.flags), should be enough for the most complex airports - byte position; ///< the position that an airplane is at - byte next_position; ///< next position from this position - byte heading; ///< heading (current orders), guiding an airplane to its target on an airport + uint8_t position; ///< the position that an airplane is at + uint8_t next_position; ///< next position from this position + uint8_t heading; ///< heading (current orders), guiding an airplane to its target on an airport }; -const AirportFTAClass *GetAirport(const byte airport_type); -byte GetVehiclePosOnBuild(TileIndex hangar_tile); +const AirportFTAClass *GetAirport(const uint8_t airport_type); +uint8_t GetVehiclePosOnBuild(TileIndex hangar_tile); #endif /* AIRPORT_H */ diff --git a/src/airport_gui.cpp b/src/airport_gui.cpp index aa2069c425..a09bc82a89 100644 --- a/src/airport_gui.cpp +++ b/src/airport_gui.cpp @@ -22,7 +22,8 @@ #include "station_type.h" #include "newgrf_airport.h" #include "newgrf_callbacks.h" -#include "widgets/dropdown_type.h" +#include "dropdown_type.h" +#include "dropdown_func.h" #include "core/geometry_func.hpp" #include "hotkeys.h" #include "vehicle_func.h" @@ -41,11 +42,11 @@ static AirportClassID _selected_airport_class; ///< the currently visible airport class static int _selected_airport_index; ///< the index of the selected airport in the current class or -1 -static byte _selected_airport_layout; ///< selected airport layout number. +static uint8_t _selected_airport_layout; ///< selected airport layout number. static void ShowBuildAirportPicker(Window *parent); -SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout); +SpriteID GetCustomAirportSprite(const AirportSpec *as, uint8_t layout); void CcBuildAirport(Commands, const CommandCost &result, TileIndex tile) { @@ -63,8 +64,8 @@ static void PlaceAirport(TileIndex tile) { if (_selected_airport_index == -1) return; - byte airport_type = AirportClass::Get(_selected_airport_class)->GetSpec(_selected_airport_index)->GetIndex(); - byte layout = _selected_airport_layout; + uint8_t airport_type = AirportClass::Get(_selected_airport_class)->GetSpec(_selected_airport_index)->GetIndex(); + uint8_t layout = _selected_airport_layout; bool adjacent = _ctrl_pressed; auto proc = [=](bool test, StationID to_join) -> bool { @@ -82,7 +83,7 @@ static void PlaceAirport(TileIndex tile) struct BuildAirToolbarWindow : Window { int last_user_action; // Last started user action. - BuildAirToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + BuildAirToolbarWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->InitNested(window_number); this->OnInvalidateData(); @@ -207,11 +208,11 @@ static constexpr NWidgetPart _nested_air_toolbar_widgets[] = { EndContainer(), }; -static WindowDesc _air_toolbar_desc(__FILE__, __LINE__, +static WindowDesc _air_toolbar_desc( WDP_ALIGN_TOOLBAR, "toolbar_air", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_air_toolbar_widgets), std::end(_nested_air_toolbar_widgets), + _nested_air_toolbar_widgets, &BuildAirToolbarWindow::hotkeys ); @@ -227,7 +228,7 @@ Window *ShowBuildAirToolbar() if (!Company::IsValidID(_local_company)) return nullptr; CloseWindowByClass(WC_BUILD_TOOLBAR); - return AllocateWindowDescFront(&_air_toolbar_desc, TRANSPORT_AIR); + return AllocateWindowDescFront(_air_toolbar_desc, TRANSPORT_AIR); } class BuildAirportWindow : public PickerWindowBase { @@ -240,15 +241,15 @@ class BuildAirportWindow : public PickerWindowBase { { DropDownList list; - for (uint i = 0; i < AirportClass::GetClassCount(); i++) { - list.push_back(std::make_unique(AirportClass::Get((AirportClassID)i)->name, i, false)); + for (const auto &cls : AirportClass::Classes()) { + list.push_back(MakeDropDownListStringItem(cls.name, cls.Index())); } return list; } public: - BuildAirportWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) + BuildAirportWindow(WindowDesc &desc, Window *parent) : PickerWindowBase(desc, parent) { this->CreateNestedTree(); @@ -276,7 +277,7 @@ public: const AirportSpec *as = ac->GetSpec(_selected_airport_index); if (as->IsAvailable()) { /* Ensure the airport layout is valid. */ - _selected_airport_layout = Clamp(_selected_airport_layout, 0, as->num_table - 1); + _selected_airport_layout = Clamp(_selected_airport_layout, 0, static_cast(as->layouts.size() - 1)); selectFirstAirport = false; this->UpdateSelectSize(); } @@ -305,7 +306,7 @@ public: StringID string = GetAirportTextCallback(as, _selected_airport_layout, CBID_AIRPORT_LAYOUT_NAME); if (string != STR_UNDEFINED) { SetDParam(0, string); - } else if (as->num_table > 1) { + } else if (as->layouts.size() > 1) { SetDParam(0, STR_STATION_BUILD_AIRPORT_LAYOUT_NAME); SetDParam(1, _selected_airport_layout + 1); } @@ -316,17 +317,17 @@ public: } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_AP_CLASS_DROPDOWN: { Dimension d = {0, 0}; - for (uint i = 0; i < AirportClass::GetClassCount(); i++) { - d = maxdim(d, GetStringBoundingBox(AirportClass::Get((AirportClassID)i)->name)); + for (const auto &cls : AirportClass::Classes()) { + d = maxdim(d, GetStringBoundingBox(cls.name)); } d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } @@ -335,11 +336,11 @@ public: const AirportSpec *as = AirportSpec::Get(i); if (!as->enabled) continue; - size->width = std::max(size->width, GetStringBoundingBox(as->name).width + padding.width); + size.width = std::max(size.width, GetStringBoundingBox(as->name).width + padding.width); } this->line_height = GetCharacterHeight(FS_NORMAL) + padding.height; - size->height = 5 * this->line_height; + size.height = 5 * this->line_height; break; } @@ -347,13 +348,13 @@ public: for (int i = 0; i < NUM_AIRPORTS; i++) { const AirportSpec *as = AirportSpec::Get(i); if (!as->enabled) continue; - for (byte layout = 0; layout < as->num_table; layout++) { + for (uint8_t layout = 0; layout < static_cast(as->layouts.size()); layout++) { SpriteID sprite = GetCustomAirportSprite(as, layout); if (sprite != 0) { Dimension d = GetSpriteSize(sprite); d.width += WidgetDimensions::scaled.framerect.Horizontal(); d.height += WidgetDimensions::scaled.framerect.Vertical(); - *size = maxdim(d, *size); + size = maxdim(d, size); } } } @@ -363,12 +364,12 @@ public: for (int i = NEW_AIRPORT_OFFSET; i < NUM_AIRPORTS; i++) { const AirportSpec *as = AirportSpec::Get(i); if (!as->enabled) continue; - for (byte layout = 0; layout < as->num_table; layout++) { + for (uint8_t layout = 0; layout < static_cast(as->layouts.size()); layout++) { StringID string = GetAirportTextCallback(as, layout, CBID_AIRPORT_ADDITIONAL_TEXT); if (string == STR_UNDEFINED) continue; - Dimension d = GetStringMultiLineBoundingBox(string, *size); - *size = maxdim(d, *size); + Dimension d = GetStringMultiLineBoundingBox(string, size); + size = maxdim(d, size); } } break; @@ -473,14 +474,14 @@ public: const AirportSpec *as = AirportClass::Get(_selected_airport_class)->GetSpec(_selected_airport_index); int w = as->size_x; int h = as->size_y; - Direction rotation = as->rotation[_selected_airport_layout]; + Direction rotation = as->layouts[_selected_airport_layout].rotation; if (rotation == DIR_E || rotation == DIR_W) Swap(w, h); SetTileSelectSize(w, h); this->preview_sprite = GetCustomAirportSprite(as, _selected_airport_layout); this->SetWidgetDisabledState(WID_AP_LAYOUT_DECREASE, _selected_airport_layout == 0); - this->SetWidgetDisabledState(WID_AP_LAYOUT_INCREASE, _selected_airport_layout + 1 >= as->num_table); + this->SetWidgetDisabledState(WID_AP_LAYOUT_INCREASE, _selected_airport_layout + 1U >= as->layouts.size()); int rad = _settings_game.station.modified_catchment ? as->catchment : (uint)CA_UNMODIFIED; if (_settings_client.gui.station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad); @@ -495,8 +496,8 @@ public: break; case WID_AP_AIRPORT_LIST: { - int num_clicked = this->vscroll->GetScrolledRowFromWidget(pt.y, this, widget, 0, this->line_height); - if (num_clicked == INT_MAX) break; + int32_t num_clicked = this->vscroll->GetScrolledRowFromWidget(pt.y, this, widget, 0, this->line_height); + if (num_clicked == INT32_MAX) break; const AirportSpec *as = AirportClass::Get(_selected_airport_class)->GetSpec(num_clicked); if (as->IsAvailable()) this->SelectOtherAirport(num_clicked); break; @@ -545,14 +546,12 @@ public: if (change_class) { /* If that fails, select the first available airport * from the first class where airports are available. */ - for (AirportClassID j = APC_BEGIN; j < APC_MAX; j++) { - AirportClass *apclass = AirportClass::Get(j); - for (uint i = 0; i < apclass->GetSpecCount(); i++) { - const AirportSpec *as = apclass->GetSpec(i); + for (const auto &cls : AirportClass::Classes()) { + for (const auto &as : cls.Specs()) { if (as->IsAvailable()) { - _selected_airport_class = j; - this->vscroll->SetCount(apclass->GetSpecCount()); - this->SelectOtherAirport(i); + _selected_airport_class = cls.Index(); + this->vscroll->SetCount(cls.GetSpecCount()); + this->SelectOtherAirport(as->GetIndex()); return; } } @@ -618,16 +617,16 @@ static constexpr NWidgetPart _nested_build_airport_widgets[] = { EndContainer(), }; -static WindowDesc _build_airport_desc(__FILE__, __LINE__, +static WindowDesc _build_airport_desc( WDP_AUTO, nullptr, 0, 0, WC_BUILD_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, - std::begin(_nested_build_airport_widgets), std::end(_nested_build_airport_widgets) + _nested_build_airport_widgets ); static void ShowBuildAirportPicker(Window *parent) { - new BuildAirportWindow(&_build_airport_desc, parent); + new BuildAirportWindow(_build_airport_desc, parent); } void InitializeAirportGui() diff --git a/src/autocompletion.cpp b/src/autocompletion.cpp new file mode 100644 index 0000000000..e88150c752 --- /dev/null +++ b/src/autocompletion.cpp @@ -0,0 +1,66 @@ +/* + * This file is part of OpenTTD. + * OpenTTD 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, version 2. + * OpenTTD 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 OpenTTD. If not, see . + */ + +/** @file autocompletion.cpp Generic auto-completion engine. */ + +#include "stdafx.h" + +#include "autocompletion.h" + +#include "console_internal.h" +#include "town.h" +#include "network/network_base.h" + +#include "safeguards.h" + +bool AutoCompletion::AutoComplete() +{ + // We are pressing TAB for the first time after reset. + if (this->suggestions.empty()) { + this->InitSuggestions(this->textbuf->buf); + if (this->suggestions.empty()) { + return false; + } + this->ApplySuggestion(prefix, suggestions[0]); + return true; + } + + // We are pressing TAB again on the same text. + if (this->current_suggestion_index + 1 < this->suggestions.size()) { + this->ApplySuggestion(prefix, this->suggestions[++this->current_suggestion_index]); + } else { + // We are out of options, restore original text. + this->textbuf->Assign(initial_buf); + this->Reset(); + } + return true; +} + +void AutoCompletion::Reset() +{ + this->prefix = ""; + this->query = ""; + this->initial_buf.clear(); + this->suggestions.clear(); + this->current_suggestion_index = 0; +} + +void AutoCompletion::InitSuggestions(std::string_view text) +{ + this->initial_buf = text; + size_t space_pos = this->initial_buf.find_last_of(' '); + this->query = this->initial_buf; + if (space_pos == std::string::npos) { + this->prefix = ""; + } else { + this->prefix = this->query.substr(0, space_pos + 1); + this->query.remove_prefix(space_pos + 1); + } + + this->suggestions = this->GetSuggestions(prefix, query); + this->current_suggestion_index = 0; +} diff --git a/src/autocompletion.h b/src/autocompletion.h new file mode 100644 index 0000000000..452c23e87a --- /dev/null +++ b/src/autocompletion.h @@ -0,0 +1,46 @@ +/* + * This file is part of OpenTTD. + * OpenTTD 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, version 2. + * OpenTTD 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 OpenTTD. If not, see . + */ + +/** @file autocompletion.h Generic auto-completion engine. */ + +#ifndef AUTOCOMPLETION_H +#define AUTOCOMPLETION_H + +#include "textbuf_type.h" + +class AutoCompletion { +protected: + Textbuf *textbuf; + +private: + std::string initial_buf; ///< Value of text buffer when we started current suggestion session. + + std::string_view prefix; ///< Prefix of the text before the last space. + std::string_view query; ///< Last token of the text. This is used to based the suggestions on. + + std::vector suggestions; + size_t current_suggestion_index; + +public: + AutoCompletion(Textbuf *textbuf) : textbuf(textbuf) + { + this->Reset(); + } + virtual ~AutoCompletion() = default; + + // Returns true the textbuf was updated. + bool AutoComplete(); + void Reset(); + +private: + void InitSuggestions(std::string_view text); + + virtual std::vector GetSuggestions(std::string_view prefix, std::string_view query) = 0; + virtual void ApplySuggestion(std::string_view prefix, std::string_view suggestion) = 0; +}; + +#endif /* AUTOCOMPLETION_H */ diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index 010e773e30..757f18d371 100644 --- a/src/autoreplace_cmd.cpp +++ b/src/autoreplace_cmd.cpp @@ -362,7 +362,7 @@ static CommandCost BuildReplacementVehicle(Vehicle *old_veh, Vehicle **new_vehic /* Refit the vehicle if needed */ if (refit_cargo != CARGO_NO_REFIT) { - byte subtype = GetBestFittingSubType(old_veh, new_veh, refit_cargo); + uint8_t subtype = GetBestFittingSubType(old_veh, new_veh, refit_cargo); cost.AddCost(std::get<0>(Command::Do(DC_EXEC, new_veh->index, refit_cargo, subtype, false, false, 0))); assert(cost.Succeeded()); // This should be ensured by GetNewCargoTypeForReplace() diff --git a/src/autoreplace_gui.cpp b/src/autoreplace_gui.cpp index 64707259d3..065606612a 100644 --- a/src/autoreplace_gui.cpp +++ b/src/autoreplace_gui.cpp @@ -24,7 +24,8 @@ #include "core/geometry_func.hpp" #include "rail_gui.h" #include "road_gui.h" -#include "widgets/dropdown_func.h" +#include "dropdown_type.h" +#include "dropdown_func.h" #include "autoreplace_cmd.h" #include "group_cmd.h" #include "settings_cmd.h" @@ -33,8 +34,6 @@ #include "safeguards.h" -void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_list, uint16_t min, uint16_t max, EngineID selected_id, bool show_count, GroupID selected_group); - static bool EngineNumberSorter(const GUIEngineListItem &a, const GUIEngineListItem &b) { return Engine::Get(a.engine_id)->list_position < Engine::Get(b.engine_id)->list_position; @@ -72,7 +71,6 @@ void AddRemoveEngineFromAutoreplaceAndBuildWindows(VehicleType type) static const StringID _start_replace_dropdown[] = { STR_REPLACE_VEHICLES_NOW, STR_REPLACE_VEHICLES_WHEN_OLD, - INVALID_STRING_ID }; /** @@ -85,7 +83,7 @@ class ReplaceVehicleWindow : public Window { bool reset_sel_engine; ///< Also reset #sel_engine while updating left and/or right and no valid engine selected. GroupID sel_group; ///< Group selected to replace. int details_height; ///< Minimal needed height of the details panels, in text lines (found so far). - byte sort_criteria; ///< Criteria of sorting vehicles. + uint8_t sort_criteria; ///< Criteria of sorting vehicles. bool descending_sort_order; ///< Order of sorting vehicles. bool show_hidden_engines; ///< Whether to show the hidden engines. RailType sel_railtype; ///< Type of rail tracks selected. #INVALID_RAILTYPE to show all. @@ -113,27 +111,6 @@ class ReplaceVehicleWindow : public Window { return true; } - void AddChildren(const GUIEngineList &source, GUIEngineList &target, EngineID parent, int indent, int side) - { - for (const auto &item : source) { - if (item.variant_id != parent || item.engine_id == parent) continue; - - const Engine *e = Engine::Get(item.engine_id); - EngineDisplayFlags flags = item.flags; - if (e->display_last_variant != INVALID_ENGINE) flags &= ~EngineDisplayFlags::Shaded; - target.emplace_back(e->display_last_variant == INVALID_ENGINE ? item.engine_id : e->display_last_variant, item.engine_id, flags, indent); - - /* Add variants if not folded */ - if ((item.flags & (EngineDisplayFlags::HasVariants | EngineDisplayFlags::IsFolded)) == EngineDisplayFlags::HasVariants) { - /* Add this engine again as a child */ - if ((item.flags & EngineDisplayFlags::Shaded) == EngineDisplayFlags::None) { - target.emplace_back(item.engine_id, item.engine_id, EngineDisplayFlags::None, indent + 1); - } - AddChildren(source, target, item.engine_id, indent + 1, side); - } - } - } - /** * Generate an engines list * @param draw_left true if generating the left list, otherwise false @@ -143,7 +120,7 @@ class ReplaceVehicleWindow : public Window { std::vector variants; EngineID selected_engine = INVALID_ENGINE; VehicleType type = (VehicleType)this->window_number; - byte side = draw_left ? 0 : 1; + uint8_t side = draw_left ? 0 : 1; GUIEngineList list; @@ -207,7 +184,7 @@ class ReplaceVehicleWindow : public Window { this->engines[side].clear(); if (side == 1) { - AddChildren(list, this->engines[side], INVALID_ENGINE, 0, side); + GUIEngineListAddChildren(this->engines[side], list); } else { this->engines[side].swap(list); } @@ -286,7 +263,7 @@ class ReplaceVehicleWindow : public Window { } public: - ReplaceVehicleWindow(WindowDesc *desc, VehicleType vehicletype, GroupID id_g) : Window(desc) + ReplaceVehicleWindow(WindowDesc &desc, VehicleType vehicletype, GroupID id_g) : Window(desc) { this->sel_railtype = INVALID_RAILTYPE; this->sel_roadtype = INVALID_ROADTYPE; @@ -315,26 +292,26 @@ public: this->sel_group = id_g; } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_RV_SORT_ASCENDING_DESCENDING: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } case WID_RV_LEFT_MATRIX: case WID_RV_RIGHT_MATRIX: - resize->height = GetEngineListHeight((VehicleType)this->window_number); - size->height = (this->window_number <= VEH_ROAD ? 8 : 4) * resize->height; + resize.height = GetEngineListHeight((VehicleType)this->window_number); + size.height = (this->window_number <= VEH_ROAD ? 8 : 4) * resize.height; break; case WID_RV_LEFT_DETAILS: case WID_RV_RIGHT_DETAILS: - size->height = GetCharacterHeight(FS_NORMAL) * this->details_height + padding.height; + size.height = GetCharacterHeight(FS_NORMAL) * this->details_height + padding.height; break; case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: { @@ -345,7 +322,7 @@ public: d = maxdim(d, GetStringBoundingBox(str)); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } @@ -354,7 +331,7 @@ public: d = maxdim(d, GetStringBoundingBox(STR_REPLACE_WAGONS)); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } @@ -363,7 +340,7 @@ public: d = maxdim(d, GetStringBoundingBox(STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED)); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } @@ -374,7 +351,7 @@ public: } d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } @@ -385,18 +362,16 @@ public: } d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } case WID_RV_START_REPLACE: { Dimension d = GetStringBoundingBox(STR_REPLACE_VEHICLES_START); - for (int i = 0; _start_replace_dropdown[i] != INVALID_STRING_ID; i++) { - d = maxdim(d, GetStringBoundingBox(_start_replace_dropdown[i])); - } + d = maxdim(d, GetStringListBoundingBox(_start_replace_dropdown)); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } } @@ -424,7 +399,7 @@ public: break; case WID_RV_SORT_DROPDOWN: - SetDParam(0, _engine_sort_listing[this->window_number][this->sort_criteria]); + SetDParam(0, std::data(_engine_sort_listing[this->window_number])[this->sort_criteria]); break; case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: { @@ -487,11 +462,9 @@ public: case WID_RV_LEFT_MATRIX: case WID_RV_RIGHT_MATRIX: { int side = (widget == WID_RV_LEFT_MATRIX) ? 0 : 1; - EngineID start = static_cast(this->vscroll[side]->GetPosition()); // what is the offset for the start (scrolling) - EngineID end = static_cast(std::min(this->vscroll[side]->GetCapacity() + start, this->engines[side].size())); /* Do the actual drawing */ - DrawEngineList((VehicleType)this->window_number, r, this->engines[side], start, end, this->sel_engine[side], side == 0, this->sel_group); + DrawEngineList((VehicleType)this->window_number, r, this->engines[side], *this->vscroll[side], this->sel_engine[side], side == 0, this->sel_group); break; } } @@ -565,8 +538,8 @@ public: case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: { DropDownList list; - list.push_back(std::make_unique(STR_REPLACE_ENGINES, 1, false)); - list.push_back(std::make_unique(STR_REPLACE_WAGONS, 0, false)); + list.push_back(MakeDropDownListStringItem(STR_REPLACE_ENGINES, 1)); + list.push_back(MakeDropDownListStringItem(STR_REPLACE_WAGONS, 0)); ShowDropDownList(this, std::move(list), this->replace_engines ? 1 : 0, WID_RV_TRAIN_ENGINEWAGON_DROPDOWN); break; } @@ -609,7 +582,7 @@ public: case WID_RV_LEFT_MATRIX: case WID_RV_RIGHT_MATRIX: { - byte click_side; + uint8_t click_side; if (widget == WID_RV_LEFT_MATRIX) { click_side = 0; } else { @@ -742,10 +715,10 @@ static constexpr NWidgetPart _nested_replace_rail_vehicle_widgets[] = { EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_VEHICLES_IN_USE, STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_VEHICLES_IN_USE, STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP), SetFill(1, 1), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical()), SetResize(1, 0), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES, STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES, STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP), SetFill(1, 1), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical()), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), @@ -789,11 +762,11 @@ static constexpr NWidgetPart _nested_replace_rail_vehicle_widgets[] = { EndContainer(), }; -static WindowDesc _replace_rail_vehicle_desc(__FILE__, __LINE__, +static WindowDesc _replace_rail_vehicle_desc( WDP_AUTO, "replace_vehicle_train", 500, 140, WC_REPLACE_VEHICLE, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_replace_rail_vehicle_widgets), std::end(_nested_replace_rail_vehicle_widgets) + _nested_replace_rail_vehicle_widgets ); static constexpr NWidgetPart _nested_replace_road_vehicle_widgets[] = { @@ -806,10 +779,10 @@ static constexpr NWidgetPart _nested_replace_road_vehicle_widgets[] = { EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_VEHICLES_IN_USE, STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_VEHICLES_IN_USE, STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP), SetFill(1, 1), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical()), SetResize(1, 0), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES, STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES, STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP), SetFill(1, 1), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical()), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), @@ -847,11 +820,11 @@ static constexpr NWidgetPart _nested_replace_road_vehicle_widgets[] = { EndContainer(), }; -static WindowDesc _replace_road_vehicle_desc(__FILE__, __LINE__, +static WindowDesc _replace_road_vehicle_desc( WDP_AUTO, "replace_vehicle_road", 500, 140, WC_REPLACE_VEHICLE, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_replace_road_vehicle_widgets), std::end(_nested_replace_road_vehicle_widgets) + _nested_replace_road_vehicle_widgets ); static constexpr NWidgetPart _nested_replace_vehicle_widgets[] = { @@ -864,10 +837,10 @@ static constexpr NWidgetPart _nested_replace_vehicle_widgets[] = { EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_VEHICLES_IN_USE, STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_VEHICLES_IN_USE, STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP), SetFill(1, 1), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical()), SetResize(1, 0), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES, STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP), SetFill(1, 1), SetMinimalSize(0, 12), SetResize(1, 0), + NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES, STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP), SetFill(1, 1), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical()), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), @@ -901,11 +874,11 @@ static constexpr NWidgetPart _nested_replace_vehicle_widgets[] = { EndContainer(), }; -static WindowDesc _replace_vehicle_desc(__FILE__, __LINE__, +static WindowDesc _replace_vehicle_desc( WDP_AUTO, "replace_vehicle", 456, 118, WC_REPLACE_VEHICLE, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_replace_vehicle_widgets), std::end(_nested_replace_vehicle_widgets) + _nested_replace_vehicle_widgets ); /** @@ -916,11 +889,9 @@ static WindowDesc _replace_vehicle_desc(__FILE__, __LINE__, void ShowReplaceGroupVehicleWindow(GroupID id_g, VehicleType vehicletype) { CloseWindowById(WC_REPLACE_VEHICLE, vehicletype); - WindowDesc *desc; switch (vehicletype) { - case VEH_TRAIN: desc = &_replace_rail_vehicle_desc; break; - case VEH_ROAD: desc = &_replace_road_vehicle_desc; break; - default: desc = &_replace_vehicle_desc; break; + case VEH_TRAIN: new ReplaceVehicleWindow(_replace_rail_vehicle_desc, vehicletype, id_g); break; + case VEH_ROAD: new ReplaceVehicleWindow(_replace_road_vehicle_desc, vehicletype, id_g); break; + default: new ReplaceVehicleWindow(_replace_vehicle_desc, vehicletype, id_g); break; } - new ReplaceVehicleWindow(desc, vehicletype, id_g); } diff --git a/src/base_media_base.h b/src/base_media_base.h index 5d74cb1a0d..0164a1176a 100644 --- a/src/base_media_base.h +++ b/src/base_media_base.h @@ -158,8 +158,8 @@ struct BaseSet { */ std::optional GetTextfile(TextfileType type) const { - for (uint i = 0; i < NUM_FILES; i++) { - auto textfile = ::GetTextfile(type, BASESET_DIR, this->files[i].filename); + for (const auto &file : this->files) { + auto textfile = ::GetTextfile(type, BASESET_DIR, file.filename); if (textfile.has_value()) { return textfile; } @@ -313,8 +313,8 @@ static const uint NUM_SONGS_AVAILABLE = 1 + NUM_SONG_CLASSES * NUM_SONGS_CLASS; static const uint NUM_SONGS_PLAYLIST = 32; /* Functions to read DOS music CAT files, similar to but not quite the same as sound effect CAT files */ -char *GetMusicCatEntryName(const std::string &filename, size_t entrynum); -byte *GetMusicCatEntryData(const std::string &filename, size_t entrynum, size_t &entrylen); +std::optional GetMusicCatEntryName(const std::string &filename, size_t entrynum); +std::optional> GetMusicCatEntryData(const std::string &filename, size_t entrynum); enum MusicTrackType { MTT_STANDARDMIDI, ///< Standard MIDI file @@ -324,7 +324,7 @@ enum MusicTrackType { /** Metadata about a music track. */ struct MusicSongInfo { std::string songname; ///< name of song displayed in UI - byte tracknr; ///< track number of song displayed in UI + uint8_t tracknr; ///< track number of song displayed in UI std::string filename; ///< file on disk containing song (when used in MusicSet class) MusicTrackType filetype; ///< decoder required for song file int cat_index; ///< entry index in CAT file, for filetype==MTT_MPSMIDI @@ -338,7 +338,7 @@ struct MusicSet : BaseSet { /** Data about individual songs in set. */ MusicSongInfo songinfo[NUM_SONGS_AVAILABLE]; /** Number of valid songs in set. */ - byte num_available; + uint8_t num_available; bool FillSetDetails(const IniFile &ini, const std::string &path, const std::string &full_filename); }; diff --git a/src/base_media_func.h b/src/base_media_func.h index d04485579c..2d68caaa6b 100644 --- a/src/base_media_func.h +++ b/src/base_media_func.h @@ -325,8 +325,8 @@ template const char *TryGetBaseSetFile(const ContentInfo *ci, if (!md5sum) return s->files[0].filename.c_str(); MD5Hash md5; - for (uint i = 0; i < Tbase_set::NUM_FILES; i++) { - md5 ^= s->files[i].hash; + for (const auto &file : s->files) { + md5 ^= file.hash; } if (md5 == ci->md5sum) return s->files[0].filename.c_str(); } diff --git a/src/base_station_base.h b/src/base_station_base.h index 82b6c967b2..0c0ad22770 100644 --- a/src/base_station_base.h +++ b/src/base_station_base.h @@ -19,16 +19,11 @@ typedef Pool StationPool; extern StationPool _station_pool; -struct StationSpecList { - const StationSpec *spec; - uint32_t grfid; ///< GRF ID of this custom station - uint16_t localidx; ///< Station ID within GRF of station -}; - -struct RoadStopSpecList { - const RoadStopSpec *spec; - uint32_t grfid; ///< GRF ID of this custom road stop - uint16_t localidx; ///< Station ID within GRF of road stop +template +struct SpecMapping { + const T *spec; ///< Custom spec. + uint32_t grfid; ///< GRF ID of this custom spec. + uint16_t localidx; ///< Local ID within GRF of this custom spec. }; struct RoadStopTileData { @@ -64,7 +59,7 @@ struct StationRect : public Rect { struct BaseStation : StationPool::PoolItem<&_station_pool> { TileIndex xy; ///< Base tile of the station TrackedViewportSign sign; ///< NOSAVE: Dimensions of sign - byte delete_ctr; ///< Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted. + uint8_t delete_ctr; ///< Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted. std::string name; ///< Custom name StringID string_id; ///< Default name (town area) of station @@ -74,13 +69,13 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { Owner owner; ///< The owner of this station StationFacility facilities; ///< The facilities that this station has - std::vector speclist; ///< List of rail station specs of this station. - std::vector roadstop_speclist; ///< List of road stop specs of this station + std::vector> speclist; ///< List of rail station specs of this station. + std::vector> roadstop_speclist; ///< List of road stop specs of this station TimerGameCalendar::Date build_date; ///< Date of construction uint16_t random_bits; ///< Random bits assigned to this station - byte waiting_triggers; ///< Waiting triggers (NewGRF) for this station + uint8_t waiting_triggers; ///< Waiting triggers (NewGRF) for this station uint8_t cached_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen. uint8_t cached_roadstop_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask for road stops, used to determine if trigger processing should happen. CargoTypes cached_cargo_triggers; ///< NOSAVE: Combined cargo trigger bitmask @@ -118,7 +113,7 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { * @param available will return false if ever the variable asked for does not exist * @return the value stored in the corresponding variable */ - virtual uint32_t GetNewGRFVariable(const struct ResolverObject &object, byte variable, byte parameter, bool *available) const = 0; + virtual uint32_t GetNewGRFVariable(const struct ResolverObject &object, uint8_t variable, uint8_t parameter, bool &available) const = 0; /** * Update the coordinated of the sign (as shown in the viewport). @@ -184,7 +179,7 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { return (this->facilities & ~FACIL_WAYPOINT) != 0; } - inline byte GetRoadStopRandomBits(TileIndex tile) const + inline uint8_t GetRoadStopRandomBits(TileIndex tile) const { for (const RoadStopTileData &tile_data : this->custom_roadstop_tile_data) { if (tile_data.tile == tile) return tile_data.random_bits; @@ -192,7 +187,7 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { return 0; } - inline byte GetRoadStopAnimationFrame(TileIndex tile) const + inline uint8_t GetRoadStopAnimationFrame(TileIndex tile) const { for (const RoadStopTileData &tile_data : this->custom_roadstop_tile_data) { if (tile_data.tile == tile) return tile_data.animation_frame; @@ -201,11 +196,11 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { } private: - void SetRoadStopTileData(TileIndex tile, byte data, bool animation); + void SetRoadStopTileData(TileIndex tile, uint8_t data, bool animation); public: - inline void SetRoadStopRandomBits(TileIndex tile, byte random_bits) { this->SetRoadStopTileData(tile, random_bits, false); } - inline void SetRoadStopAnimationFrame(TileIndex tile, byte frame) { this->SetRoadStopTileData(tile, frame, true); } + inline void SetRoadStopRandomBits(TileIndex tile, uint8_t random_bits) { this->SetRoadStopTileData(tile, random_bits, false); } + inline void SetRoadStopAnimationFrame(TileIndex tile, uint8_t frame) { this->SetRoadStopTileData(tile, frame, true); } void RemoveRoadStopTileData(TileIndex tile); static void PostDestructor(size_t index); @@ -226,7 +221,7 @@ struct SpecializedStation : public BaseStation { * Set station type correctly * @param tile The base tile of the station. */ - inline SpecializedStation(TileIndex tile) : + inline SpecializedStation(TileIndex tile) : BaseStation(tile) { this->facilities = EXPECTED_FACIL; @@ -310,4 +305,14 @@ struct SpecializedStation : public BaseStation { static Pool::IterateWrapper Iterate(size_t from = 0) { return Pool::IterateWrapper(from); } }; +/** + * Get spec mapping list for each supported custom spec type. + * @tparam T Spec type. + * @param bst Station of custom spec list. + * @return Speclist of custom spec type. + */ +template std::vector> &GetStationSpecList(BaseStation *bst); +template <> inline std::vector> &GetStationSpecList(BaseStation *bst) { return bst->speclist; } +template <> inline std::vector> &GetStationSpecList(BaseStation *bst) { return bst->roadstop_speclist; } + #endif /* BASE_STATION_BASE_H */ diff --git a/src/blitter/32bpp_anim.cpp b/src/blitter/32bpp_anim.cpp index 0c2612fcde..d118d75f7a 100644 --- a/src/blitter/32bpp_anim.cpp +++ b/src/blitter/32bpp_anim.cpp @@ -34,23 +34,23 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel const uint16_t *src_n = (const uint16_t *)(src->data + src->offset[zoom][1]); for (uint i = bp->skip_top; i != 0; i--) { - src_px = (const Colour *)((const byte *)src_px + *(const uint32_t *)src_px); - src_n = (const uint16_t *)((const byte *)src_n + *(const uint32_t *)src_n); + src_px = (const Colour *)((const uint8_t *)src_px + *(const uint32_t *)src_px); + src_n = (const uint16_t *)((const uint8_t *)src_n + *(const uint32_t *)src_n); } Colour *dst = (Colour *)bp->dst + bp->top * bp->pitch + bp->left; uint16_t *anim = this->anim_buf + this->ScreenToAnimOffset((uint32_t *)bp->dst) + bp->top * this->anim_buf_pitch + bp->left; - const byte *remap = bp->remap; // store so we don't have to access it via bp every time + const uint8_t *remap = bp->remap; // store so we don't have to access it via bp every time for (int y = 0; y < bp->height; y++) { Colour *dst_ln = dst + bp->pitch; uint16_t *anim_ln = anim + this->anim_buf_pitch; - const Colour *src_px_ln = (const Colour *)((const byte *)src_px + *(const uint32_t *)src_px); + const Colour *src_px_ln = (const Colour *)((const uint8_t *)src_px + *(const uint32_t *)src_px); src_px++; - const uint16_t *src_n_ln = (const uint16_t *)((const byte *)src_n + *(const uint32_t *)src_n); + const uint16_t *src_n_ln = (const uint16_t *)((const uint8_t *)src_n + *(const uint32_t *)src_n); src_n += 2; Colour *dst_end = dst + bp->skip_left; diff --git a/src/blitter/32bpp_anim.hpp b/src/blitter/32bpp_anim.hpp index b5b19d784e..975a9bfd62 100644 --- a/src/blitter/32bpp_anim.hpp +++ b/src/blitter/32bpp_anim.hpp @@ -47,7 +47,7 @@ public: void PaletteAnimate(const Palette &palette) override; Blitter::PaletteAnimation UsePaletteAnimation() override; - const char *GetName() override { return "32bpp-anim"; } + std::string_view GetName() override { return "32bpp-anim"; } void PostResize() override; /** diff --git a/src/blitter/32bpp_anim_sse2.hpp b/src/blitter/32bpp_anim_sse2.hpp index 669cef80a7..56262e387f 100644 --- a/src/blitter/32bpp_anim_sse2.hpp +++ b/src/blitter/32bpp_anim_sse2.hpp @@ -31,7 +31,7 @@ class Blitter_32bppSSE2_Anim : public Blitter_32bppAnim { public: void PaletteAnimate(const Palette &palette) override; - const char *GetName() override { return "32bpp-sse2-anim"; } + std::string_view GetName() override { return "32bpp-sse2-anim"; } }; /** Factory for the partially 32bpp blitter with animation. */ diff --git a/src/blitter/32bpp_anim_sse4.cpp b/src/blitter/32bpp_anim_sse4.cpp index 031f0cc985..c0007f1e29 100644 --- a/src/blitter/32bpp_anim_sse4.cpp +++ b/src/blitter/32bpp_anim_sse4.cpp @@ -33,7 +33,7 @@ template remap; + const uint8_t * const remap = bp->remap; Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left; uint16_t *anim_line = this->anim_buf + this->ScreenToAnimOffset((uint32_t *)bp->dst) + bp->top * this->anim_buf_pitch + bp->left; int effective_width = bp->width; @@ -42,7 +42,7 @@ inline void Blitter_32bppSSE4_Anim::Draw(const BlitterParams *bp, ZoomLevel zoom const Blitter_32bppSSE_Base::SpriteData * const sd = (const Blitter_32bppSSE_Base::SpriteData *) bp->sprite; const SpriteInfo * const si = &sd->infos[zoom]; const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width; - const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size); + const Colour *src_rgba_line = (const Colour *) ((const uint8_t *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size); if (read_mode != RM_WITH_MARGIN) { src_rgba_line += bp->skip_left; @@ -104,20 +104,20 @@ inline void Blitter_32bppSSE4_Anim::Draw(const BlitterParams *bp, ZoomLevel zoom if (animated) { /* Remap colours. */ - const byte m0 = mvX2; + const uint8_t m0 = mvX2; if (m0 >= PALETTE_ANIM_START) { const Colour c0 = (this->LookupColourInPalette(m0).data & 0x00FFFFFF) | (src[0].data & 0xFF000000); - InsertFirstUint32(AdjustBrightneSSE(c0, (byte) (mvX2 >> 8)).data, srcABCD); + InsertFirstUint32(AdjustBrightneSSE(c0, (uint8_t) (mvX2 >> 8)).data, srcABCD); } - const byte m1 = mvX2 >> 16; + const uint8_t m1 = mvX2 >> 16; if (m1 >= PALETTE_ANIM_START) { const Colour c1 = (this->LookupColourInPalette(m1).data & 0x00FFFFFF) | (src[1].data & 0xFF000000); - InsertSecondUint32(AdjustBrightneSSE(c1, (byte) (mvX2 >> 24)).data, srcABCD); + InsertSecondUint32(AdjustBrightneSSE(c1, (uint8_t) (mvX2 >> 24)).data, srcABCD); } /* Update anim buffer. */ - const byte a0 = src[0].a; - const byte a1 = src[1].a; + const uint8_t a0 = src[0].a; + const uint8_t a1 = src[1].a; uint32_t anim01 = 0; if (a0 == 255) { if (a1 == 255) { @@ -185,9 +185,9 @@ bmno_full_transparency: __m128i dstABCD = _mm_loadl_epi64((__m128i*) dst); /* Remap colours. */ - const uint m0 = (byte) mvX2; + const uint m0 = (uint8_t) mvX2; const uint r0 = remap[m0]; - const uint m1 = (byte) (mvX2 >> 16); + const uint m1 = (uint8_t) (mvX2 >> 16); const uint r1 = remap[m1]; if (mvX2 & 0x00FF00FF) { #define CMOV_REMAP(m_colour, m_colour_init, m_src, m_m) \ @@ -195,7 +195,7 @@ bmno_full_transparency: Colour m_colour = m_colour_init; \ { \ const Colour srcm = (Colour) (m_src); \ - const uint m = (byte) (m_m); \ + const uint m = (uint8_t) (m_m); \ const uint r = remap[m]; \ const Colour cmap = (this->LookupColourInPalette(r).data & 0x00FFFFFF) | (srcm.data & 0xFF000000); \ m_colour = r == 0 ? m_colour : cmap; \ @@ -225,8 +225,8 @@ bmno_full_transparency: /* Update anim buffer. */ if (animated) { - const byte a0 = src[0].a; - const byte a1 = src[1].a; + const uint8_t a0 = src[0].a; + const uint8_t a1 = src[1].a; uint32_t anim01 = mvX2 & 0xFF00FF00; if (a0 == 255) { anim01 |= r0; @@ -368,7 +368,7 @@ bmcr_alpha_blend_single: next_line: if (mode != BM_TRANSPARENT && mode != BM_TRANSPARENT_REMAP) src_mv_line += si->sprite_width; - src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size); + src_rgba_line = (const Colour*) ((const uint8_t*) src_rgba_line + si->sprite_line_size); dst_line += bp->pitch; anim_line += this->anim_buf_pitch; } diff --git a/src/blitter/32bpp_anim_sse4.hpp b/src/blitter/32bpp_anim_sse4.hpp index d11c90d341..8217e7d805 100644 --- a/src/blitter/32bpp_anim_sse4.hpp +++ b/src/blitter/32bpp_anim_sse4.hpp @@ -39,10 +39,10 @@ public: template void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override; - Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override { + Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override { return Blitter_32bppSSE_Base::Encode(sprite, allocator); } - const char *GetName() override { return "32bpp-sse4-anim"; } + std::string_view GetName() override { return "32bpp-sse4-anim"; } using Blitter_32bppSSE2_Anim::LookupColourInPalette; }; diff --git a/src/blitter/32bpp_optimized.cpp b/src/blitter/32bpp_optimized.cpp index 15b607a9a7..848bb7e9c7 100644 --- a/src/blitter/32bpp_optimized.cpp +++ b/src/blitter/32bpp_optimized.cpp @@ -40,26 +40,26 @@ inline void Blitter_32bppOptimized::Draw(const Blitter::BlitterParams *bp, ZoomL /* skip upper lines in src_px and src_n */ for (uint i = bp->skip_top; i != 0; i--) { - src_px = (const Colour *)((const byte *)src_px + *(const uint32_t *)src_px); - src_n = (const uint16_t *)((const byte *)src_n + *(const uint32_t *)src_n); + src_px = (const Colour *)((const uint8_t *)src_px + *(const uint32_t *)src_px); + src_n = (const uint16_t *)((const uint8_t *)src_n + *(const uint32_t *)src_n); } /* skip lines in dst */ Colour *dst = (Colour *)bp->dst + bp->top * bp->pitch + bp->left; /* store so we don't have to access it via bp every time (compiler assumes pointer aliasing) */ - const byte *remap = bp->remap; + const uint8_t *remap = bp->remap; for (int y = 0; y < bp->height; y++) { /* next dst line begins here */ Colour *dst_ln = dst + bp->pitch; /* next src line begins here */ - const Colour *src_px_ln = (const Colour *)((const byte *)src_px + *(const uint32_t *)src_px); + const Colour *src_px_ln = (const Colour *)((const uint8_t *)src_px + *(const uint32_t *)src_px); src_px++; /* next src_n line begins here */ - const uint16_t *src_n_ln = (const uint16_t *)((const byte *)src_n + *(const uint32_t *)src_n); + const uint16_t *src_n_ln = (const uint16_t *)((const uint8_t *)src_n + *(const uint32_t *)src_n); src_n += 2; /* we will end this line when we reach this point */ @@ -285,7 +285,7 @@ void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, this->Draw(bp, mode, zoom); } -template Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) +template Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) { /* streams of pixels (a, r, g, b channels) * @@ -306,9 +306,9 @@ template Sprite *Blitter_32bppOptimized::EncodeInternal(const ZoomLevel zoom_min; ZoomLevel zoom_max; - if (sprite[ZOOM_LVL_NORMAL].type == SpriteType::Font) { - zoom_min = ZOOM_LVL_NORMAL; - zoom_max = ZOOM_LVL_NORMAL; + if (sprite[ZOOM_LVL_MIN].type == SpriteType::Font) { + zoom_min = ZOOM_LVL_MIN; + zoom_max = ZOOM_LVL_MIN; } else { zoom_min = _settings_client.gui.zoom_min; zoom_max = _settings_client.gui.zoom_max; @@ -405,8 +405,8 @@ template Sprite *Blitter_32bppOptimized::EncodeInternal(const dst_n_ln = (uint32_t *)dst_n; } - lengths[z][0] = (byte *)dst_px_ln - (byte *)dst_px_orig[z]; // all are aligned to 4B boundary - lengths[z][1] = (byte *)dst_n_ln - (byte *)dst_n_orig[z]; + lengths[z][0] = (uint8_t *)dst_px_ln - (uint8_t *)dst_px_orig[z]; // all are aligned to 4B boundary + lengths[z][1] = (uint8_t *)dst_n_ln - (uint8_t *)dst_n_orig[z]; } uint len = 0; // total length of data @@ -414,12 +414,12 @@ template Sprite *Blitter_32bppOptimized::EncodeInternal(const len += lengths[z][0] + lengths[z][1]; } - Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sizeof(SpriteData) + len); + Sprite *dest_sprite = allocator.Allocate(sizeof(*dest_sprite) + sizeof(SpriteData) + len); - dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height; - dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width; - dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs; - dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs; + dest_sprite->height = sprite[ZOOM_LVL_MIN].height; + dest_sprite->width = sprite[ZOOM_LVL_MIN].width; + dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs; + dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs; SpriteData *dst = (SpriteData *)dest_sprite->data; memset(dst, 0, sizeof(*dst)); @@ -438,10 +438,10 @@ template Sprite *Blitter_32bppOptimized::EncodeInternal(const return dest_sprite; } -template Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator); -template Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator); +template Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator); +template Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator); -Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) +Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) { return this->EncodeInternal(sprite, allocator); } diff --git a/src/blitter/32bpp_optimized.hpp b/src/blitter/32bpp_optimized.hpp index e40a0ec667..862c1d9e7e 100644 --- a/src/blitter/32bpp_optimized.hpp +++ b/src/blitter/32bpp_optimized.hpp @@ -18,19 +18,19 @@ public: /** Data stored about a (single) sprite. */ struct SpriteData { uint32_t offset[ZOOM_LVL_END][2]; ///< Offsets (from .data) to streams for different zoom levels, and the normal and remap image information. - byte data[]; ///< Data, all zoomlevels. + uint8_t data[]; ///< Data, all zoomlevels. }; void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override; - Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override; + Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override; - const char *GetName() override { return "32bpp-optimized"; } + std::string_view GetName() override { return "32bpp-optimized"; } template void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); protected: template void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); - template Sprite *EncodeInternal(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator); + template Sprite *EncodeInternal(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator); }; /** Factory for the optimised 32 bpp blitter (without palette animation). */ diff --git a/src/blitter/32bpp_simple.cpp b/src/blitter/32bpp_simple.cpp index 00c0497109..ae660e372f 100644 --- a/src/blitter/32bpp_simple.cpp +++ b/src/blitter/32bpp_simple.cpp @@ -115,20 +115,20 @@ void Blitter_32bppSimple::DrawColourMappingRect(void *dst, int width, int height Debug(misc, 0, "32bpp blitter doesn't know how to draw this colour table ('{}')", pal); } -Sprite *Blitter_32bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) +Sprite *Blitter_32bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) { Blitter_32bppSimple::Pixel *dst; - Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite[ZOOM_LVL_NORMAL].height * (size_t)sprite[ZOOM_LVL_NORMAL].width * sizeof(*dst)); + Sprite *dest_sprite = allocator.Allocate(sizeof(*dest_sprite) + static_cast(sprite[ZOOM_LVL_MIN].height) * static_cast(sprite[ZOOM_LVL_MIN].width) * sizeof(*dst)); - dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height; - dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width; - dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs; - dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs; + dest_sprite->height = sprite[ZOOM_LVL_MIN].height; + dest_sprite->width = sprite[ZOOM_LVL_MIN].width; + dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs; + dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs; dst = (Blitter_32bppSimple::Pixel *)dest_sprite->data; - SpriteLoader::CommonPixel *src = (SpriteLoader::CommonPixel *)sprite[ZOOM_LVL_NORMAL].data; + SpriteLoader::CommonPixel *src = (SpriteLoader::CommonPixel *)sprite[ZOOM_LVL_MIN].data; - for (int i = 0; i < sprite[ZOOM_LVL_NORMAL].height * sprite[ZOOM_LVL_NORMAL].width; i++) { + for (int i = 0; i < sprite[ZOOM_LVL_MIN].height * sprite[ZOOM_LVL_MIN].width; i++) { if (src->m == 0) { dst[i].r = src->r; dst[i].g = src->g; diff --git a/src/blitter/32bpp_simple.hpp b/src/blitter/32bpp_simple.hpp index df154ce57d..902af2905a 100644 --- a/src/blitter/32bpp_simple.hpp +++ b/src/blitter/32bpp_simple.hpp @@ -26,9 +26,9 @@ class Blitter_32bppSimple : public Blitter_32bppBase { public: void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override; void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) override; - Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override; + Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override; - const char *GetName() override { return "32bpp-simple"; } + std::string_view GetName() override { return "32bpp-simple"; } }; /** Factory for the simple 32 bpp blitter. */ diff --git a/src/blitter/32bpp_sse2.cpp b/src/blitter/32bpp_sse2.cpp index 1638127b56..2b4505253b 100644 --- a/src/blitter/32bpp_sse2.cpp +++ b/src/blitter/32bpp_sse2.cpp @@ -20,15 +20,15 @@ /** Instantiation of the SSE2 32bpp blitter factory. */ static FBlitter_32bppSSE2 iFBlitter_32bppSSE2; -Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) +Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) { /* First uint32_t of a line = the number of transparent pixels from the left. * Second uint32_t of a line = the number of transparent pixels from the right. * Then all RGBA then all MV. */ - ZoomLevel zoom_min = ZOOM_LVL_NORMAL; - ZoomLevel zoom_max = ZOOM_LVL_NORMAL; - if (sprite[ZOOM_LVL_NORMAL].type != SpriteType::Font) { + ZoomLevel zoom_min = ZOOM_LVL_MIN; + ZoomLevel zoom_max = ZOOM_LVL_MIN; + if (sprite[ZOOM_LVL_MIN].type != SpriteType::Font) { zoom_min = _settings_client.gui.zoom_min; zoom_max = _settings_client.gui.zoom_max; if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_MAX; @@ -51,11 +51,11 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::SpriteCollection &spri all_sprites_size += rgba_size + mv_size; } - Sprite *dst_sprite = (Sprite *) allocator(sizeof(Sprite) + sizeof(SpriteData) + all_sprites_size); - dst_sprite->height = sprite[ZOOM_LVL_NORMAL].height; - dst_sprite->width = sprite[ZOOM_LVL_NORMAL].width; - dst_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs; - dst_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs; + Sprite *dst_sprite = allocator.Allocate(sizeof(Sprite) + sizeof(SpriteData) + all_sprites_size); + dst_sprite->height = sprite[ZOOM_LVL_MIN].height; + dst_sprite->width = sprite[ZOOM_LVL_MIN].width; + dst_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs; + dst_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs; memcpy(dst_sprite->data, &sd, sizeof(SpriteData)); /* Copy colours and determine flags. */ @@ -114,7 +114,7 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::SpriteCollection &spri (*dst_rgba_line).data = nb_pix_transp; Colour *nb_right = dst_rgba_line + 1; - dst_rgba_line = (Colour*) ((byte*) dst_rgba_line + sd.infos[z].sprite_line_size); + dst_rgba_line = (Colour*) ((uint8_t*) dst_rgba_line + sd.infos[z].sprite_line_size); /* Count the number of transparent pixels from the right. */ dst_rgba = dst_rgba_line - 1; diff --git a/src/blitter/32bpp_sse2.hpp b/src/blitter/32bpp_sse2.hpp index fa643dd3cd..ebbb31e059 100644 --- a/src/blitter/32bpp_sse2.hpp +++ b/src/blitter/32bpp_sse2.hpp @@ -73,10 +73,10 @@ public: struct SpriteData { SpriteFlags flags; SpriteInfo infos[ZOOM_LVL_END]; - byte data[]; ///< Data, all zoomlevels. + uint8_t data[]; ///< Data, all zoomlevels. }; - Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator); + Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator); }; DECLARE_ENUM_AS_BIT_SET(Blitter_32bppSSE_Base::SpriteFlags); @@ -88,11 +88,11 @@ public: template void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); - Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override { + Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override { return Blitter_32bppSSE_Base::Encode(sprite, allocator); } - const char *GetName() override { return "32bpp-sse2"; } + std::string_view GetName() override { return "32bpp-sse2"; } }; /** Factory for the SSE2 32 bpp blitter (without palette animation). */ diff --git a/src/blitter/32bpp_sse4.hpp b/src/blitter/32bpp_sse4.hpp index deb4fbed92..7d8798c697 100644 --- a/src/blitter/32bpp_sse4.hpp +++ b/src/blitter/32bpp_sse4.hpp @@ -32,7 +32,7 @@ public: void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override; template void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); - const char *GetName() override { return "32bpp-sse4"; } + std::string_view GetName() override { return "32bpp-sse4"; } }; /** Factory for the SSE4 32 bpp blitter (without palette animation). */ diff --git a/src/blitter/32bpp_sse_func.hpp b/src/blitter/32bpp_sse_func.hpp index 93ec415dda..77c2bec954 100644 --- a/src/blitter/32bpp_sse_func.hpp +++ b/src/blitter/32bpp_sse_func.hpp @@ -10,10 +10,17 @@ #ifndef BLITTER_32BPP_SSE_FUNC_HPP #define BLITTER_32BPP_SSE_FUNC_HPP +/* ATTENTION + * This file is compiled multiple times with different defines for SSE_VERSION and MARGIN_NORMAL_THRESHOLD. + * Be careful when declaring things with external linkage. + * Use internal linkage instead, i.e. "static". + */ +#define INTERNAL_LINKAGE static + #ifdef WITH_SSE GNU_TARGET(SSE_TARGET) -inline void InsertFirstUint32(const uint32_t value, __m128i &into) +INTERNAL_LINKAGE inline void InsertFirstUint32(const uint32_t value, __m128i &into) { #if (SSE_VERSION >= 4) into = _mm_insert_epi32(into, value, 0); @@ -24,7 +31,7 @@ inline void InsertFirstUint32(const uint32_t value, __m128i &into) } GNU_TARGET(SSE_TARGET) -inline void InsertSecondUint32(const uint32_t value, __m128i &into) +INTERNAL_LINKAGE inline void InsertSecondUint32(const uint32_t value, __m128i &into) { #if (SSE_VERSION >= 4) into = _mm_insert_epi32(into, value, 1); @@ -35,7 +42,7 @@ inline void InsertSecondUint32(const uint32_t value, __m128i &into) } GNU_TARGET(SSE_TARGET) -inline void LoadUint64(const uint64_t value, __m128i &into) +INTERNAL_LINKAGE inline void LoadUint64(const uint64_t value, __m128i &into) { #ifdef POINTER_IS_64BIT into = _mm_cvtsi64_si128(value); @@ -50,7 +57,7 @@ inline void LoadUint64(const uint64_t value, __m128i &into) } GNU_TARGET(SSE_TARGET) -inline __m128i PackUnsaturated(__m128i from, const __m128i &mask) +INTERNAL_LINKAGE inline __m128i PackUnsaturated(__m128i from, const __m128i &mask) { #if (SSE_VERSION == 2) from = _mm_and_si128(from, mask); // PAND, wipe high bytes to keep low bytes when packing @@ -61,7 +68,7 @@ inline __m128i PackUnsaturated(__m128i from, const __m128i &mask) } GNU_TARGET(SSE_TARGET) -inline __m128i DistributeAlpha(const __m128i from, const __m128i &mask) +INTERNAL_LINKAGE inline __m128i DistributeAlpha(const __m128i from, const __m128i &mask) { #if (SSE_VERSION == 2) __m128i alphaAB = _mm_shufflelo_epi16(from, 0x3F); // PSHUFLW, put alpha1 in front of each rgb1 @@ -73,7 +80,7 @@ inline __m128i DistributeAlpha(const __m128i from, const __m128i &mask) } GNU_TARGET(SSE_TARGET) -inline __m128i AlphaBlendTwoPixels(__m128i src, __m128i dst, const __m128i &distribution_mask, const __m128i &pack_mask, const __m128i &alpha_mask) +INTERNAL_LINKAGE inline __m128i AlphaBlendTwoPixels(__m128i src, __m128i dst, const __m128i &distribution_mask, const __m128i &pack_mask, const __m128i &alpha_mask) { __m128i srcAB = _mm_unpacklo_epi8(src, _mm_setzero_si128()); // PUNPCKLBW, expand each uint8_t into uint16 __m128i dstAB = _mm_unpacklo_epi8(dst, _mm_setzero_si128()); @@ -97,7 +104,7 @@ inline __m128i AlphaBlendTwoPixels(__m128i src, __m128i dst, const __m128i &dist * rgb = rgb * ((256/4) * 4 - (alpha/4)) / ((256/4) * 4) */ GNU_TARGET(SSE_TARGET) -inline __m128i DarkenTwoPixels(__m128i src, __m128i dst, const __m128i &distribution_mask, const __m128i &tr_nom_base) +INTERNAL_LINKAGE inline __m128i DarkenTwoPixels(__m128i src, __m128i dst, const __m128i &distribution_mask, const __m128i &tr_nom_base) { __m128i srcAB = _mm_unpacklo_epi8(src, _mm_setzero_si128()); __m128i dstAB = _mm_unpacklo_epi8(dst, _mm_setzero_si128()); @@ -111,7 +118,7 @@ inline __m128i DarkenTwoPixels(__m128i src, __m128i dst, const __m128i &distribu IGNORE_UNINITIALIZED_WARNING_START GNU_TARGET(SSE_TARGET) -static Colour ReallyAdjustBrightness(Colour colour, uint8_t brightness) +INTERNAL_LINKAGE Colour ReallyAdjustBrightness(Colour colour, uint8_t brightness) { uint64_t c16 = colour.b | (uint64_t) colour.g << 16 | (uint64_t) colour.r << 32; c16 *= brightness; @@ -145,7 +152,7 @@ IGNORE_UNINITIALIZED_WARNING_STOP /** ReallyAdjustBrightness() is not called that often. * Inlining this function implies a far jump, which has a huge latency. */ -inline Colour AdjustBrightneSSE(Colour colour, uint8_t brightness) +INTERNAL_LINKAGE inline Colour AdjustBrightneSSE(Colour colour, uint8_t brightness) { /* Shortcut for normal brightness. */ if (brightness == Blitter_32bppBase::DEFAULT_BRIGHTNESS) return colour; @@ -154,7 +161,7 @@ inline Colour AdjustBrightneSSE(Colour colour, uint8_t brightness) } GNU_TARGET(SSE_TARGET) -inline __m128i AdjustBrightnessOfTwoPixels([[maybe_unused]] __m128i from, [[maybe_unused]] uint32_t brightness) +INTERNAL_LINKAGE inline __m128i AdjustBrightnessOfTwoPixels([[maybe_unused]] __m128i from, [[maybe_unused]] uint32_t brightness) { #if (SSE_VERSION < 3) NOT_REACHED(); @@ -214,7 +221,7 @@ inline void Blitter_32bppSSSE3::Draw(const Blitter::BlitterParams *bp, ZoomLevel inline void Blitter_32bppSSE4::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom) #endif { - const byte * const remap = bp->remap; + const uint8_t * const remap = bp->remap; Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left; int effective_width = bp->width; @@ -222,7 +229,7 @@ inline void Blitter_32bppSSE4::Draw(const Blitter::BlitterParams *bp, ZoomLevel const SpriteData * const sd = (const SpriteData *) bp->sprite; const SpriteInfo * const si = &sd->infos[zoom]; const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width; - const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size); + const Colour *src_rgba_line = (const Colour *) ((const uint8_t *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size); if (read_mode != RM_WITH_MARGIN) { src_rgba_line += bp->skip_left; @@ -307,7 +314,7 @@ inline void Blitter_32bppSSE4::Draw(const Blitter::BlitterParams *bp, ZoomLevel Colour m_colour = m_colour_init; \ { \ const Colour srcm = (Colour) (m_src); \ - const uint m = (byte) (m_m); \ + const uint m = (uint8_t) (m_m); \ const uint r = remap[m]; \ const Colour cmap = (this->LookupColourInPalette(r).data & 0x00FFFFFF) | (srcm.data & 0xFF000000); \ m_colour = r == 0 ? m_colour : cmap; \ @@ -435,7 +442,7 @@ bmcr_alpha_blend_single: next_line: if (mode == BM_COLOUR_REMAP || mode == BM_CRASH_REMAP) src_mv_line += si->sprite_width; - src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size); + src_rgba_line = (const Colour*) ((const uint8_t*) src_rgba_line + si->sprite_line_size); dst_line += bp->pitch; } } diff --git a/src/blitter/32bpp_sse_type.h b/src/blitter/32bpp_sse_type.h index d3a73df1c3..57de1d6d58 100644 --- a/src/blitter/32bpp_sse_type.h +++ b/src/blitter/32bpp_sse_type.h @@ -10,6 +10,12 @@ #ifndef BLITTER_32BPP_SSE_TYPE_H #define BLITTER_32BPP_SSE_TYPE_H +/* ATTENTION + * This file is compiled multiple times with different defines for SSE_VERSION. + * Be careful when declaring things with external linkage. + * Use internal linkage instead, i.e. "static". + */ + #ifdef WITH_SSE #include "32bpp_simple.hpp" @@ -22,7 +28,7 @@ #endif #define META_LENGTH 2 ///< Number of uint32_t inserted before each line of pixels in a sprite. -#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_32X ? 8 : 4) ///< Minimum width to use margins with BM_NORMAL. +#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_8X ? 8 : 4) ///< Minimum width to use margins with BM_NORMAL. #define MARGIN_REMAP_THRESHOLD 4 ///< Minimum width to use margins with BM_COLOUR_REMAP. #undef ALIGN diff --git a/src/blitter/32bpp_ssse3.hpp b/src/blitter/32bpp_ssse3.hpp index c95095d4df..4ee475d45f 100644 --- a/src/blitter/32bpp_ssse3.hpp +++ b/src/blitter/32bpp_ssse3.hpp @@ -32,7 +32,7 @@ public: void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override; template void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); - const char *GetName() override { return "32bpp-ssse3"; } + std::string_view GetName() override { return "32bpp-ssse3"; } }; /** Factory for the SSSE3 32 bpp blitter (without palette animation). */ diff --git a/src/blitter/40bpp_anim.cpp b/src/blitter/40bpp_anim.cpp index e65a1d7151..3a9b89e4bd 100644 --- a/src/blitter/40bpp_anim.cpp +++ b/src/blitter/40bpp_anim.cpp @@ -104,8 +104,8 @@ inline void Blitter_40bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel /* skip upper lines in src_px and src_n */ for (uint i = bp->skip_top; i != 0; i--) { - src_px = (const Colour *)((const byte *)src_px + *(const uint32_t *)src_px); - src_n = (const uint16_t *)((const byte *)src_n + *(const uint32_t *)src_n); + src_px = (const Colour *)((const uint8_t *)src_px + *(const uint32_t *)src_px); + src_n = (const uint16_t *)((const uint8_t *)src_n + *(const uint32_t *)src_n); } /* skip lines in dst */ @@ -114,7 +114,7 @@ inline void Blitter_40bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel uint8_t *anim = VideoDriver::GetInstance()->GetAnimBuffer() + ((uint32_t *)bp->dst - (uint32_t *)_screen.dst_ptr) + bp->top * bp->pitch + bp->left; /* store so we don't have to access it via bp everytime (compiler assumes pointer aliasing) */ - const byte *remap = bp->remap; + const uint8_t *remap = bp->remap; for (int y = 0; y < bp->height; y++) { /* next dst line begins here */ @@ -122,11 +122,11 @@ inline void Blitter_40bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel uint8_t *anim_ln = anim + bp->pitch; /* next src line begins here */ - const Colour *src_px_ln = (const Colour *)((const byte *)src_px + *(const uint32_t *)src_px); + const Colour *src_px_ln = (const Colour *)((const uint8_t *)src_px + *(const uint32_t *)src_px); src_px++; /* next src_n line begins here */ - const uint16_t *src_n_ln = (const uint16_t *)((const byte *)src_n + *(const uint32_t *)src_n); + const uint16_t *src_n_ln = (const uint16_t *)((const uint8_t *)src_n + *(const uint32_t *)src_n); src_n += 2; /* we will end this line when we reach this point */ @@ -397,7 +397,7 @@ void Blitter_40bppAnim::DrawColourMappingRect(void *dst, int width, int height, } } -Sprite *Blitter_40bppAnim::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) +Sprite *Blitter_40bppAnim::Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) { return this->EncodeInternal(sprite, allocator); } diff --git a/src/blitter/40bpp_anim.hpp b/src/blitter/40bpp_anim.hpp index 4371100914..0174735c3a 100644 --- a/src/blitter/40bpp_anim.hpp +++ b/src/blitter/40bpp_anim.hpp @@ -27,12 +27,12 @@ public: void ScrollBuffer(void *video, int &left, int &top, int &width, int &height, int scroll_x, int scroll_y) override; void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override; void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) override; - Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override; + Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override; size_t BufferSize(uint width, uint height) override; Blitter::PaletteAnimation UsePaletteAnimation() override; bool NeedsAnimationBuffer() override; - const char *GetName() override { return "40bpp-anim"; } + std::string_view GetName() override { return "40bpp-anim"; } template void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom); diff --git a/src/blitter/8bpp_optimized.cpp b/src/blitter/8bpp_optimized.cpp index 3758e3a80a..c4bef59b53 100644 --- a/src/blitter/8bpp_optimized.cpp +++ b/src/blitter/8bpp_optimized.cpp @@ -120,7 +120,7 @@ void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Z } } -Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) +Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) { /* Make memory for all zoom-levels */ uint memory = sizeof(SpriteData); @@ -128,9 +128,9 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::SpriteCollection &spri ZoomLevel zoom_min; ZoomLevel zoom_max; - if (sprite[ZOOM_LVL_NORMAL].type == SpriteType::Font) { - zoom_min = ZOOM_LVL_NORMAL; - zoom_max = ZOOM_LVL_NORMAL; + if (sprite[ZOOM_LVL_MIN].type == SpriteType::Font) { + zoom_min = ZOOM_LVL_MIN; + zoom_max = ZOOM_LVL_MIN; } else { zoom_min = _settings_client.gui.zoom_min; zoom_max = _settings_client.gui.zoom_max; @@ -147,10 +147,10 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::SpriteCollection &spri /* Don't allocate memory each time, but just keep some * memory around as this function is called quite often * and the memory usage is quite low. */ - static ReusableBuffer temp_buffer; + static ReusableBuffer temp_buffer; SpriteData *temp_dst = (SpriteData *)temp_buffer.Allocate(memory); memset(temp_dst, 0, sizeof(*temp_dst)); - byte *dst = temp_dst->data; + uint8_t *dst = temp_dst->data; /* Make the sprites per zoom-level */ for (ZoomLevel i = zoom_min; i <= zoom_max; i++) { @@ -166,7 +166,7 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::SpriteCollection &spri uint trans = 0; uint pixels = 0; uint last_colour = 0; - byte *count_dst = nullptr; + uint8_t *count_dst = nullptr; /* Store the scaled image */ const SpriteLoader::CommonPixel *src = &sprite[i].data[y * sprite[i].width]; @@ -213,18 +213,18 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::SpriteCollection &spri } } - uint size = dst - (byte *)temp_dst; + uint size = dst - (uint8_t *)temp_dst; /* Safety check, to make sure we guessed the size correctly */ assert(size < memory); /* Allocate the exact amount of memory we need */ - Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + size); + Sprite *dest_sprite = allocator.Allocate(sizeof(*dest_sprite) + size); - dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height; - dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width; - dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs; - dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs; + dest_sprite->height = sprite[ZOOM_LVL_MIN].height; + dest_sprite->width = sprite[ZOOM_LVL_MIN].width; + dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs; + dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs; memcpy(dest_sprite->data, temp_dst, size); return dest_sprite; diff --git a/src/blitter/8bpp_optimized.hpp b/src/blitter/8bpp_optimized.hpp index 39a7d91d22..c3c8e381d0 100644 --- a/src/blitter/8bpp_optimized.hpp +++ b/src/blitter/8bpp_optimized.hpp @@ -19,13 +19,13 @@ public: /** Data stored about a (single) sprite. */ struct SpriteData { uint32_t offset[ZOOM_LVL_END]; ///< Offsets (from .data) to streams for different zoom levels. - byte data[]; ///< Data, all zoomlevels. + uint8_t data[]; ///< Data, all zoomlevels. }; void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override; - Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override; + Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override; - const char *GetName() override { return "8bpp-optimized"; } + std::string_view GetName() override { return "8bpp-optimized"; } }; /** Factory for the 8bpp blitter optimised for speed. */ diff --git a/src/blitter/8bpp_simple.cpp b/src/blitter/8bpp_simple.cpp index a80ceba115..6686ec0e2a 100644 --- a/src/blitter/8bpp_simple.cpp +++ b/src/blitter/8bpp_simple.cpp @@ -61,19 +61,19 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom } } -Sprite *Blitter_8bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) +Sprite *Blitter_8bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) { Sprite *dest_sprite; - dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite[ZOOM_LVL_NORMAL].height * (size_t)sprite[ZOOM_LVL_NORMAL].width); + dest_sprite = allocator.Allocate(sizeof(*dest_sprite) + static_cast(sprite[ZOOM_LVL_MIN].height) * static_cast(sprite[ZOOM_LVL_MIN].width)); - dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height; - dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width; - dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs; - dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs; + dest_sprite->height = sprite[ZOOM_LVL_MIN].height; + dest_sprite->width = sprite[ZOOM_LVL_MIN].width; + dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs; + dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs; /* Copy over only the 'remap' channel, as that is what we care about in 8bpp */ - for (int i = 0; i < sprite[ZOOM_LVL_NORMAL].height * sprite[ZOOM_LVL_NORMAL].width; i++) { - dest_sprite->data[i] = sprite[ZOOM_LVL_NORMAL].data[i].m; + for (int i = 0; i < sprite[ZOOM_LVL_MIN].height * sprite[ZOOM_LVL_MIN].width; i++) { + dest_sprite->data[i] = sprite[ZOOM_LVL_MIN].data[i].m; } return dest_sprite; diff --git a/src/blitter/8bpp_simple.hpp b/src/blitter/8bpp_simple.hpp index 23d49d7f91..12e7f0fd8e 100644 --- a/src/blitter/8bpp_simple.hpp +++ b/src/blitter/8bpp_simple.hpp @@ -17,9 +17,9 @@ class Blitter_8bppSimple final : public Blitter_8bppBase { public: void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override; - Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override; + Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override; - const char *GetName() override { return "8bpp-simple"; } + std::string_view GetName() override { return "8bpp-simple"; } }; /** Factory for the most trivial 8bpp blitter. */ diff --git a/src/blitter/base.hpp b/src/blitter/base.hpp index 26ed39eb6d..24ccc3ac13 100644 --- a/src/blitter/base.hpp +++ b/src/blitter/base.hpp @@ -31,7 +31,7 @@ public: /** Parameters related to blitting. */ struct BlitterParams { const void *sprite; ///< Pointer to the sprite how ever the encoder stored it - const byte *remap; ///< XXX -- Temporary storage for remap array + const uint8_t *remap; ///< XXX -- Temporary storage for remap array int skip_left; ///< How much pixels of the source to skip on the left (based on zoom of dst) int skip_top; ///< How much pixels of the source to skip on the top (based on zoom of dst) @@ -197,7 +197,7 @@ public: /** * Get the name of the blitter, the same as the Factory-instance returns. */ - virtual const char *GetName() = 0; + virtual std::string_view GetName() = 0; /** * Post resize event diff --git a/src/blitter/factory.hpp b/src/blitter/factory.hpp index 5889cca4f2..5071a168ae 100644 --- a/src/blitter/factory.hpp +++ b/src/blitter/factory.hpp @@ -93,7 +93,7 @@ public: * @param name the blitter to select. * @post Sets the blitter so GetCurrentBlitter() returns it too. */ - static Blitter *SelectBlitter(const std::string &name) + static Blitter *SelectBlitter(const std::string_view name) { BlitterFactory *b = GetBlitterFactory(name); if (b == nullptr) return nullptr; @@ -111,17 +111,17 @@ public: * @param name the blitter factory to select. * @return The blitter factory, or nullptr when there isn't one with the wanted name. */ - static BlitterFactory *GetBlitterFactory(const std::string &name) + static BlitterFactory *GetBlitterFactory(const std::string_view name) { #if defined(DEDICATED) - const char *default_blitter = "null"; + const std::string_view default_blitter = "null"; #elif defined(WITH_COCOA) - const char *default_blitter = "32bpp-anim"; + const std::string_view default_blitter = "32bpp-anim"; #else - const char *default_blitter = "8bpp-optimized"; + const std::string_view default_blitter = "8bpp-optimized"; #endif if (GetBlitters().empty()) return nullptr; - const char *bname = name.empty() ? default_blitter : name.c_str(); + const std::string_view bname = name.empty() ? default_blitter : name; for (auto &it : GetBlitters()) { BlitterFactory *b = it.second; @@ -159,7 +159,7 @@ public: /** * Get the long, human readable, name for the Blitter-class. */ - const std::string &GetName() const + std::string_view GetName() const { return this->name; } @@ -167,7 +167,7 @@ public: /** * Get a nice description of the blitter-class. */ - const std::string &GetDescription() const + std::string_view GetDescription() const { return this->description; } diff --git a/src/blitter/null.cpp b/src/blitter/null.cpp index f73b5ae331..dc8b1c0ea2 100644 --- a/src/blitter/null.cpp +++ b/src/blitter/null.cpp @@ -15,15 +15,15 @@ /** Instantiation of the null blitter factory. */ static FBlitter_Null iFBlitter_Null; -Sprite *Blitter_Null::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) +Sprite *Blitter_Null::Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) { Sprite *dest_sprite; - dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite)); + dest_sprite = allocator.Allocate(sizeof(*dest_sprite)); - dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height; - dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width; - dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs; - dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs; + dest_sprite->height = sprite[ZOOM_LVL_MIN].height; + dest_sprite->width = sprite[ZOOM_LVL_MIN].width; + dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs; + dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs; return dest_sprite; } diff --git a/src/blitter/null.hpp b/src/blitter/null.hpp index 61c5cab9de..a0ecfbe8db 100644 --- a/src/blitter/null.hpp +++ b/src/blitter/null.hpp @@ -18,7 +18,7 @@ public: uint8_t GetScreenDepth() override { return 0; } void Draw(Blitter::BlitterParams *, BlitterMode, ZoomLevel) override {}; void DrawColourMappingRect(void *, int, int, PaletteID) override {}; - Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override; + Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override; void *MoveTo(void *, int, int) override { return nullptr; }; void SetPixel(void *, int, int, uint8_t) override {}; void DrawRect(void *, int, int, uint8_t) override {}; @@ -31,7 +31,7 @@ public: void PaletteAnimate(const Palette &) override { }; Blitter::PaletteAnimation UsePaletteAnimation() override { return Blitter::PALETTE_ANIMATION_NONE; }; - const char *GetName() override { return "null"; } + std::string_view GetName() override { return "null"; } }; /** Factory for the blitter that does nothing. */ diff --git a/src/bmp.cpp b/src/bmp.cpp index eca61335dd..544217f51f 100644 --- a/src/bmp.cpp +++ b/src/bmp.cpp @@ -39,7 +39,7 @@ static inline bool EndOfBuffer(BmpBuffer *buffer) return buffer->pos == buffer->read; } -static inline byte ReadByte(BmpBuffer *buffer) +static inline uint8_t ReadByte(BmpBuffer *buffer) { if (buffer->read < 0) return 0; @@ -83,9 +83,9 @@ static inline void SetStreamOffset(BmpBuffer *buffer, int offset) static inline bool BmpRead1(BmpBuffer *buffer, BmpInfo *info, BmpData *data) { uint x, y, i; - byte pad = GB(4 - info->width / 8, 0, 2); - byte *pixel_row; - byte b; + uint8_t pad = GB(4 - info->width / 8, 0, 2); + uint8_t *pixel_row; + uint8_t b; for (y = info->height; y > 0; y--) { x = 0; pixel_row = &data->bitmap[(y - 1) * info->width]; @@ -110,9 +110,9 @@ static inline bool BmpRead1(BmpBuffer *buffer, BmpInfo *info, BmpData *data) static inline bool BmpRead4(BmpBuffer *buffer, BmpInfo *info, BmpData *data) { uint x, y; - byte pad = GB(4 - info->width / 2, 0, 2); - byte *pixel_row; - byte b; + uint8_t pad = GB(4 - info->width / 2, 0, 2); + uint8_t *pixel_row; + uint8_t b; for (y = info->height; y > 0; y--) { x = 0; pixel_row = &data->bitmap[(y - 1) * info->width]; @@ -140,12 +140,12 @@ static inline bool BmpRead4Rle(BmpBuffer *buffer, BmpInfo *info, BmpData *data) { uint x = 0; uint y = info->height - 1; - byte *pixel = &data->bitmap[y * info->width]; + uint8_t *pixel = &data->bitmap[y * info->width]; while (y != 0 || x < info->width) { if (EndOfBuffer(buffer)) return false; // the file is shorter than expected - byte n = ReadByte(buffer); - byte c = ReadByte(buffer); + uint8_t n = ReadByte(buffer); + uint8_t c = ReadByte(buffer); if (n == 0) { switch (c) { case 0: // end of line @@ -159,8 +159,8 @@ static inline bool BmpRead4Rle(BmpBuffer *buffer, BmpInfo *info, BmpData *data) case 2: { // delta if (EndOfBuffer(buffer)) return false; - byte dx = ReadByte(buffer); - byte dy = ReadByte(buffer); + uint8_t dx = ReadByte(buffer); + uint8_t dy = ReadByte(buffer); /* Check for over- and underflow. */ if (x + dx >= info->width || x + dx < x || dy > y) return false; @@ -175,7 +175,7 @@ static inline bool BmpRead4Rle(BmpBuffer *buffer, BmpInfo *info, BmpData *data) uint i = 0; while (i++ < c) { if (EndOfBuffer(buffer) || x >= info->width) return false; - byte b = ReadByte(buffer); + uint8_t b = ReadByte(buffer); *pixel++ = GB(b, 4, 4); x++; if (i++ < c) { @@ -214,8 +214,8 @@ static inline bool BmpRead8(BmpBuffer *buffer, BmpInfo *info, BmpData *data) { uint i; uint y; - byte pad = GB(4 - info->width, 0, 2); - byte *pixel; + uint8_t pad = GB(4 - info->width, 0, 2); + uint8_t *pixel; for (y = info->height; y > 0; y--) { if (EndOfBuffer(buffer)) return false; // the file is shorter than expected pixel = &data->bitmap[(y - 1) * info->width]; @@ -233,12 +233,12 @@ static inline bool BmpRead8Rle(BmpBuffer *buffer, BmpInfo *info, BmpData *data) { uint x = 0; uint y = info->height - 1; - byte *pixel = &data->bitmap[y * info->width]; + uint8_t *pixel = &data->bitmap[y * info->width]; while (y != 0 || x < info->width) { if (EndOfBuffer(buffer)) return false; // the file is shorter than expected - byte n = ReadByte(buffer); - byte c = ReadByte(buffer); + uint8_t n = ReadByte(buffer); + uint8_t c = ReadByte(buffer); if (n == 0) { switch (c) { case 0: // end of line @@ -252,8 +252,8 @@ static inline bool BmpRead8Rle(BmpBuffer *buffer, BmpInfo *info, BmpData *data) case 2: { // delta if (EndOfBuffer(buffer)) return false; - byte dx = ReadByte(buffer); - byte dy = ReadByte(buffer); + uint8_t dx = ReadByte(buffer); + uint8_t dy = ReadByte(buffer); /* Check for over- and underflow. */ if (x + dx >= info->width || x + dx < x || dy > y) return false; @@ -294,8 +294,8 @@ static inline bool BmpRead8Rle(BmpBuffer *buffer, BmpInfo *info, BmpData *data) static inline bool BmpRead24(BmpBuffer *buffer, BmpInfo *info, BmpData *data) { uint x, y; - byte pad = GB(4 - info->width * 3, 0, 2); - byte *pixel_row; + uint8_t pad = GB(4 - info->width * 3, 0, 2); + uint8_t *pixel_row; for (y = info->height; y > 0; y--) { pixel_row = &data->bitmap[(y - 1) * info->width * 3]; for (x = 0; x < info->width; x++) { @@ -395,7 +395,7 @@ bool BmpReadBitmap(BmpBuffer *buffer, BmpInfo *info, BmpData *data) { assert(info != nullptr && data != nullptr); - data->bitmap = CallocT(static_cast(info->width) * info->height * ((info->bpp == 24) ? 3 : 1)); + data->bitmap = CallocT(static_cast(info->width) * info->height * ((info->bpp == 24) ? 3 : 1)); /* Load image */ SetStreamOffset(buffer, info->offset); diff --git a/src/bmp.h b/src/bmp.h index 9b7289e4d1..557244e1ee 100644 --- a/src/bmp.h +++ b/src/bmp.h @@ -24,13 +24,13 @@ struct BmpInfo { struct BmpData { Colour *palette; - byte *bitmap; + uint8_t *bitmap; }; #define BMP_BUFFER_SIZE 1024 struct BmpBuffer { - byte data[BMP_BUFFER_SIZE]; + uint8_t data[BMP_BUFFER_SIZE]; int pos; int read; FILE *file; diff --git a/src/bootstrap_gui.cpp b/src/bootstrap_gui.cpp index 4a1b72d9c5..a9abfb9303 100644 --- a/src/bootstrap_gui.cpp +++ b/src/bootstrap_gui.cpp @@ -40,17 +40,17 @@ static constexpr NWidgetPart _background_widgets[] = { /** * Window description for the background window to prevent smearing. */ -static WindowDesc _background_desc(__FILE__, __LINE__, +static WindowDesc _background_desc( WDP_MANUAL, nullptr, 0, 0, WC_BOOTSTRAP, WC_NONE, WDF_NO_CLOSE, - std::begin(_background_widgets), std::end(_background_widgets) + _background_widgets ); /** The background for the game. */ class BootstrapBackground : public Window { public: - BootstrapBackground() : Window(&_background_desc) + BootstrapBackground() : Window(_background_desc) { this->InitNested(0); CLRBITS(this->flags, WF_WHITE_BORDER); @@ -76,17 +76,17 @@ static constexpr NWidgetPart _nested_bootstrap_errmsg_widgets[] = { }; /** Window description for the error window. */ -static WindowDesc _bootstrap_errmsg_desc(__FILE__, __LINE__, +static WindowDesc _bootstrap_errmsg_desc( WDP_CENTER, nullptr, 0, 0, WC_BOOTSTRAP, WC_NONE, WDF_MODAL | WDF_NO_CLOSE, - std::begin(_nested_bootstrap_errmsg_widgets), std::end(_nested_bootstrap_errmsg_widgets) + _nested_bootstrap_errmsg_widgets ); /** The window for a failed bootstrap. */ class BootstrapErrorWindow : public Window { public: - BootstrapErrorWindow() : Window(&_bootstrap_errmsg_desc) + BootstrapErrorWindow() : Window(_bootstrap_errmsg_desc) { this->InitNested(1); } @@ -97,12 +97,12 @@ public: this->Window::Close(); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget == WID_BEM_MESSAGE) { - *size = GetStringBoundingBox(STR_MISSING_GRAPHICS_ERROR); - size->width += WidgetDimensions::scaled.frametext.Horizontal(); - size->height += WidgetDimensions::scaled.frametext.Vertical(); + size = GetStringBoundingBox(STR_MISSING_GRAPHICS_ERROR); + size.width += WidgetDimensions::scaled.frametext.Horizontal(); + size.height += WidgetDimensions::scaled.frametext.Vertical(); } } @@ -133,11 +133,11 @@ static constexpr NWidgetPart _nested_bootstrap_download_status_window_widgets[] }; /** Window description for the download window */ -static WindowDesc _bootstrap_download_status_window_desc(__FILE__, __LINE__, +static WindowDesc _bootstrap_download_status_window_desc( WDP_CENTER, nullptr, 0, 0, WC_NETWORK_STATUS_WINDOW, WC_NONE, WDF_MODAL | WDF_NO_CLOSE, - std::begin(_nested_bootstrap_download_status_window_widgets), std::end(_nested_bootstrap_download_status_window_widgets) + _nested_bootstrap_download_status_window_widgets ); @@ -145,7 +145,7 @@ static WindowDesc _bootstrap_download_status_window_desc(__FILE__, __LINE__, struct BootstrapContentDownloadStatusWindow : public BaseNetworkContentDownloadStatusWindow { public: /** Simple call the constructor of the superclass. */ - BootstrapContentDownloadStatusWindow() : BaseNetworkContentDownloadStatusWindow(&_bootstrap_download_status_window_desc) + BootstrapContentDownloadStatusWindow() : BaseNetworkContentDownloadStatusWindow(_bootstrap_download_status_window_desc) { } @@ -185,11 +185,11 @@ static constexpr NWidgetPart _bootstrap_query_widgets[] = { }; /** The window description for the query. */ -static WindowDesc _bootstrap_query_desc(__FILE__, __LINE__, +static WindowDesc _bootstrap_query_desc( WDP_CENTER, nullptr, 0, 0, WC_CONFIRM_POPUP_QUERY, WC_NONE, WDF_NO_CLOSE, - std::begin(_bootstrap_query_widgets), std::end(_bootstrap_query_widgets) + _bootstrap_query_widgets ); /** The window for the query. It can't use the generic query window as that uses sprites that don't exist yet. */ @@ -198,7 +198,7 @@ class BootstrapAskForDownloadWindow : public Window, ContentCallback { public: /** Start listening to the content client events. */ - BootstrapAskForDownloadWindow() : Window(&_bootstrap_query_desc) + BootstrapAskForDownloadWindow() : Window(_bootstrap_query_desc) { this->InitNested(WN_CONFIRM_POPUP_QUERY_BOOTSTRAP); _network_content_client.AddCallback(this); @@ -211,7 +211,7 @@ public: this->Window::Close(); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { /* We cache the button size. This is safe as no reinit can happen here. */ if (this->button_size.width == 0) { @@ -223,13 +223,13 @@ public: switch (widget) { case WID_BAFD_QUESTION: /* The question is twice as wide as the buttons, and determine the height based on the width. */ - size->width = this->button_size.width * 2; - size->height = GetStringHeight(STR_MISSING_GRAPHICS_SET_MESSAGE, size->width - WidgetDimensions::scaled.frametext.Horizontal()) + WidgetDimensions::scaled.frametext.Vertical(); + size.width = this->button_size.width * 2; + size.height = GetStringHeight(STR_MISSING_GRAPHICS_SET_MESSAGE, size.width - WidgetDimensions::scaled.frametext.Horizontal()) + WidgetDimensions::scaled.frametext.Vertical(); break; case WID_BAFD_YES: case WID_BAFD_NO: - *size = this->button_size; + size = this->button_size; break; } } @@ -291,10 +291,10 @@ public: # include "video/video_driver.hpp" class BootstrapEmscripten : public ContentCallback { - bool downloading{false}; - uint total_files{0}; - uint total_bytes{0}; - uint downloaded_bytes{0}; + bool downloading = false; + uint total_files = 0; + uint total_bytes = 0; + uint downloaded_bytes = 0; public: BootstrapEmscripten() @@ -385,9 +385,9 @@ bool HandleBootstrap() * This way the mauve and gray colours work and we can show the user interface. */ GfxInitPalettes(); static const int offsets[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x80, 0, 0, 0, 0x04, 0x08 }; - for (uint i = 0; i != 16; i++) { - for (int j = 0; j < 8; j++) { - _colour_gradient[i][j] = offsets[i] + j; + for (Colours i = COLOUR_BEGIN; i != COLOUR_END; i++) { + for (ColourShade j = SHADE_BEGIN; j < SHADE_END; j++) { + SetColourGradient(i, j, offsets[i] + j); } } diff --git a/src/bridge.h b/src/bridge.h index b9d08de46f..0d64dd6012 100644 --- a/src/bridge.h +++ b/src/bridge.h @@ -41,7 +41,7 @@ typedef uint BridgeType; ///< Bridge spec number. */ struct BridgeSpec { TimerGameCalendar::Year avail_year; ///< the year where it becomes available - byte min_length; ///< the minimum length (not counting start and end tile) + uint8_t min_length; ///< the minimum length (not counting start and end tile) uint16_t max_length; ///< the maximum length (not counting start and end tile) uint16_t price; ///< the price multiplier uint16_t speed; ///< maximum travel speed (1 unit = 1/1.6 mph = 1 km-ish/h) @@ -50,7 +50,7 @@ struct BridgeSpec { StringID material; ///< the string that contains the bridge description StringID transport_name[2]; ///< description of the bridge, when built for road or rail PalSpriteID **sprite_table; ///< table of sprites for drawing the bridge - byte flags; ///< bit 0 set: disable drawing of far pillars. + uint8_t flags; ///< bit 0 set: disable drawing of far pillars. }; extern BridgeSpec _bridge[MAX_BRIDGES]; diff --git a/src/bridge_gui.cpp b/src/bridge_gui.cpp index fec724bb4c..51b4107fa5 100644 --- a/src/bridge_gui.cpp +++ b/src/bridge_gui.cpp @@ -18,7 +18,7 @@ #include "gfx_func.h" #include "tunnelbridge.h" #include "sortlist_type.h" -#include "widgets/dropdown_func.h" +#include "dropdown_func.h" #include "core/geometry_func.hpp" #include "tunnelbridge_map.h" #include "road_gui.h" @@ -54,7 +54,7 @@ typedef GUIList GUIBridgeList; ///< List of bridges, used in #B * @param tile_start start tile * @param transport_type transport type. */ -void CcBuildBridge(Commands, const CommandCost &result, TileIndex end_tile, TileIndex tile_start, TransportType transport_type, BridgeType, byte) +void CcBuildBridge(Commands, const CommandCost &result, TileIndex end_tile, TileIndex tile_start, TransportType transport_type, BridgeType, uint8_t) { if (result.Failed()) return; if (_settings_client.sound.confirm) SndPlayTileFx(SND_27_CONSTRUCTION_BRIDGE, end_tile); @@ -75,14 +75,18 @@ private: static Listing last_sorting; ///< Last setting of the sort. /* Constants for sorting the bridges */ - static const StringID sorter_names[]; - static GUIBridgeList::SortFunction * const sorter_funcs[]; + static inline const StringID sorter_names[] = { + STR_SORT_BY_NUMBER, + STR_SORT_BY_COST, + STR_SORT_BY_MAX_SPEED, + }; + static const std::initializer_list sorter_funcs; /* Internal variables */ TileIndex start_tile; TileIndex end_tile; TransportType transport_type; - byte road_rail_type; + uint8_t road_rail_type; GUIBridgeList bridges; int icon_width; ///< Scaled width of the the bridge icon sprite. Scrollbar *vscroll; @@ -122,7 +126,7 @@ private: this->bridges.Sort(); /* Display the current sort variant */ - this->GetWidget(WID_BBS_DROPDOWN_CRITERIA)->widget_data = this->sorter_names[this->bridges.SortType()]; + this->GetWidget(WID_BBS_DROPDOWN_CRITERIA)->widget_data = BuildBridgeWindow::sorter_names[this->bridges.SortType()]; /* Set the modified widgets dirty */ this->SetWidgetDirty(WID_BBS_DROPDOWN_CRITERIA); @@ -147,7 +151,7 @@ private: } public: - BuildBridgeWindow(WindowDesc *desc, TileIndex start, TileIndex end, TransportType transport_type, byte road_rail_type, GUIBridgeList &&bl) : Window(desc), + BuildBridgeWindow(WindowDesc &desc, TileIndex start, TileIndex end, TransportType transport_type, uint8_t road_rail_type, GUIBridgeList &&bl) : Window(desc), start_tile(start), end_tile(end), transport_type(transport_type), @@ -161,8 +165,8 @@ public: this->FinishInitNested(transport_type); // Initializes 'this->icon_width'. this->parent = FindWindowById(WC_BUILD_TOOLBAR, transport_type); - this->bridges.SetListing(this->last_sorting); - this->bridges.SetSortFuncs(this->sorter_funcs); + this->bridges.SetListing(BuildBridgeWindow::last_sorting); + this->bridges.SetSortFuncs(BuildBridgeWindow::sorter_funcs); this->bridges.NeedResort(); this->SortBridgeList(); @@ -171,27 +175,24 @@ public: ~BuildBridgeWindow() { - this->last_sorting = this->bridges.GetListing(); + BuildBridgeWindow::last_sorting = this->bridges.GetListing(); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_BBS_DROPDOWN_ORDER: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } case WID_BBS_DROPDOWN_CRITERIA: { - Dimension d = {0, 0}; - for (const StringID *str = this->sorter_names; *str != INVALID_STRING_ID; str++) { - d = maxdim(d, GetStringBoundingBox(*str)); - } + Dimension d = GetStringListBoundingBox(BuildBridgeWindow::sorter_names); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } case WID_BBS_BRIDGE_LIST: { @@ -201,11 +202,11 @@ public: sprite_dim = maxdim(sprite_dim, GetScaledSpriteSize(bridge_data.spec->sprite)); text_dim = maxdim(text_dim, GetStringBoundingBox(GetBridgeSelectString(bridge_data))); } - resize->height = std::max(sprite_dim.height, text_dim.height) + padding.height; // Max of both sizes + account for matrix edges. + resize.height = std::max(sprite_dim.height, text_dim.height) + padding.height; // Max of both sizes + account for matrix edges. this->icon_width = sprite_dim.width; // Width of bridge icon. - size->width = this->icon_width + WidgetDimensions::scaled.hsep_normal + text_dim.width + padding.width; - size->height = 4 * resize->height; // Smallest bridge gui is 4 entries high in the matrix. + size.width = this->icon_width + WidgetDimensions::scaled.hsep_normal + text_dim.width + padding.width; + size.height = 4 * resize.height; // Smallest bridge gui is 4 entries high in the matrix. break; } } @@ -231,11 +232,11 @@ public: case WID_BBS_BRIDGE_LIST: { Rect tr = r.WithHeight(this->resize.step_height).Shrink(WidgetDimensions::scaled.matrix); bool rtl = _current_text_dir == TD_RTL; - for (int i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < (int)this->bridges.size(); i++) { - const BuildBridgeData &bridge_data = this->bridges.at(i); - const BridgeSpec *b = bridge_data.spec; + auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->bridges); + for (auto it = first; it != last; ++it) { + const BridgeSpec *b = it->spec; DrawSpriteIgnorePadding(b->sprite, b->pal, tr.WithWidth(this->icon_width, rtl), SA_HOR_CENTER | SA_BOTTOM); - DrawStringMultiLine(tr.Indent(this->icon_width + WidgetDimensions::scaled.hsep_normal, rtl), GetBridgeSelectString(bridge_data)); + DrawStringMultiLine(tr.Indent(this->icon_width + WidgetDimensions::scaled.hsep_normal, rtl), GetBridgeSelectString(*it)); tr = tr.Translate(0, this->resize.step_height); } break; @@ -274,7 +275,7 @@ public: break; case WID_BBS_DROPDOWN_CRITERIA: - ShowDropDownMenu(this, this->sorter_names, this->bridges.SortType(), WID_BBS_DROPDOWN_CRITERIA, 0, 0); + ShowDropDownMenu(this, BuildBridgeWindow::sorter_names, this->bridges.SortType(), WID_BBS_DROPDOWN_CRITERIA, 0, 0); break; } } @@ -298,20 +299,12 @@ public: Listing BuildBridgeWindow::last_sorting = {true, 2}; /** Available bridge sorting functions. */ -GUIBridgeList::SortFunction * const BuildBridgeWindow::sorter_funcs[] = { +const std::initializer_list BuildBridgeWindow::sorter_funcs = { &BridgeIndexSorter, &BridgePriceSorter, &BridgeSpeedSorter }; -/** Names of the sorting functions. */ -const StringID BuildBridgeWindow::sorter_names[] = { - STR_SORT_BY_NUMBER, - STR_SORT_BY_COST, - STR_SORT_BY_MAX_SPEED, - INVALID_STRING_ID -}; - /** Widgets of the bridge gui. */ static constexpr NWidgetPart _nested_build_bridge_widgets[] = { /* Header */ @@ -341,11 +334,11 @@ static constexpr NWidgetPart _nested_build_bridge_widgets[] = { }; /** Window definition for the rail bridge selection window. */ -static WindowDesc _build_bridge_desc(__FILE__, __LINE__, +static WindowDesc _build_bridge_desc( WDP_AUTO, "build_bridge", 200, 114, WC_BUILD_BRIDGE, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, - std::begin(_nested_build_bridge_widgets), std::end(_nested_build_bridge_widgets) + _nested_build_bridge_widgets ); /** @@ -358,7 +351,7 @@ static WindowDesc _build_bridge_desc(__FILE__, __LINE__, * @param transport_type The transport type * @param road_rail_type The road/rail type */ -void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transport_type, byte road_rail_type) +void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transport_type, uint8_t road_rail_type) { CloseWindowByClass(WC_BUILD_BRIDGE); @@ -442,7 +435,7 @@ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transpo } if (!bl.empty()) { - new BuildBridgeWindow(&_build_bridge_desc, start, end, transport_type, road_rail_type, std::move(bl)); + new BuildBridgeWindow(_build_bridge_desc, start, end, transport_type, road_rail_type, std::move(bl)); } else { ShowErrorMessage(STR_ERROR_CAN_T_BUILD_BRIDGE_HERE, errmsg, WL_INFO, TileX(end) * TILE_SIZE, TileY(end) * TILE_SIZE); } diff --git a/src/bridge_map.cpp b/src/bridge_map.cpp index eb28673867..f5825bf504 100644 --- a/src/bridge_map.cpp +++ b/src/bridge_map.cpp @@ -69,10 +69,9 @@ TileIndex GetOtherBridgeEnd(TileIndex tile) */ int GetBridgeHeight(TileIndex t) { - int h; - Slope tileh = GetTileSlope(t, &h); + auto [tileh, h] = GetTileSlopeZ(t); Foundation f = GetBridgeFoundation(tileh, DiagDirToAxis(GetTunnelBridgeDirection(t))); /* one height level extra for the ramp */ - return h + 1 + ApplyFoundationToSlope(f, &tileh); + return h + 1 + ApplyFoundationToSlope(f, tileh); } diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index 467b9c0bed..4d9a2ef647 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -25,7 +25,8 @@ #include "window_func.h" #include "timer/timer_game_calendar.h" #include "vehicle_func.h" -#include "widgets/dropdown_func.h" +#include "dropdown_type.h" +#include "dropdown_func.h" #include "engine_gui.h" #include "cargotype.h" #include "core/geometry_func.hpp" @@ -95,7 +96,7 @@ static constexpr NWidgetPart _nested_build_vehicle_widgets[] = { bool _engine_sort_direction; ///< \c false = descending, \c true = ascending. -byte _engine_sort_last_criteria[] = {0, 0, 0, 0}; ///< Last set sort criteria, for each vehicle type. +uint8_t _engine_sort_last_criteria[] = {0, 0, 0, 0}; ///< Last set sort criteria, for each vehicle type. bool _engine_sort_last_order[] = {false, false, false, false}; ///< Last set direction of the sort order, for each vehicle type. bool _engine_sort_show_hidden_engines[] = {false, false, false, false}; ///< Last set 'show hidden engines' setting for each vehicle type. static CargoID _engine_sort_last_cargo_criteria[] = {CargoFilterCriteria::CF_ANY, CargoFilterCriteria::CF_ANY, CargoFilterCriteria::CF_ANY, CargoFilterCriteria::CF_ANY}; ///< Last set filter criteria, for each vehicle type. @@ -483,7 +484,7 @@ EngList_SortTypeFunction * const _engine_sort_functions[][11] = {{ }}; /** Dropdown menu strings for the vehicle sort criteria. */ -const StringID _engine_sort_listing[][12] = {{ +const std::initializer_list _engine_sort_listing[] = {{ /* Trains */ STR_SORT_BY_ENGINE_ID, STR_SORT_BY_COST, @@ -496,7 +497,6 @@ const StringID _engine_sort_listing[][12] = {{ STR_SORT_BY_POWER_VS_RUNNING_COST, STR_SORT_BY_RELIABILITY, STR_SORT_BY_CARGO_CAPACITY, - INVALID_STRING_ID }, { /* Road vehicles */ STR_SORT_BY_ENGINE_ID, @@ -510,7 +510,6 @@ const StringID _engine_sort_listing[][12] = {{ STR_SORT_BY_POWER_VS_RUNNING_COST, STR_SORT_BY_RELIABILITY, STR_SORT_BY_CARGO_CAPACITY, - INVALID_STRING_ID }, { /* Ships */ STR_SORT_BY_ENGINE_ID, @@ -521,7 +520,6 @@ const StringID _engine_sort_listing[][12] = {{ STR_SORT_BY_RUNNING_COST, STR_SORT_BY_RELIABILITY, STR_SORT_BY_CARGO_CAPACITY, - INVALID_STRING_ID }, { /* Aircraft */ STR_SORT_BY_ENGINE_ID, @@ -533,11 +531,10 @@ const StringID _engine_sort_listing[][12] = {{ STR_SORT_BY_RELIABILITY, STR_SORT_BY_CARGO_CAPACITY, STR_SORT_BY_RANGE, - INVALID_STRING_ID }}; /** Filters vehicles by cargo and engine (in case of rail vehicle). */ -static bool CDECL CargoAndEngineFilter(const GUIEngineListItem *item, const CargoID cid) +static bool CargoAndEngineFilter(const GUIEngineListItem *item, const CargoID cid) { if (cid == CargoFilterCriteria::CF_ANY) { return true; @@ -549,7 +546,7 @@ static bool CDECL CargoAndEngineFilter(const GUIEngineListItem *item, const Carg } } -static GUIEngineList::FilterFunction * const _filter_funcs[] = { +static GUIEngineList::FilterFunction * const _engine_filter_funcs[] = { &CargoAndEngineFilter, }; @@ -998,18 +995,16 @@ int DrawVehiclePurchaseInfo(int left, int right, int y, EngineID engine_number, * @param type Type of vehicle (VEH_*) * @param r The Rect of the list * @param eng_list What engines to draw - * @param min where to start in the list - * @param max where in the list to end + * @param sb Scrollbar of list. * @param selected_id what engine to highlight as selected, if any * @param show_count Whether to show the amount of engines or not * @param selected_group the group to list the engines of */ -void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_list, uint16_t min, uint16_t max, EngineID selected_id, bool show_count, GroupID selected_group) +void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_list, const Scrollbar &sb, EngineID selected_id, bool show_count, GroupID selected_group) { static const int sprite_y_offsets[] = { -1, -1, -2, -2 }; - /* Obligatory sanity checks! */ - assert(max <= eng_list.size()); + auto [first, last] = sb.GetVisibleRangeIterators(eng_list); bool rtl = _current_text_dir == TD_RTL; int step_size = GetEngineListHeight(type); @@ -1017,7 +1012,7 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li int sprite_right = GetVehicleImageCellSize(type, EIT_PURCHASE).extend_right; int sprite_width = sprite_left + sprite_right; int circle_width = std::max(GetScaledSpriteSize(SPR_CIRCLE_FOLDED).width, GetScaledSpriteSize(SPR_CIRCLE_UNFOLDED).width); - int linecolour = _colour_gradient[COLOUR_ORANGE][4]; + int linecolour = GetColourGradient(COLOUR_ORANGE, SHADE_NORMAL); Rect ir = r.WithHeight(step_size).Shrink(WidgetDimensions::scaled.matrix); int sprite_y_offset = ScaleSpriteTrad(sprite_y_offsets[type]) + ir.Height() / 2; @@ -1028,9 +1023,8 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li replace_icon = GetSpriteSize(SPR_GROUP_REPLACE_ACTIVE); uint biggest_num_engines = 0; - for (auto i = min; i < max; i++) { - const auto &item = eng_list[i]; - const uint num_engines = GetGroupNumEngines(_local_company, selected_group, item.engine_id); + for (auto it = first; it != last; ++it) { + const uint num_engines = GetGroupNumEngines(_local_company, selected_group, it->engine_id); biggest_num_engines = std::max(biggest_num_engines, num_engines); } @@ -1047,13 +1041,31 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li int small_text_y_offset = ir.Height() - GetCharacterHeight(FS_SMALL); int replace_icon_y_offset = (ir.Height() - replace_icon.height) / 2; + const int offset = (rtl ? -circle_width : circle_width) / 2; + const int level_width = rtl ? -WidgetDimensions::scaled.hsep_indent : WidgetDimensions::scaled.hsep_indent; + int y = ir.top; - for (; min < max; min++, y += step_size) { - const auto &item = eng_list[min]; + for (auto it = first; it != last; ++it) { + const auto &item = *it; uint indent = item.indent * WidgetDimensions::scaled.hsep_indent; bool has_variants = (item.flags & EngineDisplayFlags::HasVariants) != EngineDisplayFlags::None; bool is_folded = (item.flags & EngineDisplayFlags::IsFolded) != EngineDisplayFlags::None; bool shaded = (item.flags & EngineDisplayFlags::Shaded) != EngineDisplayFlags::None; + + if (item.indent > 0) { + /* Draw tree continuation lines. */ + int tx = (rtl ? ir.right : ir.left) + offset; + int ty = y - WidgetDimensions::scaled.matrix.top; + for (uint lvl = 1; lvl <= item.indent; ++lvl) { + if (HasBit(item.level_mask, lvl)) GfxDrawLine(tx, ty, tx, ty + step_size - 1, linecolour, WidgetDimensions::scaled.fullbevel.top); + if (lvl < item.indent) tx += level_width; + } + /* Draw our node in the tree. */ + int ycentre = y + normal_text_y_offset + GetCharacterHeight(FS_NORMAL) / 2 - 1; + if (!HasBit(item.level_mask, item.indent)) GfxDrawLine(tx, ty, tx, ycentre, linecolour, WidgetDimensions::scaled.fullbevel.top); + GfxDrawLine(tx, ycentre, tx + offset - (rtl ? -1 : 1), ycentre, linecolour, WidgetDimensions::scaled.fullbevel.top); + } + /* Note: num_engines is only used in the autoreplace GUI, so it is correct to use _local_company here. */ const uint num_engines = GetGroupNumEngines(_local_company, selected_group, item.engine_id); @@ -1081,14 +1093,7 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li Rect fr = ir.Indent(indent, rtl).WithWidth(circle_width, rtl); DrawSpriteIgnorePadding(is_folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED, PAL_NONE, {fr.left, y, fr.right, y + ir.Height() - 1}, SA_CENTER); } - if (indent > 0) { - /* Draw tree lines */ - Rect fr = ir.Indent(indent - WidgetDimensions::scaled.hsep_indent, rtl).WithWidth(circle_width, rtl); - int ycenter = y + normal_text_y_offset + GetCharacterHeight(FS_NORMAL) / 2; - bool continues = (min + 1U) < eng_list.size() && eng_list[min + 1].indent == item.indent; - GfxDrawLine(fr.left + circle_width / 2, y - WidgetDimensions::scaled.matrix.top, fr.left + circle_width / 2, continues ? y - WidgetDimensions::scaled.matrix.top + step_size - 1 : ycenter, linecolour, WidgetDimensions::scaled.fullbevel.top); - GfxDrawLine(fr.left + circle_width / 2, ycenter, fr.right, ycenter, linecolour, WidgetDimensions::scaled.fullbevel.top); - } + y += step_size; } } @@ -1115,6 +1120,44 @@ void DisplayVehicleSortDropDown(Window *w, VehicleType vehicle_type, int selecte ShowDropDownMenu(w, _engine_sort_listing[vehicle_type], selected, button, 0, hidden_mask); } +/** + * Add children to GUI engine list to build a hierarchical tree. + * @param dst Destination list. + * @param src Source list. + * @param parent Current tree parent (set by self with recursion). + * @param indent Current tree indentation level (set by self with recursion). + */ +void GUIEngineListAddChildren(GUIEngineList &dst, const GUIEngineList &src, EngineID parent, uint8_t indent) +{ + for (const auto &item : src) { + if (item.variant_id != parent || item.engine_id == parent) continue; + + const Engine *e = Engine::Get(item.engine_id); + EngineDisplayFlags flags = item.flags; + if (e->display_last_variant != INVALID_ENGINE) flags &= ~EngineDisplayFlags::Shaded; + dst.emplace_back(e->display_last_variant == INVALID_ENGINE ? item.engine_id : e->display_last_variant, item.engine_id, flags, indent); + + /* Add variants if not folded */ + if ((item.flags & (EngineDisplayFlags::HasVariants | EngineDisplayFlags::IsFolded)) == EngineDisplayFlags::HasVariants) { + /* Add this engine again as a child */ + if ((item.flags & EngineDisplayFlags::Shaded) == EngineDisplayFlags::None) { + dst.emplace_back(item.engine_id, item.engine_id, EngineDisplayFlags::None, indent + 1); + } + GUIEngineListAddChildren(dst, src, item.engine_id, indent + 1); + } + } + + if (indent > 0 || dst.empty()) return; + + /* Hierarchy is complete, traverse in reverse to find where indentation levels continue. */ + uint16_t level_mask = 0; + for (auto it = std::rbegin(dst); std::next(it) != std::rend(dst); ++it) { + auto next_it = std::next(it); + SB(level_mask, it->indent, 1, it->indent <= next_it->indent); + next_it->level_mask = level_mask; + } +} + /** Enum referring to the Hotkeys in the build vehicle window */ enum BuildVehicleHotkeys { BVHK_FOCUS_FILTER_BOX, ///< Focus the edit box for editing the filter string @@ -1128,7 +1171,7 @@ struct BuildVehicleWindow : Window { RoadType roadtype; ///< Road type to show, or #INVALID_ROADTYPE. } filter; ///< Filter to apply. bool descending_sort_order; ///< Sort direction, @see _engine_sort_direction - byte sort_criteria; ///< Current sort criterium. + uint8_t sort_criteria; ///< Current sort criterium. bool show_hidden_engines; ///< State of the 'show hidden engines' button. bool listview_mode; ///< If set, only display the available vehicles and do not show a 'build' button. EngineID sel_engine; ///< Currently selected engine, or #INVALID_ENGINE @@ -1158,28 +1201,7 @@ struct BuildVehicleWindow : Window { } } - void AddChildren(const GUIEngineList &source, EngineID parent, int indent) - { - for (const auto &item : source) { - if (item.variant_id != parent || item.engine_id == parent) continue; - - const Engine *e = Engine::Get(item.engine_id); - EngineDisplayFlags flags = item.flags; - if (e->display_last_variant != INVALID_ENGINE) flags &= ~EngineDisplayFlags::Shaded; - this->eng_list.emplace_back(e->display_last_variant == INVALID_ENGINE ? item.engine_id : e->display_last_variant, item.engine_id, flags, indent); - - /* Add variants if not folded */ - if ((item.flags & (EngineDisplayFlags::HasVariants | EngineDisplayFlags::IsFolded)) == EngineDisplayFlags::HasVariants) { - /* Add this engine again as a child */ - if ((item.flags & EngineDisplayFlags::Shaded) == EngineDisplayFlags::None) { - this->eng_list.emplace_back(item.engine_id, item.engine_id, EngineDisplayFlags::None, indent + 1); - } - AddChildren(source, item.engine_id, indent + 1); - } - } - } - - BuildVehicleWindow(WindowDesc *desc, TileIndex tile, VehicleType type) : Window(desc), vehicle_editbox(MAX_LENGTH_VEHICLE_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_VEHICLE_NAME_CHARS) + BuildVehicleWindow(WindowDesc &desc, TileIndex tile, VehicleType type) : Window(desc), vehicle_editbox(MAX_LENGTH_VEHICLE_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_VEHICLE_NAME_CHARS) { this->vehicle_type = type; this->listview_mode = tile == INVALID_TILE; @@ -1234,7 +1256,7 @@ struct BuildVehicleWindow : Window { /* Select the first unshaded engine in the list as default when opening the window */ EngineID engine = INVALID_ENGINE; - auto it = std::find_if(this->eng_list.begin(), this->eng_list.end(), [&](GUIEngineListItem &item){ return (item.flags & EngineDisplayFlags::Shaded) == EngineDisplayFlags::None; }); + auto it = std::find_if(this->eng_list.begin(), this->eng_list.end(), [&](GUIEngineListItem &item) { return (item.flags & EngineDisplayFlags::Shaded) == EngineDisplayFlags::None; }); if (it != this->eng_list.end()) engine = it->engine_id; this->SelectEngine(engine); } @@ -1286,7 +1308,7 @@ struct BuildVehicleWindow : Window { this->cargo_filter_criteria = _engine_sort_last_cargo_criteria[this->vehicle_type]; if (this->cargo_filter_criteria < NUM_CARGO && !HasBit(_standard_cargo_mask, this->cargo_filter_criteria)) this->cargo_filter_criteria = CargoFilterCriteria::CF_ANY; - this->eng_list.SetFilterFuncs(_filter_funcs); + this->eng_list.SetFilterFuncs(_engine_filter_funcs); this->eng_list.SetFilterState(this->cargo_filter_criteria != CargoFilterCriteria::CF_ANY); } @@ -1519,8 +1541,7 @@ struct BuildVehicleWindow : Window { default: NOT_REACHED(); case VEH_TRAIN: this->GenerateBuildTrainList(list); - AddChildren(list, INVALID_ENGINE, 0); - this->eng_list.shrink_to_fit(); + GUIEngineListAddChildren(this->eng_list, list); this->eng_list.RebuildDone(); return; case VEH_ROAD: @@ -1557,8 +1578,7 @@ struct BuildVehicleWindow : Window { EngList_Sort(this->eng_list, _engine_sort_functions[this->vehicle_type][this->sort_criteria]); this->eng_list.swap(list); - AddChildren(list, INVALID_ENGINE, 0); - this->eng_list.shrink_to_fit(); + GUIEngineListAddChildren(this->eng_list, list, INVALID_ENGINE, 0); this->eng_list.RebuildDone(); } @@ -1567,20 +1587,20 @@ struct BuildVehicleWindow : Window { DropDownList list; /* Add item for disabling filtering. */ - list.push_back(std::make_unique(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ANY), CargoFilterCriteria::CF_ANY, false)); + list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ANY), CargoFilterCriteria::CF_ANY)); /* Specific filters for trains. */ if (this->vehicle_type == VEH_TRAIN) { /* Add item for locomotives only in case of trains. */ - list.push_back(std::make_unique(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ENGINES), CargoFilterCriteria::CF_ENGINES, false)); + list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ENGINES), CargoFilterCriteria::CF_ENGINES)); /* Add item for vehicles not carrying anything, e.g. train engines. * This could also be useful for eyecandy vehicles of other types, but is likely too confusing for joe, */ - list.push_back(std::make_unique(this->GetCargoFilterLabel(CargoFilterCriteria::CF_NONE), CargoFilterCriteria::CF_NONE, false)); + list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_NONE), CargoFilterCriteria::CF_NONE)); } /* Add cargos */ Dimension d = GetLargestCargoIconSize(); for (const CargoSpec *cs : _sorted_standard_cargo_specs) { - list.push_back(std::make_unique(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false)); + list.push_back(MakeDropDownListIconItem(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index())); } return list; @@ -1723,7 +1743,7 @@ struct BuildVehicleWindow : Window { break; case WID_BV_SORT_DROPDOWN: - SetDParam(0, _engine_sort_listing[this->vehicle_type][this->sort_criteria]); + SetDParam(0, std::data(_engine_sort_listing[this->vehicle_type])[this->sort_criteria]); break; case WID_BV_CARGO_FILTER_DROPDOWN: @@ -1742,43 +1762,43 @@ struct BuildVehicleWindow : Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_BV_LIST: - resize->height = GetEngineListHeight(this->vehicle_type); - size->height = 3 * resize->height; - size->width = std::max(size->width, GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_left + GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_right + 165) + padding.width; + resize.height = GetEngineListHeight(this->vehicle_type); + size.height = 3 * resize.height; + size.width = std::max(size.width, GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_left + GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_right + 165) + padding.width; break; case WID_BV_PANEL: - size->height = GetCharacterHeight(FS_NORMAL) * this->details_height + padding.height; + size.height = GetCharacterHeight(FS_NORMAL) * this->details_height + padding.height; break; case WID_BV_SORT_ASCENDING_DESCENDING: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } case WID_BV_CARGO_FILTER_DROPDOWN: - size->width = std::max(size->width, GetDropDownListDimension(this->BuildCargoDropDownList()).width + padding.width); + size.width = std::max(size.width, GetDropDownListDimension(this->BuildCargoDropDownList()).width + padding.width); break; case WID_BV_BUILD: - *size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON + this->vehicle_type); - *size = maxdim(*size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON + this->vehicle_type)); - size->width += padding.width; - size->height += padding.height; + size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON + this->vehicle_type); + size = maxdim(size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON + this->vehicle_type)); + size.width += padding.width; + size.height += padding.height; break; case WID_BV_SHOW_HIDE: - *size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON + this->vehicle_type); - *size = maxdim(*size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON + this->vehicle_type)); - size->width += padding.width; - size->height += padding.height; + size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON + this->vehicle_type); + size = maxdim(size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON + this->vehicle_type)); + size.width += padding.width; + size.height += padding.height; break; } } @@ -1791,8 +1811,7 @@ struct BuildVehicleWindow : Window { this->vehicle_type, r, this->eng_list, - this->vscroll->GetPosition(), - static_cast(std::min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->eng_list.size())), + *this->vscroll, this->sel_engine, false, DEFAULT_GROUP @@ -1821,7 +1840,7 @@ struct BuildVehicleWindow : Window { int needed_height = this->details_height; /* Draw details panels. */ if (this->sel_engine != INVALID_ENGINE) { - const Rect r = this->GetWidget(WID_BV_PANEL)->GetCurrentRect().Shrink(WidgetDimensions::scaled.frametext, WidgetDimensions::scaled.framerect); + const Rect r = this->GetWidget(WID_BV_PANEL)->GetCurrentRect().Shrink(WidgetDimensions::scaled.framerect); int text_end = DrawVehiclePurchaseInfo(r.left, r.right, r.top, this->sel_engine, this->te); needed_height = std::max(needed_height, (text_end - r.top) / GetCharacterHeight(FS_NORMAL)); } @@ -1834,11 +1853,11 @@ struct BuildVehicleWindow : Window { } } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (str == nullptr) return; + if (!str.has_value()) return; - Command::Post(STR_ERROR_CAN_T_RENAME_TRAIN_TYPE + this->vehicle_type, this->rename_engine, str); + Command::Post(STR_ERROR_CAN_T_RENAME_TRAIN_TYPE + this->vehicle_type, this->rename_engine, *str); } void OnDropdownSelect(WidgetID widget, int index) override @@ -1899,11 +1918,11 @@ struct BuildVehicleWindow : Window { }}; }; -static WindowDesc _build_vehicle_desc(__FILE__, __LINE__, +static WindowDesc _build_vehicle_desc( WDP_AUTO, "build_vehicle", 240, 268, WC_BUILD_VEHICLE, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_build_vehicle_widgets), std::end(_nested_build_vehicle_widgets), + _nested_build_vehicle_widgets, &BuildVehicleWindow::hotkeys ); @@ -1919,5 +1938,5 @@ void ShowBuildVehicleWindow(TileIndex tile, VehicleType type) CloseWindowById(WC_BUILD_VEHICLE, num); - new BuildVehicleWindow(&_build_vehicle_desc, tile, type); + new BuildVehicleWindow(_build_vehicle_desc, tile, type); } diff --git a/src/cachecheck.cpp b/src/cachecheck.cpp new file mode 100644 index 0000000000..a68fa7871c --- /dev/null +++ b/src/cachecheck.cpp @@ -0,0 +1,224 @@ +/* + * This file is part of OpenTTD. + * OpenTTD 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, version 2. + * OpenTTD 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 OpenTTD. If not, see . + */ + +/** @file cachecheck.cpp Check caches. */ + +#include "stdafx.h" +#include "aircraft.h" +#include "company_base.h" +#include "debug.h" +#include "industry.h" +#include "roadstop_base.h" +#include "roadveh.h" +#include "ship.h" +#include "station_base.h" +#include "station_map.h" +#include "subsidy_func.h" +#include "town.h" +#include "train.h" +#include "vehicle_base.h" + +#include "safeguards.h" + +extern void AfterLoadCompanyStats(); +extern void RebuildTownCaches(); + +/** + * Check the validity of some of the caches. + * Especially in the sense of desyncs between + * the cached value and what the value would + * be when calculated from the 'base' data. + */ +void CheckCaches() +{ + /* Return here so it is easy to add checks that are run + * always to aid testing of caches. */ + if (_debug_desync_level <= 1) return; + + /* Check the town caches. */ + std::vector old_town_caches; + for (const Town *t : Town::Iterate()) { + old_town_caches.push_back(t->cache); + } + + RebuildTownCaches(); + RebuildSubsidisedSourceAndDestinationCache(); + + uint i = 0; + for (Town *t : Town::Iterate()) { + if (old_town_caches[i] != t->cache) { + Debug(desync, 2, "warning: town cache mismatch: town {}", t->index); + } + i++; + } + + /* Check company infrastructure cache. */ + std::vector old_infrastructure; + for (const Company *c : Company::Iterate()) old_infrastructure.push_back(c->infrastructure); + + AfterLoadCompanyStats(); + + i = 0; + for (const Company *c : Company::Iterate()) { + if (old_infrastructure[i] != c->infrastructure) { + Debug(desync, 2, "warning: infrastructure cache mismatch: company {}", c->index); + } + i++; + } + + /* Strict checking of the road stop cache entries */ + for (const RoadStop *rs : RoadStop::Iterate()) { + if (IsBayRoadStopTile(rs->xy)) continue; + + assert(rs->GetEntry(DIAGDIR_NE) != rs->GetEntry(DIAGDIR_NW)); + rs->GetEntry(DIAGDIR_NE)->CheckIntegrity(rs); + rs->GetEntry(DIAGDIR_NW)->CheckIntegrity(rs); + } + + std::vector grf_cache; + std::vector veh_cache; + std::vector gro_cache; + std::vector tra_cache; + + for (Vehicle *v : Vehicle::Iterate()) { + if (v != v->First() || v->vehstatus & VS_CRASHED || !v->IsPrimaryVehicle()) continue; + + for (const Vehicle *u = v; u != nullptr; u = u->Next()) { + FillNewGRFVehicleCache(u); + grf_cache.emplace_back(u->grf_cache); + veh_cache.emplace_back(u->vcache); + switch (u->type) { + case VEH_TRAIN: + gro_cache.emplace_back(Train::From(u)->gcache); + tra_cache.emplace_back(Train::From(u)->tcache); + break; + case VEH_ROAD: + gro_cache.emplace_back(RoadVehicle::From(u)->gcache); + break; + default: + break; + } + } + + switch (v->type) { + case VEH_TRAIN: Train::From(v)->ConsistChanged(CCF_TRACK); break; + case VEH_ROAD: RoadVehUpdateCache(RoadVehicle::From(v)); break; + case VEH_AIRCRAFT: UpdateAircraftCache(Aircraft::From(v)); break; + case VEH_SHIP: Ship::From(v)->UpdateCache(); break; + default: break; + } + + uint length = 0; + for (const Vehicle *u = v; u != nullptr; u = u->Next()) { + FillNewGRFVehicleCache(u); + if (grf_cache[length] != u->grf_cache) { + Debug(desync, 2, "warning: newgrf cache mismatch: type {}, vehicle {}, company {}, unit number {}, wagon {}", v->type, v->index, v->owner, v->unitnumber, length); + } + if (veh_cache[length] != u->vcache) { + Debug(desync, 2, "warning: vehicle cache mismatch: type {}, vehicle {}, company {}, unit number {}, wagon {}", v->type, v->index, v->owner, v->unitnumber, length); + } + switch (u->type) { + case VEH_TRAIN: + if (gro_cache[length] != Train::From(u)->gcache) { + Debug(desync, 2, "warning: train ground vehicle cache mismatch: vehicle {}, company {}, unit number {}, wagon {}", v->index, v->owner, v->unitnumber, length); + } + if (tra_cache[length] != Train::From(u)->tcache) { + Debug(desync, 2, "warning: train cache mismatch: vehicle {}, company {}, unit number {}, wagon {}", v->index, v->owner, v->unitnumber, length); + } + break; + case VEH_ROAD: + if (gro_cache[length] != RoadVehicle::From(u)->gcache) { + Debug(desync, 2, "warning: road vehicle ground vehicle cache mismatch: vehicle {}, company {}, unit number {}, wagon {}", v->index, v->owner, v->unitnumber, length); + } + break; + default: + break; + } + length++; + } + + grf_cache.clear(); + veh_cache.clear(); + gro_cache.clear(); + tra_cache.clear(); + } + + /* Check whether the caches are still valid */ + for (Vehicle *v : Vehicle::Iterate()) { + [[maybe_unused]] const auto a = v->cargo.PeriodsInTransit(); + [[maybe_unused]] const auto b = v->cargo.TotalCount(); + [[maybe_unused]] const auto c = v->cargo.GetFeederShare(); + v->cargo.InvalidateCache(); + assert(a == v->cargo.PeriodsInTransit()); + assert(b == v->cargo.TotalCount()); + assert(c == v->cargo.GetFeederShare()); + } + + /* Backup stations_near */ + std::vector old_town_stations_near; + for (Town *t : Town::Iterate()) old_town_stations_near.push_back(t->stations_near); + + std::vector old_industry_stations_near; + for (Industry *ind : Industry::Iterate()) old_industry_stations_near.push_back(ind->stations_near); + + std::vector old_station_industries_near; + for (Station *st : Station::Iterate()) old_station_industries_near.push_back(st->industries_near); + + for (Station *st : Station::Iterate()) { + for (GoodsEntry &ge : st->goods) { + [[maybe_unused]] const auto a = ge.cargo.PeriodsInTransit(); + [[maybe_unused]] const auto b = ge.cargo.TotalCount(); + ge.cargo.InvalidateCache(); + assert(a == ge.cargo.PeriodsInTransit()); + assert(b == ge.cargo.TotalCount()); + } + + /* Check docking tiles */ + TileArea ta; + std::map docking_tiles; + for (TileIndex tile : st->docking_station) { + ta.Add(tile); + docking_tiles[tile] = IsDockingTile(tile); + } + UpdateStationDockingTiles(st); + if (ta.tile != st->docking_station.tile || ta.w != st->docking_station.w || ta.h != st->docking_station.h) { + Debug(desync, 2, "warning: station docking mismatch: station {}, company {}", st->index, st->owner); + } + for (TileIndex tile : ta) { + if (docking_tiles[tile] != IsDockingTile(tile)) { + Debug(desync, 2, "warning: docking tile mismatch: tile {}", tile); + } + } + } + + Station::RecomputeCatchmentForAll(); + + /* Check industries_near */ + i = 0; + for (Station *st : Station::Iterate()) { + if (st->industries_near != old_station_industries_near[i]) { + Debug(desync, 2, "warning: station industries near mismatch: station {}", st->index); + } + i++; + } + + /* Check stations_near */ + i = 0; + for (Town *t : Town::Iterate()) { + if (t->stations_near != old_town_stations_near[i]) { + Debug(desync, 2, "warning: town stations near mismatch: town {}", t->index); + } + i++; + } + i = 0; + for (Industry *ind : Industry::Iterate()) { + if (ind->stations_near != old_industry_stations_near[i]) { + Debug(desync, 2, "warning: industry stations near mismatch: industry {}", ind->index); + } + i++; + } +} diff --git a/src/cargo_type.h b/src/cargo_type.h index a5dbdefcb9..27dc09cbe9 100644 --- a/src/cargo_type.h +++ b/src/cargo_type.h @@ -19,7 +19,7 @@ using CargoLabel = StrongType::Typedef { /** Types of cargo source and destination */ -enum class SourceType : byte { +enum class SourceType : uint8_t { Industry, ///< Source/destination is an industry Town, ///< Source/destination is a town Headquarters, ///< Source/destination are company headquarters diff --git a/src/cargomonitor.cpp b/src/cargomonitor.cpp index dc5ab7643f..ab8dc4a06f 100644 --- a/src/cargomonitor.cpp +++ b/src/cargomonitor.cpp @@ -71,8 +71,7 @@ static int32_t GetAmount(CargoMonitorMap &monitor_map, CargoMonitorID monitor, b CargoMonitorMap::iterator iter = monitor_map.find(monitor); if (iter == monitor_map.end()) { if (keep_monitoring) { - std::pair p(monitor, 0); - monitor_map.insert(p); + monitor_map.emplace(monitor, 0); } return 0; } else { diff --git a/src/cargopacket.h b/src/cargopacket.h index 6498760822..07ae8911d9 100644 --- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -45,23 +45,23 @@ private: int16_t y; }; - uint16_t count{0}; ///< The amount of cargo in this packet. - uint16_t periods_in_transit{0}; ///< Amount of cargo aging periods this packet has been in transit. + uint16_t count = 0; ///< The amount of cargo in this packet. + uint16_t periods_in_transit = 0; ///< Amount of cargo aging periods this packet has been in transit. - Money feeder_share{0}; ///< Value of feeder pickup to be paid for on delivery of cargo. + Money feeder_share = 0; ///< Value of feeder pickup to be paid for on delivery of cargo. - TileIndex source_xy{INVALID_TILE}; ///< The origin of the cargo. + TileIndex source_xy = INVALID_TILE; ///< The origin of the cargo. Vector travelled{0, 0}; ///< If cargo is in station: the vector from the unload tile to the source tile. If in vehicle: an intermediate value. - SourceID source_id{INVALID_SOURCE}; ///< Index of industry/town/HQ, INVALID_SOURCE if unknown/invalid. - SourceType source_type{SourceType::Industry}; ///< Type of \c source_id. + SourceID source_id = INVALID_SOURCE; ///< Index of industry/town/HQ, INVALID_SOURCE if unknown/invalid. + SourceType source_type = SourceType::Industry; ///< Type of \c source_id. #ifdef WITH_ASSERT - bool in_vehicle{false}; ///< NOSAVE: Whether this cargo is in a vehicle or not. + bool in_vehicle = false; ///< NOSAVE: Whether this cargo is in a vehicle or not. #endif /* WITH_ASSERT */ - StationID first_station{INVALID_STATION}; ///< The station where the cargo came from first. - StationID next_hop{INVALID_STATION}; ///< Station where the cargo wants to go next. + StationID first_station = INVALID_STATION; ///< The station where the cargo came from first. + StationID next_hop = INVALID_STATION; ///< Station where the cargo wants to go next. /** The CargoList caches, thus needs to know about it. */ template friend class CargoList; diff --git a/src/cargotype.cpp b/src/cargotype.cpp index bca7e368b5..870369dbbd 100644 --- a/src/cargotype.cpp +++ b/src/cargotype.cpp @@ -95,11 +95,11 @@ void BuildCargoLabelMap() CargoSpec::label_map.clear(); for (const CargoSpec &cs : CargoSpec::array) { /* During initialization, CargoSpec can be marked valid before the label has been set. */ - if (!cs.IsValid() || cs.label == CargoLabel{0}) continue; + if (!cs.IsValid() || cs.label == CargoLabel{0} || cs.label == CT_INVALID) continue; /* Label already exists, don't addd again. */ if (CargoSpec::label_map.count(cs.label) != 0) continue; - CargoSpec::label_map.insert(std::make_pair(cs.label, cs.Index())); + CargoSpec::label_map.emplace(cs.label, cs.Index()); } } diff --git a/src/cargotype.h b/src/cargotype.h index 81758c8b42..10aae014d2 100644 --- a/src/cargotype.h +++ b/src/cargotype.h @@ -18,7 +18,7 @@ #include "core/bitmath_func.hpp" /** Town growth effect when delivering cargo. */ -enum TownAcceptanceEffect : byte { +enum TownAcceptanceEffect : uint8_t { TAE_BEGIN = 0, TAE_NONE = TAE_BEGIN, ///< Cargo has no effect. TAE_PASSENGERS, ///< Cargo behaves passenger-like. @@ -31,7 +31,7 @@ enum TownAcceptanceEffect : byte { }; /** Town effect when producing cargo. */ -enum TownProductionEffect : byte { +enum TownProductionEffect : uint8_t { TPE_NONE, ///< Town will not produce this cargo type. TPE_PASSENGERS, ///< Cargo behaves passenger-like for production. TPE_MAIL, ///< Cargo behaves mail-like for production. @@ -60,26 +60,26 @@ enum CargoClass { CC_SPECIAL = 1 << 15, ///< Special bit used for livery refit tricks instead of normal cargoes. }; -static const byte INVALID_CARGO_BITNUM = 0xFF; ///< Constant representing invalid cargo +static const uint8_t INVALID_CARGO_BITNUM = 0xFF; ///< Constant representing invalid cargo static const uint TOWN_PRODUCTION_DIVISOR = 256; /** Specification of a cargo type. */ struct CargoSpec { CargoLabel label; ///< Unique label of the cargo type. - uint8_t bitnum{INVALID_CARGO_BITNUM}; ///< Cargo bit number, is #INVALID_CARGO_BITNUM for a non-used spec. + uint8_t bitnum = INVALID_CARGO_BITNUM; ///< Cargo bit number, is #INVALID_CARGO_BITNUM for a non-used spec. uint8_t legend_colour; uint8_t rating_colour; uint8_t weight; ///< Weight of a single unit of this cargo type in 1/16 ton (62.5 kg). - uint16_t multiplier{0x100}; ///< Capacity multiplier for vehicles. (8 fractional bits) + uint16_t multiplier = 0x100; ///< Capacity multiplier for vehicles. (8 fractional bits) uint16_t classes; ///< Classes of this cargo type. @see CargoClass int32_t initial_payment; ///< Initial payment rate before inflation is applied. uint8_t transit_periods[2]; bool is_freight; ///< Cargo type is considered to be freight (affects train freight multiplier). TownAcceptanceEffect town_acceptance_effect; ///< The effect that delivering this cargo type has on towns. Also affects destination of subsidies. - TownProductionEffect town_production_effect{INVALID_TPE}; ///< The effect on town cargo production. - uint16_t town_production_multiplier{TOWN_PRODUCTION_DIVISOR}; ///< Town production multipler, if commanded by TownProductionEffect. + TownProductionEffect town_production_effect = INVALID_TPE; ///< The effect on town cargo production. + uint16_t town_production_multiplier = TOWN_PRODUCTION_DIVISOR; ///< Town production multipler, if commanded by TownProductionEffect. uint8_t callback_mask; ///< Bitmask of cargo callbacks that have to be called StringID name; ///< Name of this type of cargo. diff --git a/src/cheat_gui.cpp b/src/cheat_gui.cpp index 0a1f7fbeee..5d3475ee80 100644 --- a/src/cheat_gui.cpp +++ b/src/cheat_gui.cpp @@ -230,7 +230,7 @@ struct CheatWindow : Window { uint line_height; Dimension icon; ///< Dimension of company icon sprite - CheatWindow(WindowDesc *desc) : Window(desc) + CheatWindow(WindowDesc &desc) : Window(desc) { this->InitNested(); } @@ -298,38 +298,37 @@ struct CheatWindow : Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_C_PANEL) return; uint width = 0; - for (int i = 0; i != lengthof(_cheats_ui); i++) { - const CheatEntry *ce = &_cheats_ui[i]; - switch (ce->type) { + for (const auto &ce : _cheats_ui) { + switch (ce.type) { case SLE_BOOL: SetDParam(0, STR_CONFIG_SETTING_ON); - width = std::max(width, GetStringBoundingBox(ce->str).width); + width = std::max(width, GetStringBoundingBox(ce.str).width); SetDParam(0, STR_CONFIG_SETTING_OFF); - width = std::max(width, GetStringBoundingBox(ce->str).width); + width = std::max(width, GetStringBoundingBox(ce.str).width); break; default: - switch (ce->str) { + switch (ce.str) { /* Display date for change date cheat */ case STR_CHEAT_CHANGE_DATE: SetDParam(0, TimerGameCalendar::ConvertYMDToDate(CalendarTime::MAX_YEAR, 11, 31)); - width = std::max(width, GetStringBoundingBox(ce->str).width); + width = std::max(width, GetStringBoundingBox(ce.str).width); break; /* Draw coloured flag for change company cheat */ case STR_CHEAT_CHANGE_COMPANY: SetDParamMaxValue(0, MAX_COMPANIES); - width = std::max(width, GetStringBoundingBox(ce->str).width + WidgetDimensions::scaled.hsep_wide); + width = std::max(width, GetStringBoundingBox(ce.str).width + WidgetDimensions::scaled.hsep_wide); break; default: SetDParam(0, INT64_MAX); - width = std::max(width, GetStringBoundingBox(ce->str).width); + width = std::max(width, GetStringBoundingBox(ce.str).width); break; } break; @@ -339,8 +338,8 @@ struct CheatWindow : Window { this->line_height = std::max(this->icon.height, SETTING_BUTTON_HEIGHT); this->line_height = std::max(this->line_height, GetCharacterHeight(FS_NORMAL)) + WidgetDimensions::scaled.framerect.Vertical(); - size->width = width + WidgetDimensions::scaled.hsep_wide * 2 + SETTING_BUTTON_WIDTH; - size->height = WidgetDimensions::scaled.framerect.Vertical() + this->line_height * lengthof(_cheats_ui); + size.width = width + WidgetDimensions::scaled.hsep_wide * 2 + SETTING_BUTTON_WIDTH; + size.height = WidgetDimensions::scaled.framerect.Vertical() + this->line_height * lengthof(_cheats_ui); } void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override @@ -405,14 +404,14 @@ struct CheatWindow : Window { this->SetDirty(); } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { /* Was 'cancel' pressed or nothing entered? */ - if (str == nullptr || StrEmpty(str)) return; + if (!str.has_value() || str->empty()) return; const CheatEntry *ce = &_cheats_ui[clicked_widget]; int oldvalue = (int32_t)ReadValue(ce->variable, ce->type); - int value = atoi(str); + int value = atoi(str->c_str()); *ce->been_used = true; value = ce->proc(value, value - oldvalue); @@ -426,16 +425,16 @@ struct CheatWindow : Window { }; /** Window description of the cheats GUI. */ -static WindowDesc _cheats_desc(__FILE__, __LINE__, +static WindowDesc _cheats_desc( WDP_AUTO, "cheats", 0, 0, WC_CHEATS, WC_NONE, 0, - std::begin(_nested_cheat_widgets), std::end(_nested_cheat_widgets) + _nested_cheat_widgets ); /** Open cheat window. */ void ShowCheatWindow() { CloseWindowById(WC_CHEATS, 0); - new CheatWindow(&_cheats_desc); + new CheatWindow(_cheats_desc); } diff --git a/src/clear_cmd.cpp b/src/clear_cmd.cpp index 9831764b31..181a6882a8 100644 --- a/src/clear_cmd.cpp +++ b/src/clear_cmd.cpp @@ -44,7 +44,7 @@ static CommandCost ClearTile_Clear(TileIndex tile, DoCommandFlag flags) return price; } -void DrawClearLandTile(const TileInfo *ti, byte set) +void DrawClearLandTile(const TileInfo *ti, uint8_t set) { DrawGroundSprite(SPR_FLAT_BARE_LAND + SlopeToSpriteOffset(ti->tileh) + set * 19, PAL_NONE); } @@ -129,8 +129,7 @@ static void DrawTile_Clear(TileInfo *ti) static int GetSlopePixelZ_Clear(TileIndex tile, uint x, uint y, bool) { - int z; - Slope tileh = GetTilePixelSlope(tile, &z); + auto [tileh, z] = GetTilePixelSlope(tile); return z + GetPartialPixelZ(x & 0xF, y & 0xF, tileh); } @@ -145,25 +144,25 @@ static void UpdateFences(TileIndex tile) assert(IsTileType(tile, MP_CLEAR) && IsClearGround(tile, CLEAR_FIELDS)); bool dirty = false; - bool neighbour = (IsTileType(TILE_ADDXY(tile, 1, 0), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, 1, 0), CLEAR_FIELDS)); + bool neighbour = (IsTileType(TileAddXY(tile, 1, 0), MP_CLEAR) && IsClearGround(TileAddXY(tile, 1, 0), CLEAR_FIELDS)); if (!neighbour && GetFence(tile, DIAGDIR_SW) == 0) { SetFence(tile, DIAGDIR_SW, 3); dirty = true; } - neighbour = (IsTileType(TILE_ADDXY(tile, 0, 1), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, 0, 1), CLEAR_FIELDS)); + neighbour = (IsTileType(TileAddXY(tile, 0, 1), MP_CLEAR) && IsClearGround(TileAddXY(tile, 0, 1), CLEAR_FIELDS)); if (!neighbour && GetFence(tile, DIAGDIR_SE) == 0) { SetFence(tile, DIAGDIR_SE, 3); dirty = true; } - neighbour = (IsTileType(TILE_ADDXY(tile, -1, 0), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, -1, 0), CLEAR_FIELDS)); + neighbour = (IsTileType(TileAddXY(tile, -1, 0), MP_CLEAR) && IsClearGround(TileAddXY(tile, -1, 0), CLEAR_FIELDS)); if (!neighbour && GetFence(tile, DIAGDIR_NE) == 0) { SetFence(tile, DIAGDIR_NE, 3); dirty = true; } - neighbour = (IsTileType(TILE_ADDXY(tile, 0, -1), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, 0, -1), CLEAR_FIELDS)); + neighbour = (IsTileType(TileAddXY(tile, 0, -1), MP_CLEAR) && IsClearGround(TileAddXY(tile, 0, -1), CLEAR_FIELDS)); if (!neighbour && GetFence(tile, DIAGDIR_NW) == 0) { SetFence(tile, DIAGDIR_NW, 3); dirty = true; diff --git a/src/clear_func.h b/src/clear_func.h index 2232b56747..28fd7d4a85 100644 --- a/src/clear_func.h +++ b/src/clear_func.h @@ -13,6 +13,6 @@ #include "tile_cmd.h" void DrawHillyLandTile(const TileInfo *ti); -void DrawClearLandTile(const TileInfo *ti, byte set); +void DrawClearLandTile(const TileInfo *ti, uint8_t set); #endif /* CLEAR_FUNC_H */ diff --git a/src/command.cpp b/src/command.cpp index 1d6a530b8c..b975c51fbb 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -151,7 +151,7 @@ bool IsCommandAllowedWhilePaused(Commands cmd) CMDPL_NO_CONSTRUCTION, ///< CMDT_VEHICLE_MANAGEMENT CMDPL_NO_CONSTRUCTION, ///< CMDT_ROUTE_MANAGEMENT CMDPL_NO_CONSTRUCTION, ///< CMDT_OTHER_MANAGEMENT - CMDPL_NO_CONSTRUCTION, ///< CMDT_COMPANY_SETTING + CMDPL_NO_ACTIONS, ///< CMDT_COMPANY_SETTING CMDPL_NO_ACTIONS, ///< CMDT_SERVER_SETTING CMDPL_NO_ACTIONS, ///< CMDT_CHEAT }; diff --git a/src/command_func.h b/src/command_func.h index f0da57c65e..69cb9ebcac 100644 --- a/src/command_func.h +++ b/src/command_func.h @@ -250,7 +250,7 @@ public: template static Tret Unsafe(StringID err_message, Tcallback *callback, bool my_cmd, bool estimate_only, TileIndex location, std::tuple args) { - return Execute(err_message, reinterpret_cast(callback), my_cmd, estimate_only, false, location, std::move(args)); + return Execute(err_message, reinterpret_cast(reinterpret_cast(callback)), my_cmd, estimate_only, false, location, std::move(args)); } protected: @@ -301,7 +301,7 @@ protected: /* Only set client IDs when the command does not come from the network. */ if (!network_command && GetCommandFlags() & CMD_CLIENT_ID) SetClientIds(args, std::index_sequence_for{}); - Tret res = Execute(err_message, reinterpret_cast(callback), my_cmd, estimate_only, network_command, tile, args); + Tret res = Execute(err_message, reinterpret_cast(reinterpret_cast(callback)), my_cmd, estimate_only, network_command, tile, args); InternalPostResult(ExtractCommandCost(res), tile, estimate_only, only_sending, err_message, my_cmd); if (!estimate_only && !only_sending && callback != nullptr) { @@ -372,7 +372,7 @@ protected: assert(AllClientIdsSet(args, std::index_sequence_for{})); } - Backup cur_company(_current_company, FILE_LINE); + Backup cur_company(_current_company); if (!InternalExecutePrepTest(cmd_flags, tile, cur_company)) { cur_company.Trash(); return MakeResult(CMD_ERROR); diff --git a/src/command_type.h b/src/command_type.h index b3ca60d901..2fd494b5ca 100644 --- a/src/command_type.h +++ b/src/command_type.h @@ -207,6 +207,9 @@ enum Commands : uint16_t { CMD_RENAME_WAYPOINT, ///< rename a waypoint CMD_REMOVE_FROM_RAIL_WAYPOINT, ///< remove a (rectangle of) tiles from a rail waypoint + CMD_BUILD_ROAD_WAYPOINT, ///< build a road waypoint + CMD_REMOVE_FROM_ROAD_WAYPOINT, ///< remove a (rectangle of) tiles from a road waypoint + CMD_BUILD_ROAD_STOP, ///< build a road stop CMD_REMOVE_ROAD_STOP, ///< remove a road stop CMD_BUILD_LONG_ROAD, ///< build a complete road (not a "half" one) @@ -283,6 +286,7 @@ enum Commands : uint16_t { CMD_TOWN_SET_TEXT, ///< set the custom text of a town CMD_EXPAND_TOWN, ///< expand a town CMD_DELETE_TOWN, ///< delete a town + CMD_PLACE_HOUSE, ///< place a house CMD_ORDER_REFIT, ///< change the refit information of an order (for "goto depot" ) CMD_CLONE_ORDER, ///< clone (and share) an order @@ -294,6 +298,7 @@ enum Commands : uint16_t { CMD_CREATE_SUBSIDY, ///< create a new subsidy CMD_COMPANY_CTRL, ///< used in multiplayer to create a new companies etc. + CMD_COMPANY_ALLOW_LIST_CTRL, ///< Used in multiplayer to add/remove a client's public key to/from the company's allow list. CMD_CUSTOM_NEWS_ITEM, ///< create a custom news message CMD_CREATE_GOAL, ///< create a new goal CMD_REMOVE_GOAL, ///< remove a goal @@ -462,7 +467,7 @@ template struct CommandTraits; }; /** Storage buffer for serialized command data. */ -typedef std::vector CommandDataBuffer; +typedef std::vector CommandDataBuffer; /** * Define a callback function for the client, after the command is finished. diff --git a/src/company_base.h b/src/company_base.h index fdfa4a2428..814665777b 100644 --- a/src/company_base.h +++ b/src/company_base.h @@ -30,25 +30,38 @@ struct CompanyEconomyEntry { }; struct CompanyInfrastructure { - uint32_t road[ROADTYPE_END]; ///< Count of company owned track bits for each road type. + std::array rail{}; ///< Count of company owned track bits for each rail type. + std::array road{}; ///< Count of company owned track bits for each road type. uint32_t signal; ///< Count of company owned signals. - uint32_t rail[RAILTYPE_END]; ///< Count of company owned track bits for each rail type. uint32_t water; ///< Count of company owned track bits for canals. uint32_t station; ///< Count of company owned station tiles. uint32_t airport; ///< Count of company owned airports. + auto operator<=>(const CompanyInfrastructure &) const = default; + /** Get total sum of all owned track bits. */ uint32_t GetRailTotal() const { - uint32_t total = 0; - for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) total += this->rail[rt]; - return total; + return std::accumulate(std::begin(this->rail), std::end(this->rail), 0U); } uint32_t GetRoadTotal() const; uint32_t GetTramTotal() const; }; +class FreeUnitIDGenerator { +public: + UnitID NextID() const; + UnitID UseID(UnitID index); + void ReleaseID(UnitID index); + +private: + using BitmapStorage = size_t; + static constexpr size_t BITMAP_SIZE = std::numeric_limits::digits; + + std::vector used_bitmap; +}; + typedef Pool CompanyPool; extern CompanyPool _company_pool; @@ -62,23 +75,26 @@ struct CompanyProperties { uint32_t president_name_2; ///< Parameter of #president_name_1 std::string president_name; ///< Name of the president if the user changed it. + NetworkAuthorizedKeys allow_list; ///< Public keys of clients that are allowed to join this company. + CompanyManagerFace face; ///< Face description of the president. Money money; ///< Money owned by the company. - byte money_fraction; ///< Fraction of money of the company, too small to represent in #money. + uint8_t money_fraction; ///< Fraction of money of the company, too small to represent in #money. Money current_loan; ///< Amount of money borrowed from the bank. Money max_loan; ///< Max allowed amount of the loan or COMPANY_MAX_LOAN_DEFAULT. Colours colour; ///< Company colour. - byte block_preview; ///< Number of quarters that the company is not allowed to get new exclusive engine previews (see CompaniesGenStatistics). + uint8_t block_preview; ///< Number of quarters that the company is not allowed to get new exclusive engine previews (see CompaniesGenStatistics). TileIndex location_of_HQ; ///< Northern tile of HQ; #INVALID_TILE when there is none. TileIndex last_build_coordinate; ///< Coordinate of the last build thing by this company. TimerGameEconomy::Year inaugurated_year; ///< Economy year of starting the company. - byte months_of_bankruptcy; ///< Number of months that the company is unable to pay its debts + uint8_t months_empty = 0; ///< NOSAVE: Number of months this company has not had a client in multiplayer. + uint8_t months_of_bankruptcy; ///< Number of months that the company is unable to pay its debts CompanyMask bankrupt_asked; ///< which companies were asked about buying it? int16_t bankrupt_timeout; ///< If bigger than \c 0, amount of time to wait for an answer on an offer to buy this company. Money bankrupt_value; @@ -97,7 +113,7 @@ struct CompanyProperties { std::array yearly_expenses{}; ///< Expenses of the company for the last three years. CompanyEconomyEntry cur_economy; ///< Economic data of the company of this quarter. CompanyEconomyEntry old_economy[MAX_HISTORY_QUARTERS]; ///< Economic data of the company of the last #MAX_HISTORY_QUARTERS quarters. - byte num_valid_stat_ent; ///< Number of valid statistical entries in #old_economy. + uint8_t num_valid_stat_ent; ///< Number of valid statistical entries in #old_economy. Livery livery[LS_END]; @@ -120,7 +136,7 @@ struct Company : CompanyProperties, CompanyPool::PoolItem<&_company_pool> { RailTypes avail_railtypes; ///< Rail types available to this company. RoadTypes avail_roadtypes; ///< Road types available to this company. - class AIInstance *ai_instance; + std::unique_ptr ai_instance; class AIInfo *ai_info; std::unique_ptr ai_config; @@ -129,6 +145,9 @@ struct Company : CompanyProperties, CompanyPool::PoolItem<&_company_pool> { CompanyInfrastructure infrastructure; ///< NOSAVE: Counts of company owned infrastructure. + FreeUnitIDGenerator freeunits[VEH_COMPANY_END]; + FreeUnitIDGenerator freegroups; + Money GetMaxLoan() const; /** diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index e73ebedec4..74ad2893f4 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -20,6 +20,7 @@ #include "network/network_base.h" #include "network/network_admin.h" #include "ai/ai.hpp" +#include "ai/ai_instance.hpp" #include "ai/ai_config.hpp" #include "company_manager_face.h" #include "window_func.h" @@ -34,12 +35,13 @@ #include "game/game.hpp" #include "goal_base.h" #include "story_base.h" -#include "widgets/statusbar_widget.h" #include "company_cmd.h" #include "timer/timer.h" #include "timer/timer_game_economy.h" #include "timer/timer_game_tick.h" +#include "widgets/statusbar_widget.h" + #include "table/strings.h" #include "safeguards.h" @@ -146,8 +148,8 @@ void SetLocalCompany(CompanyID new_company) */ TextColour GetDrawStringCompanyColour(CompanyID company) { - if (!Company::IsValidID(company)) return (TextColour)_colour_gradient[COLOUR_WHITE][4] | TC_IS_PALETTE_COLOUR; - return (TextColour)_colour_gradient[_company_colours[company]][4] | TC_IS_PALETTE_COLOUR; + if (!Company::IsValidID(company)) return (TextColour)GetColourGradient(COLOUR_WHITE, SHADE_NORMAL) | TC_IS_PALETTE_COLOUR; + return (TextColour)GetColourGradient(_company_colours[company], SHADE_NORMAL) | TC_IS_PALETTE_COLOUR; } /** @@ -298,10 +300,10 @@ void SubtractMoneyFromCompany(const CommandCost &cost) void SubtractMoneyFromCompanyFract(CompanyID company, const CommandCost &cst) { Company *c = Company::Get(company); - byte m = c->money_fraction; + uint8_t m = c->money_fraction; Money cost = cst.GetCost(); - c->money_fraction = m - (byte)cost; + c->money_fraction = m - (uint8_t)cost; cost >>= 8; if (c->money_fraction > m) cost++; if (cost != 0) SubtractMoneyFromAnyCompany(c, CommandCost(cst.GetExpensesType(), cost)); @@ -447,7 +449,7 @@ bad_town_name:; } /** Sorting weights for the company colours. */ -static const byte _colour_sort[COLOUR_END] = {2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 1, 1, 1}; +static const uint8_t _colour_sort[COLOUR_END] = {2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 1, 1, 1}; /** Similar colours, so we can try to prevent same coloured companies. */ static const Colours _similar_colour[COLOUR_END][2] = { { COLOUR_BLUE, COLOUR_LIGHT_BLUE }, // COLOUR_DARK_BLUE @@ -477,7 +479,7 @@ static Colours GenerateCompanyColour() Colours colours[COLOUR_END]; /* Initialize array */ - for (uint i = 0; i < COLOUR_END; i++) colours[i] = (Colours)i; + for (uint i = 0; i < COLOUR_END; i++) colours[i] = static_cast(i); /* And randomize it */ for (uint i = 0; i < 100; i++) { @@ -635,7 +637,7 @@ Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY) } /** Start a new competitor company if possible. */ -TimeoutTimer _new_competitor_timeout(0, []() { +TimeoutTimer _new_competitor_timeout({ TimerGameTick::Priority::COMPETITOR_TIMEOUT, 0 }, []() { if (_game_mode == GM_MENU || !AI::CanStartNew()) return; if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return; @@ -666,12 +668,12 @@ void InitializeCompanies() } /** - * May company \a cbig buy company \a csmall? + * Can company \a cbig buy company \a csmall without exceeding vehicle limits? * @param cbig Company buying \a csmall. * @param csmall Company getting bought. * @return Return \c true if it is allowed. */ -bool MayCompanyTakeOver(CompanyID cbig, CompanyID csmall) +bool CheckTakeoverVehicleLimit(CompanyID cbig, CompanyID csmall) { const Company *c1 = Company::Get(cbig); const Company *c2 = Company::Get(csmall); @@ -723,7 +725,7 @@ static void HandleBankruptcyTakeover(Company *c) if (c2->bankrupt_asked == 0 && // Don't ask companies going bankrupt themselves !HasBit(c->bankrupt_asked, c2->index) && best_performance < c2->old_economy[1].performance_history && - MayCompanyTakeOver(c2->index, c->index)) { + CheckTakeoverVehicleLimit(c2->index, c->index)) { best_performance = c2->old_economy[1].performance_history; best = c2; } @@ -776,7 +778,7 @@ void OnTick_Companies() /* Randomize a bit when the AI is actually going to start; ranges from 87.5% .. 112.5% of indicated value. */ timeout += ScriptObject::GetRandomizer(OWNER_NONE).Next(timeout / 4) - timeout / 8; - _new_competitor_timeout.Reset(std::max(1, timeout)); + _new_competitor_timeout.Reset({ TimerGameTick::Priority::COMPETITOR_TIMEOUT, static_cast(std::max(1, timeout)) }); } _cur_company_tick_index = (_cur_company_tick_index + 1) % MAX_COMPANIES; @@ -888,8 +890,6 @@ CommandCost CmdCompanyCtrl(DoCommandFlag flags, CompanyCtrlAction cca, CompanyID break; } - /* Send new companies, before potentially setting the password. Otherwise, - * the password update could be sent when the company is not yet known. */ NetworkAdminCompanyNew(c); NetworkServerNewCompany(c, ci); @@ -897,12 +897,13 @@ CommandCost CmdCompanyCtrl(DoCommandFlag flags, CompanyCtrlAction cca, CompanyID if (client_id == _network_own_client_id) { assert(_local_company == COMPANY_SPECTATOR); SetLocalCompany(c->index); - if (!_settings_client.network.default_company_pass.empty()) { - NetworkChangeCompanyPassword(_local_company, _settings_client.network.default_company_pass); - } - /* In network games, we need to try setting the company manager face here to sync it to all clients. - * If a favorite company manager face is selected, choose it. Otherwise, use a random face. */ + /* + * If a favorite company manager face is selected, choose it. Otherwise, use a random face. + * Because this needs to be synchronised over the network, only the client knows + * its configuration and we are currently in the execution of a command, we have + * to circumvent the normal ::Post logic for commands and just send the command. + */ if (_company_manager_face != 0) Command::SendNet(STR_NULL, c->index, _company_manager_face); /* Now that we have a new company, broadcast our company settings to @@ -978,6 +979,54 @@ CommandCost CmdCompanyCtrl(DoCommandFlag flags, CompanyCtrlAction cca, CompanyID return CommandCost(); } +static bool ExecuteAllowListCtrlAction(CompanyAllowListCtrlAction action, Company *c, const std::string &public_key) +{ + switch (action) { + case CALCA_ADD: + return c->allow_list.Add(public_key); + + case CALCA_REMOVE: + return c->allow_list.Remove(public_key); + + default: + NOT_REACHED(); + } +} + +/** + * Add or remove the given public key to the allow list of this company. + * @param flags Operation to perform. + * @param action The action to perform. + * @param public_key The public key of the client to add or remove. + * @return The cost of this operation or an error. + */ +CommandCost CmdCompanyAllowListCtrl(DoCommandFlag flags, CompanyAllowListCtrlAction action, const std::string &public_key) +{ + Company *c = Company::GetIfValid(_current_company); + if (c == nullptr) return CMD_ERROR; + + /* The public key length includes the '\0'. */ + if (public_key.size() != NETWORK_PUBLIC_KEY_LENGTH - 1) return CMD_ERROR; + + switch (action) { + case CALCA_ADD: + case CALCA_REMOVE: + break; + + default: + return CMD_ERROR; + } + + if (flags & DC_EXEC) { + if (ExecuteAllowListCtrlAction(action, c, public_key)) { + InvalidateWindowData(WC_CLIENT_LIST, 0); + SetWindowDirty(WC_COMPANY, _current_company); + } + } + + return CommandCost(); +} + /** * Change the company manager's face. * @param flags operation to perform @@ -1181,6 +1230,7 @@ CommandCost CmdRenamePresident(DoCommandFlag flags, const std::string &text) } } + InvalidateWindowClassesData(WC_COMPANY, 1); MarkWholeScreenDirty(); CompanyAdminUpdate(c); } @@ -1255,7 +1305,7 @@ CommandCost CmdGiveMoney(DoCommandFlag flags, Money money, CompanyID dest_compan if (flags & DC_EXEC) { /* Add money to company */ - Backup cur_company(_current_company, dest_company, FILE_LINE); + Backup cur_company(_current_company, dest_company); SubtractMoneyFromCompany(CommandCost(EXPENSES_OTHER, -amount.GetCost())); cur_company.Restore(); diff --git a/src/company_cmd.h b/src/company_cmd.h index b2be9a45bc..513293a995 100644 --- a/src/company_cmd.h +++ b/src/company_cmd.h @@ -15,9 +15,10 @@ #include "livery.h" enum ClientID : uint32_t; -enum Colours : byte; +enum Colours : uint8_t; CommandCost CmdCompanyCtrl(DoCommandFlag flags, CompanyCtrlAction cca, CompanyID company_id, CompanyRemoveReason reason, ClientID client_id); +CommandCost CmdCompanyAllowListCtrl(DoCommandFlag flags, CompanyAllowListCtrlAction action, const std::string &public_key); CommandCost CmdGiveMoney(DoCommandFlag flags, Money money, CompanyID dest_company); CommandCost CmdRenameCompany(DoCommandFlag flags, const std::string &text); CommandCost CmdRenamePresident(DoCommandFlag flags, const std::string &text); @@ -25,10 +26,11 @@ CommandCost CmdSetCompanyManagerFace(DoCommandFlag flags, CompanyManagerFace cmf CommandCost CmdSetCompanyColour(DoCommandFlag flags, LiveryScheme scheme, bool primary, Colours colour); DEF_CMD_TRAIT(CMD_COMPANY_CTRL, CmdCompanyCtrl, CMD_SPECTATOR | CMD_CLIENT_ID | CMD_NO_EST, CMDT_SERVER_SETTING) +DEF_CMD_TRAIT(CMD_COMPANY_ALLOW_LIST_CTRL, CmdCompanyAllowListCtrl, CMD_NO_EST, CMDT_SERVER_SETTING) DEF_CMD_TRAIT(CMD_GIVE_MONEY, CmdGiveMoney, 0, CMDT_MONEY_MANAGEMENT) -DEF_CMD_TRAIT(CMD_RENAME_COMPANY, CmdRenameCompany, 0, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_RENAME_PRESIDENT, CmdRenamePresident, 0, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_COMPANY_MANAGER_FACE, CmdSetCompanyManagerFace, 0, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_COMPANY_COLOUR, CmdSetCompanyColour, 0, CMDT_OTHER_MANAGEMENT) +DEF_CMD_TRAIT(CMD_RENAME_COMPANY, CmdRenameCompany, 0, CMDT_COMPANY_SETTING) +DEF_CMD_TRAIT(CMD_RENAME_PRESIDENT, CmdRenamePresident, 0, CMDT_COMPANY_SETTING) +DEF_CMD_TRAIT(CMD_SET_COMPANY_MANAGER_FACE, CmdSetCompanyManagerFace, 0, CMDT_COMPANY_SETTING) +DEF_CMD_TRAIT(CMD_SET_COMPANY_COLOUR, CmdSetCompanyColour, 0, CMDT_COMPANY_SETTING) #endif /* COMPANY_CMD_H */ diff --git a/src/company_func.h b/src/company_func.h index 5d2d0df1dd..33885516c4 100644 --- a/src/company_func.h +++ b/src/company_func.h @@ -15,7 +15,7 @@ #include "gfx_type.h" #include "vehicle_type.h" -bool MayCompanyTakeOver(CompanyID cbig, CompanyID small); +bool CheckTakeoverVehicleLimit(CompanyID cbig, CompanyID small); void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner); static const int OWNED_BY_OWNER_IN_PARAMETERS_OFFSET = 2; ///< The index in the parameters for the owner information. void SetDParamsForOwnedBy(Owner owner, TileIndex tile); diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 6680c3a0b5..6013e0df04 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -23,7 +23,8 @@ #include "company_manager_face.h" #include "strings_func.h" #include "timer/timer_game_economy.h" -#include "widgets/dropdown_type.h" +#include "dropdown_type.h" +#include "dropdown_common_type.h" #include "tilehighlight_func.h" #include "company_base.h" #include "core/geometry_func.hpp" @@ -40,6 +41,7 @@ #include "company_cmd.h" #include "economy_cmd.h" #include "group_cmd.h" +#include "group_gui.h" #include "misc_cmd.h" #include "object_cmd.h" #include "timer/timer.h" @@ -286,7 +288,7 @@ static constexpr NWidgetPart _nested_company_finances_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_CF_CAPTION), SetDataTip(STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), - NWidget(WWT_IMGBTN, COLOUR_GREY, WID_CF_TOGGLE_SIZE), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW), + NWidget(WWT_IMGBTN, COLOUR_GREY, WID_CF_TOGGLE_SIZE), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW), SetAspect(WidgetDimensions::ASPECT_TOGGLE_SIZE), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), @@ -335,7 +337,7 @@ struct CompanyFinancesWindow : Window { static Money max_money; ///< The maximum amount of money a company has had this 'run' bool small; ///< Window is toggled to 'small'. - CompanyFinancesWindow(WindowDesc *desc, CompanyID company) : Window(desc) + CompanyFinancesWindow(WindowDesc &desc, CompanyID company) : Window(desc) { this->small = false; this->CreateNestedTree(); @@ -388,29 +390,29 @@ struct CompanyFinancesWindow : Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_CF_EXPS_CATEGORY: - size->width = GetMaxCategoriesWidth(); - size->height = GetTotalCategoriesHeight(); + size.width = GetMaxCategoriesWidth(); + size.height = GetTotalCategoriesHeight(); break; case WID_CF_EXPS_PRICE1: case WID_CF_EXPS_PRICE2: case WID_CF_EXPS_PRICE3: - size->height = GetTotalCategoriesHeight(); + size.height = GetTotalCategoriesHeight(); [[fallthrough]]; case WID_CF_BALANCE_VALUE: case WID_CF_LOAN_VALUE: case WID_CF_OWN_VALUE: SetDParamMaxValue(0, CompanyFinancesWindow::max_money); - size->width = std::max(GetStringBoundingBox(STR_FINANCES_NEGATIVE_INCOME).width, GetStringBoundingBox(STR_FINANCES_POSITIVE_INCOME).width) + padding.width; + size.width = std::max(GetStringBoundingBox(STR_FINANCES_NEGATIVE_INCOME).width, GetStringBoundingBox(STR_FINANCES_POSITIVE_INCOME).width) + padding.width; break; case WID_CF_INTEREST_RATE: - size->height = GetCharacterHeight(FS_NORMAL); + size.height = GetCharacterHeight(FS_NORMAL); break; } } @@ -530,11 +532,11 @@ struct CompanyFinancesWindow : Window { /** First conservative estimate of the maximum amount of money */ Money CompanyFinancesWindow::max_money = INT32_MAX; -static WindowDesc _company_finances_desc(__FILE__, __LINE__, +static WindowDesc _company_finances_desc( WDP_AUTO, "company_finances", 0, 0, WC_FINANCES, WC_NONE, 0, - std::begin(_nested_company_finances_widgets), std::end(_nested_company_finances_widgets) + _nested_company_finances_widgets ); /** @@ -547,29 +549,9 @@ void ShowCompanyFinances(CompanyID company) if (!Company::IsValidID(company)) return; if (BringWindowToFrontById(WC_FINANCES, company)) return; - new CompanyFinancesWindow(&_company_finances_desc, company); + new CompanyFinancesWindow(_company_finances_desc, company); } -/* List of colours for the livery window */ -static const StringID _colour_dropdown[] = { - STR_COLOUR_DARK_BLUE, - STR_COLOUR_PALE_GREEN, - STR_COLOUR_PINK, - STR_COLOUR_YELLOW, - STR_COLOUR_RED, - STR_COLOUR_LIGHT_BLUE, - STR_COLOUR_GREEN, - STR_COLOUR_DARK_GREEN, - STR_COLOUR_BLUE, - STR_COLOUR_CREAM, - STR_COLOUR_MAUVE, - STR_COLOUR_PURPLE, - STR_COLOUR_ORANGE, - STR_COLOUR_BROWN, - STR_COLOUR_GREY, - STR_COLOUR_WHITE, -}; - /* Association of liveries to livery classes */ static const LiveryClass _livery_class[LS_END] = { LC_OTHER, @@ -587,13 +569,11 @@ static const LiveryClass _livery_class[LS_END] = { template class DropDownListColourItem : public DropDownIcon> { public: - DropDownListColourItem(int colour, bool masked) : DropDownIcon>(TSprite, GENERAL_SPRITE_COLOUR(colour % COLOUR_END), colour < COLOUR_END ? _colour_dropdown[colour] : STR_COLOUR_DEFAULT, colour, masked) + DropDownListColourItem(int colour, bool masked) : DropDownIcon>(TSprite, GENERAL_SPRITE_COLOUR(colour % COLOUR_END), colour < COLOUR_END ? (STR_COLOUR_DARK_BLUE + colour) : STR_COLOUR_DEFAULT, colour, masked) { } }; -typedef GUIList GUIGroupList; - /** Company livery colour scheme window. */ struct SelectCompanyLiveryWindow : public Window { private: @@ -603,7 +583,6 @@ private: uint rows; uint line_height; GUIGroupList groups; - std::vector indents; Scrollbar *vscroll; void ShowColourDropDownMenu(uint32_t widget) @@ -611,7 +590,7 @@ private: uint32_t used_colours = 0; const Livery *livery, *default_livery = nullptr; bool primary = widget == WID_SCL_PRI_COL_DROPDOWN; - byte default_col = 0; + uint8_t default_col = 0; /* Disallow other company colours for the primary colour */ if (this->livery_class < LC_GROUP_RAIL && HasBit(this->sel, LS_DEFAULT) && primary) { @@ -648,11 +627,11 @@ private: default_col = (primary ? default_livery->colour1 : default_livery->colour2) + COLOUR_END; list.push_back(std::make_unique>(default_col, false)); } - for (uint i = 0; i < lengthof(_colour_dropdown); i++) { - list.push_back(std::make_unique>(i, HasBit(used_colours, i))); + for (Colours colour = COLOUR_BEGIN; colour != COLOUR_END; colour++) { + list.push_back(std::make_unique>(colour, HasBit(used_colours, colour))); } - byte sel; + uint8_t sel; if (default_livery == nullptr || HasBit(livery->in_use, primary ? 0 : 1)) { sel = primary ? livery->colour1 : livery->colour2; } else { @@ -661,60 +640,17 @@ private: ShowDropDownList(this, std::move(list), sel, widget); } - void AddChildren(GUIGroupList &source, GroupID parent, int indent) - { - for (const Group *g : source) { - if (g->parent != parent) continue; - this->groups.push_back(g); - this->indents.push_back(indent); - AddChildren(source, g->index, indent + 1); - } - } - void BuildGroupList(CompanyID owner) { if (!this->groups.NeedRebuild()) return; this->groups.clear(); - this->indents.clear(); if (this->livery_class >= LC_GROUP_RAIL) { - GUIGroupList list; VehicleType vtype = (VehicleType)(this->livery_class - LC_GROUP_RAIL); - - for (const Group *g : Group::Iterate()) { - if (g->owner == owner && g->vehicle_type == vtype) { - list.push_back(g); - } - } - - list.ForceResort(); - - /* Sort the groups by their name */ - const Group *last_group[2] = { nullptr, nullptr }; - std::string last_name[2] = { {}, {} }; - list.Sort([&](const Group * const &a, const Group * const &b) -> bool { - if (a != last_group[0]) { - last_group[0] = a; - SetDParam(0, a->index); - last_name[0] = GetString(STR_GROUP_NAME); - } - - if (b != last_group[1]) { - last_group[1] = b; - SetDParam(0, b->index); - last_name[1] = GetString(STR_GROUP_NAME); - } - - int r = StrNaturalCompare(last_name[0], last_name[1]); // Sort by name (natural sorting). - if (r == 0) return a->index < b->index; - return r < 0; - }); - - AddChildren(list, INVALID_GROUP, 0); + BuildGuiGroupList(this->groups, false, owner, vtype); } - this->groups.shrink_to_fit(); this->groups.RebuildDone(); } @@ -735,7 +671,7 @@ private: } public: - SelectCompanyLiveryWindow(WindowDesc *desc, CompanyID company, GroupID group) : Window(desc) + SelectCompanyLiveryWindow(WindowDesc &desc, CompanyID company, GroupID group) : Window(desc) { this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_SCL_MATRIX_SCROLLBAR); @@ -775,14 +711,14 @@ public: /* Position scrollbar to selected group */ for (uint i = 0; i < this->rows; i++) { - if (this->groups[i]->index == sel) { + if (this->groups[i].group->index == sel) { this->vscroll->SetPosition(i - this->vscroll->GetCapacity() / 2); break; } } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_SCL_SPACER_DROPDOWN: { @@ -800,7 +736,7 @@ public: } } - size->width = std::max(size->width, 5 + d.width + padding.width); + size.width = std::max(size.width, 5 + d.width + padding.width); break; } @@ -809,15 +745,15 @@ public: this->square = GetSpriteSize(SPR_SQUARE); this->line_height = std::max(this->square.height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height; - size->height = 5 * this->line_height; - resize->width = 1; - resize->height = this->line_height; + size.height = 5 * this->line_height; + resize.width = 1; + resize.height = this->line_height; break; } case WID_SCL_SEC_COL_DROPDOWN: if (!_loaded_newgrf_features.has_2CC) { - size->width = 0; + size.width = 0; break; } [[fallthrough]]; @@ -825,10 +761,10 @@ public: case WID_SCL_PRI_COL_DROPDOWN: { this->square = GetSpriteSize(SPR_SQUARE); int string_padding = this->square.width + WidgetDimensions::scaled.hsep_normal + padding.width; - for (const StringID *id = _colour_dropdown; id != endof(_colour_dropdown); id++) { - size->width = std::max(size->width, GetStringBoundingBox(*id).width + string_padding); + for (Colours colour = COLOUR_BEGIN; colour != COLOUR_END; colour++) { + size.width = std::max(size.width, GetStringBoundingBox(STR_COLOUR_DARK_BLUE + colour).width + string_padding); } - size->width = std::max(size->width, GetStringBoundingBox(STR_COLOUR_DEFAULT).width + string_padding); + size.width = std::max(size.width, GetStringBoundingBox(STR_COLOUR_DEFAULT).width + string_padding); break; } } @@ -945,11 +881,11 @@ public: } } } else { - uint max = static_cast(std::min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->groups.size())); - for (uint i = this->vscroll->GetPosition(); i < max; ++i) { - const Group *g = this->groups[i]; + auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->groups); + for (auto it = first; it != last; ++it) { + const Group *g = it->group; SetDParam(0, g->index); - draw_livery(STR_GROUP_NAME, g->livery, this->sel == g->index, false, this->indents[i] * WidgetDimensions::scaled.hsep_indent); + draw_livery(STR_GROUP_NAME, g->livery, this->sel == g->index, false, it->indent * WidgetDimensions::scaled.hsep_indent); } if (this->vscroll->GetCount() == 0) { @@ -992,7 +928,7 @@ public: this->BuildGroupList((CompanyID)this->window_number); if (!this->groups.empty()) { - this->sel = this->groups[0]->index; + this->sel = this->groups[0].group->index; } } @@ -1009,10 +945,10 @@ public: break; case WID_SCL_MATRIX: { - uint row = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SCL_MATRIX); - if (row >= this->rows) return; - if (this->livery_class < LC_GROUP_RAIL) { + uint row = this->vscroll->GetScrolledRowFromWidget(pt.y, this, widget); + if (row >= this->rows) return; + LiveryScheme j = (LiveryScheme)row; for (LiveryScheme scheme = LS_BEGIN; scheme <= j && scheme < LS_END; scheme++) { @@ -1026,7 +962,10 @@ public: this->sel = 1 << j; } } else { - this->sel = this->groups[row]->index; + auto it = this->vscroll->GetScrolledItemFromWidget(this->groups, pt.y, this, widget); + if (it == std::end(this->groups)) return; + + this->sel = it->group->index; } this->SetDirty(); break; @@ -1079,7 +1018,7 @@ public: if (!Group::IsValidID(this->sel)) { this->sel = INVALID_GROUP; - if (!this->groups.empty()) this->sel = this->groups[0]->index; + if (!this->groups.empty()) this->sel = this->groups[0].group->index; } this->SetDirty(); @@ -1140,18 +1079,18 @@ static constexpr NWidgetPart _nested_select_company_livery_widgets[] = { EndContainer(), }; -static WindowDesc _select_company_livery_desc(__FILE__, __LINE__, +static WindowDesc _select_company_livery_desc( WDP_AUTO, "company_color_scheme", 0, 0, WC_COMPANY_COLOUR, WC_NONE, 0, - std::begin(_nested_select_company_livery_widgets), std::end(_nested_select_company_livery_widgets) + _nested_select_company_livery_widgets ); void ShowCompanyLiveryWindow(CompanyID company, GroupID group) { SelectCompanyLiveryWindow *w = (SelectCompanyLiveryWindow *)BringWindowToFrontById(WC_COMPANY_COLOUR, company); if (w == nullptr) { - new SelectCompanyLiveryWindow(&_select_company_livery_desc, company, group); + new SelectCompanyLiveryWindow(_select_company_livery_desc, company, group); } else if (group != INVALID_GROUP) { w->SetSelectedGroup(company, group); } @@ -1210,7 +1149,7 @@ static constexpr NWidgetPart _nested_select_company_manager_face_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SCMF_CAPTION), SetDataTip(STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), - NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCMF_TOGGLE_LARGE_SMALL), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TOOLTIP), + NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCMF_TOGGLE_LARGE_SMALL), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TOOLTIP), SetAspect(WidgetDimensions::ASPECT_TOGGLE_SIZE), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SCMF_SELECT_FACE), NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPadding(2), @@ -1411,7 +1350,7 @@ class SelectCompanyManagerFaceWindow : public Window } public: - SelectCompanyManagerFaceWindow(WindowDesc *desc, Window *parent) : Window(desc) + SelectCompanyManagerFaceWindow(WindowDesc &desc, Window *parent) : Window(desc) { this->advanced = false; this->CreateNestedTree(); @@ -1466,31 +1405,31 @@ public: this->number_dim = number_dim; } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT: - *size = maxdim(*size, GetStringBoundingBox(STR_FACE_EARRING)); - *size = maxdim(*size, GetStringBoundingBox(STR_FACE_MOUSTACHE)); + size = maxdim(size, GetStringBoundingBox(STR_FACE_EARRING)); + size = maxdim(size, GetStringBoundingBox(STR_FACE_MOUSTACHE)); break; case WID_SCMF_TIE_EARRING_TEXT: - *size = maxdim(*size, GetStringBoundingBox(STR_FACE_EARRING)); - *size = maxdim(*size, GetStringBoundingBox(STR_FACE_TIE)); + size = maxdim(size, GetStringBoundingBox(STR_FACE_EARRING)); + size = maxdim(size, GetStringBoundingBox(STR_FACE_TIE)); break; case WID_SCMF_LIPS_MOUSTACHE_TEXT: - *size = maxdim(*size, GetStringBoundingBox(STR_FACE_LIPS)); - *size = maxdim(*size, GetStringBoundingBox(STR_FACE_MOUSTACHE)); + size = maxdim(size, GetStringBoundingBox(STR_FACE_LIPS)); + size = maxdim(size, GetStringBoundingBox(STR_FACE_MOUSTACHE)); break; case WID_SCMF_FACE: - *size = maxdim(*size, GetScaledSpriteSize(SPR_GRADIENT)); + size = maxdim(size, GetScaledSpriteSize(SPR_GRADIENT)); break; case WID_SCMF_HAS_MOUSTACHE_EARRING: case WID_SCMF_HAS_GLASSES: - *size = this->yesno_dim; + size = this->yesno_dim; break; case WID_SCMF_EYECOLOUR: @@ -1503,7 +1442,7 @@ public: case WID_SCMF_COLLAR: case WID_SCMF_TIE_EARRING: case WID_SCMF_GLASSES: - *size = this->number_dim; + size = this->number_dim; break; } } @@ -1748,12 +1687,12 @@ public: } } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (str == nullptr) return; + if (!str.has_value()) return; /* Set a new company manager face number */ - if (!StrEmpty(str)) { - this->face = std::strtoul(str, nullptr, 10); + if (!str->empty()) { + this->face = std::strtoul(str->c_str(), nullptr, 10); ScaleAllCompanyManagerFaceBits(this->face); ShowErrorMessage(STR_FACE_FACECODE_SET, INVALID_STRING_ID, WL_INFO); this->UpdateData(); @@ -1765,11 +1704,11 @@ public: }; /** Company manager face selection window description */ -static WindowDesc _select_company_manager_face_desc(__FILE__, __LINE__, +static WindowDesc _select_company_manager_face_desc( WDP_AUTO, nullptr, 0, 0, WC_COMPANY_MANAGER_FACE, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_select_company_manager_face_widgets), std::end(_nested_select_company_manager_face_widgets) + _nested_select_company_manager_face_widgets ); /** @@ -1782,7 +1721,7 @@ static void DoSelectCompanyManagerFace(Window *parent) if (!Company::IsValidID((CompanyID)parent->window_number)) return; if (BringWindowToFrontById(WC_COMPANY_MANAGER_FACE, parent->window_number)) return; - new SelectCompanyManagerFaceWindow(&_select_company_manager_face_desc, parent); + new SelectCompanyManagerFaceWindow(_select_company_manager_face_desc, parent); } static constexpr NWidgetPart _nested_company_infrastructure_widgets[] = { @@ -1916,7 +1855,7 @@ struct CompanyInfrastructureWindow : Window } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { const Company *c = Company::Get((CompanyID)this->window_number); @@ -1924,20 +1863,20 @@ struct CompanyInfrastructureWindow : Window case WID_CI_RAIL_DESC: { uint lines = 1; // Starts at 1 because a line is also required for the section title - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT).width + padding.width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT).width + padding.width); for (const auto &rt : _sorted_railtypes) { if (HasBit(this->railtypes, rt)) { lines++; - size->width = std::max(size->width, GetStringBoundingBox(GetRailTypeInfo(rt)->strings.name).width + padding.width + WidgetDimensions::scaled.hsep_indent); + size.width = std::max(size.width, GetStringBoundingBox(GetRailTypeInfo(rt)->strings.name).width + padding.width + WidgetDimensions::scaled.hsep_indent); } } if (this->railtypes != RAILTYPES_NONE) { lines++; - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS).width + padding.width + WidgetDimensions::scaled.hsep_indent); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS).width + padding.width + WidgetDimensions::scaled.hsep_indent); } - size->height = std::max(size->height, lines * GetCharacterHeight(FS_NORMAL)); + size.height = std::max(size.height, lines * GetCharacterHeight(FS_NORMAL)); break; } @@ -1945,28 +1884,28 @@ struct CompanyInfrastructureWindow : Window case WID_CI_TRAM_DESC: { uint lines = 1; // Starts at 1 because a line is also required for the section title - size->width = std::max(size->width, GetStringBoundingBox(widget == WID_CI_ROAD_DESC ? STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT : STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT).width + padding.width); + size.width = std::max(size.width, GetStringBoundingBox(widget == WID_CI_ROAD_DESC ? STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT : STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT).width + padding.width); for (const auto &rt : _sorted_roadtypes) { if (HasBit(this->roadtypes, rt) && RoadTypeIsRoad(rt) == (widget == WID_CI_ROAD_DESC)) { lines++; - size->width = std::max(size->width, GetStringBoundingBox(GetRoadTypeInfo(rt)->strings.name).width + padding.width + WidgetDimensions::scaled.hsep_indent); + size.width = std::max(size.width, GetStringBoundingBox(GetRoadTypeInfo(rt)->strings.name).width + padding.width + WidgetDimensions::scaled.hsep_indent); } } - size->height = std::max(size->height, lines * GetCharacterHeight(FS_NORMAL)); + size.height = std::max(size.height, lines * GetCharacterHeight(FS_NORMAL)); break; } case WID_CI_WATER_DESC: - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT).width + padding.width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS).width + padding.width + WidgetDimensions::scaled.hsep_indent); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT).width + padding.width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS).width + padding.width + WidgetDimensions::scaled.hsep_indent); break; case WID_CI_STATION_DESC: - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT).width + padding.width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS).width + padding.width + WidgetDimensions::scaled.hsep_indent); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS).width + padding.width + WidgetDimensions::scaled.hsep_indent); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT).width + padding.width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS).width + padding.width + WidgetDimensions::scaled.hsep_indent); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS).width + padding.width + WidgetDimensions::scaled.hsep_indent); break; case WID_CI_RAIL_COUNT: @@ -2006,17 +1945,17 @@ struct CompanyInfrastructureWindow : Window StringID str_total = TimerGameEconomy::UsingWallclockUnits() ? STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD : STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR; SetDParamMaxValue(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year this->total_width = GetStringBoundingBox(str_total).width + WidgetDimensions::scaled.hsep_indent * 2; - size->width = std::max(size->width, this->total_width); + size.width = std::max(size.width, this->total_width); SetDParamMaxValue(0, max_cost * 12); // Convert to per year count_width += std::max(this->total_width, GetStringBoundingBox(str_total).width); } - size->width = std::max(size->width, count_width); + size.width = std::max(size.width, count_width); /* Set height of the total line. */ if (widget == WID_CI_TOTAL) { - size->height = _settings_game.economy.infrastructure_maintenance ? std::max(size->height, WidgetDimensions::scaled.vsep_normal + GetCharacterHeight(FS_NORMAL)) : 0; + size.height = _settings_game.economy.infrastructure_maintenance ? std::max(size.height, WidgetDimensions::scaled.vsep_normal + GetCharacterHeight(FS_NORMAL)) : 0; } break; } @@ -2180,11 +2119,11 @@ struct CompanyInfrastructureWindow : Window } }; -static WindowDesc _company_infrastructure_desc(__FILE__, __LINE__, +static WindowDesc _company_infrastructure_desc( WDP_AUTO, "company_infrastructure", 0, 0, WC_COMPANY_INFRASTRUCTURE, WC_NONE, 0, - std::begin(_nested_company_infrastructure_widgets), std::end(_nested_company_infrastructure_widgets) + _nested_company_infrastructure_widgets ); /** @@ -2194,7 +2133,7 @@ static WindowDesc _company_infrastructure_desc(__FILE__, __LINE__, static void ShowCompanyInfrastructure(CompanyID company) { if (!Company::IsValidID(company)) return; - AllocateWindowDescFront(&_company_infrastructure_desc, company); + AllocateWindowDescFront(_company_infrastructure_desc, company); } static constexpr NWidgetPart _nested_company_widgets[] = { @@ -2247,9 +2186,6 @@ static constexpr NWidgetPart _nested_company_widgets[] = { /* Multi player buttons. */ NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPIPRatio(1, 0, 0), - NWidget(NWID_VERTICAL), SetPIPRatio(1, 0, 0), - NWidget(WWT_EMPTY, COLOUR_GREY, WID_C_HAS_PASSWORD), SetFill(0, 0), - EndContainer(), NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_HOSTILE_TAKEOVER), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_HOSTILE_TAKEOVER), SetDataTip(STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON, STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP), @@ -2258,7 +2194,6 @@ static constexpr NWidgetPart _nested_company_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_GIVE_MONEY), SetDataTip(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON, STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_MULTIPLAYER), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_PASSWORD), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_JOIN), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP), EndContainer(), EndContainer(), @@ -2291,10 +2226,6 @@ struct CompanyWindow : Window /** Display planes in the company window. */ enum CompanyWindowPlanes { - /* Display planes of the #WID_C_SELECT_MULTIPLAYER selection widget. */ - CWP_MP_C_PWD = 0, ///< Display the company password button. - CWP_MP_C_JOIN, ///< Display the join company button. - /* Display planes of the #WID_C_SELECT_VIEW_BUILD_HQ selection widget. */ CWP_VB_VIEW = 0, ///< Display the view button CWP_VB_BUILD, ///< Display the build button @@ -2304,7 +2235,7 @@ struct CompanyWindow : Window CWP_RELOCATE_HIDE, ///< Hide the relocate HQ button. }; - CompanyWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + CompanyWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->InitNested(window_number); this->owner = (Owner)this->window_number; @@ -2335,7 +2266,7 @@ struct CompanyWindow : Window reinit |= this->GetWidget(WID_C_SELECT_HOSTILE_TAKEOVER)->SetDisplayedPlane((local || _local_company == COMPANY_SPECTATOR || !c->is_ai || _networking) ? SZSP_NONE : 0); /* Multiplayer buttons. */ - reinit |= this->GetWidget(WID_C_SELECT_MULTIPLAYER)->SetDisplayedPlane((!_networking) ? (int)SZSP_NONE : (int)(local ? CWP_MP_C_PWD : CWP_MP_C_JOIN)); + reinit |= this->GetWidget(WID_C_SELECT_MULTIPLAYER)->SetDisplayedPlane((!_networking || !NetworkCanJoinCompany(c->index) || _local_company == c->index) ? (int)SZSP_NONE : 0); this->SetWidgetDisabledState(WID_C_COMPANY_JOIN, c->is_ai); @@ -2348,11 +2279,11 @@ struct CompanyWindow : Window this->DrawWidgets(); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_C_FACE: - *size = maxdim(*size, GetScaledSpriteSize(SPR_GRADIENT)); + size = maxdim(size, GetScaledSpriteSize(SPR_GRADIENT)); break; case WID_C_DESC_COLOUR_SCHEME_EXAMPLE: { @@ -2360,31 +2291,31 @@ struct CompanyWindow : Window Dimension d = GetSpriteSize(SPR_VEH_BUS_SW_VIEW, &offset); d.width -= offset.x; d.height -= offset.y; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } case WID_C_DESC_COMPANY_VALUE: SetDParam(0, INT64_MAX); // Arguably the maximum company value - size->width = GetStringBoundingBox(STR_COMPANY_VIEW_COMPANY_VALUE).width; + size.width = GetStringBoundingBox(STR_COMPANY_VIEW_COMPANY_VALUE).width; break; case WID_C_DESC_VEHICLE_COUNTS: SetDParamMaxValue(0, 5000); // Maximum number of vehicles - for (uint i = 0; i < lengthof(_company_view_vehicle_count_strings); i++) { - size->width = std::max(size->width, GetStringBoundingBox(_company_view_vehicle_count_strings[i]).width + padding.width); + for (const auto &count_string : _company_view_vehicle_count_strings) { + size.width = std::max(size.width, GetStringBoundingBox(count_string).width + padding.width); } break; case WID_C_DESC_INFRASTRUCTURE_COUNTS: SetDParamMaxValue(0, UINT_MAX); - size->width = GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL).width; - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_WATER).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_STATION).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_NONE).width); - size->width += padding.width; + size.width = GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL).width; + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD).width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_WATER).width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_STATION).width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT).width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_NONE).width); + size.width += padding.width; break; case WID_C_VIEW_HQ: @@ -2393,21 +2324,15 @@ struct CompanyWindow : Window case WID_C_VIEW_INFRASTRUCTURE: case WID_C_GIVE_MONEY: case WID_C_HOSTILE_TAKEOVER: - case WID_C_COMPANY_PASSWORD: case WID_C_COMPANY_JOIN: - size->width = GetStringBoundingBox(STR_COMPANY_VIEW_VIEW_HQ_BUTTON).width; - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_BUILD_HQ_BUTTON).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_RELOCATE_HQ).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_PASSWORD).width); - size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_JOIN).width); - size->width += padding.width; - break; - - case WID_C_HAS_PASSWORD: - if (_networking) *size = maxdim(*size, GetSpriteSize(SPR_LOCK)); + size.width = GetStringBoundingBox(STR_COMPANY_VIEW_VIEW_HQ_BUTTON).width; + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_BUILD_HQ_BUTTON).width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_RELOCATE_HQ).width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON).width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON).width); + size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_JOIN).width); + size.width += padding.width; break; } } @@ -2436,16 +2361,15 @@ struct CompanyWindow : Window { int y = r.top; - uint rail_pieces = c->infrastructure.signal; - for (uint i = 0; i < lengthof(c->infrastructure.rail); i++) rail_pieces += c->infrastructure.rail[i]; + uint rail_pieces = c->infrastructure.signal + c->infrastructure.GetRailTotal(); if (rail_pieces != 0) { SetDParam(0, rail_pieces); DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL); y += GetCharacterHeight(FS_NORMAL); } - uint road_pieces = 0; - for (uint i = 0; i < lengthof(c->infrastructure.road); i++) road_pieces += c->infrastructure.road[i]; + /* GetRoadTotal() skips tram pieces, but we actually want road and tram here. */ + uint road_pieces = std::accumulate(std::begin(c->infrastructure.road), std::end(c->infrastructure.road), 0U); if (road_pieces != 0) { SetDParam(0, road_pieces); DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD); @@ -2504,12 +2428,6 @@ struct CompanyWindow : Window case WID_C_DESC_INFRASTRUCTURE_COUNTS: DrawInfrastructureCountsWidget(r, c); break; - - case WID_C_HAS_PASSWORD: - if (_networking && NetworkCompanyIsPassworded(c->index)) { - DrawSprite(SPR_LOCK, PAL_NONE, r.left, r.top); - } - break; } } @@ -2531,6 +2449,14 @@ struct CompanyWindow : Window } } + void OnResize() override + { + NWidgetResizeBase *wid = this->GetWidget(WID_C_FACE_TITLE); + SetDParam(0, this->owner); + int y = GetStringHeight(STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE, wid->current_x); + if (wid->UpdateVerticalSize(y)) this->ReInit(0, 0); + } + void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override { switch (widget) { @@ -2563,7 +2489,7 @@ struct CompanyWindow : Window } case WID_C_BUILD_HQ: - if ((byte)this->window_number != _local_company) return; + if ((uint8_t)this->window_number != _local_company) return; if (this->IsWidgetLowered(WID_C_BUILD_HQ)) { ResetObjectToPlace(); this->RaiseButtons(); @@ -2600,19 +2526,12 @@ struct CompanyWindow : Window ShowBuyCompanyDialog((CompanyID)this->window_number, true); break; - case WID_C_COMPANY_PASSWORD: - if (this->window_number == _local_company) ShowNetworkCompanyPasswordWindow(this); - break; - case WID_C_COMPANY_JOIN: { this->query_widget = WID_C_COMPANY_JOIN; CompanyID company = (CompanyID)this->window_number; if (_network_server) { NetworkServerDoMove(CLIENT_ID_SERVER, company); MarkWholeScreenDirty(); - } else if (NetworkCompanyIsPassworded(company)) { - /* ask for the password */ - ShowQueryString(STR_EMPTY, STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION, NETWORK_PASSWORD_LENGTH, this, CS_ALPHANUMERAL, QSF_PASSWORD); } else { /* just send the join command */ NetworkClientRequestMove(company); @@ -2640,39 +2559,43 @@ struct CompanyWindow : Window this->RaiseButtons(); } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (str == nullptr) return; + if (!str.has_value()) return; switch (this->query_widget) { default: NOT_REACHED(); case WID_C_GIVE_MONEY: { - Money money = std::strtoull(str, nullptr, 10) / _currency->rate; + Money money = std::strtoull(str->c_str(), nullptr, 10) / GetCurrency().rate; Command::Post(STR_ERROR_CAN_T_GIVE_MONEY, money, (CompanyID)this->window_number); break; } case WID_C_PRESIDENT_NAME: - Command::Post(STR_ERROR_CAN_T_CHANGE_PRESIDENT, str); + Command::Post(STR_ERROR_CAN_T_CHANGE_PRESIDENT, *str); break; case WID_C_COMPANY_NAME: - Command::Post(STR_ERROR_CAN_T_CHANGE_COMPANY_NAME, str); + Command::Post(STR_ERROR_CAN_T_CHANGE_COMPANY_NAME, *str); break; + } + } - case WID_C_COMPANY_JOIN: - NetworkClientRequestMove((CompanyID)this->window_number, str); - break; + void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override + { + if (gui_scope && data == 1) { + /* Manually call OnResize to adjust minimum height of president name widget. */ + OnResize(); } } }; -static WindowDesc _company_desc(__FILE__, __LINE__, +static WindowDesc _company_desc( WDP_AUTO, "company", 0, 0, WC_COMPANY, WC_NONE, 0, - std::begin(_nested_company_widgets), std::end(_nested_company_widgets) + _nested_company_widgets ); /** @@ -2683,7 +2606,7 @@ void ShowCompany(CompanyID company) { if (!Company::IsValidID(company)) return; - AllocateWindowDescFront(&_company_desc, company); + AllocateWindowDescFront(_company_desc, company); } /** @@ -2697,7 +2620,7 @@ void DirtyCompanyInfrastructureWindows(CompanyID company) } struct BuyCompanyWindow : Window { - BuyCompanyWindow(WindowDesc *desc, WindowNumber window_number, bool hostile_takeover) : Window(desc), hostile_takeover(hostile_takeover) + BuyCompanyWindow(WindowDesc &desc, WindowNumber window_number, bool hostile_takeover) : Window(desc), hostile_takeover(hostile_takeover) { this->InitNested(window_number); @@ -2705,18 +2628,18 @@ struct BuyCompanyWindow : Window { this->company_value = hostile_takeover ? CalculateHostileTakeoverValue(c) : c->bankrupt_value; } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_BC_FACE: - *size = GetScaledSpriteSize(SPR_GRADIENT); + size = GetScaledSpriteSize(SPR_GRADIENT); break; case WID_BC_QUESTION: const Company *c = Company::Get((CompanyID)this->window_number); SetDParam(0, c->index); SetDParam(1, this->company_value); - size->height = GetStringHeight(this->hostile_takeover ? STR_BUY_COMPANY_HOSTILE_TAKEOVER : STR_BUY_COMPANY_MESSAGE, size->width); + size.height = GetStringHeight(this->hostile_takeover ? STR_BUY_COMPANY_HOSTILE_TAKEOVER : STR_BUY_COMPANY_MESSAGE, size.width); break; } } @@ -2802,11 +2725,11 @@ static constexpr NWidgetPart _nested_buy_company_widgets[] = { EndContainer(), }; -static WindowDesc _buy_company_desc(__FILE__, __LINE__, +static WindowDesc _buy_company_desc( WDP_AUTO, nullptr, 0, 0, WC_BUY_COMPANY, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_buy_company_widgets), std::end(_nested_buy_company_widgets) + _nested_buy_company_widgets ); /** @@ -2818,6 +2741,6 @@ void ShowBuyCompanyDialog(CompanyID company, bool hostile_takeover) { auto window = BringWindowToFrontById(WC_BUY_COMPANY, company); if (window == nullptr) { - new BuyCompanyWindow(&_buy_company_desc, company, hostile_takeover); + new BuyCompanyWindow(_buy_company_desc, company, hostile_takeover); } } diff --git a/src/company_manager_face.h b/src/company_manager_face.h index 113a4c728b..dbb11de5fd 100644 --- a/src/company_manager_face.h +++ b/src/company_manager_face.h @@ -54,9 +54,9 @@ DECLARE_POSTFIX_INCREMENT(CompanyManagerFaceVariable) /** Information about the valid values of CompanyManagerFace bitgroups as well as the sprites to draw */ struct CompanyManagerFaceBitsInfo { - byte offset; ///< Offset in bits into the CompanyManagerFace - byte length; ///< Number of bits used in the CompanyManagerFace - byte valid_values[GE_END]; ///< The number of valid values per gender/ethnicity + uint8_t offset; ///< Offset in bits into the CompanyManagerFace + uint8_t length; ///< Number of bits used in the CompanyManagerFace + uint8_t valid_values[GE_END]; ///< The number of valid values per gender/ethnicity SpriteID first_sprite[GE_END]; ///< The first sprite per gender/ethnicity }; diff --git a/src/company_type.h b/src/company_type.h index ff22a4d0dc..355bde8630 100644 --- a/src/company_type.h +++ b/src/company_type.h @@ -15,7 +15,7 @@ /** * Enum for all companies/owners. */ -enum Owner : byte { +enum Owner : uint8_t { /* All companies below MAX_COMPANIES are playable * companies, above, they are special, computer controlled 'companies' */ OWNER_BEGIN = 0x00, ///< First owner @@ -72,4 +72,12 @@ enum CompanyCtrlAction : uint8_t { CCA_END, ///< Sentinel for end. }; +/** The action to do with CMD_COMPANY_ALLOW_LIST_CTRL. */ +enum CompanyAllowListCtrlAction : uint8_t { + CALCA_ADD, ///< Create a public key. + CALCA_REMOVE, ///< Remove a public key. + + CALCA_END, ///< Sentinel for end. +}; + #endif /* COMPANY_TYPE_H */ diff --git a/src/console.cpp b/src/console.cpp index 9781283095..373cc274b9 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -206,7 +206,7 @@ static std::string RemoveUnderscores(std::string name) * @param tokencount the number of parameters passed * @param *tokens are the parameters given to the original command (0 is the first param) */ -static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char *tokens[ICON_TOKEN_COUNT], const uint recurse_count) +static void IConsoleAliasExec(const IConsoleAlias *alias, uint8_t tokencount, char *tokens[ICON_TOKEN_COUNT], const uint recurse_count) { std::string alias_buffer; diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 98a521861e..4656ecc52f 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -89,7 +89,7 @@ static ConsoleFileList _console_file_list_scenario{FT_SCENARIO, false}; ///< Fil static ConsoleFileList _console_file_list_heightmap{FT_HEIGHTMAP, false}; ///< File storage cache for heightmaps. /* console command defines */ -#define DEF_CONSOLE_CMD(function) static bool function([[maybe_unused]] byte argc, [[maybe_unused]] char *argv[]) +#define DEF_CONSOLE_CMD(function) static bool function([[maybe_unused]] uint8_t argc, [[maybe_unused]] char *argv[]) #define DEF_CONSOLE_HOOK(function) static ConsoleHookResult function(bool echo) @@ -155,6 +155,21 @@ DEF_CONSOLE_HOOK(ConHookNeedNetwork) return CHR_ALLOW; } +/** + * Check whether we are in a multiplayer game and are playing, i.e. we are not the dedicated server. + * @return Are we a client or non-dedicated server in a network game? True when yes, false otherwise. + */ +DEF_CONSOLE_HOOK(ConHookNeedNonDedicatedNetwork) +{ + if (!NetworkAvailable(echo)) return CHR_DISALLOW; + + if (_network_dedicated) { + if (echo) IConsolePrint(CC_ERROR, "This command is not available to a dedicated network server."); + return CHR_DISALLOW; + } + return CHR_ALLOW; +} + /** * Check whether we are in singleplayer mode. * @return True when no network is active. @@ -508,7 +523,7 @@ DEF_CONSOLE_CMD(ConRemove) _console_file_list_savegame.ValidateFileList(); const FiosItem *item = _console_file_list_savegame.FindItem(file); if (item != nullptr) { - if (unlink(item->name.c_str()) != 0) { + if (!FioRemove(item->name)) { IConsolePrint(CC_ERROR, "Failed to delete '{}'.", item->name); } } else { @@ -821,6 +836,7 @@ DEF_CONSOLE_CMD(ConRcon) if (argc == 0) { IConsolePrint(CC_HELP, "Remote control the server from another client. Usage: 'rcon '."); IConsolePrint(CC_HELP, "Remember to enclose the command in quotes, otherwise only the first parameter is sent."); + IConsolePrint(CC_HELP, "When your client's public key is in the 'authorized keys' for 'rcon', the password is not checked and may be '*'."); return true; } @@ -898,20 +914,26 @@ DEF_CONSOLE_CMD(ConClientNickChange) DEF_CONSOLE_CMD(ConJoinCompany) { if (argc < 2) { - IConsolePrint(CC_HELP, "Request joining another company. Usage: 'join []'."); + IConsolePrint(CC_HELP, "Request joining another company. Usage: 'join '."); IConsolePrint(CC_HELP, "For valid company-id see company list, use 255 for spectator."); return true; } CompanyID company_id = (CompanyID)(atoi(argv[1]) <= MAX_COMPANIES ? atoi(argv[1]) - 1 : atoi(argv[1])); + const NetworkClientInfo *info = NetworkClientInfo::GetByClientID(_network_own_client_id); + if (info == nullptr) { + IConsolePrint(CC_ERROR, "You have not joined the game yet!"); + return true; + } + /* Check we have a valid company id! */ if (!Company::IsValidID(company_id) && company_id != COMPANY_SPECTATOR) { IConsolePrint(CC_ERROR, "Company does not exist. Company-id must be between 1 and {}.", MAX_COMPANIES); return true; } - if (NetworkClientInfo::GetByClientID(_network_own_client_id)->client_playas == company_id) { + if (info->client_playas == company_id) { IConsolePrint(CC_ERROR, "You are already there!"); return true; } @@ -921,9 +943,8 @@ DEF_CONSOLE_CMD(ConJoinCompany) return true; } - /* Check if the company requires a password */ - if (NetworkCompanyIsPassworded(company_id) && argc < 3) { - IConsolePrint(CC_ERROR, "Company {} requires a password to join.", company_id + 1); + if (!info->CanJoinCompany(company_id)) { + IConsolePrint(CC_ERROR, "You are not allowed to join this company."); return true; } @@ -931,7 +952,7 @@ DEF_CONSOLE_CMD(ConJoinCompany) if (_network_server) { NetworkServerDoMove(CLIENT_ID_SERVER, company_id); } else { - NetworkClientRequestMove(company_id, NetworkCompanyIsPassworded(company_id) ? argv[2] : ""); + NetworkClientRequestMove(company_id); } return true; @@ -1807,13 +1828,6 @@ DEF_CONSOLE_CMD(ConCompanies) SetDParam(0, c->index); std::string company_name = GetString(STR_COMPANY_NAME); - const char *password_state = ""; - if (c->is_ai) { - password_state = "AI"; - } else if (_network_server) { - password_state = _network_company_states[c->index].password.empty() ? "unprotected" : "protected"; - } - std::string colour = GetString(STR_COLOUR_DARK_BLUE + _company_colours[c->index]); IConsolePrint(CC_INFO, "#:{}({}) Company Name: '{}' Year Founded: {} Money: {} Loan: {} Value: {} (T:{}, R:{}, P:{}, S:{}) {}", c->index + 1, colour, company_name, @@ -1822,7 +1836,7 @@ DEF_CONSOLE_CMD(ConCompanies) c->group_all[VEH_ROAD].num_vehicle, c->group_all[VEH_AIRCRAFT].num_vehicle, c->group_all[VEH_SHIP].num_vehicle, - password_state); + c->is_ai ? "AI" : ""); } return true; @@ -1893,53 +1907,140 @@ DEF_CONSOLE_CMD(ConSayClient) return true; } -DEF_CONSOLE_CMD(ConCompanyPassword) -{ - if (argc == 0) { - if (_network_dedicated) { - IConsolePrint(CC_HELP, "Change the password of a company. Usage: 'company_pw \"\"."); - } else if (_network_server) { - IConsolePrint(CC_HELP, "Change the password of your or any other company. Usage: 'company_pw [] \"\"'."); - } else { - IConsolePrint(CC_HELP, "Change the password of your company. Usage: 'company_pw \"\"'."); - } +/** All the known authorized keys with their name. */ +static std::vector> _console_cmd_authorized_keys{ + { "rcon", &_settings_client.network.rcon_authorized_keys }, + { "server", &_settings_client.network.server_authorized_keys }, +}; - IConsolePrint(CC_HELP, "Use \"*\" to disable the password."); +enum ConNetworkAuthorizedKeyAction { + CNAKA_LIST, + CNAKA_ADD, + CNAKA_REMOVE, +}; + +static void PerformNetworkAuthorizedKeyAction(std::string_view name, NetworkAuthorizedKeys *authorized_keys, ConNetworkAuthorizedKeyAction action, const std::string &authorized_key, CompanyID company = INVALID_COMPANY) +{ + switch (action) { + case CNAKA_LIST: + IConsolePrint(CC_WHITE, "The authorized keys for {} are:", name); + for (auto &ak : *authorized_keys) IConsolePrint(CC_INFO, " {}", ak); + return; + + case CNAKA_ADD: + if (authorized_keys->Contains(authorized_key)) { + IConsolePrint(CC_WARNING, "Not added {} to {} as it already exists.", authorized_key, name); + return; + } + + if (company == INVALID_COMPANY) { + authorized_keys->Add(authorized_key); + } else { + AutoRestoreBackup backup(_current_company, company); + Command::Post(CALCA_ADD, authorized_key); + } + IConsolePrint(CC_INFO, "Added {} to {}.", authorized_key, name); + return; + + case CNAKA_REMOVE: + if (!authorized_keys->Contains(authorized_key)) { + IConsolePrint(CC_WARNING, "Not removed {} from {} as it does not exist.", authorized_key, name); + return; + } + + if (company == INVALID_COMPANY) { + authorized_keys->Remove(authorized_key); + } else { + AutoRestoreBackup backup(_current_company, company); + Command::Post(CALCA_REMOVE, authorized_key); + } + IConsolePrint(CC_INFO, "Removed {} from {}.", authorized_key, name); + return; + } +} + +DEF_CONSOLE_CMD(ConNetworkAuthorizedKey) +{ + if (argc <= 2) { + IConsolePrint(CC_HELP, "List and update authorized keys. Usage: 'authorized_key list [type]|add [type] [key]|remove [type] [key]'."); + IConsolePrint(CC_HELP, " list: list all the authorized keys of the given type."); + IConsolePrint(CC_HELP, " add: add the given key to the authorized keys of the given type."); + IConsolePrint(CC_HELP, " remove: remove the given key from the authorized keys of the given type; use 'all' to remove all authorized keys."); + IConsolePrint(CC_HELP, "Instead of a key, use 'client:' to add/remove the key of that given client."); + + std::string buffer; + for (auto [name, _] : _console_cmd_authorized_keys) fmt::format_to(std::back_inserter(buffer), ", {}", name); + IConsolePrint(CC_HELP, "The supported types are: all{} and company:.", buffer); return true; } - CompanyID company_id; - std::string password; - const char *errormsg; - - if (argc == 2) { - company_id = _local_company; - password = argv[1]; - errormsg = "You have to own a company to make use of this command."; - } else if (argc == 3 && _network_server) { - company_id = (CompanyID)(atoi(argv[1]) - 1); - password = argv[2]; - errormsg = "You have to specify the ID of a valid human controlled company."; + ConNetworkAuthorizedKeyAction action; + std::string_view action_string = argv[1]; + if (StrEqualsIgnoreCase(action_string, "list")) { + action = CNAKA_LIST; + } else if (StrEqualsIgnoreCase(action_string, "add")) { + action = CNAKA_ADD; + } else if (StrEqualsIgnoreCase(action_string, "remove") || StrEqualsIgnoreCase(action_string, "delete")) { + action = CNAKA_REMOVE; } else { + IConsolePrint(CC_WARNING, "No valid action was given."); return false; } - if (!Company::IsValidHumanID(company_id)) { - IConsolePrint(CC_ERROR, errormsg); - return false; + std::string authorized_key; + if (action != CNAKA_LIST) { + if (argc <= 3) { + IConsolePrint(CC_ERROR, "You must enter the key."); + return false; + } + + authorized_key = argv[3]; + if (StrStartsWithIgnoreCase(authorized_key, "client:")) { + std::string id_string(authorized_key.substr(7)); + authorized_key = NetworkGetPublicKeyOfClient(static_cast(std::stoi(id_string))); + if (authorized_key.empty()) { + IConsolePrint(CC_ERROR, "You must enter a valid client id; see 'clients'."); + return false; + } + } + + if (authorized_key.size() != NETWORK_PUBLIC_KEY_LENGTH - 1) { + IConsolePrint(CC_ERROR, "You must enter a valid authorized key."); + return false; + } } - password = NetworkChangeCompanyPassword(company_id, password); - - if (password.empty()) { - IConsolePrint(CC_INFO, "Company password cleared."); - } else { - IConsolePrint(CC_INFO, "Company password changed to '{}'.", password); + std::string_view type = argv[2]; + if (StrEqualsIgnoreCase(type, "all")) { + for (auto [name, authorized_keys] : _console_cmd_authorized_keys) PerformNetworkAuthorizedKeyAction(name, authorized_keys, action, authorized_key); + for (Company *c : Company::Iterate()) PerformNetworkAuthorizedKeyAction(fmt::format("company:{}", c->index + 1), &c->allow_list, action, authorized_key, c->index); + return true; } - return true; + if (StrStartsWithIgnoreCase(type, "company:")) { + std::string id_string(type.substr(8)); + Company *c = Company::GetIfValid(std::stoi(id_string) - 1); + if (c == nullptr) { + IConsolePrint(CC_ERROR, "You must enter a valid company id; see 'companies'."); + return false; + } + + PerformNetworkAuthorizedKeyAction(type, &c->allow_list, action, authorized_key, c->index); + return true; + } + + for (auto [name, authorized_keys] : _console_cmd_authorized_keys) { + if (StrEqualsIgnoreCase(type, name)) continue; + + PerformNetworkAuthorizedKeyAction(name, authorized_keys, action, authorized_key); + return true; + } + + IConsolePrint(CC_WARNING, "No valid type was given."); + return false; } + /* Content downloading only is available with ZLIB */ #if defined(WITH_ZLIB) #include "network/network_content.h" @@ -1947,9 +2048,16 @@ DEF_CONSOLE_CMD(ConCompanyPassword) /** Resolve a string to a content type. */ static ContentType StringToContentType(const char *str) { - static const char * const inv_lookup[] = { "", "base", "newgrf", "ai", "ailib", "scenario", "heightmap" }; - for (uint i = 1 /* there is no type 0 */; i < lengthof(inv_lookup); i++) { - if (StrEqualsIgnoreCase(str, inv_lookup[i])) return (ContentType)i; + static const std::initializer_list> content_types = { + {"base", CONTENT_TYPE_BASE_GRAPHICS}, + {"newgrf", CONTENT_TYPE_NEWGRF}, + {"ai", CONTENT_TYPE_AI}, + {"ailib", CONTENT_TYPE_AI_LIBRARY}, + {"scenario", CONTENT_TYPE_SCENARIO}, + {"heightmap", CONTENT_TYPE_HEIGHTMAP}, + }; + for (const auto &ct : content_types) { + if (StrEqualsIgnoreCase(str, ct.first)) return ct.second; } return CONTENT_TYPE_END; } @@ -2077,10 +2185,14 @@ DEF_CONSOLE_CMD(ConFont) IConsolePrint(CC_HELP, "Manage the fonts configuration."); IConsolePrint(CC_HELP, "Usage 'font'."); IConsolePrint(CC_HELP, " Print out the fonts configuration."); - IConsolePrint(CC_HELP, "Usage 'font [medium|small|large|mono] [] [] [aa|noaa]'."); + IConsolePrint(CC_HELP, " The \"Currently active\" configuration is the one actually in effect (after interface scaling and replacing unavailable fonts)."); + IConsolePrint(CC_HELP, " The \"Requested\" configuration is the one requested via console command or config file."); + IConsolePrint(CC_HELP, "Usage 'font [medium|small|large|mono] [] []'."); IConsolePrint(CC_HELP, " Change the configuration for a font."); IConsolePrint(CC_HELP, " Omitting an argument will keep the current value."); - IConsolePrint(CC_HELP, " Set to \"\" for the sprite font (size and aa have no effect on sprite font)."); + IConsolePrint(CC_HELP, " Set to \"\" for the default font. Note that has no effect if the default font is in use, and fixed defaults are used instead."); + IConsolePrint(CC_HELP, " If the sprite font is enabled in Game Options, it is used instead of the default font."); + IConsolePrint(CC_HELP, " The is automatically multiplied by the current interface scaling."); return true; } @@ -2096,38 +2208,23 @@ DEF_CONSOLE_CMD(ConFont) FontCacheSubSetting *setting = GetFontCacheSubSetting(argfs); std::string font = setting->font; uint size = setting->size; - bool aa = setting->aa; + uint v; + uint8_t arg_index = 2; + /* For we want a string. */ - byte arg_index = 2; - /* We may encounter "aa" or "noaa" but it must be the last argument. */ - if (StrEqualsIgnoreCase(argv[arg_index], "aa") || StrEqualsIgnoreCase(argv[arg_index], "noaa")) { - aa = !StrStartsWithIgnoreCase(argv[arg_index++], "no"); - if (argc > arg_index) return false; - } else { - /* For we want a string. */ - uint v; - if (!GetArgumentInteger(&v, argv[arg_index])) { - font = argv[arg_index++]; - } + if (!GetArgumentInteger(&v, argv[arg_index])) { + font = argv[arg_index++]; } if (argc > arg_index) { /* For we want a number. */ - uint v; if (GetArgumentInteger(&v, argv[arg_index])) { size = v; arg_index++; } } - if (argc > arg_index) { - /* Last argument must be "aa" or "noaa". */ - if (!StrEqualsIgnoreCase(argv[arg_index], "aa") && !StrEqualsIgnoreCase(argv[arg_index], "noaa")) return false; - aa = !StrStartsWithIgnoreCase(argv[arg_index++], "no"); - if (argc > arg_index) return false; - } - - SetFont(argfs, font, size, aa); + SetFont(argfs, font, size); } for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { @@ -2138,7 +2235,9 @@ DEF_CONSOLE_CMD(ConFont) InitFontCache(fs == FS_MONO); fc = FontCache::Get(fs); } - IConsolePrint(CC_DEFAULT, "{}: \"{}\" {} {} [\"{}\" {} {}]", FontSizeToName(fs), fc->GetFontName(), fc->GetFontSize(), GetFontAAState(fs) ? "aa" : "noaa", setting->font, setting->size, setting->aa ? "aa" : "noaa"); + IConsolePrint(CC_DEFAULT, "{} font:", FontSizeToName(fs)); + IConsolePrint(CC_DEFAULT, "Currently active: \"{}\", size {}", fc->GetFontName(), fc->GetFontSize()); + IConsolePrint(CC_DEFAULT, "Requested: \"{}\", size {}", setting->font, setting->size); } return true; @@ -2444,6 +2543,22 @@ DEF_CONSOLE_CMD(ConFramerateWindow) return true; } +/** + * Format a label as a string. + * If all elements are visible ASCII (excluding space) then the label will be formatted as a string of 4 characters, + * otherwise it will be output as an 8-digit hexadecimal value. + * @param label Label to format. + * @return string representation of label. + **/ +static std::string FormatLabel(uint32_t label) +{ + if (std::isgraph(GB(label, 24, 8)) && std::isgraph(GB(label, 16, 8)) && std::isgraph(GB(label, 8, 8)) && std::isgraph(GB(label, 0, 8))) { + return fmt::format("{:c}{:c}{:c}{:c}", GB(label, 24, 8), GB(label, 16, 8), GB(label, 8, 8), GB(label, 0, 8)); + } + + return fmt::format("{:08X}", BSWAP32(label)); +} + static void ConDumpRoadTypes() { IConsolePrint(CC_DEFAULT, " Flags:"); @@ -2463,10 +2578,10 @@ static void ConDumpRoadTypes() grfid = grf->grfid; grfs.emplace(grfid, grf); } - IConsolePrint(CC_DEFAULT, " {:02d} {} {:c}{:c}{:c}{:c}, Flags: {}{}{}{}{}, GRF: {:08X}, {}", + IConsolePrint(CC_DEFAULT, " {:02d} {} {}, Flags: {}{}{}{}{}, GRF: {:08X}, {}", (uint)rt, RoadTypeIsTram(rt) ? "Tram" : "Road", - rti->label >> 24, rti->label >> 16, rti->label >> 8, rti->label, + FormatLabel(rti->label), HasBit(rti->flags, ROTF_CATENARY) ? 'c' : '-', HasBit(rti->flags, ROTF_NO_LEVEL_CROSSING) ? 'l' : '-', HasBit(rti->flags, ROTF_NO_HOUSES) ? 'X' : '-', @@ -2501,9 +2616,9 @@ static void ConDumpRailTypes() grfid = grf->grfid; grfs.emplace(grfid, grf); } - IConsolePrint(CC_DEFAULT, " {:02d} {:c}{:c}{:c}{:c}, Flags: {}{}{}{}{}{}, GRF: {:08X}, {}", + IConsolePrint(CC_DEFAULT, " {:02d} {}, Flags: {}{}{}{}{}{}, GRF: {:08X}, {}", (uint)rt, - rti->label >> 24, rti->label >> 16, rti->label >> 8, rti->label, + FormatLabel(rti->label), HasBit(rti->flags, RTF_CATENARY) ? 'c' : '-', HasBit(rti->flags, RTF_NO_LEVEL_CROSSING) ? 'l' : '-', HasBit(rti->flags, RTF_HIDDEN) ? 'h' : '-', @@ -2543,10 +2658,10 @@ static void ConDumpCargoTypes() grfid = grf->grfid; grfs.emplace(grfid, grf); } - IConsolePrint(CC_DEFAULT, " {:02d} Bit: {:2d}, Label: {:c}{:c}{:c}{:c}, Callback mask: 0x{:02X}, Cargo class: {}{}{}{}{}{}{}{}{}{}{}, GRF: {:08X}, {}", + IConsolePrint(CC_DEFAULT, " {:02d} Bit: {:2d}, Label: {}, Callback mask: 0x{:02X}, Cargo class: {}{}{}{}{}{}{}{}{}{}{}, GRF: {:08X}, {}", spec->Index(), spec->bitnum, - spec->label.base() >> 24, spec->label.base() >> 16, spec->label.base() >> 8, spec->label.base(), + FormatLabel(spec->label.base()), spec->callback_mask, (spec->classes & CC_PASSENGERS) != 0 ? 'p' : '-', (spec->classes & CC_MAIL) != 0 ? 'm' : '-', @@ -2693,7 +2808,7 @@ void IConsoleStdLibRegister() IConsole::CmdRegister("reconnect", ConNetworkReconnect, ConHookClientOnly); IConsole::CmdRegister("rcon", ConRcon, ConHookNeedNetwork); - IConsole::CmdRegister("join", ConJoinCompany, ConHookNeedNetwork); + IConsole::CmdRegister("join", ConJoinCompany, ConHookNeedNonDedicatedNetwork); IConsole::AliasRegister("spectate", "join 255"); IConsole::CmdRegister("move", ConMoveClient, ConHookServerOnly); IConsole::CmdRegister("reset_company", ConResetCompany, ConHookServerOnly); @@ -2707,8 +2822,8 @@ void IConsoleStdLibRegister() IConsole::CmdRegister("pause", ConPauseGame, ConHookServerOrNoNetwork); IConsole::CmdRegister("unpause", ConUnpauseGame, ConHookServerOrNoNetwork); - IConsole::CmdRegister("company_pw", ConCompanyPassword, ConHookNeedNetwork); - IConsole::AliasRegister("company_password", "company_pw %+"); + IConsole::CmdRegister("authorized_key", ConNetworkAuthorizedKey, ConHookServerOnly); + IConsole::AliasRegister("ak", "authorized_key %+"); IConsole::AliasRegister("net_frame_freq", "setting frame_freq %+"); IConsole::AliasRegister("net_sync_freq", "setting sync_freq %+"); @@ -2725,7 +2840,6 @@ void IConsoleStdLibRegister() IConsole::AliasRegister("pause_on_join", "setting pause_on_join %+"); IConsole::AliasRegister("autoclean_companies", "setting autoclean_companies %+"); IConsole::AliasRegister("autoclean_protected", "setting autoclean_protected %+"); - IConsole::AliasRegister("autoclean_unprotected", "setting autoclean_unprotected %+"); IConsole::AliasRegister("restart_game_year", "setting restart_game_year %+"); IConsole::AliasRegister("min_players", "setting min_active_clients %+"); IConsole::AliasRegister("reload_cfg", "setting reload_cfg %+"); diff --git a/src/console_gui.cpp b/src/console_gui.cpp index 0e3ac41a16..138e52477a 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -10,12 +10,14 @@ #include "stdafx.h" #include "textbuf_type.h" #include "window_gui.h" +#include "autocompletion.h" #include "console_gui.h" #include "console_internal.h" #include "window_func.h" #include "string_func.h" #include "strings_func.h" #include "gfx_func.h" +#include "gfx_layout.h" #include "settings_type.h" #include "console_func.h" #include "rev.h" @@ -68,9 +70,44 @@ static std::deque _iconsole_buffer; static bool TruncateBuffer(); +class ConsoleAutoCompletion final : public AutoCompletion { +public: + using AutoCompletion::AutoCompletion; + +private: + std::vector GetSuggestions(std::string_view prefix, std::string_view query) override + { + prefix = StrTrimView(prefix); + std::vector suggestions; + + /* We only suggest commands or aliases, so we only do it for the first token or an argument to help command. */ + if (!prefix.empty() && prefix != "help") { + return suggestions; + } + + for (const auto &[_, command] : IConsole::Commands()) { + if (command.name.starts_with(query)) { + suggestions.push_back(command.name); + } + } + for (const auto &[_, alias] : IConsole::Aliases()) { + if (alias.name.starts_with(query)) { + suggestions.push_back(alias.name); + } + } + + return suggestions; + } + + void ApplySuggestion(std::string_view prefix, std::string_view suggestion) override + { + this->textbuf->Assign(fmt::format("{}{} ", prefix, suggestion)); + } +}; /* ** main console cmd buffer ** */ static Textbuf _iconsole_cmdline(ICON_CMDLN_SIZE); +static ConsoleAutoCompletion _iconsole_tab_completion(&_iconsole_cmdline); static std::deque _iconsole_history; static ptrdiff_t _iconsole_historypos; IConsoleModes _iconsole_mode; @@ -86,6 +123,7 @@ static void IConsoleClearCommand() _iconsole_cmdline.pixels = 0; _iconsole_cmdline.caretpos = 0; _iconsole_cmdline.caretxoffs = 0; + _iconsole_tab_completion.Reset(); SetWindowDirty(WC_CONSOLE, 0); } @@ -102,11 +140,11 @@ static constexpr NWidgetPart _nested_console_window_widgets[] = { NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_BACKGROUND), SetResize(1, 1), }; -static WindowDesc _console_window_desc(__FILE__, __LINE__, +static WindowDesc _console_window_desc( WDP_MANUAL, nullptr, 0, 0, WC_CONSOLE, WC_NONE, 0, - std::begin(_nested_console_window_widgets), std::end(_nested_console_window_widgets) + _nested_console_window_widgets ); struct IConsoleWindow : Window @@ -114,8 +152,9 @@ struct IConsoleWindow : Window static size_t scroll; int line_height; ///< Height of one line of text in the console. int line_offset; + int cursor_width; - IConsoleWindow() : Window(&_console_window_desc) + IConsoleWindow() : Window(_console_window_desc) { _iconsole_mode = ICONSOLE_OPENED; @@ -127,6 +166,7 @@ struct IConsoleWindow : Window { this->line_height = GetCharacterHeight(FS_NORMAL) + WidgetDimensions::scaled.hsep_normal; this->line_offset = GetStringBoundingBox("] ").width + WidgetDimensions::scaled.frametext.left; + this->cursor_width = GetCharacterWidth(FS_NORMAL, '_'); } void Close([[maybe_unused]] int data = 0) override @@ -143,11 +183,11 @@ struct IConsoleWindow : Window void Scroll(int amount) { if (amount < 0) { - size_t namount = (size_t) -amount; + size_t namount = static_cast(-amount); IConsoleWindow::scroll = (namount > IConsoleWindow::scroll) ? 0 : IConsoleWindow::scroll - namount; } else { assert(this->height >= 0 && this->line_height > 0); - size_t visible_lines = (size_t)(this->height / this->line_height); + size_t visible_lines = static_cast(this->height / this->line_height); size_t max_scroll = (visible_lines > _iconsole_buffer.size()) ? 0 : _iconsole_buffer.size() + 1 - visible_lines; IConsoleWindow::scroll = std::min(IConsoleWindow::scroll + amount, max_scroll); } @@ -159,7 +199,7 @@ struct IConsoleWindow : Window const int right = this->width - WidgetDimensions::scaled.frametext.right; GfxFillRect(0, 0, this->width - 1, this->height - 1, PC_BLACK); - int ypos = this->height - this->line_height; + int ypos = this->height - this->line_height - WidgetDimensions::scaled.hsep_normal; for (size_t line_index = IConsoleWindow::scroll; line_index < _iconsole_buffer.size(); line_index++) { const IConsoleLine &print = _iconsole_buffer[line_index]; SetDParamStr(0, print.buffer); @@ -167,7 +207,7 @@ struct IConsoleWindow : Window if (ypos < 0) break; } /* If the text is longer than the window, don't show the starting ']' */ - int delta = this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH; + int delta = this->width - WidgetDimensions::scaled.frametext.right - cursor_width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH; if (delta > 0) { DrawString(WidgetDimensions::scaled.frametext.left, right, this->height - this->line_height, "]", (TextColour)CC_COMMAND, SA_LEFT | SA_FORCE); delta = 0; @@ -186,7 +226,7 @@ struct IConsoleWindow : Window /** Check on a regular interval if the console buffer needs truncating. */ IntervalTimer truncate_interval = {std::chrono::seconds(3), [this](auto) { assert(this->height >= 0 && this->line_height > 0); - size_t visible_lines = (size_t)(this->height / this->line_height); + size_t visible_lines = static_cast(this->height / this->line_height); if (TruncateBuffer() && IConsoleWindow::scroll + visible_lines > _iconsole_buffer.size()) { size_t max_scroll = (visible_lines > _iconsole_buffer.size()) ? 0 : _iconsole_buffer.size() + 1 - visible_lines; @@ -258,8 +298,18 @@ struct IConsoleWindow : Window IConsoleCmdExec("clear"); break; - default: - if (_iconsole_cmdline.HandleKeyPress(key, keycode) != HKPR_NOT_HANDLED) { + case WKC_TAB: + if (_iconsole_tab_completion.AutoComplete()) { + this->SetDirty(); + } + break; + + default: { + HandleKeyPressResult handle_result = _iconsole_cmdline.HandleKeyPress(key, keycode); + if (handle_result != HKPR_NOT_HANDLED) { + if (handle_result == HKPR_EDITING) { + _iconsole_tab_completion.Reset(); + } IConsoleWindow::scroll = 0; IConsoleResetHistoryPos(); this->SetDirty(); @@ -267,6 +317,7 @@ struct IConsoleWindow : Window return ES_NOT_HANDLED; } break; + } } return ES_HANDLED; } @@ -274,13 +325,14 @@ struct IConsoleWindow : Window void InsertTextString(WidgetID, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) override { if (_iconsole_cmdline.InsertString(str, marked, caret, insert_location, replacement_end)) { + _iconsole_tab_completion.Reset(); IConsoleWindow::scroll = 0; IConsoleResetHistoryPos(); this->SetDirty(); } } - Textbuf *GetFocusedTextbuf() const override + const Textbuf *GetFocusedTextbuf() const override { return &_iconsole_cmdline; } @@ -297,10 +349,10 @@ struct IConsoleWindow : Window { int delta = std::min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0); - Point p1 = GetCharPosInString(_iconsole_cmdline.buf, from, FS_NORMAL); - Point p2 = from != to ? GetCharPosInString(_iconsole_cmdline.buf, to, FS_NORMAL) : p1; + const auto p1 = GetCharPosInString(_iconsole_cmdline.buf, from, FS_NORMAL); + const auto p2 = from != to ? GetCharPosInString(_iconsole_cmdline.buf, to, FS_NORMAL) : p1; - Rect r = {this->line_offset + delta + p1.x, this->height - this->line_height, this->line_offset + delta + p2.x, this->height}; + Rect r = {this->line_offset + delta + p1.left, this->height - this->line_height, this->line_offset + delta + p2.right, this->height}; return r; } @@ -434,6 +486,7 @@ static void IConsoleHistoryNavigate(int direction) } else { _iconsole_cmdline.Assign(_iconsole_history[_iconsole_historypos]); } + _iconsole_tab_completion.Reset(); } /** @@ -493,8 +546,8 @@ bool IsValidConsoleColour(TextColour c) /* A text colour from the palette is used; must be the company * colour gradient, so it must be one of those. */ c &= ~TC_IS_PALETTE_COLOUR; - for (uint i = COLOUR_BEGIN; i < COLOUR_END; i++) { - if (_colour_gradient[i][4] == c) return true; + for (Colours i = COLOUR_BEGIN; i < COLOUR_END; i++) { + if (GetColourGradient(i, SHADE_NORMAL) == c) return true; } return false; diff --git a/src/console_internal.h b/src/console_internal.h index 4d23a67e1a..4f6dcb4714 100644 --- a/src/console_internal.h +++ b/src/console_internal.h @@ -30,7 +30,7 @@ enum ConsoleHookResult { * If you want to handle multiple words as one, enclose them in double-quotes * eg. 'say "hello everybody"' */ -typedef bool IConsoleCmdProc(byte argc, char *argv[]); +typedef bool IConsoleCmdProc(uint8_t argc, char *argv[]); typedef ConsoleHookResult IConsoleHook(bool echo); struct IConsoleCmd { IConsoleCmd(const std::string &name, IConsoleCmdProc *proc, IConsoleHook *hook) : name(name), proc(proc), hook(hook) {} diff --git a/src/core/alloc_type.hpp b/src/core/alloc_type.hpp index 173c859f58..98e6249f7e 100644 --- a/src/core/alloc_type.hpp +++ b/src/core/alloc_type.hpp @@ -93,14 +93,14 @@ public: * @param size the amount of bytes to allocate. * @return the given amounts of bytes zeroed. */ - inline void *operator new(size_t size) { return CallocT(size); } + inline void *operator new(size_t size) { return CallocT(size); } /** * Memory allocator for an array of class instances. * @param size the amount of bytes to allocate. * @return the given amounts of bytes zeroed. */ - inline void *operator new[](size_t size) { return CallocT(size); } + inline void *operator new[](size_t size) { return CallocT(size); } /** * Memory release for a single class instance. diff --git a/src/core/backup_type.hpp b/src/core/backup_type.hpp index 62e6d31329..b6b5de558d 100644 --- a/src/core/backup_type.hpp +++ b/src/core/backup_type.hpp @@ -22,20 +22,18 @@ struct Backup { /** * Backup variable. * @param original Variable to backup. - * @param file Filename for debug output. Use FILE_LINE macro. - * @param line Linenumber for debug output. Use FILE_LINE macro. + * @param location Source location for debug output. */ - Backup(T &original, const char * const file, const int line) : original(original), valid(true), original_value(original), file(file), line(line) {} + Backup(T &original, const std::source_location location = std::source_location::current()) : original(original), valid(true), original_value(original), location(location) {} /** * Backup variable and switch to new value. * @param original Variable to backup. * @param new_value New value for variable. - * @param file Filename for debug output. Use FILE_LINE macro. - * @param line Linenumber for debug output. Use FILE_LINE macro. + * @param location Source location for debug output. */ template - Backup(T &original, const U &new_value, const char * const file, const int line) : original(original), valid(true), original_value(original), file(file), line(line) + Backup(T &original, const U &new_value, const std::source_location location = std::source_location::current()) : original(original), valid(true), original_value(original), location(location) { /* Note: We use a separate typename U, so type conversions are handled by assignment operator. */ original = new_value; @@ -51,7 +49,7 @@ struct Backup { { /* We cannot assert here, as missing restoration is 'normal' when exceptions are thrown. * Exceptions are especially used to abort world generation. */ - Debug(misc, 0, "{}:{}: Backed-up value was not restored!", this->file, this->line); + Debug(misc, 0, "{}:{}: Backed-up value was not restored!", this->location.file_name(), this->location.line()); this->Restore(); } } @@ -140,8 +138,7 @@ private: bool valid; T original_value; - const char * const file; - const int line; + const std::source_location location; }; /** diff --git a/src/core/geometry_func.hpp b/src/core/geometry_func.hpp index 175a8a2ba7..58ebd316ab 100644 --- a/src/core/geometry_func.hpp +++ b/src/core/geometry_func.hpp @@ -12,7 +12,7 @@ #include "geometry_type.hpp" -Dimension maxdim(const Dimension &d1, const Dimension &d2); +[[nodiscard]] Dimension maxdim(const Dimension &d1, const Dimension &d2); /** * Check if a rectangle is empty. diff --git a/src/core/math_func.hpp b/src/core/math_func.hpp index f5cc83d82c..67b347f2b4 100644 --- a/src/core/math_func.hpp +++ b/src/core/math_func.hpp @@ -22,7 +22,7 @@ template constexpr T abs(const T a) { - return (a < (T)0) ? -a : a; + return (a < static_cast(0)) ? -a : a; } /** @@ -38,7 +38,7 @@ constexpr T Align(const T x, uint n) { assert((n & (n - 1)) == 0 && n != 0); n--; - return (T)((x + n) & ~((T)n)); + return static_cast((x + n) & ~static_cast(n)); } /** @@ -54,8 +54,8 @@ constexpr T Align(const T x, uint n) template constexpr T *AlignPtr(T *x, uint n) { - static_assert(sizeof(size_t) == sizeof(void *)); - return reinterpret_cast(Align((size_t)x, n)); + static_assert(sizeof(uintptr_t) == sizeof(void *)); + return reinterpret_cast(Align(reinterpret_cast(x), n)); } /** @@ -251,7 +251,7 @@ constexpr T Delta(const T a, const T b) template constexpr bool IsInsideBS(const T x, const size_t base, const size_t size) { - return (size_t)(x - base) < size; + return static_cast(x - base) < size; } /** @@ -268,9 +268,9 @@ template ) { - return (size_t)(x.base() - min) < (max - min); + return static_cast(x.base() - min) < (max - min); } else { - return (size_t)(x - min) < (max - min); + return static_cast(x - min) < (max - min); } } diff --git a/src/core/mem_func.hpp b/src/core/mem_func.hpp index 26bd7c6b7c..202d1ebe15 100644 --- a/src/core/mem_func.hpp +++ b/src/core/mem_func.hpp @@ -46,7 +46,7 @@ inline void MemMoveT(T *destination, const T *source, size_t num = 1) * @param num number of items to be set (!not number of bytes!) */ template -inline void MemSetT(T *ptr, byte value, size_t num = 1) +inline void MemSetT(T *ptr, uint8_t value, size_t num = 1) { memset(ptr, value, num * sizeof(T)); } diff --git a/src/core/overflowsafe_type.hpp b/src/core/overflowsafe_type.hpp index 455510f831..95fee34fa0 100644 --- a/src/core/overflowsafe_type.hpp +++ b/src/core/overflowsafe_type.hpp @@ -140,7 +140,7 @@ public: inline constexpr OverflowSafeInt operator * (const int factor) const { OverflowSafeInt result = *this; result *= (int64_t)factor; return result; } inline constexpr OverflowSafeInt operator * (const uint factor) const { OverflowSafeInt result = *this; result *= (int64_t)factor; return result; } inline constexpr OverflowSafeInt operator * (const uint16_t factor) const { OverflowSafeInt result = *this; result *= (int64_t)factor; return result; } - inline constexpr OverflowSafeInt operator * (const byte factor) const { OverflowSafeInt result = *this; result *= (int64_t)factor; return result; } + inline constexpr OverflowSafeInt operator * (const uint8_t factor) const { OverflowSafeInt result = *this; result *= (int64_t)factor; return result; } /* Operators for division. */ inline constexpr OverflowSafeInt& operator /= (const int64_t divisor) { this->m_value /= divisor; return *this; } @@ -200,10 +200,10 @@ template inline constexpr OverflowSafeInt operator * (const uint a template inline constexpr OverflowSafeInt operator / (const uint a, const OverflowSafeInt b) { return (OverflowSafeInt)a / (int)b; } /* Sometimes we got byte operator OverflowSafeInt instead of vice versa. Handle that properly. */ -template inline constexpr OverflowSafeInt operator + (const byte a, const OverflowSafeInt b) { return b + (uint)a; } -template inline constexpr OverflowSafeInt operator - (const byte a, const OverflowSafeInt b) { return -b + (uint)a; } -template inline constexpr OverflowSafeInt operator * (const byte a, const OverflowSafeInt b) { return b * (uint)a; } -template inline constexpr OverflowSafeInt operator / (const byte a, const OverflowSafeInt b) { return (OverflowSafeInt)a / (int)b; } +template inline constexpr OverflowSafeInt operator + (const uint8_t a, const OverflowSafeInt b) { return b + (uint)a; } +template inline constexpr OverflowSafeInt operator - (const uint8_t a, const OverflowSafeInt b) { return -b + (uint)a; } +template inline constexpr OverflowSafeInt operator * (const uint8_t a, const OverflowSafeInt b) { return b * (uint)a; } +template inline constexpr OverflowSafeInt operator / (const uint8_t a, const OverflowSafeInt b) { return (OverflowSafeInt)a / (int)b; } typedef OverflowSafeInt OverflowSafeInt64; typedef OverflowSafeInt OverflowSafeInt32; diff --git a/src/core/pool_func.hpp b/src/core/pool_func.hpp index d593766859..0012b682d8 100644 --- a/src/core/pool_func.hpp +++ b/src/core/pool_func.hpp @@ -115,17 +115,17 @@ DEFINE_POOL_METHOD(inline void *)::AllocateItem(size_t size, size_t index) Titem *item; if (Tcache && this->alloc_cache != nullptr) { assert(sizeof(Titem) == size); - item = (Titem *)this->alloc_cache; + item = reinterpret_cast(this->alloc_cache); this->alloc_cache = this->alloc_cache->next; if (Tzero) { /* Explicitly casting to (void *) prevents a clang warning - * we are actually memsetting a (not-yet-constructed) object */ - memset((void *)item, 0, sizeof(Titem)); + memset(static_cast(item), 0, sizeof(Titem)); } } else if (Tzero) { - item = (Titem *)CallocT(size); + item = reinterpret_cast(CallocT(size)); } else { - item = (Titem *)MallocT(size); + item = reinterpret_cast(MallocT(size)); } this->data[index] = item; SetBit(this->used_bitmap[index / BITMAP_SIZE], index % BITMAP_SIZE); @@ -188,7 +188,7 @@ DEFINE_POOL_METHOD(void)::FreeItem(size_t index) assert(index < this->size); assert(this->data[index] != nullptr); if (Tcache) { - AllocCache *ac = (AllocCache *)this->data[index]; + AllocCache *ac = reinterpret_cast(this->data[index]); ac->next = this->alloc_cache; this->alloc_cache = ac; } else { diff --git a/src/core/pool_type.hpp b/src/core/pool_type.hpp index bb4cc4f96f..fb0e822ac3 100644 --- a/src/core/pool_type.hpp +++ b/src/core/pool_type.hpp @@ -78,8 +78,8 @@ private: */ template struct Pool : PoolBase { - /* Ensure Tmax_size is within the bounds of Tindex. */ - static_assert((uint64_t)(Tmax_size - 1) >> 8 * sizeof(Tindex) == 0); + /* Ensure the highest possible index, i.e. Tmax_size -1, is within the bounds of Tindex. */ + static_assert(Tmax_size - 1 <= MAX_UVALUE(Tindex)); static constexpr size_t MAX_SIZE = Tmax_size; ///< Make template parameter accessible from outside @@ -259,7 +259,7 @@ struct Pool : PoolBase { inline void operator delete(void *p) { if (p == nullptr) return; - Titem *pn = (Titem *)p; + Titem *pn = static_cast(p); assert(pn == Tpool->Get(pn->index)); Tpool->FreeItem(pn->index); } diff --git a/src/core/random_func.cpp b/src/core/random_func.cpp index 7b605501a0..355eeff616 100644 --- a/src/core/random_func.cpp +++ b/src/core/random_func.cpp @@ -49,17 +49,6 @@ uint32_t Randomizer::Next() return this->state[1] = std::rotr(s, 3) - 1; } -/** - * Generate the next pseudo random number scaled to \a limit, excluding \a limit - * itself. - * @param limit Limit of the range to be generated from. - * @return Random number in [0,\a limit) - */ -uint32_t Randomizer::Next(uint32_t limit) -{ - return ((uint64_t)this->Next() * (uint64_t)limit) >> 32; -} - /** * (Re)set the state of the random number generator. * @param seed the new state @@ -81,19 +70,14 @@ void SetRandomSeed(uint32_t seed) } #ifdef RANDOM_DEBUG -uint32_t DoRandom(int line, const char *file) +uint32_t Random(const std::source_location location) { if (_networking && (!_network_server || (NetworkClientSocket::IsValidID(0) && NetworkClientSocket::Get(0)->status != NetworkClientSocket::STATUS_INACTIVE))) { - Debug(random, 0, "{:08x}; {:02x}; {:04x}; {:02x}; {}:{}", TimerGameEconomy::date, TimerGameEconomy::date_fract, _frame_counter, (byte)_current_company, file, line); + Debug(random, 0, "{:08x}; {:02x}; {:04x}; {:02x}; {}:{}", TimerGameEconomy::date, TimerGameEconomy::date_fract, _frame_counter, (uint8_t)_current_company, location.file_name(), location.line()); } return _random.Next(); } - -uint32_t DoRandomRange(uint32_t limit, int line, const char *file) -{ - return ((uint64_t)DoRandom(line, file) * (uint64_t)limit) >> 32; -} #endif /* RANDOM_DEBUG */ /** @@ -113,7 +97,7 @@ void RandomBytesWithFallback(std::span buf) #if defined(_WIN32) auto res = BCryptGenRandom(nullptr, static_cast(buf.data()), static_cast(buf.size()), BCRYPT_USE_SYSTEM_PREFERRED_RNG); if (res >= 0) return; -#elif defined(__APPLE__) || defined(__NetBSD__) || defined(__FreeBSD__) +#elif defined(__APPLE__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) arc4random_buf(buf.data(), buf.size()); return; #elif defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 25))) diff --git a/src/core/random_func.hpp b/src/core/random_func.hpp index ef3f4569b2..d24c4e12d0 100644 --- a/src/core/random_func.hpp +++ b/src/core/random_func.hpp @@ -10,10 +10,16 @@ #ifndef RANDOM_FUNC_HPP #define RANDOM_FUNC_HPP -#if defined(__APPLE__) - /* Apple already has Random declared */ -# define Random OTTD_Random -#endif /* __APPLE__ */ +/** + * Scale a uint32_t number to be within the range [0,\a limit). + * @param value The value to scale. + * @param limit The limit to scale to. + * @return The scaled value. + */ +static constexpr uint32_t ScaleToLimit(uint32_t value, uint32_t limit) +{ + return ((uint64_t)value * (uint64_t)limit) >> 32; +} /** * Structure to encapsulate the pseudo random number generators. @@ -23,8 +29,15 @@ struct Randomizer { uint32_t state[2]; uint32_t Next(); - uint32_t Next(uint32_t limit); void SetSeed(uint32_t seed); + + /** + * Generate the next pseudo random number scaled to \a limit, excluding \a limit + * itself. + * @param limit Limit of the range to be generated from. + * @return Random number in [0,\a limit) + */ + inline uint32_t Next(uint32_t limit) { return ScaleToLimit(this->Next(), limit); } }; extern Randomizer _random; ///< Random used in the game state calculations extern Randomizer _interactive_random; ///< Random used everywhere else, where it does not (directly) influence the game state @@ -57,33 +70,26 @@ inline void RestoreRandomSeeds(const SavedRandomSeeds &storage) void SetRandomSeed(uint32_t seed); #ifdef RANDOM_DEBUG -# ifdef __APPLE__ -# define OTTD_Random() DoRandom(__LINE__, __FILE__) -# else -# define Random() DoRandom(__LINE__, __FILE__) -# endif - uint32_t DoRandom(int line, const char *file); -# define RandomRange(limit) DoRandomRange(limit, __LINE__, __FILE__) - uint32_t DoRandomRange(uint32_t limit, int line, const char *file); + uint32_t Random(const std::source_location location = std::source_location::current()); #else - static inline uint32_t Random() + inline uint32_t Random([[maybe_unused]] const std::source_location location = std::source_location::current()) { return _random.Next(); } - - /** - * Pick a random number between 0 and \a limit - 1, inclusive. That means 0 - * can be returned and \a limit - 1 can be returned, but \a limit can not be - * returned. - * @param limit Limit for the range to be picked from. - * @return A random number in [0,\a limit). - */ - static inline uint32_t RandomRange(uint32_t limit) - { - return _random.Next(limit); - } #endif +/** + * Pick a random number between 0 and \a limit - 1, inclusive. That means 0 + * can be returned and \a limit - 1 can be returned, but \a limit can not be + * returned. + * @param limit Limit for the range to be picked from. + * @return A random number in [0,\a limit). + */ +inline uint32_t RandomRange(uint32_t limit, const std::source_location location = std::source_location::current()) +{ + return ScaleToLimit(Random(location), limit); +} + inline uint32_t InteractiveRandom() { return _interactive_random.Next(); @@ -109,7 +115,7 @@ inline uint32_t InteractiveRandomRange(uint32_t limit) * @param r The given randomize-number * @return True if the probability given by r is less or equal to (a/b) */ -inline bool Chance16I(const uint a, const uint b, const uint32_t r) +inline bool Chance16I(const uint32_t a, const uint32_t b, const uint32_t r) { assert(b != 0); return (((uint16_t)r * b + b / 2) >> 16) < a; @@ -125,14 +131,10 @@ inline bool Chance16I(const uint a, const uint b, const uint32_t r) * @param b The denominator of the fraction * @return True with (a/b) probability */ -#ifdef RANDOM_DEBUG -# define Chance16(a, b) Chance16I(a, b, DoRandom(__LINE__, __FILE__)) -#else -inline bool Chance16(const uint a, const uint b) +inline bool Chance16(const uint32_t a, const uint32_t b, const std::source_location location = std::source_location::current()) { - return Chance16I(a, b, Random()); + return Chance16I(a, b, Random(location)); } -#endif /* RANDOM_DEBUG */ /** * Flips a coin with a given probability and saves the randomize-number in a variable. @@ -149,15 +151,11 @@ inline bool Chance16(const uint a, const uint b) * @param r The variable to save the randomize-number from Random() * @return True in (a/b) percent */ -#ifdef RANDOM_DEBUG -# define Chance16R(a, b, r) (r = DoRandom(__LINE__, __FILE__), Chance16I(a, b, r)) -#else -inline bool Chance16R(const uint a, const uint b, uint32_t &r) +inline bool Chance16R(const uint32_t a, const uint32_t b, uint32_t &r, const std::source_location location = std::source_location::current()) { - r = Random(); + r = Random(location); return Chance16I(a, b, r); } -#endif /* RANDOM_DEBUG */ void RandomBytesWithFallback(std::span buf); diff --git a/src/crashlog.cpp b/src/crashlog.cpp index eae4a3bef8..b728406fd8 100644 --- a/src/crashlog.cpp +++ b/src/crashlog.cpp @@ -56,11 +56,12 @@ static void SurveyRecentNews(nlohmann::json &json) json = nlohmann::json::array(); int i = 0; - for (NewsItem *news = _latest_news; i < 32 && news != nullptr; news = news->prev, i++) { - TimerGameCalendar::YearMonthDay ymd = TimerGameCalendar::ConvertDateToYMD(news->date); + for (const auto &news : GetNews()) { + TimerGameCalendar::YearMonthDay ymd = TimerGameCalendar::ConvertDateToYMD(news.date); json.push_back(fmt::format("({}-{:02}-{:02}) StringID: {}, Type: {}, Ref1: {}, {}, Ref2: {}, {}", - ymd.year, ymd.month + 1, ymd.day, news->string_id, news->type, - news->reftype1, news->ref1, news->reftype2, news->ref2)); + ymd.year, ymd.month + 1, ymd.day, news.string_id, news.type, + news.reftype1, news.ref1, news.reftype2, news.ref2)); + if (++i > 32) break; } } @@ -102,6 +103,10 @@ void CrashLog::FillCrashLog() this->survey["stacktrace"] = "crashed while gathering information"; } + if (!this->TryExecute("session", [this]() { SurveyGameSession(this->survey["session"]); return true; })) { + this->survey["session"] = "crashed while gathering information"; + } + { auto &info = this->survey["info"]; if (!this->TryExecute("os", [&info]() { SurveyOS(info["os"]); return true; })) { diff --git a/src/currency.cpp b/src/currency.cpp index 323d302582..afc735d4d4 100644 --- a/src/currency.cpp +++ b/src/currency.cpp @@ -26,7 +26,7 @@ * | | Euro year | | | | name * | | | | | | | | */ /** The original currency specifications. */ -static const CurrencySpec origin_currency_specs[CURRENCY_END] = { +static const std::array origin_currency_specs = {{ { 1, "", CF_NOEURO, "\u00a3", "", "GBP", 0, STR_GAME_OPTIONS_CURRENCY_GBP }, ///< british pound { 2, "", CF_NOEURO, "$", "", "USD", 0, STR_GAME_OPTIONS_CURRENCY_USD }, ///< american dollar { 2, "", CF_ISEURO, "\u20ac", "", "EUR", 0, STR_GAME_OPTIONS_CURRENCY_EUR }, ///< euro @@ -70,10 +70,11 @@ static const CurrencySpec origin_currency_specs[CURRENCY_END] = { { 19, "", CF_NOEURO, "Rp", "", "IDR", 0, STR_GAME_OPTIONS_CURRENCY_IDR }, ///< Indonesian Rupiah { 5, "", CF_NOEURO, "RM", "", "MYR", 0, STR_GAME_OPTIONS_CURRENCY_MYR }, ///< Malaysian Ringgit { 1, "", 2014, "", NBSP "Ls", "LVL", 1, STR_GAME_OPTIONS_CURRENCY_LVL }, ///< latvian lats -}; + { 400, "", 2002, "", "$00", "PTE", 1, STR_GAME_OPTIONS_CURRENCY_PTE }, ///< portuguese escudo +}}; /** Array of currencies used by the system */ -CurrencySpec _currency_specs[CURRENCY_END]; +std::array _currency_specs; /** * This array represent the position of OpenTTD's currencies, @@ -81,7 +82,7 @@ CurrencySpec _currency_specs[CURRENCY_END]; * When a grf sends currencies, they are based on the order defined by TTDPatch. * So, we must reindex them to our own order. */ -const byte TTDPatch_To_OTTDIndex[] = +const uint8_t TTDPatch_To_OTTDIndex[] = { CURRENCY_GBP, CURRENCY_USD, @@ -112,7 +113,7 @@ const byte TTDPatch_To_OTTDIndex[] = * @param grfcurr_id currency id coming from newgrf * @return the corrected index */ -byte GetNewgrfCurrencyIdConverted(byte grfcurr_id) +uint8_t GetNewgrfCurrencyIdConverted(uint8_t grfcurr_id) { return (grfcurr_id >= lengthof(TTDPatch_To_OTTDIndex)) ? grfcurr_id : TTDPatch_To_OTTDIndex[grfcurr_id]; } diff --git a/src/currency.h b/src/currency.h index 490f3efd01..71d1315aca 100644 --- a/src/currency.h +++ b/src/currency.h @@ -11,7 +11,7 @@ #define CURRENCY_H #include "timer/timer_game_calendar.h" -#include "string_func.h" +#include "settings_type.h" #include "strings_type.h" static constexpr TimerGameCalendar::Year CF_NOEURO = 0; ///< Currency never switches to the Euro (as far as known). @@ -67,6 +67,7 @@ enum Currencies { CURRENCY_IDR, ///< Indonesian Rupiah CURRENCY_MYR, ///< Malaysian Ringgit CURRENCY_LVL, ///< Latvian Lats + CURRENCY_PTE, ///< Portuguese Escudo CURRENCY_END, ///< always the last item }; @@ -87,25 +88,39 @@ struct CurrencySpec { * It is not a spec from Newgrf, * rather a way to let users do what they want with custom currency */ - byte symbol_pos; + uint8_t symbol_pos; StringID name; CurrencySpec() = default; - CurrencySpec(uint16_t rate, const char *separator, TimerGameCalendar::Year to_euro, const char *prefix, const char *suffix, const char *code, byte symbol_pos, StringID name) : + CurrencySpec(uint16_t rate, const char *separator, TimerGameCalendar::Year to_euro, const char *prefix, const char *suffix, const char *code, uint8_t symbol_pos, StringID name) : rate(rate), separator(separator), to_euro(to_euro), prefix(prefix), suffix(suffix), code(code), symbol_pos(symbol_pos), name(name) { } }; -extern CurrencySpec _currency_specs[CURRENCY_END]; +extern std::array _currency_specs; -/* XXX small hack, but makes the rest of the code a bit nicer to read */ -#define _custom_currency (_currency_specs[CURRENCY_CUSTOM]) -#define _currency ((const CurrencySpec*)&_currency_specs[GetGameSettings().locale.currency]) +/** + * Get the custom currency. + * @return Reference to custom currency. + */ +inline CurrencySpec &GetCustomCurrency() +{ + return _currency_specs[CURRENCY_CUSTOM]; +} + +/** + * Get the currently selected currency. + * @return Read-only reference to the current currency. + */ +inline const CurrencySpec &GetCurrency() +{ + return _currency_specs[GetGameSettings().locale.currency]; +} uint64_t GetMaskOfAllowedCurrencies(); void ResetCurrencies(bool preserve_custom = true); -byte GetNewgrfCurrencyIdConverted(byte grfcurr_id); +uint8_t GetNewgrfCurrencyIdConverted(uint8_t grfcurr_id); #endif /* CURRENCY_H */ diff --git a/src/date_gui.cpp b/src/date_gui.cpp index abbe8ad784..404f603971 100644 --- a/src/date_gui.cpp +++ b/src/date_gui.cpp @@ -14,8 +14,9 @@ #include "window_gui.h" #include "date_gui.h" #include "core/geometry_func.hpp" +#include "dropdown_type.h" +#include "dropdown_func.h" -#include "widgets/dropdown_type.h" #include "widgets/date_widget.h" #include "safeguards.h" @@ -39,7 +40,7 @@ struct SetDateWindow : Window { * @param max_year the maximum year (inclusive) to show in the year dropdown * @param callback the callback to call once a date has been selected */ - SetDateWindow(WindowDesc *desc, WindowNumber window_number, Window *parent, TimerGameEconomy::Date initial_date, TimerGameEconomy::Year min_year, TimerGameEconomy::Year max_year, SetDateCallback *callback, void *callback_data) : + SetDateWindow(WindowDesc &desc, WindowNumber window_number, Window *parent, TimerGameEconomy::Date initial_date, TimerGameEconomy::Year min_year, TimerGameEconomy::Year max_year, SetDateCallback *callback, void *callback_data) : Window(desc), callback(callback), callback_data(callback_data), @@ -75,14 +76,14 @@ struct SetDateWindow : Window { case WID_SD_DAY: for (uint i = 0; i < 31; i++) { - list.push_back(std::make_unique(STR_DAY_NUMBER_1ST + i, i + 1, false)); + list.push_back(MakeDropDownListStringItem(STR_DAY_NUMBER_1ST + i, i + 1)); } selected = this->date.day; break; case WID_SD_MONTH: for (uint i = 0; i < 12; i++) { - list.push_back(std::make_unique(STR_MONTH_JAN + i, i, false)); + list.push_back(MakeDropDownListStringItem(STR_MONTH_JAN + i, i)); } selected = this->date.month; break; @@ -90,7 +91,7 @@ struct SetDateWindow : Window { case WID_SD_YEAR: for (TimerGameEconomy::Year i = this->min_year; i <= this->max_year; i++) { SetDParam(0, i); - list.push_back(std::make_unique(STR_JUST_INT, i.base(), false)); + list.push_back(MakeDropDownListStringItem(STR_JUST_INT, i.base())); } selected = this->date.year.base(); break; @@ -99,7 +100,7 @@ struct SetDateWindow : Window { ShowDropDownList(this, std::move(list), selected, widget); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { Dimension d = {0, 0}; switch (widget) { @@ -125,7 +126,7 @@ struct SetDateWindow : Window { d.width += padding.width; d.height += padding.height; - *size = d; + size = d; } void SetStringParameters(WidgetID widget) const override @@ -195,11 +196,11 @@ static constexpr NWidgetPart _nested_set_date_widgets[] = { }; /** Description of the date setting window. */ -static WindowDesc _set_date_desc(__FILE__, __LINE__, +static WindowDesc _set_date_desc( WDP_CENTER, nullptr, 0, 0, WC_SET_DATE, WC_NONE, 0, - std::begin(_nested_set_date_widgets), std::end(_nested_set_date_widgets) + _nested_set_date_widgets ); /** @@ -215,5 +216,5 @@ static WindowDesc _set_date_desc(__FILE__, __LINE__, void ShowSetDateWindow(Window *parent, int window_number, TimerGameEconomy::Date initial_date, TimerGameEconomy::Year min_year, TimerGameEconomy::Year max_year, SetDateCallback *callback, void *callback_data) { CloseWindowByClass(WC_SET_DATE); - new SetDateWindow(&_set_date_desc, window_number, parent, initial_date, min_year, max_year, callback, callback_data); + new SetDateWindow(_set_date_desc, window_number, parent, initial_date, min_year, max_year, callback, callback_data); } diff --git a/src/debug.cpp b/src/debug.cpp index 7cc28e4280..8ba96ef942 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -42,7 +42,6 @@ int _debug_misc_level; int _debug_net_level; int _debug_sprite_level; int _debug_oldloader_level; -int _debug_npf_level; int _debug_yapf_level; int _debug_fontcache_level; int _debug_script_level; @@ -60,7 +59,7 @@ struct DebugLevel { }; #define DEBUG_LEVEL(x) { #x, &_debug_##x##_level } - static const DebugLevel debug_level[] = { +static const DebugLevel _debug_levels[] = { DEBUG_LEVEL(driver), DEBUG_LEVEL(grf), DEBUG_LEVEL(map), @@ -68,7 +67,6 @@ struct DebugLevel { DEBUG_LEVEL(net), DEBUG_LEVEL(sprite), DEBUG_LEVEL(oldloader), - DEBUG_LEVEL(npf), DEBUG_LEVEL(yapf), DEBUG_LEVEL(fontcache), DEBUG_LEVEL(script), @@ -79,7 +77,7 @@ struct DebugLevel { #ifdef RANDOM_DEBUG DEBUG_LEVEL(random), #endif - }; +}; #undef DEBUG_LEVEL /** @@ -89,13 +87,13 @@ struct DebugLevel { void DumpDebugFacilityNames(std::back_insert_iterator &output_iterator) { bool written = false; - for (const DebugLevel *i = debug_level; i != endof(debug_level); ++i) { + for (const auto &debug_level : _debug_levels) { if (!written) { fmt::format_to(output_iterator, "List of debug facility names:\n"); } else { fmt::format_to(output_iterator, ", "); } - fmt::format_to(output_iterator, "{}", i->name); + fmt::format_to(output_iterator, "{}", debug_level.name); written = true; } if (written) { @@ -110,7 +108,7 @@ void DumpDebugFacilityNames(std::back_insert_iterator &output_itera */ void DebugPrint(const char *category, int level, const std::string &message) { - if (strcmp(category, "desync") == 0) { + if (strcmp(category, "desync") == 0 && level != 0) { static FILE *f = FioFOpenFile("commands-out.log", "wb", AUTOSAVE_DIR); if (f == nullptr) return; @@ -153,13 +151,11 @@ void SetDebugString(const char *s, void (*error_func)(const std::string &)) /* Global debugging level? */ if (*s >= '0' && *s <= '9') { - const DebugLevel *i; - v = std::strtoul(s, &end, 0); s = end; - for (i = debug_level; i != endof(debug_level); ++i) { - new_levels[i->name] = v; + for (const auto &debug_level : _debug_levels) { + new_levels[debug_level.name] = v; } } @@ -174,9 +170,9 @@ void SetDebugString(const char *s, void (*error_func)(const std::string &)) /* check debugging levels */ const DebugLevel *found = nullptr; - for (const DebugLevel *i = debug_level; i != endof(debug_level); ++i) { - if (s == t + strlen(i->name) && strncmp(t, i->name, s - t) == 0) { - found = i; + for (const auto &debug_level : _debug_levels) { + if (s == t + strlen(debug_level.name) && strncmp(t, debug_level.name, s - t) == 0) { + found = &debug_level; break; } } @@ -194,10 +190,10 @@ void SetDebugString(const char *s, void (*error_func)(const std::string &)) } /* Apply the changes after parse is successful */ - for (const DebugLevel *i = debug_level; i != endof(debug_level); ++i) { - const auto &nl = new_levels.find(i->name); + for (const auto &debug_level : _debug_levels) { + const auto &nl = new_levels.find(debug_level.name); if (nl != new_levels.end()) { - *i->level = nl->second; + *debug_level.level = nl->second; } } } @@ -210,9 +206,9 @@ void SetDebugString(const char *s, void (*error_func)(const std::string &)) std::string GetDebugString() { std::string result; - for (const DebugLevel *i = debug_level; i != endof(debug_level); ++i) { + for (const auto &debug_level : _debug_levels) { if (!result.empty()) result += ", "; - fmt::format_to(std::back_inserter(result), "{}={}", i->name, *i->level); + fmt::format_to(std::back_inserter(result), "{}={}", debug_level.name, *debug_level.level); } return result; } diff --git a/src/debug.h b/src/debug.h index fbd39683c6..c5afb9180a 100644 --- a/src/debug.h +++ b/src/debug.h @@ -44,7 +44,6 @@ extern int _debug_misc_level; extern int _debug_net_level; extern int _debug_sprite_level; extern int _debug_oldloader_level; -extern int _debug_npf_level; extern int _debug_yapf_level; extern int _debug_fontcache_level; extern int _debug_script_level; @@ -60,9 +59,6 @@ void DumpDebugFacilityNames(std::back_insert_iterator &output_itera void SetDebugString(const char *s, void (*error_func)(const std::string &)); std::string GetDebugString(); -/* Shorter form for passing filename and linenumber */ -#define FILE_LINE __FILE__, __LINE__ - /** TicToc profiling. * Usage: * static TicToc::State state("A name", 1); diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp index 9b7831c156..e62915fe2c 100644 --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -49,11 +49,11 @@ static constexpr NWidgetPart _nested_train_depot_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_D_SHOW_RENAME), // rename button - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_RENAME), SetMinimalSize(12, 14), SetDataTip(SPR_RENAME, STR_DEPOT_RENAME_TOOLTIP), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_D_SHOW_RENAME), SetAspect(WidgetDimensions::ASPECT_RENAME), // rename button + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_RENAME), SetAspect(WidgetDimensions::ASPECT_RENAME), SetDataTip(SPR_RENAME, STR_DEPOT_RENAME_TOOLTIP), EndContainer(), NWidget(WWT_CAPTION, COLOUR_GREY, WID_D_CAPTION), SetDataTip(STR_DEPOT_CAPTION, STR_NULL), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_LOCATION), SetMinimalSize(12, 14), SetDataTip(SPR_GOTO_LOCATION, STR_NULL), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_LOCATION), SetAspect(WidgetDimensions::ASPECT_LOCATION), SetDataTip(SPR_GOTO_LOCATION, STR_NULL), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), @@ -78,39 +78,39 @@ static constexpr NWidgetPart _nested_train_depot_widgets[] = { NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_D_BUILD), SetDataTip(0x0, STR_NULL), SetFill(1, 1), SetResize(1, 0), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_D_CLONE), SetDataTip(0x0, STR_NULL), SetFill(1, 1), SetResize(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_D_VEHICLE_LIST), SetDataTip(0x0, STR_NULL), SetFill(0, 1), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_STOP_ALL), SetDataTip(SPR_FLAG_VEH_STOPPED, STR_NULL), SetFill(0, 1), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_START_ALL), SetDataTip(SPR_FLAG_VEH_RUNNING, STR_NULL), SetFill(0, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_D_VEHICLE_LIST), SetDataTip(0x0, STR_NULL), SetAspect(WidgetDimensions::ASPECT_VEHICLE_ICON), SetFill(0, 1), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_STOP_ALL), SetDataTip(SPR_FLAG_VEH_STOPPED, STR_NULL), SetAspect(WidgetDimensions::ASPECT_VEHICLE_FLAG), SetFill(0, 1), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_START_ALL), SetDataTip(SPR_FLAG_VEH_RUNNING, STR_NULL), SetAspect(WidgetDimensions::ASPECT_VEHICLE_FLAG), SetFill(0, 1), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; -static WindowDesc _train_depot_desc(__FILE__, __LINE__, +static WindowDesc _train_depot_desc( WDP_AUTO, "depot_train", 362, 123, WC_VEHICLE_DEPOT, WC_NONE, 0, - std::begin(_nested_train_depot_widgets), std::end(_nested_train_depot_widgets) + _nested_train_depot_widgets ); -static WindowDesc _road_depot_desc(__FILE__, __LINE__, +static WindowDesc _road_depot_desc( WDP_AUTO, "depot_roadveh", 316, 97, WC_VEHICLE_DEPOT, WC_NONE, 0, - std::begin(_nested_train_depot_widgets), std::end(_nested_train_depot_widgets) + _nested_train_depot_widgets ); -static WindowDesc _ship_depot_desc(__FILE__, __LINE__, +static WindowDesc _ship_depot_desc( WDP_AUTO, "depot_ship", 306, 99, WC_VEHICLE_DEPOT, WC_NONE, 0, - std::begin(_nested_train_depot_widgets), std::end(_nested_train_depot_widgets) + _nested_train_depot_widgets ); -static WindowDesc _aircraft_depot_desc(__FILE__, __LINE__, +static WindowDesc _aircraft_depot_desc( WDP_AUTO, "depot_aircraft", 332, 99, WC_VEHICLE_DEPOT, WC_NONE, 0, - std::begin(_nested_train_depot_widgets), std::end(_nested_train_depot_widgets) + _nested_train_depot_widgets ); extern void DepotSortList(VehicleList *list); @@ -266,7 +266,7 @@ struct DepotWindow : Window { Scrollbar *hscroll; ///< Only for trains. Scrollbar *vscroll; - DepotWindow(WindowDesc *desc, TileIndex tile, VehicleType type) : Window(desc) + DepotWindow(WindowDesc &desc, TileIndex tile, VehicleType type) : Window(desc) { assert(IsCompanyBuildableVehicleType(type)); // ensure that we make the call with a valid type @@ -384,7 +384,7 @@ struct DepotWindow : Window { */ if (this->type == VEH_TRAIN && _consistent_train_width != 0) { int w = ScaleSpriteTrad(2 * _consistent_train_width); - int col = _colour_gradient[wid->colour][4]; + int col = GetColourGradient(wid->colour, SHADE_NORMAL); Rect image = ir.Indent(this->header_width, rtl).Indent(this->count_width, !rtl); int first_line = w + (-this->hscroll->GetPosition()) % w; if (rtl) { @@ -459,10 +459,10 @@ struct DepotWindow : Window { } ym = (y - matrix_widget->pos_y) % this->resize.step_height; - int row = this->vscroll->GetScrolledRowFromWidget(y, this, WID_D_MATRIX); + int32_t row = this->vscroll->GetScrolledRowFromWidget(y, this, WID_D_MATRIX); uint pos = (row * this->num_columns) + xt; - if (row == INT_MAX || this->vehicle_list.size() + this->wagon_list.size() <= pos) { + if (row == INT32_MAX || this->vehicle_list.size() + this->wagon_list.size() <= pos) { /* Clicking on 'line' / 'block' without a vehicle */ if (this->type == VEH_TRAIN) { /* End the dragging */ @@ -653,7 +653,7 @@ struct DepotWindow : Window { this->flag_size = maxdim(GetScaledSpriteSize(SPR_FLAG_VEH_STOPPED), GetScaledSpriteSize(SPR_FLAG_VEH_RUNNING)); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_D_MATRIX: { @@ -679,18 +679,18 @@ struct DepotWindow : Window { } int base_width = this->count_width + this->header_width + padding.width; - resize->height = std::max(this->cell_size.height, min_height + padding.height); + resize.height = std::max(this->cell_size.height, min_height + padding.height); if (this->type == VEH_TRAIN) { - resize->width = 1; - size->width = base_width + 2 * ScaleSpriteTrad(29); // about 2 parts - size->height = resize->height * 6; + resize.width = 1; + size.width = base_width + 2 * ScaleSpriteTrad(29); // about 2 parts + size.height = resize.height * 6; } else { - resize->width = base_width + this->cell_size.extend_left + this->cell_size.extend_right; - size->width = resize->width * (this->type == VEH_ROAD ? 5 : 3); - size->height = resize->height * (this->type == VEH_ROAD ? 5 : 3); + resize.width = base_width + this->cell_size.extend_left + this->cell_size.extend_right; + size.width = resize.width * (this->type == VEH_ROAD ? 5 : 3); + size.height = resize.height * (this->type == VEH_ROAD ? 5 : 3); } - fill->width = resize->width; - fill->height = resize->height; + fill.width = resize.width; + fill.height = resize.height; break; } } @@ -831,12 +831,12 @@ struct DepotWindow : Window { } } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (str == nullptr) return; + if (!str.has_value()) return; /* Do depot renaming */ - Command::Post(STR_ERROR_CAN_T_RENAME_DEPOT, this->GetDepotIndex(), str); + Command::Post(STR_ERROR_CAN_T_RENAME_DEPOT, this->GetDepotIndex(), *str); } bool OnRightClick([[maybe_unused]] Point pt, WidgetID widget) override @@ -1142,16 +1142,13 @@ void ShowDepotWindow(TileIndex tile, VehicleType type) { if (BringWindowToFrontById(WC_VEHICLE_DEPOT, tile) != nullptr) return; - WindowDesc *desc; switch (type) { default: NOT_REACHED(); - case VEH_TRAIN: desc = &_train_depot_desc; break; - case VEH_ROAD: desc = &_road_depot_desc; break; - case VEH_SHIP: desc = &_ship_depot_desc; break; - case VEH_AIRCRAFT: desc = &_aircraft_depot_desc; break; + case VEH_TRAIN: new DepotWindow(_train_depot_desc, tile, type); break; + case VEH_ROAD: new DepotWindow(_road_depot_desc, tile, type); break; + case VEH_SHIP: new DepotWindow(_ship_depot_desc, tile, type); break; + case VEH_AIRCRAFT: new DepotWindow(_aircraft_depot_desc, tile, type); break; } - - new DepotWindow(desc, tile, type); } /** diff --git a/src/direction_type.h b/src/direction_type.h index fb08c224af..84bc130a84 100644 --- a/src/direction_type.h +++ b/src/direction_type.h @@ -21,7 +21,7 @@ * your viewport and not rotated by 45 degrees left or right to get * a "north" used in you games. */ -enum Direction : byte { +enum Direction : uint8_t { DIR_BEGIN = 0, ///< Used to iterate DIR_N = 0, ///< North DIR_NE = 1, ///< Northeast @@ -70,7 +70,7 @@ enum DirDiff { * * This enumeration is used for the 4 direction of the tile-edges. */ -enum DiagDirection : byte { +enum DiagDirection : uint8_t { DIAGDIR_BEGIN = 0, ///< Used for iterations DIAGDIR_NE = 0, ///< Northeast, upper right on your monitor DIAGDIR_SE = 1, ///< Southeast @@ -113,7 +113,7 @@ DECLARE_POSTFIX_INCREMENT(DiagDirDiff) * (and south-east edge). The Y axis must be so the one which goes * align the north-east edge (and south-west) edge. */ -enum Axis : byte { +enum Axis : uint8_t { AXIS_X = 0, ///< The X axis AXIS_Y = 1, ///< The y axis AXIS_END, ///< Used for iterations diff --git a/src/disaster_vehicle.cpp b/src/disaster_vehicle.cpp index 60b93eaf11..69ce0319e4 100644 --- a/src/disaster_vehicle.cpp +++ b/src/disaster_vehicle.cpp @@ -63,7 +63,7 @@ static void DisasterClearSquare(TileIndex tile) switch (GetTileType(tile)) { case MP_RAILWAY: if (Company::IsHumanID(GetTileOwner(tile)) && !IsRailDepot(tile)) { - Backup cur_company(_current_company, OWNER_WATER, FILE_LINE); + Backup cur_company(_current_company, OWNER_WATER); Command::Do(DC_EXEC, tile); cur_company.Restore(); @@ -73,7 +73,7 @@ static void DisasterClearSquare(TileIndex tile) break; case MP_HOUSE: { - Backup cur_company(_current_company, OWNER_NONE, FILE_LINE); + Backup cur_company(_current_company, OWNER_NONE); Command::Do(DC_EXEC, tile); cur_company.Restore(); break; @@ -925,16 +925,17 @@ static const Disaster _disasters[] = { static void DoDisaster() { - byte buf[lengthof(_disasters)]; + std::vector available_disasters; - byte j = 0; - for (size_t i = 0; i != lengthof(_disasters); i++) { - if (TimerGameCalendar::year >= _disasters[i].min_year && TimerGameCalendar::year < _disasters[i].max_year) buf[j++] = (byte)i; + for (auto &disaster : _disasters) { + if (TimerGameCalendar::year >= disaster.min_year && TimerGameCalendar::year < disaster.max_year) { + available_disasters.push_back(disaster.init_proc); + } } - if (j == 0) return; + if (available_disasters.empty()) return; - _disasters[buf[RandomRange(j)]].init_proc(); + available_disasters[RandomRange(static_cast(available_disasters.size()))](); } diff --git a/src/disaster_vehicle.h b/src/disaster_vehicle.h index fc3abecc6e..f6a864df9d 100644 --- a/src/disaster_vehicle.h +++ b/src/disaster_vehicle.h @@ -37,7 +37,7 @@ enum DisasterSubType { struct DisasterVehicle final : public SpecializedVehicle { SpriteID image_override; ///< Override for the default disaster vehicle sprite. VehicleID big_ufo_destroyer_target; ///< The big UFO that this destroyer is supposed to bomb. - byte flags; ///< Flags about the state of the vehicle, @see AirVehicleFlags + uint8_t flags; ///< Flags about the state of the vehicle, @see AirVehicleFlags uint16_t state; ///< Action stage of the disaster vehicle. /** For use by saveload. */ diff --git a/src/dock_gui.cpp b/src/dock_gui.cpp index 76a778622a..ffbf5aa63e 100644 --- a/src/dock_gui.cpp +++ b/src/dock_gui.cpp @@ -67,14 +67,14 @@ void CcPlaySound_CONSTRUCTION_WATER(Commands, const CommandCost &result, TileInd */ static TileIndex GetOtherAqueductEnd(TileIndex tile_from, TileIndex *tile_to = nullptr) { - int z; - DiagDirection dir = GetInclinedSlopeDirection(GetTileSlope(tile_from, &z)); + auto [slope, z] = GetTileSlopeZ(tile_from); + DiagDirection dir = GetInclinedSlopeDirection(slope); /* If the direction isn't right, just return the next tile so the command * complains about the wrong slope instead of the ends not matching up. * Make sure the coordinate is always a valid tile within the map, so we * don't go "off" the map. That would cause the wrong error message. */ - if (!IsValidDiagDirection(dir)) return TILE_ADDXY(tile_from, TileX(tile_from) > 2 ? -1 : 1, 0); + if (!IsValidDiagDirection(dir)) return TileAddXY(tile_from, TileX(tile_from) > 2 ? -1 : 1, 0); /* Direction the aqueduct is built to. */ TileIndexDiff offset = TileOffsByDiagDir(ReverseDiagDir(dir)); @@ -83,7 +83,7 @@ static TileIndex GetOtherAqueductEnd(TileIndex tile_from, TileIndex *tile_to = n TileIndex endtile = tile_from; for (int length = 0; IsValidTile(endtile) && TileX(endtile) != 0 && TileY(endtile) != 0; length++) { - endtile = TILE_ADD(endtile, offset); + endtile = TileAdd(endtile, offset); if (length > max_length) break; @@ -100,7 +100,7 @@ static TileIndex GetOtherAqueductEnd(TileIndex tile_from, TileIndex *tile_to = n struct BuildDocksToolbarWindow : Window { DockToolbarWidgets last_clicked_widget; ///< Contains the last widget that has been clicked on this toolbar. - BuildDocksToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + BuildDocksToolbarWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->last_clicked_widget = WID_DT_INVALID; this->InitNested(window_number); @@ -344,11 +344,11 @@ static constexpr NWidgetPart _nested_build_docks_toolbar_widgets[] = { EndContainer(), }; -static WindowDesc _build_docks_toolbar_desc(__FILE__, __LINE__, +static WindowDesc _build_docks_toolbar_desc( WDP_ALIGN_TOOLBAR, "toolbar_water", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_build_docks_toolbar_widgets), std::end(_nested_build_docks_toolbar_widgets), + _nested_build_docks_toolbar_widgets, &BuildDocksToolbarWindow::hotkeys ); @@ -364,7 +364,7 @@ Window *ShowBuildDocksToolbar() if (!Company::IsValidID(_local_company)) return nullptr; CloseWindowByClass(WC_BUILD_TOOLBAR); - return AllocateWindowDescFront(&_build_docks_toolbar_desc, TRANSPORT_WATER); + return AllocateWindowDescFront(_build_docks_toolbar_desc, TRANSPORT_WATER); } /** @@ -388,11 +388,11 @@ static constexpr NWidgetPart _nested_build_docks_scen_toolbar_widgets[] = { }; /** Window definition for the build docks in scenario editor window. */ -static WindowDesc _build_docks_scen_toolbar_desc(__FILE__, __LINE__, +static WindowDesc _build_docks_scen_toolbar_desc( WDP_AUTO, "toolbar_water_scen", 0, 0, WC_SCEN_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_build_docks_scen_toolbar_widgets), std::end(_nested_build_docks_scen_toolbar_widgets) + _nested_build_docks_scen_toolbar_widgets ); /** @@ -402,7 +402,7 @@ static WindowDesc _build_docks_scen_toolbar_desc(__FILE__, __LINE__, */ Window *ShowBuildDocksScenToolbar() { - return AllocateWindowDescFront(&_build_docks_scen_toolbar_desc, TRANSPORT_WATER); + return AllocateWindowDescFront(_build_docks_scen_toolbar_desc, TRANSPORT_WATER); } /** Widget numbers of the build-dock GUI. */ @@ -416,7 +416,7 @@ enum BuildDockStationWidgets { struct BuildDocksStationWindow : public PickerWindowBase { public: - BuildDocksStationWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) + BuildDocksStationWindow(WindowDesc &desc, Window *parent) : PickerWindowBase(desc, parent) { this->InitNested(TRANSPORT_WATER); this->LowerWidget(_settings_client.gui.station_show_coverage + BDSW_LT_OFF); @@ -498,16 +498,16 @@ static constexpr NWidgetPart _nested_build_dock_station_widgets[] = { EndContainer(), }; -static WindowDesc _build_dock_station_desc(__FILE__, __LINE__, +static WindowDesc _build_dock_station_desc( WDP_AUTO, nullptr, 0, 0, WC_BUILD_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, - std::begin(_nested_build_dock_station_widgets), std::end(_nested_build_dock_station_widgets) + _nested_build_dock_station_widgets ); static void ShowBuildDockStationPicker(Window *parent) { - new BuildDocksStationWindow(&_build_dock_station_desc, parent); + new BuildDocksStationWindow(_build_dock_station_desc, parent); } struct BuildDocksDepotWindow : public PickerWindowBase { @@ -522,20 +522,20 @@ private: } public: - BuildDocksDepotWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) + BuildDocksDepotWindow(WindowDesc &desc, Window *parent) : PickerWindowBase(desc, parent) { this->InitNested(TRANSPORT_WATER); this->LowerWidget(WID_BDD_X + _ship_depot_direction); UpdateDocksDirection(); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_BDD_X: case WID_BDD_Y: - size->width = ScaleGUITrad(96) + WidgetDimensions::scaled.fullbevel.Horizontal(); - size->height = ScaleGUITrad(64) + WidgetDimensions::scaled.fullbevel.Vertical(); + size.width = ScaleGUITrad(96) + WidgetDimensions::scaled.fullbevel.Horizontal(); + size.height = ScaleGUITrad(64) + WidgetDimensions::scaled.fullbevel.Vertical(); break; } } @@ -587,23 +587,23 @@ static constexpr NWidgetPart _nested_build_docks_depot_widgets[] = { EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BDD_BACKGROUND), NWidget(NWID_HORIZONTAL_LTR), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPIPRatio(1, 0, 1), SetPadding(WidgetDimensions::unscaled.picker), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BDD_X), SetMinimalSize(98, 66), SetDataTip(0x0, STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BDD_Y), SetMinimalSize(98, 66), SetDataTip(0x0, STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BDD_X), SetDataTip(0x0, STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BDD_Y), SetDataTip(0x0, STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP), EndContainer(), EndContainer(), }; -static WindowDesc _build_docks_depot_desc(__FILE__, __LINE__, +static WindowDesc _build_docks_depot_desc( WDP_AUTO, nullptr, 0, 0, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, - std::begin(_nested_build_docks_depot_widgets), std::end(_nested_build_docks_depot_widgets) + _nested_build_docks_depot_widgets ); static void ShowBuildDocksDepotPicker(Window *parent) { - new BuildDocksDepotWindow(&_build_docks_depot_desc, parent); + new BuildDocksDepotWindow(_build_docks_depot_desc, parent); } diff --git a/src/driver.cpp b/src/driver.cpp index 5d3f2addd1..26815874a0 100644 --- a/src/driver.cpp +++ b/src/driver.cpp @@ -19,12 +19,6 @@ #include "fileio_func.h" #include -#ifdef _WIN32 -# include -#else -# include -#endif /* _WIN32 */ - #include "safeguards.h" std::string _ini_videodriver; ///< The video driver a stored in the configuration file. @@ -129,7 +123,7 @@ bool DriverFactoryBase::SelectDriverImpl(const std::string &name, Driver::Type t * hardware acceleration. */ auto filename = FioFindFullPath(BASE_DIR, HWACCELERATION_TEST_FILE); if (!filename.empty()) { - unlink(filename.c_str()); + FioRemove(filename); Debug(driver, 1, "Probing {} driver '{}' skipped due to earlier crash", GetDriverTypeName(type), d->name); @@ -148,15 +142,15 @@ bool DriverFactoryBase::SelectDriverImpl(const std::string &name, Driver::Type t Driver *newd = d->CreateInstance(); *GetActiveDriver(type) = newd; - const char *err = newd->Start({}); - if (err == nullptr) { + auto err = newd->Start({}); + if (!err) { Debug(driver, 1, "Successfully probed {} driver '{}'", GetDriverTypeName(type), d->name); delete oldd; return true; } *GetActiveDriver(type) = oldd; - Debug(driver, 1, "Probing {} driver '{}' failed with error: {}", GetDriverTypeName(type), d->name, err); + Debug(driver, 1, "Probing {} driver '{}' failed with error: {}", GetDriverTypeName(type), d->name, *err); delete newd; if (type == Driver::DT_VIDEO && _video_hw_accel && d->UsesHardwareAcceleration()) { @@ -192,10 +186,10 @@ bool DriverFactoryBase::SelectDriverImpl(const std::string &name, Driver::Type t /* Found our driver, let's try it */ Driver *newd = d->CreateInstance(); - const char *err = newd->Start(parms); - if (err != nullptr) { + auto err = newd->Start(parms); + if (err) { delete newd; - UserError("Unable to load driver '{}'. The error was: {}", d->name, err); + UserError("Unable to load driver '{}'. The error was: {}", d->name, *err); } Debug(driver, 1, "Successfully loaded {} driver '{}'", GetDriverTypeName(type), d->name); @@ -216,7 +210,7 @@ void DriverFactoryBase::MarkVideoDriverOperational() * and as we are operational now, remove the hardware acceleration * test-file. */ auto filename = FioFindFullPath(BASE_DIR, HWACCELERATION_TEST_FILE); - if (!filename.empty()) unlink(filename.c_str()); + if (!filename.empty()) FioRemove(filename); } /** diff --git a/src/driver.h b/src/driver.h index 4683784266..ef39391890 100644 --- a/src/driver.h +++ b/src/driver.h @@ -23,9 +23,9 @@ public: /** * Start this driver. * @param parm Parameters passed to the driver. - * @return nullptr if everything went okay, otherwise an error message. + * @return std::nullopt if everything went okay, otherwise an error message. */ - virtual const char *Start(const StringList &parm) = 0; + virtual std::optional Start(const StringList &parm) = 0; /** * Stop this driver. @@ -47,7 +47,7 @@ public: * Get the name of this driver. * @return The name of the driver. */ - virtual const char *GetName() const = 0; + virtual std::string_view GetName() const = 0; }; DECLARE_POSTFIX_INCREMENT(Driver::Type) @@ -62,8 +62,8 @@ private: Driver::Type type; ///< The type of driver. int priority; ///< The priority of this factory. - const char *name; ///< The name of the drivers of this factory. - const char *description; ///< The description of this driver. + std::string_view name; ///< The name of the drivers of this factory. + std::string_view description; ///< The description of this driver. typedef std::map Drivers; ///< Type for a map of drivers. @@ -92,9 +92,9 @@ private: * @param type The type of driver to get the name of. * @return The name of the type. */ - static const char *GetDriverTypeName(Driver::Type type) + static std::string_view GetDriverTypeName(Driver::Type type) { - static const char * const driver_type_name[] = { "music", "sound", "video" }; + static const std::string_view driver_type_name[] = { "music", "sound", "video" }; return driver_type_name[type]; } @@ -135,7 +135,7 @@ public: * Get a nice description of the driver-class. * @return The description. */ - const char *GetDescription() const + std::string_view GetDescription() const { return this->description; } diff --git a/src/widgets/dropdown.cpp b/src/dropdown.cpp similarity index 84% rename from src/widgets/dropdown.cpp rename to src/dropdown.cpp index b6a39596fc..fe3e90eba6 100644 --- a/src/widgets/dropdown.cpp +++ b/src/dropdown.cpp @@ -7,20 +7,50 @@ /** @file dropdown.cpp Implementation of the dropdown widget. */ -#include "../stdafx.h" -#include "../window_gui.h" -#include "../string_func.h" -#include "../strings_func.h" -#include "../window_func.h" -#include "../zoom_func.h" -#include "../timer/timer.h" -#include "../timer/timer_window.h" +#include "stdafx.h" #include "dropdown_type.h" +#include "dropdown_func.h" +#include "dropdown_common_type.h" +#include "strings_func.h" +#include "timer/timer.h" +#include "timer/timer_window.h" +#include "window_gui.h" +#include "window_func.h" +#include "zoom_func.h" -#include "dropdown_widget.h" +#include "widgets/dropdown_widget.h" -#include "../safeguards.h" +#include "safeguards.h" +std::unique_ptr MakeDropDownListDividerItem() +{ + return std::make_unique(-1); +} + +std::unique_ptr MakeDropDownListStringItem(StringID str, int value, bool masked, bool shaded) +{ + return std::make_unique(str, value, masked, shaded); +} + +std::unique_ptr MakeDropDownListStringItem(const std::string &str, int value, bool masked, bool shaded) +{ + return std::make_unique(str, value, masked, shaded); +} + +std::unique_ptr MakeDropDownListIconItem(SpriteID sprite, PaletteID palette, StringID str, int value, bool masked, bool shaded) +{ + return std::make_unique(sprite, palette, str, value, masked, shaded); +} + +std::unique_ptr MakeDropDownListIconItem(const Dimension &dim, SpriteID sprite, PaletteID palette, StringID str, int value, bool masked, bool shaded) +{ + return std::make_unique(dim, sprite, palette, str, value, masked, shaded); +} + +std::unique_ptr MakeDropDownListCheckedItem(bool checked, StringID str, int value, bool masked, bool shaded) +{ + return std::make_unique(checked, str, value, masked, shaded); +} static constexpr NWidgetPart _nested_dropdown_menu_widgets[] = { NWidget(NWID_HORIZONTAL), @@ -31,11 +61,11 @@ static constexpr NWidgetPart _nested_dropdown_menu_widgets[] = { EndContainer(), }; -static WindowDesc _dropdown_desc(__FILE__, __LINE__, +static WindowDesc _dropdown_desc( WDP_MANUAL, nullptr, 0, 0, WC_DROPDOWN_MENU, WC_NONE, WDF_NO_FOCUS, - std::begin(_nested_dropdown_menu_widgets), std::end(_nested_dropdown_menu_widgets) + _nested_dropdown_menu_widgets ); /** Drop-down menu window */ @@ -44,7 +74,7 @@ struct DropdownWindow : Window { Rect wi_rect; ///< Rect of the button that opened the dropdown. DropDownList list; ///< List with dropdown menu items. int selected_result; ///< Result value of the selected item in the list. - byte click_delay = 0; ///< Timer to delay selection. + uint8_t click_delay = 0; ///< Timer to delay selection. bool drag_mode = true; bool instant_close; ///< Close the window when the mouse button is raised. bool persist; ///< Persist dropdown menu. @@ -66,7 +96,7 @@ struct DropdownWindow : Window { * @param persist Dropdown menu will persist. */ DropdownWindow(Window *parent, DropDownList &&list, int selected, WidgetID button, const Rect wi_rect, bool instant_close, Colours wi_colour, bool persist) - : Window(&_dropdown_desc) + : Window(_dropdown_desc) , parent_button(button) , wi_rect(wi_rect) , list(std::move(list)) @@ -162,7 +192,12 @@ struct DropdownWindow : Window { this->position.y = button_rect.bottom + 1; } - this->position.x = (_current_text_dir == TD_RTL) ? button_rect.right + 1 - (int)widget_dim.width : button_rect.left; + if (_current_text_dir == TD_RTL) { + /* In case the list is wider than the parent button, the list should be right aligned to the button and overflow to the left. */ + this->position.x = button_rect.right + 1 - (int)(widget_dim.width + (list_dim.height > widget_dim.height ? NWidgetScrollbar::GetVerticalDimension().width : 0)); + } else { + this->position.x = button_rect.left; + } this->items_dim = widget_dim; this->GetWidget(WID_DM_SHOW_SCROLL)->SetDisplayedPlane(list_dim.height > widget_dim.height ? 0 : SZSP_NONE); @@ -175,9 +210,9 @@ struct DropdownWindow : Window { if (this->position.y < button_rect.top && list_dim.height > widget_dim.height) this->vscroll->UpdatePosition(INT_MAX); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { - if (widget == WID_DM_ITEMS) *size = this->items_dim; + if (widget == WID_DM_ITEMS) size = this->items_dim; } Point OnInitialPosition([[maybe_unused]] int16_t sm_width, [[maybe_unused]] int16_t sm_height, [[maybe_unused]] int window_number) override @@ -396,21 +431,23 @@ void ShowDropDownList(Window *w, DropDownList &&list, int selected, WidgetID but * Show a dropdown menu window near a widget of the parent window. * The result code of the items is their index in the \a strings list. * @param w Parent window that wants the dropdown menu. - * @param strings Menu list, end with #INVALID_STRING_ID + * @param strings Menu list. * @param selected Index of initial selected item. * @param button Button widget number of the parent window \a w that wants the dropdown menu. * @param disabled_mask Bitmask for disabled items (items with their bit set are displayed, but not selectable in the dropdown list). * @param hidden_mask Bitmask for hidden items (items with their bit set are not copied to the dropdown list). * @param width Minimum width of the dropdown menu. */ -void ShowDropDownMenu(Window *w, const StringID *strings, int selected, WidgetID button, uint32_t disabled_mask, uint32_t hidden_mask, uint width) +void ShowDropDownMenu(Window *w, std::span strings, int selected, WidgetID button, uint32_t disabled_mask, uint32_t hidden_mask, uint width) { DropDownList list; - for (uint i = 0; strings[i] != INVALID_STRING_ID; i++) { + uint i = 0; + for (auto string : strings) { if (!HasBit(hidden_mask, i)) { - list.push_back(std::make_unique(strings[i], i, HasBit(disabled_mask, i))); + list.push_back(MakeDropDownListStringItem(string, i, HasBit(disabled_mask, i))); } + ++i; } if (!list.empty()) ShowDropDownList(w, std::move(list), selected, button, width); diff --git a/src/widgets/dropdown_type.h b/src/dropdown_common_type.h similarity index 74% rename from src/widgets/dropdown_type.h rename to src/dropdown_common_type.h index 485ce44c8b..a851c216ec 100644 --- a/src/widgets/dropdown_type.h +++ b/src/dropdown_common_type.h @@ -5,54 +5,25 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -/** @file dropdown_type.h Types related to the drop down widget. */ +/** @file dropdown_common_type.h Common drop down list components. */ -#ifndef WIDGETS_DROPDOWN_TYPE_H -#define WIDGETS_DROPDOWN_TYPE_H +#ifndef DROPDOWN_COMMON_TYPE_H +#define DROPDOWN_COMMON_TYPE_H -#include "../window_type.h" -#include "../gfx_func.h" -#include "../gfx_type.h" -#include "../palette_func.h" -#include "../string_func.h" -#include "../strings_func.h" -#include "../table/strings.h" -#include "../window_gui.h" - -/** - * Base list item class from which others are derived. - */ -class DropDownListItem { -public: - int result; ///< Result value to return to window on selection. - bool masked; ///< Masked and unselectable item. - bool shaded; ///< Shaded item, affects text colour. - - explicit DropDownListItem(int result, bool masked = false, bool shaded = false) : result(result), masked(masked), shaded(shaded) {} - virtual ~DropDownListItem() = default; - - virtual bool Selectable() const { return true; } - virtual uint Height() const { return 0; } - virtual uint Width() const { return 0; } - - virtual void Draw(const Rect &full, const Rect &, bool, Colours bg_colour) const - { - if (this->masked) GfxFillRect(full, _colour_gradient[bg_colour][5], FILLRECT_CHECKER); - } - - TextColour GetColour(bool sel) const - { - if (this->shaded) return (sel ? TC_SILVER : TC_GREY) | TC_NO_SHADE; - return sel ? TC_WHITE : TC_BLACK; - } -}; +#include "gfx_func.h" +#include "gfx_type.h" +#include "palette_func.h" +#include "string_func.h" +#include "strings_func.h" +#include "table/strings.h" +#include "window_gui.h" /** * Drop down divider component. * @tparam TBase Base component. * @tparam TFs Font size -- used to determine height. */ -template +template class DropDownDivider : public TBase { public: template @@ -63,8 +34,8 @@ public: void Draw(const Rect &full, const Rect &, bool, Colours bg_colour) const override { - uint8_t c1 = _colour_gradient[bg_colour][3]; - uint8_t c2 = _colour_gradient[bg_colour][7]; + uint8_t c1 = GetColourGradient(bg_colour, SHADE_DARK); + uint8_t c2 = GetColourGradient(bg_colour, SHADE_LIGHTEST); int mid = CenterBounds(full.top, full.bottom, 0); GfxFillRect(full.left, mid - WidgetDimensions::scaled.bevel.bottom, full.right, mid - 1, c1); @@ -78,7 +49,7 @@ public: * @tparam TFs Font size. * @tparam TEnd Position string at end if true, or start if false. */ -template +template class DropDownString : public TBase { std::string string; ///< String to be drawn. Dimension dim; ///< Dimensions of string. @@ -136,7 +107,7 @@ public: * @tparam TBase Base component. * @tparam TEnd Position icon at end if true, or start if false. */ -template +template class DropDownIcon : public TBase { SpriteID sprite; ///< Sprite ID to be drawn. PaletteID palette; ///< Palette ID to use. @@ -174,7 +145,7 @@ public: * @tparam TFs Font size. * @tparam TEnd Position checkmark at end if true, or start if false. */ -template +template class DropDownCheck : public TBase { bool checked; ///< Is item checked. Dimension dim; ///< Dimension of checkmark. @@ -204,17 +175,4 @@ using DropDownListStringItem = DropDownString; using DropDownListIconItem = DropDownIcon>; using DropDownListCheckedItem = DropDownCheck>; -/** - * A drop down list is a collection of drop down list items. - */ -typedef std::vector> DropDownList; - -void ShowDropDownListAt(Window *w, DropDownList &&list, int selected, WidgetID button, Rect wi_rect, Colours wi_colour, bool instant_close = false, bool persist = false); - -void ShowDropDownList(Window *w, DropDownList &&list, int selected, WidgetID button, uint width = 0, bool instant_close = false, bool persist = false); - -Dimension GetDropDownListDimension(const DropDownList &list); - -void ReplaceDropDownList(Window *parent, DropDownList &&list); - -#endif /* WIDGETS_DROPDOWN_TYPE_H */ +#endif /* DROPDOWN_COMMON_TYPE_H */ diff --git a/src/dropdown_func.h b/src/dropdown_func.h new file mode 100644 index 0000000000..6aee0066f7 --- /dev/null +++ b/src/dropdown_func.h @@ -0,0 +1,26 @@ +/* + * This file is part of OpenTTD. + * OpenTTD 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, version 2. + * OpenTTD 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 OpenTTD. If not, see . + */ + +/** @file dropdown_func.h Functions related to the drop down widget. */ + +#ifndef DROPDOWN_FUNC_H +#define DROPDOWN_FUNC_H + +#include "window_gui.h" + +/* Show drop down menu containing a fixed list of strings */ +void ShowDropDownMenu(Window *w, std::span strings, int selected, WidgetID button, uint32_t disabled_mask, uint32_t hidden_mask, uint width = 0); + +/* Helper functions for commonly used drop down list items. */ +std::unique_ptr MakeDropDownListDividerItem(); +std::unique_ptr MakeDropDownListStringItem(StringID str, int value, bool masked = false, bool shaded = false); +std::unique_ptr MakeDropDownListStringItem(const std::string &str, int value, bool masked = false, bool shaded = false); +std::unique_ptr MakeDropDownListIconItem(SpriteID sprite, PaletteID palette, StringID str, int value, bool masked = false, bool shaded = false); +std::unique_ptr MakeDropDownListIconItem(const Dimension &dim, SpriteID sprite, PaletteID palette, StringID str, int value, bool masked = false, bool shaded = false); +std::unique_ptr MakeDropDownListCheckedItem(bool checked, StringID str, int value, bool masked = false, bool shaded = false); + +#endif /* DROPDOWN_FUNC_H */ diff --git a/src/dropdown_type.h b/src/dropdown_type.h new file mode 100644 index 0000000000..1a6cb71eb1 --- /dev/null +++ b/src/dropdown_type.h @@ -0,0 +1,60 @@ +/* + * This file is part of OpenTTD. + * OpenTTD 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, version 2. + * OpenTTD 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 OpenTTD. If not, see . + */ + +/** @file dropdown_type.h Types related to the drop down widget. */ + +#ifndef DROPDOWN_TYPE_H +#define DROPDOWN_TYPE_H + +#include "window_type.h" +#include "gfx_func.h" +#include "gfx_type.h" +#include "palette_func.h" +#include "window_gui.h" + +/** + * Base list item class from which others are derived. + */ +class DropDownListItem { +public: + int result; ///< Result value to return to window on selection. + bool masked; ///< Masked and unselectable item. + bool shaded; ///< Shaded item, affects text colour. + + explicit DropDownListItem(int result, bool masked = false, bool shaded = false) : result(result), masked(masked), shaded(shaded) {} + virtual ~DropDownListItem() = default; + + virtual bool Selectable() const { return true; } + virtual uint Height() const { return 0; } + virtual uint Width() const { return 0; } + + virtual void Draw(const Rect &full, const Rect &, bool, Colours bg_colour) const + { + if (this->masked) GfxFillRect(full, GetColourGradient(bg_colour, SHADE_LIGHT), FILLRECT_CHECKER); + } + + TextColour GetColour(bool sel) const + { + if (this->shaded) return (sel ? TC_SILVER : TC_GREY) | TC_NO_SHADE; + return sel ? TC_WHITE : TC_BLACK; + } +}; + +/** + * A drop down list is a collection of drop down list items. + */ +typedef std::vector> DropDownList; + +void ShowDropDownListAt(Window *w, DropDownList &&list, int selected, WidgetID button, Rect wi_rect, Colours wi_colour, bool instant_close = false, bool persist = false); + +void ShowDropDownList(Window *w, DropDownList &&list, int selected, WidgetID button, uint width = 0, bool instant_close = false, bool persist = false); + +Dimension GetDropDownListDimension(const DropDownList &list); + +void ReplaceDropDownList(Window *parent, DropDownList &&list); + +#endif /* DROPDOWN_TYPE_H */ diff --git a/src/economy.cpp b/src/economy.cpp index d699d8f5d0..cd99094239 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -118,7 +118,7 @@ static Money CalculateCompanyAssetValue(const Company *c) uint num = 0; for (const Station *st : Station::Iterate()) { - if (st->owner == owner) num += CountBits((byte)st->facilities); + if (st->owner == owner) num += CountBits((uint8_t)st->facilities); } Money value = num * _price[PR_STATION_VALUE] * 25; @@ -184,7 +184,7 @@ Money CalculateHostileTakeoverValue(const Company *c) } for (int quarter = 0; quarter < 4; quarter++) { - value += std::max(c->old_economy[quarter].income - c->old_economy[quarter].expenses, 0) * 2; + value += std::max(c->old_economy[quarter].income + c->old_economy[quarter].expenses, 0) * 2; } return std::max(value, 1); @@ -215,7 +215,7 @@ int UpdateCompanyRatingAndValue(Company *c, bool update) if (v->owner != owner) continue; if (IsCompanyBuildableVehicleType(v->type) && v->IsPrimaryVehicle()) { if (v->profit_last_year > 0) num++; // For the vehicle score only count profitable vehicles - if (v->age > 730) { + if (v->economy_age > VEHICLE_PROFIT_MIN_AGE) { /* Find the vehicle with the lowest amount of profit */ if (min_profit_first || min_profit > v->profit_last_year) { min_profit = v->profit_last_year; @@ -239,7 +239,7 @@ int UpdateCompanyRatingAndValue(Company *c, bool update) uint num = 0; for (const Station *st : Station::Iterate()) { /* Only count stations that are actually serviced */ - if (st->owner == owner && (st->time_since_load <= 20 || st->time_since_unload <= 20)) num += CountBits((byte)st->facilities); + if (st->owner == owner && (st->time_since_load <= 20 || st->time_since_unload <= 20)) num += CountBits((uint8_t)st->facilities); } _score_part[owner][SCORE_STATIONS] = num; } @@ -336,14 +336,14 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) /* We need to set _current_company to old_owner before we try to move * the client. This is needed as it needs to know whether "you" really * are the current local company. */ - Backup cur_company(_current_company, old_owner, FILE_LINE); + Backup cur_company(_current_company, old_owner); /* In all cases, make spectators of clients connected to that company */ if (_networking) NetworkClientsToSpectators(old_owner); if (old_owner == _local_company) { /* Single player cheated to AI company. * There are no spectators in singleplayer mode, so we must pick some other company. */ assert(!_networking); - Backup cur_company2(_current_company, FILE_LINE); + Backup cur_company2(_current_company); for (const Company *c : Company::Iterate()) { if (c->index != old_owner) { SetLocalCompany(c->index); @@ -424,23 +424,23 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) if (new_owner == INVALID_OWNER) { RemoveAllGroupsForCompany(old_owner); } else { + Company *c = Company::Get(old_owner); for (Group *g : Group::Iterate()) { - if (g->owner == old_owner) g->owner = new_owner; + if (g->owner == old_owner) { + g->owner = new_owner; + g->number = c->freegroups.UseID(c->freegroups.NextID()); + } } } { - FreeUnitIDGenerator unitidgen[] = { - FreeUnitIDGenerator(VEH_TRAIN, new_owner), FreeUnitIDGenerator(VEH_ROAD, new_owner), - FreeUnitIDGenerator(VEH_SHIP, new_owner), FreeUnitIDGenerator(VEH_AIRCRAFT, new_owner) - }; + Company *new_company = new_owner == INVALID_OWNER ? nullptr : Company::Get(new_owner); /* Override company settings to new company defaults in case we need to convert them. * This is required as the CmdChangeServiceInt doesn't copy the supplied value when it is non-custom */ if (new_owner != INVALID_OWNER) { Company *old_company = Company::Get(old_owner); - Company *new_company = Company::Get(new_owner); old_company->settings.vehicle.servint_aircraft = new_company->settings.vehicle.servint_aircraft; old_company->settings.vehicle.servint_trains = new_company->settings.vehicle.servint_trains; @@ -457,8 +457,6 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) * This prevents invalid values on mismatching company defaults being accepted. */ if (!v->ServiceIntervalIsCustom()) { - Company *new_company = Company::Get(new_owner); - /* Technically, passing the interval is not needed as the command will query the default value itself. * However, do not rely on that behaviour. */ @@ -477,7 +475,8 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) } if (v->IsPrimaryVehicle()) { GroupStatistics::CountVehicle(v, 1); - v->unitnumber = unitidgen[v->type].NextID(); + auto &unitidgen = new_company->freeunits[v->type]; + v->unitnumber = unitidgen.UseID(unitidgen.NextID()); } /* Invalidate the vehicle's cargo payment "owner cache". */ @@ -666,7 +665,7 @@ static void CompaniesGenStatistics() CompanyCheckBankrupt(c); } - Backup cur_company(_current_company, FILE_LINE); + Backup cur_company(_current_company); /* Pay Infrastructure Maintenance, if enabled */ if (_settings_game.economy.infrastructure_maintenance) { @@ -829,7 +828,7 @@ void RecomputePrices() /** Let all companies pay the monthly interest on their loan. */ static void CompaniesPayInterest() { - Backup cur_company(_current_company, FILE_LINE); + Backup cur_company(_current_company); for (const Company *c : Company::Iterate()) { cur_company.Change(c->index); @@ -1210,7 +1209,7 @@ CargoPayment::~CargoPayment() if (this->visual_profit == 0 && this->visual_transfer == 0) return; - Backup cur_company(_current_company, this->front->owner, FILE_LINE); + Backup cur_company(_current_company, this->front->owner); SubtractMoneyFromCompany(CommandCost(this->front->GetExpenseType(true), -this->route_profit)); this->front->profit_this_year += (this->visual_profit + this->visual_transfer) << 8; @@ -1306,7 +1305,7 @@ void PrepareUnload(Vehicle *front_v) front_v->last_station_visited, next_station, front_v->current_order.GetUnloadType(), ge, front_v->cargo_payment, - v->tile); + v->GetCargoTile()); if (v->cargo.UnloadCount() > 0) SetBit(v->vehicle_flags, VF_CARGO_UNLOADING); } } @@ -1446,7 +1445,7 @@ struct ReturnCargoAction */ bool operator()(Vehicle *v) { - v->cargo.Return(UINT_MAX, &this->st->goods[v->cargo_type].cargo, this->next_hop, v->tile); + v->cargo.Return(UINT_MAX, &this->st->goods[v->cargo_type].cargo, this->next_hop, v->GetCargoTile()); return true; } }; @@ -1481,7 +1480,7 @@ struct FinalizeRefitAction { if (this->do_reserve) { this->st->goods[v->cargo_type].cargo.Reserve(v->cargo_cap - v->cargo.RemainingCount(), - &v->cargo, this->next_station, v->tile); + &v->cargo, this->next_station, v->GetCargoTile()); } this->consist_capleft[v->cargo_type] += v->cargo_cap - v->cargo.RemainingCount(); return true; @@ -1501,7 +1500,7 @@ static void HandleStationRefit(Vehicle *v, CargoArray &consist_capleft, Station Vehicle *v_start = v->GetFirstEnginePart(); if (!IterateVehicleParts(v_start, IsEmptyAction())) return; - Backup cur_company(_current_company, v->owner, FILE_LINE); + Backup cur_company(_current_company, v->owner); CargoTypes refit_mask = v->GetEngine()->info.refit_mask; @@ -1572,7 +1571,7 @@ struct ReserveCargoAction { { if (v->cargo_cap > v->cargo.RemainingCount() && MayLoadUnderExclusiveRights(st, v)) { st->goods[v->cargo_type].cargo.Reserve(v->cargo_cap - v->cargo.RemainingCount(), - &v->cargo, *next_station, v->tile); + &v->cargo, *next_station, v->GetCargoTile()); } return true; @@ -1706,7 +1705,7 @@ static void LoadUnloadVehicle(Vehicle *front) uint new_remaining = v->cargo.RemainingCount() + v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER); if (v->cargo_cap < new_remaining) { /* Return some of the reserved cargo to not overload the vehicle. */ - v->cargo.Return(new_remaining - v->cargo_cap, &ge->cargo, INVALID_STATION, v->tile); + v->cargo.Return(new_remaining - v->cargo_cap, &ge->cargo, INVALID_STATION, v->GetCargoTile()); } /* Keep instead of delivering. This may lead to no cargo being unloaded, so ...*/ @@ -1733,7 +1732,7 @@ static void LoadUnloadVehicle(Vehicle *front) } } - amount_unloaded = v->cargo.Unload(amount_unloaded, &ge->cargo, payment, v->tile); + amount_unloaded = v->cargo.Unload(amount_unloaded, &ge->cargo, payment, v->GetCargoTile()); remaining = v->cargo.UnloadCount() > 0; if (amount_unloaded > 0) { dirty_vehicle = true; @@ -1803,7 +1802,7 @@ static void LoadUnloadVehicle(Vehicle *front) if (v->cargo.StoredCount() == 0) TriggerVehicle(v, VEHICLE_TRIGGER_NEW_CARGO); if (_settings_game.order.gradual_loading) cap_left = std::min(cap_left, GetLoadAmount(v)); - uint loaded = ge->cargo.Load(cap_left, &v->cargo, next_station, v->tile); + uint loaded = ge->cargo.Load(cap_left, &v->cargo, next_station, v->GetCargoTile()); if (v->cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0) { /* Remember if there are reservations left so that we don't stop * loading before they're loaded. */ @@ -2067,8 +2066,8 @@ CommandCost CmdBuyCompany(DoCommandFlag flags, CompanyID target_company, bool ho /* Do not allow companies to take over themselves */ if (target_company == _current_company) return CMD_ERROR; - /* Disable taking over when not allowed. */ - if (!MayCompanyTakeOver(_current_company, target_company)) return CMD_ERROR; + /* Do not allow takeover if the resulting company would have too many vehicles. */ + if (!CheckTakeoverVehicleLimit(_current_company, target_company)) return_cmd_error(STR_ERROR_TOO_MANY_VEHICLES_IN_GAME); /* Get the cost here as the company is deleted in DoAcquireCompany. * For bankruptcy this amount is calculated when the offer was made; diff --git a/src/economy_type.h b/src/economy_type.h index 26474b7b9d..e4d0ea077a 100644 --- a/src/economy_type.h +++ b/src/economy_type.h @@ -43,9 +43,9 @@ static const int DEF_CARGO_SCALE = 100; struct Economy { Money max_loan; ///< NOSAVE: Maximum possible loan int16_t fluct; ///< Economy fluctuation status - byte interest_rate; ///< Interest - byte infl_amount; ///< inflation amount - byte infl_amount_pr; ///< inflation rate for payment rates + uint8_t interest_rate; ///< Interest + uint8_t infl_amount; ///< inflation amount + uint8_t infl_amount_pr; ///< inflation rate for payment rates uint32_t industry_daily_change_counter; ///< Bits 31-16 are number of industry to be performed, 15-0 are fractional collected daily uint32_t industry_daily_increment; ///< The value which will increment industry_daily_change_counter. Computed value. NOSAVE uint64_t inflation_prices; ///< Cumulated inflation of prices since game start; 16 bit fractional part @@ -169,7 +169,7 @@ typedef Money Prices[PR_END]; ///< Prices of everything. @see Price typedef int8_t PriceMultipliers[PR_END]; /** Types of expenses. */ -enum ExpensesType : byte { +enum ExpensesType : uint8_t { EXPENSES_CONSTRUCTION = 0, ///< Construction costs. EXPENSES_NEW_VEHICLES, ///< New vehicles. EXPENSES_TRAIN_RUN, ///< Running costs trains. diff --git a/src/effectvehicle.cpp b/src/effectvehicle.cpp index 3db32f9d97..8fe7b2b012 100644 --- a/src/effectvehicle.cpp +++ b/src/effectvehicle.cpp @@ -245,9 +245,9 @@ static void BulldozerInit(EffectVehicle *v) } struct BulldozerMovement { - byte direction:2; - byte image:2; - byte duration:3; + uint8_t direction:2; + uint8_t image:2; + uint8_t duration:3; }; static const BulldozerMovement _bulldozer_movement[] = { @@ -320,7 +320,7 @@ struct BubbleMovement { int8_t x:4; int8_t y:4; int8_t z:4; - byte image:4; + uint8_t image:4; }; #define MK(x, y, z, i) { x, y, z, i } @@ -527,61 +527,33 @@ static bool BubbleTick(EffectVehicle *v) return true; } +struct EffectProcs { + using InitProc = void(EffectVehicle *); + using TickProc = bool(EffectVehicle *); -typedef void EffectInitProc(EffectVehicle *v); -typedef bool EffectTickProc(EffectVehicle *v); + InitProc *init_proc; ///< Function to initialise an effect vehicle after construction. + TickProc *tick_proc; ///< Functions for controlling effect vehicles at each tick. + TransparencyOption transparency; ///< Transparency option affecting the effect. -/** Functions to initialise an effect vehicle after construction. */ -static EffectInitProc * const _effect_init_procs[] = { - ChimneySmokeInit, // EV_CHIMNEY_SMOKE - SteamSmokeInit, // EV_STEAM_SMOKE - DieselSmokeInit, // EV_DIESEL_SMOKE - ElectricSparkInit, // EV_ELECTRIC_SPARK - SmokeInit, // EV_CRASH_SMOKE - ExplosionLargeInit, // EV_EXPLOSION_LARGE - BreakdownSmokeInit, // EV_BREAKDOWN_SMOKE - ExplosionSmallInit, // EV_EXPLOSION_SMALL - BulldozerInit, // EV_BULLDOZER - BubbleInit, // EV_BUBBLE - SmokeInit, // EV_BREAKDOWN_SMOKE_AIRCRAFT - SmokeInit, // EV_COPPER_MINE_SMOKE + constexpr EffectProcs(InitProc *init_proc, TickProc *tick_proc, TransparencyOption transparency) + : init_proc(init_proc), tick_proc(tick_proc), transparency(transparency) {} }; -static_assert(lengthof(_effect_init_procs) == EV_END); - -/** Functions for controlling effect vehicles at each tick. */ -static EffectTickProc * const _effect_tick_procs[] = { - ChimneySmokeTick, // EV_CHIMNEY_SMOKE - SteamSmokeTick, // EV_STEAM_SMOKE - DieselSmokeTick, // EV_DIESEL_SMOKE - ElectricSparkTick, // EV_ELECTRIC_SPARK - SmokeTick, // EV_CRASH_SMOKE - ExplosionLargeTick, // EV_EXPLOSION_LARGE - BreakdownSmokeTick, // EV_BREAKDOWN_SMOKE - ExplosionSmallTick, // EV_EXPLOSION_SMALL - BulldozerTick, // EV_BULLDOZER - BubbleTick, // EV_BUBBLE - SmokeTick, // EV_BREAKDOWN_SMOKE_AIRCRAFT - SmokeTick, // EV_COPPER_MINE_SMOKE -}; -static_assert(lengthof(_effect_tick_procs) == EV_END); - -/** Transparency options affecting the effects. */ -static const TransparencyOption _effect_transparency_options[] = { - TO_INDUSTRIES, // EV_CHIMNEY_SMOKE - TO_INVALID, // EV_STEAM_SMOKE - TO_INVALID, // EV_DIESEL_SMOKE - TO_INVALID, // EV_ELECTRIC_SPARK - TO_INVALID, // EV_CRASH_SMOKE - TO_INVALID, // EV_EXPLOSION_LARGE - TO_INVALID, // EV_BREAKDOWN_SMOKE - TO_INVALID, // EV_EXPLOSION_SMALL - TO_INVALID, // EV_BULLDOZER - TO_INDUSTRIES, // EV_BUBBLE - TO_INVALID, // EV_BREAKDOWN_SMOKE_AIRCRAFT - TO_INDUSTRIES, // EV_COPPER_MINE_SMOKE -}; -static_assert(lengthof(_effect_transparency_options) == EV_END); +/** Per-EffectVehicleType handling. */ +static std::array _effect_procs = {{ + { ChimneySmokeInit, ChimneySmokeTick, TO_INDUSTRIES }, // EV_CHIMNEY_SMOKE + { SteamSmokeInit, SteamSmokeTick, TO_INVALID }, // EV_STEAM_SMOKE + { DieselSmokeInit, DieselSmokeTick, TO_INVALID }, // EV_DIESEL_SMOKE + { ElectricSparkInit, ElectricSparkTick, TO_INVALID }, // EV_ELECTRIC_SPARK + { SmokeInit, SmokeTick, TO_INVALID }, // EV_CRASH_SMOKE + { ExplosionLargeInit, ExplosionLargeTick, TO_INVALID }, // EV_EXPLOSION_LARGE + { BreakdownSmokeInit, BreakdownSmokeTick, TO_INVALID }, // EV_BREAKDOWN_SMOKE + { ExplosionSmallInit, ExplosionSmallTick, TO_INVALID }, // EV_EXPLOSION_SMALL + { BulldozerInit, BulldozerTick, TO_INVALID }, // EV_BULLDOZER + { BubbleInit, BubbleTick, TO_INDUSTRIES }, // EV_BUBBLE + { SmokeInit, SmokeTick, TO_INVALID }, // EV_BREAKDOWN_SMOKE_AIRCRAFT + { SmokeInit, SmokeTick, TO_INDUSTRIES }, // EV_COPPER_MINE_SMOKE +}}; /** * Create an effect vehicle at a particular location. @@ -604,7 +576,7 @@ EffectVehicle *CreateEffectVehicle(int x, int y, int z, EffectVehicleType type) v->UpdateDeltaXY(); v->vehstatus = VS_UNCLICKABLE; - _effect_init_procs[type](v); + _effect_procs[type].init_proc(v); v->UpdatePositionAndViewport(); @@ -642,7 +614,7 @@ EffectVehicle *CreateEffectVehicleRel(const Vehicle *v, int x, int y, int z, Eff bool EffectVehicle::Tick() { - return _effect_tick_procs[this->subtype](this); + return _effect_procs[this->subtype].tick_proc(this); } void EffectVehicle::UpdateDeltaXY() @@ -660,5 +632,5 @@ void EffectVehicle::UpdateDeltaXY() */ TransparencyOption EffectVehicle::GetTransparencyOption() const { - return _effect_transparency_options[this->subtype]; + return _effect_procs[this->subtype].transparency; } diff --git a/src/effectvehicle_base.h b/src/effectvehicle_base.h index 2c0d2744c5..ae064d92ff 100644 --- a/src/effectvehicle_base.h +++ b/src/effectvehicle_base.h @@ -23,7 +23,7 @@ */ struct EffectVehicle final : public SpecializedVehicle { uint16_t animation_state; ///< State primarily used to change the graphics/behaviour. - byte animation_substate; ///< Sub state to time the change of the graphics/behaviour. + uint8_t animation_substate; ///< Sub state to time the change of the graphics/behaviour. /** We don't want GCC to zero our struct! It already is zeroed and has an index! */ EffectVehicle() : SpecializedVehicleBase() {} diff --git a/src/elrail.cpp b/src/elrail.cpp index 20fb2facce..334a50042d 100644 --- a/src/elrail.cpp +++ b/src/elrail.cpp @@ -83,7 +83,7 @@ static inline TLG GetTLG(TileIndex t) * @param override pointer to PCP override, can be nullptr * @return trackbits of tile if it is electrified */ -static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override) +static TrackBits GetRailTrackBitsUniversal(TileIndex t, uint8_t *override) { switch (GetTileType(t)) { case MP_RAILWAY: @@ -295,10 +295,10 @@ static void DrawRailCatenaryRailway(const TileInfo *ti) } TLG tlg = GetTLG(ti->tile); - byte PCPstatus = 0; - byte OverridePCP = 0; - byte PPPpreferred[DIAGDIR_END]; - byte PPPallowed[DIAGDIR_END]; + uint8_t PCPstatus = 0; + uint8_t OverridePCP = 0; + uint8_t PPPpreferred[DIAGDIR_END]; + uint8_t PPPallowed[DIAGDIR_END]; /* Find which rail bits are present, and select the override points. * We don't draw a pylon: @@ -389,7 +389,7 @@ static void DrawRailCatenaryRailway(const TileInfo *ti) foundation = GetBridgeFoundation(tileh[TS_NEIGHBOUR], DiagDirToAxis(GetTunnelBridgeDirection(neighbour))); } - ApplyFoundationToSlope(foundation, &tileh[TS_NEIGHBOUR]); + ApplyFoundationToSlope(foundation, tileh[TS_NEIGHBOUR]); /* Half tile slopes coincide only with horizontal/vertical track. * Faking a flat slope results in the correct sprites on positions. */ @@ -425,7 +425,7 @@ static void DrawRailCatenaryRailway(const TileInfo *ti) if (PPPallowed[i] != 0 && HasBit(PCPstatus, i) && !HasBit(OverridePCP, i) && (!IsRailStationTile(ti->tile) || CanStationTileHavePylons(ti->tile))) { for (Direction k = DIR_BEGIN; k < DIR_END; k++) { - byte temp = PPPorder[i][GetTLG(ti->tile)][k]; + uint8_t temp = PPPorder[i][GetTLG(ti->tile)][k]; if (HasBit(PPPallowed[i], temp)) { uint x = ti->x + x_pcp_offsets[i] + x_ppp_offsets[temp]; @@ -474,7 +474,7 @@ static void DrawRailCatenaryRailway(const TileInfo *ti) /* Drawing of pylons is finished, now draw the wires */ for (Track t : SetTrackBitIterator(wireconfig[TS_HOME])) { SpriteID wire_base = (t == halftile_track) ? wire_halftile : wire_normal; - byte PCPconfig = HasBit(PCPstatus, PCPpositions[t][0]) + + uint8_t PCPconfig = HasBit(PCPstatus, PCPpositions[t][0]) + (HasBit(PCPstatus, PCPpositions[t][1]) << 1); const SortableSpriteStruct *sss; diff --git a/src/engine_base.h b/src/engine_base.h index f52d3bd3b7..de552bd9a7 100644 --- a/src/engine_base.h +++ b/src/engine_base.h @@ -23,7 +23,7 @@ struct WagonOverride { }; /** Flags used client-side in the purchase/autorenew engine list. */ -enum class EngineDisplayFlags : byte { +enum class EngineDisplayFlags : uint8_t { None = 0, ///< No flag set. HasVariants = (1U << 0), ///< Set if engine has variants. IsFolded = (1U << 1), ///< Set if display of variants should be folded (hidden). @@ -46,10 +46,10 @@ struct Engine : EnginePool::PoolItem<&_engine_pool> { uint16_t duration_phase_1; ///< First reliability phase in months, increasing reliability from #reliability_start to #reliability_max. uint16_t duration_phase_2; ///< Second reliability phase in months, keeping #reliability_max. uint16_t duration_phase_3; ///< Third reliability phase in months, decaying to #reliability_final. - byte flags; ///< Flags of the engine. @see EngineFlags + uint8_t flags; ///< Flags of the engine. @see EngineFlags CompanyMask preview_asked; ///< Bit for each company which has already been offered a preview. CompanyID preview_company; ///< Company which is currently being offered a preview \c INVALID_COMPANY means no company. - byte preview_wait; ///< Daily countdown timer for timeout of offering the engine to the #preview_company company. + uint8_t preview_wait; ///< Daily countdown timer for timeout of offering the engine to the #preview_company company. CompanyMask company_avail; ///< Bit for each company whether the engine is available for that company. CompanyMask company_hidden; ///< Bit for each company whether the engine is normally hidden in the build gui for that company. uint8_t original_image_index; ///< Original vehicle image index, thus the image index of the overridden vehicle diff --git a/src/engine_gui.cpp b/src/engine_gui.cpp index 4742e6e234..7145b85c50 100644 --- a/src/engine_gui.cpp +++ b/src/engine_gui.cpp @@ -70,7 +70,7 @@ static constexpr NWidgetPart _nested_engine_preview_widgets[] = { struct EnginePreviewWindow : Window { int vehicle_space; // The space to show the vehicle image - EnginePreviewWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + EnginePreviewWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->InitNested(window_number); @@ -78,7 +78,7 @@ struct EnginePreviewWindow : Window { this->flags |= WF_STICKY; } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_EP_QUESTION) return; @@ -98,11 +98,11 @@ struct EnginePreviewWindow : Window { } this->vehicle_space = std::max(ScaleSpriteTrad(40), y - y_offs); - size->width = std::max(size->width, x - x_offs); + size.width = std::max(size.width, x + std::abs(x_offs)); SetDParam(0, GetEngineCategoryName(engine)); - size->height = GetStringHeight(STR_ENGINE_PREVIEW_MESSAGE, size->width) + WidgetDimensions::scaled.vsep_wide + GetCharacterHeight(FS_NORMAL) + this->vehicle_space; + size.height = GetStringHeight(STR_ENGINE_PREVIEW_MESSAGE, size.width) + WidgetDimensions::scaled.vsep_wide + GetCharacterHeight(FS_NORMAL) + this->vehicle_space; SetDParam(0, engine); - size->height += GetStringHeight(GetEngineInfoString(engine), size->width); + size.height += GetStringHeight(GetEngineInfoString(engine), size.width); } void DrawWidget(const Rect &r, WidgetID widget) const override @@ -144,17 +144,17 @@ struct EnginePreviewWindow : Window { } }; -static WindowDesc _engine_preview_desc(__FILE__, __LINE__, +static WindowDesc _engine_preview_desc( WDP_CENTER, nullptr, 0, 0, WC_ENGINE_PREVIEW, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_engine_preview_widgets), std::end(_nested_engine_preview_widgets) + _nested_engine_preview_widgets ); void ShowEnginePreviewWindow(EngineID engine) { - AllocateWindowDescFront(&_engine_preview_desc, engine); + AllocateWindowDescFront(_engine_preview_desc, engine); } /** diff --git a/src/engine_gui.h b/src/engine_gui.h index c6a20cb327..5e2d5fe336 100644 --- a/src/engine_gui.h +++ b/src/engine_gui.h @@ -11,6 +11,7 @@ #define ENGINE_GUI_H #include "engine_type.h" +#include "group_type.h" #include "sortlist_type.h" #include "gfx_type.h" #include "vehicle_type.h" @@ -20,9 +21,10 @@ struct GUIEngineListItem { EngineID engine_id; ///< Engine to display in build purchase list EngineID variant_id; ///< Variant group of the engine. EngineDisplayFlags flags; ///< Flags for toggling/drawing (un)folded status and controlling indentation. - int8_t indent; ///< Display indentation level. + uint8_t indent; ///< Display indentation level. + uint16_t level_mask; ///< Mask of level continuations. - GUIEngineListItem(EngineID engine_id, EngineID variant_id, EngineDisplayFlags flags, int indent) : engine_id(engine_id), variant_id(variant_id), flags(flags), indent(indent) {} + GUIEngineListItem(EngineID engine_id, EngineID variant_id, EngineDisplayFlags flags, uint8_t indent) : engine_id(engine_id), variant_id(variant_id), flags(flags), indent(indent), level_mask(0) {} /* Used when searching list only by engine_id. */ bool operator == (const EngineID &other) const { return this->engine_id == other; } @@ -44,13 +46,16 @@ void DrawShipEngine(int left, int right, int preferred_x, int y, EngineID engine void DrawAircraftEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type); extern bool _engine_sort_direction; -extern byte _engine_sort_last_criteria[]; +extern uint8_t _engine_sort_last_criteria[]; extern bool _engine_sort_last_order[]; extern bool _engine_sort_show_hidden_engines[]; -extern const StringID _engine_sort_listing[][12]; +extern const std::initializer_list _engine_sort_listing[]; extern EngList_SortTypeFunction * const _engine_sort_functions[][11]; +/* Functions in build_vehicle_gui.cpp */ uint GetEngineListHeight(VehicleType type); void DisplayVehicleSortDropDown(Window *w, VehicleType vehicle_type, int selected, WidgetID button); +void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_list, const Scrollbar &sb, EngineID selected_id, bool show_count, GroupID selected_group); +void GUIEngineListAddChildren(GUIEngineList &dst, const GUIEngineList &src, EngineID parent = INVALID_ENGINE, uint8_t indent = 0); #endif /* ENGINE_GUI_H */ diff --git a/src/engine_type.h b/src/engine_type.h index be4416ef7b..d5a28ced3e 100644 --- a/src/engine_type.h +++ b/src/engine_type.h @@ -40,42 +40,42 @@ enum EngineClass { /** Information about a rail vehicle. */ struct RailVehicleInfo { - byte image_index; + uint8_t image_index; RailVehicleTypes railveh_type; - byte cost_factor; ///< Purchase cost factor; For multiheaded engines the sum of both engine prices. + uint8_t cost_factor; ///< Purchase cost factor; For multiheaded engines the sum of both engine prices. RailType railtype; ///< Railtype, mangled if elrail is disabled. RailType intended_railtype; ///< Intended railtype, regardless of elrail being enabled or disabled. uint16_t max_speed; ///< Maximum speed (1 unit = 1/1.6 mph = 1 km-ish/h) uint16_t power; ///< Power of engine (hp); For multiheaded engines the sum of both engine powers. uint16_t weight; ///< Weight of vehicle (tons); For multiheaded engines the weight of each single engine. - byte running_cost; ///< Running cost of engine; For multiheaded engines the sum of both running costs. + uint8_t running_cost; ///< Running cost of engine; For multiheaded engines the sum of both running costs. Price running_cost_class; EngineClass engclass; ///< Class of engine for this vehicle - byte capacity; ///< Cargo capacity of vehicle; For multiheaded engines the capacity of each single engine. - byte ai_passenger_only; ///< Bit value to tell AI that this engine is for passenger use only + uint8_t capacity; ///< Cargo capacity of vehicle; For multiheaded engines the capacity of each single engine. + uint8_t ai_passenger_only; ///< Bit value to tell AI that this engine is for passenger use only uint16_t pow_wag_power; ///< Extra power applied to consist if wagon should be powered - byte pow_wag_weight; ///< Extra weight applied to consist if wagon should be powered - byte visual_effect; ///< Bitstuffed NewGRF visual effect data - byte shorten_factor; ///< length on main map for this type is 8 - shorten_factor - byte tractive_effort; ///< Tractive effort coefficient - byte air_drag; ///< Coefficient of air drag - byte user_def_data; ///< Property 0x25: "User-defined bit mask" Used only for (very few) NewGRF vehicles + uint8_t pow_wag_weight; ///< Extra weight applied to consist if wagon should be powered + uint8_t visual_effect; ///< Bitstuffed NewGRF visual effect data + uint8_t shorten_factor; ///< length on main map for this type is 8 - shorten_factor + uint8_t tractive_effort; ///< Tractive effort coefficient + uint8_t air_drag; ///< Coefficient of air drag + uint8_t user_def_data; ///< Property 0x25: "User-defined bit mask" Used only for (very few) NewGRF vehicles int16_t curve_speed_mod; ///< Modifier to maximum speed in curves (fixed-point binary with 8 fractional bits) }; /** Information about a ship vehicle. */ struct ShipVehicleInfo { - byte image_index; - byte cost_factor; + uint8_t image_index; + uint8_t cost_factor; uint8_t acceleration; ///< Acceleration (1 unit = 1/3.2 mph per tick = 0.5 km-ish/h per tick) uint16_t max_speed; ///< Maximum speed (1 unit = 1/3.2 mph = 0.5 km-ish/h) uint16_t capacity; - byte running_cost; + uint8_t running_cost; SoundID sfx; bool old_refittable; ///< Is ship refittable; only used during initialisation. Later use EngineInfo::refit_mask. - byte visual_effect; ///< Bitstuffed NewGRF visual effect data - byte ocean_speed_frac; ///< Fraction of maximum speed for ocean tiles. - byte canal_speed_frac; ///< Fraction of maximum speed for canal/river tiles. + uint8_t visual_effect; ///< Bitstuffed NewGRF visual effect data + uint8_t ocean_speed_frac; ///< Fraction of maximum speed for ocean tiles. + uint8_t canal_speed_frac; ///< Fraction of maximum speed for canal/river tiles. /** Apply ocean/canal speed fraction to a velocity */ uint ApplyWaterClassSpeedFrac(uint raw_speed, bool is_ocean) const @@ -98,33 +98,33 @@ enum AircraftSubTypeBits { /** Information about a aircraft vehicle. */ struct AircraftVehicleInfo { - byte image_index; - byte cost_factor; - byte running_cost; - byte subtype; ///< Type of aircraft. @see AircraftSubTypeBits + uint8_t image_index; + uint8_t cost_factor; + uint8_t running_cost; + uint8_t subtype; ///< Type of aircraft. @see AircraftSubTypeBits SoundID sfx; - byte acceleration; + uint8_t acceleration; uint16_t max_speed; ///< Maximum speed (1 unit = 8 mph = 12.8 km-ish/h) - byte mail_capacity; ///< Mail capacity (bags). + uint8_t mail_capacity; ///< Mail capacity (bags). uint16_t passenger_capacity; ///< Passenger capacity (persons). uint16_t max_range; ///< Maximum range of this aircraft. }; /** Information about a road vehicle. */ struct RoadVehicleInfo { - byte image_index; - byte cost_factor; - byte running_cost; + uint8_t image_index; + uint8_t cost_factor; + uint8_t running_cost; Price running_cost_class; SoundID sfx; uint16_t max_speed; ///< Maximum speed (1 unit = 1/3.2 mph = 0.5 km-ish/h) - byte capacity; + uint8_t capacity; uint8_t weight; ///< Weight in 1/4t units uint8_t power; ///< Power in 10hp units uint8_t tractive_effort; ///< Coefficient of tractive effort uint8_t air_drag; ///< Coefficient of air drag - byte visual_effect; ///< Bitstuffed NewGRF visual effect data - byte shorten_factor; ///< length on main map for this type is 8 - shorten_factor + uint8_t visual_effect; ///< Bitstuffed NewGRF visual effect data + uint8_t shorten_factor; ///< length on main map for this type is 8 - shorten_factor RoadType roadtype; ///< Road type }; @@ -145,14 +145,14 @@ struct EngineInfo { TimerGameCalendar::Date base_intro; ///< Basic date of engine introduction (without random parts). TimerGameCalendar::Year lifelength; ///< Lifetime of a single vehicle TimerGameCalendar::Year base_life; ///< Basic duration of engine availability (without random parts). \c 0xFF means infinite life. - byte decay_speed; - byte load_amount; - byte climates; ///< Climates supported by the engine. + uint8_t decay_speed; + uint8_t load_amount; + uint8_t climates; ///< Climates supported by the engine. CargoID cargo_type; std::variant cargo_label; CargoTypes refit_mask; - byte refit_cost; - byte misc_flags; ///< Miscellaneous flags. @see EngineMiscFlags + uint8_t refit_cost; + uint8_t misc_flags; ///< Miscellaneous flags. @see EngineMiscFlags uint16_t callback_mask; ///< Bitmask of vehicle callbacks that have to be called int8_t retire_early; ///< Number of years early to retire vehicle StringID string_id; ///< Default name of engine diff --git a/src/error.cpp b/src/error.cpp index a1cba7d02e..cd56785942 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -10,12 +10,12 @@ #include "stdafx.h" #include "error_func.h" -[[noreturn]] void NotReachedError(int line, const char *file) +[[noreturn]] void NOT_REACHED(const std::source_location location) { - FatalError("NOT_REACHED triggered at line {} of {}", line, file); + FatalError("NOT_REACHED triggered at line {} of {}", location.line(), location.file_name()); } -[[noreturn]] void AssertFailedError(int line, const char *file, const char *expression) +[[noreturn]] void AssertFailedError(const char *expression, const std::source_location location) { - FatalError("Assertion failed at line {} of {}: {}", line, file, expression); + FatalError("Assertion failed at line {} of {}: {}", location.line(), location.file_name(), expression); } diff --git a/src/error_gui.cpp b/src/error_gui.cpp index b1cb2b0fe9..d6877fcd4b 100644 --- a/src/error_gui.cpp +++ b/src/error_gui.cpp @@ -43,11 +43,11 @@ static constexpr NWidgetPart _nested_errmsg_widgets[] = { EndContainer(), }; -static WindowDesc _errmsg_desc(__FILE__, __LINE__, +static WindowDesc _errmsg_desc( WDP_MANUAL, nullptr, 0, 0, WC_ERRMSG, WC_NONE, 0, - std::begin(_nested_errmsg_widgets), std::end(_nested_errmsg_widgets) + _nested_errmsg_widgets ); static constexpr NWidgetPart _nested_errmsg_face_widgets[] = { @@ -63,11 +63,11 @@ static constexpr NWidgetPart _nested_errmsg_face_widgets[] = { EndContainer(), }; -static WindowDesc _errmsg_face_desc(__FILE__, __LINE__, +static WindowDesc _errmsg_face_desc( WDP_MANUAL, nullptr, 0, 0, WC_ERRMSG, WC_NONE, 0, - std::begin(_nested_errmsg_face_widgets), std::end(_nested_errmsg_face_widgets) + _nested_errmsg_face_widgets ); /** @@ -175,7 +175,7 @@ private: public: ErrmsgWindow(const ErrorMessageData &data) : - Window(data.HasFace() ? &_errmsg_face_desc : &_errmsg_desc), + Window(data.HasFace() ? _errmsg_face_desc : _errmsg_desc), ErrorMessageData(data), display_timeout(std::chrono::seconds(3 * _settings_client.gui.errmsg_duration), [this]() { this->Close(); @@ -189,16 +189,16 @@ public: } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_EM_MESSAGE: { CopyInDParam(this->params); if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack); - this->height_summary = GetStringHeight(this->summary_msg, size->width); - this->height_detailed = (this->detailed_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->detailed_msg, size->width); - this->height_extra = (this->extra_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->extra_msg, size->width); + this->height_summary = GetStringHeight(this->summary_msg, size.width); + this->height_detailed = (this->detailed_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->detailed_msg, size.width); + this->height_extra = (this->extra_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->extra_msg, size.width); if (this->textref_stack_size > 0) StopTextRefStackUsage(); @@ -206,11 +206,11 @@ public: if (this->detailed_msg != INVALID_STRING_ID) panel_height += this->height_detailed + WidgetDimensions::scaled.vsep_wide; if (this->extra_msg != INVALID_STRING_ID) panel_height += this->height_extra + WidgetDimensions::scaled.vsep_wide; - size->height = std::max(size->height, panel_height); + size.height = std::max(size.height, panel_height); break; } case WID_EM_FACE: - *size = maxdim(*size, GetScaledSpriteSize(SPR_GRADIENT)); + size = maxdim(size, GetScaledSpriteSize(SPR_GRADIENT)); break; } } @@ -348,7 +348,7 @@ void ShowFirstError() */ void UnshowCriticalError() { - ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0); + ErrmsgWindow *w = dynamic_cast(FindWindowById(WC_ERRMSG, 0)); if (_window_system_initialized && w != nullptr) { if (w->IsCritical()) _error_list.push_front(*w); _window_system_initialized = false; @@ -414,7 +414,7 @@ void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel ErrorMessageData data(summary_msg, detailed_msg, is_critical, x, y, textref_stack_grffile, textref_stack_size, textref_stack, extra_msg); data.CopyOutDParams(); - ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0); + ErrmsgWindow *w = dynamic_cast(FindWindowById(WC_ERRMSG, 0)); if (w != nullptr) { if (w->IsCritical()) { /* A critical error is currently shown. */ @@ -438,7 +438,7 @@ void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel */ bool HideActiveErrorMessage() { - ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0); + ErrmsgWindow *w = dynamic_cast(FindWindowById(WC_ERRMSG, 0)); if (w == nullptr) return false; w->Close(); return true; diff --git a/src/fileio.cpp b/src/fileio.cpp index fc892ed242..98b2f7fa5c 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -16,7 +16,6 @@ #include "tar_type.h" #ifdef _WIN32 #include -# define access _taccess #elif defined(__HAIKU__) #include #include @@ -24,6 +23,7 @@ #include #include #endif +#include #include #include #include @@ -67,11 +67,6 @@ std::vector _valid_searchpaths; std::array _tar_list; TarFileList _tar_filelist[NUM_SUBDIRS]; -typedef std::map TarLinkList; -static TarLinkList _tar_linklist[NUM_SUBDIRS]; ///< List of directory links - -extern bool FiosIsValidFile(const std::string &path, const struct dirent *ent, struct stat *sb); - /** * Checks whether the given search path is a valid search path * @param sp the search path to check @@ -88,7 +83,7 @@ static void FillValidSearchPaths(bool only_local_path) std::set seen{}; for (Searchpath sp = SP_FIRST_DIR; sp < NUM_SEARCHPATHS; sp++) { - if (sp == SP_WORKING_DIR) continue; + if (sp == SP_WORKING_DIR && !_do_scan_working_directory) continue; if (only_local_path) { switch (sp) { @@ -139,7 +134,8 @@ bool FioCheckFileExists(const std::string &filename, Subdirectory subdir) */ bool FileExists(const std::string &filename) { - return access(OTTD2FS(filename).c_str(), 0) == 0; + std::error_code ec; + return std::filesystem::exists(OTTD2FS(filename), ec); } /** @@ -203,7 +199,7 @@ static FILE *FioFOpenFileSp(const std::string &filename, const char *mode, Searc * a string, but a variable, it 'renames' the variable, * so make that variable to makes it compile happily */ wchar_t Lmode[5]; - MultiByteToWideChar(CP_ACP, 0, mode, -1, Lmode, lengthof(Lmode)); + MultiByteToWideChar(CP_ACP, 0, mode, -1, Lmode, static_cast(std::size(Lmode))); #endif FILE *f = nullptr; std::string buf; @@ -214,10 +210,6 @@ static FILE *FioFOpenFileSp(const std::string &filename, const char *mode, Searc buf = _searchpaths[sp] + _subdirs[subdir] + filename; } -#if defined(_WIN32) - if (mode[0] == 'r' && GetFileAttributes(OTTD2FS(buf).c_str()) == INVALID_FILE_ATTRIBUTES) return nullptr; -#endif - f = fopen(buf.c_str(), mode); #if !defined(_WIN32) if (f == nullptr && strtolower(buf, subdir == NO_DIRECTORY ? 0 : _searchpaths[sp].size() - 1) ) { @@ -303,17 +295,6 @@ FILE *FioFOpenFile(const std::string &filename, const char *mode, Subdirectory s first = false; } - /* Resolve ONE directory link */ - for (const auto &link : _tar_linklist[subdir]) { - const std::string &src = link.first; - size_t len = src.length(); - if (resolved_name.length() >= len && resolved_name[len - 1] == PATHSEPCHAR && src.compare(0, len, resolved_name, 0, len) == 0) { - /* Apply link */ - resolved_name.replace(0, len, link.second); - break; // Only resolve one level - } - } - TarFileList::iterator it = _tar_filelist[subdir].find(resolved_name); if (it != _tar_filelist[subdir].end()) { f = FioFOpenFileTar(it->second, filesize); @@ -348,24 +329,26 @@ FILE *FioFOpenFile(const std::string &filename, const char *mode, Subdirectory s */ void FioCreateDirectory(const std::string &name) { - auto p = name.find_last_of(PATHSEPCHAR); - if (p != std::string::npos) { - std::string dirname = name.substr(0, p); - DIR *dir = ttd_opendir(dirname.c_str()); - if (dir == nullptr) { - FioCreateDirectory(dirname); // Try creating the parent directory, if we couldn't open it - } else { - closedir(dir); - } - } + /* Ignore directory creation errors; they'll surface later on. */ + std::error_code error_code; + std::filesystem::create_directories(OTTD2FS(name), error_code); +} - /* Ignore directory creation errors; they'll surface later on, and most - * of the time they are 'directory already exists' errors anyhow. */ -#if defined(_WIN32) - CreateDirectory(OTTD2FS(name).c_str(), nullptr); -#else - mkdir(OTTD2FS(name).c_str(), 0755); -#endif +/** + * Remove a file. + * @param filename Filename to remove. + * @return true iff the file was removed. + */ +bool FioRemove(const std::string &filename) +{ + std::filesystem::path path = OTTD2FS(filename); + std::error_code error_code; + std::filesystem::remove(path, error_code); + if (error_code) { + Debug(misc, 0, "Removing {} failed: {}", filename, error_code.message()); + return false; + } + return true; } /** @@ -381,27 +364,6 @@ void AppendPathSeparator(std::string &buf) if (buf.back() != PATHSEPCHAR) buf.push_back(PATHSEPCHAR); } -static void TarAddLink(const std::string &srcParam, const std::string &destParam, Subdirectory subdir) -{ - std::string src = srcParam; - std::string dest = destParam; - /* Tar internals assume lowercase */ - std::transform(src.begin(), src.end(), src.begin(), tolower); - std::transform(dest.begin(), dest.end(), dest.begin(), tolower); - - TarFileList::iterator dest_file = _tar_filelist[subdir].find(dest); - if (dest_file != _tar_filelist[subdir].end()) { - /* Link to file. Process the link like the destination file. */ - _tar_filelist[subdir].insert(TarFileList::value_type(src, dest_file->second)); - } else { - /* Destination file not found. Assume 'link to directory' - * Append PATHSEPCHAR to 'src' and 'dest' if needed */ - const std::string src_path = ((*src.rbegin() == PATHSEPCHAR) ? src : src + PATHSEPCHAR); - const std::string dst_path = (dest.length() == 0 ? "" : ((*dest.rbegin() == PATHSEPCHAR) ? dest : dest + PATHSEPCHAR)); - _tar_linklist[subdir].insert(TarLinkList::value_type(src_path, dst_path)); - } -} - /** * Simplify filenames from tars. * Replace '/' by #PATHSEPCHAR, and force 'name' to lowercase. @@ -477,17 +439,14 @@ bool TarScanner::AddFile(Subdirectory sd, const std::string &filename) * header contains garbage and is malicious. So, we cannot rely on the string * being properly terminated. * As such, do not use strlen to determine the actual length (explicitly or - * implictly via the std::string constructor), but also do not create a string - * of the buffer length as that makes the string contain essentially garbage. + * implictly via the std::string constructor), but pass the buffer bounds + * explicitly. * @param buffer The buffer to read from. - * @param buffer_length The length of the buffer to read from. * @return The string data. */ -static std::string ExtractString(char *buffer, size_t buffer_length) +static std::string ExtractString(std::span buffer) { - size_t length = 0; - for (; length < buffer_length && buffer[length] != '\0'; length++) {} - return StrMakeValid(std::string_view(buffer, length)); + return StrMakeValid(std::string_view(buffer.begin(), buffer.end())); } bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] const std::string &tar_filename) @@ -530,11 +489,9 @@ bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] c _tar_list[this->subdir][filename] = std::string{}; - std::string filename_base = std::filesystem::path(filename).filename().string(); + std::string filename_base = FS2OTTD(std::filesystem::path(OTTD2FS(filename)).filename()); SimplifyFileName(filename_base); - TarLinkList links; ///< Temporary list to collect links - TarHeader th; size_t num = 0, pos = 0; @@ -561,16 +518,25 @@ bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] c /* The prefix contains the directory-name */ if (th.prefix[0] != '\0') { - name = ExtractString(th.prefix, lengthof(th.prefix)); + name = ExtractString(th.prefix); name += PATHSEP; } /* Copy the name of the file in a safe way at the end of 'name' */ - name += ExtractString(th.name, lengthof(th.name)); + name += ExtractString(th.name); /* The size of the file, for some strange reason, this is stored as a string in octals. */ - std::string size = ExtractString(th.size, lengthof(th.size)); - size_t skip = size.empty() ? 0 : std::stoul(size, nullptr, 8); + std::string size = ExtractString(th.size); + size_t skip = 0; + if (!size.empty()) { + StrTrimInPlace(size); + auto [_, err] = std::from_chars(size.data(), size.data() + size.size(), skip, 8); + if (err != std::errc()) { + Debug(misc, 0, "The file '{}' has an invalid size for '{}'", filename, name); + fclose(f); + return false; + } + } switch (th.typeflag) { case '\0': @@ -594,33 +560,9 @@ bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] c case '1': // hard links case '2': { // symbolic links - /* Copy the destination of the link in a safe way at the end of 'linkname' */ - std::string link = ExtractString(th.linkname, lengthof(th.linkname)); - - if (name.empty() || link.empty()) break; - - /* Convert to lowercase and our PATHSEPCHAR */ - SimplifyFileName(name); - SimplifyFileName(link); - - /* Only allow relative links */ - if (link[0] == PATHSEPCHAR) { - Debug(misc, 5, "Ignoring absolute link in tar: {} -> {}", name, link); - break; - } - - /* Process relative path. - * Note: The destination of links must not contain any directory-links. */ - std::string dest = (std::filesystem::path(name).remove_filename() /= link).lexically_normal().string(); - if (dest[0] == PATHSEPCHAR || dest.starts_with("..")) { - Debug(misc, 5, "Ignoring link pointing outside of data directory: {} -> {}", name, link); - break; - } - - /* Store links in temporary list */ - Debug(misc, 6, "Found link in tar: {} -> {}", name, dest); - links.insert(TarLinkList::value_type(filename_base + PATHSEPCHAR + name, filename_base + PATHSEPCHAR + dest)); + std::string link = ExtractString(th.linkname); + Debug(misc, 5, "Ignoring link in tar: {} -> {}", name, link); break; } @@ -651,19 +593,6 @@ bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] c Debug(misc, 4, "Found tar '{}' with {} new files", filename, num); fclose(f); - /* Resolve file links and store directory links. - * We restrict usage of links to two cases: - * 1) Links to directories: - * Both the source path and the destination path must NOT contain any further links. - * When resolving files at most one directory link is resolved. - * 2) Links to files: - * The destination path must NOT contain any links. - * The source path may contain one directory link. - */ - for (auto &it : links) { - TarAddLink(it.first, it.second, this->subdir); - } - return true; } @@ -1008,9 +937,9 @@ void DeterminePaths(const char *exe, bool only_local_path) }; config_dir.clear(); - for (uint i = 0; i < lengthof(new_openttd_cfg_order); i++) { - if (IsValidSearchPath(new_openttd_cfg_order[i])) { - config_dir = _searchpaths[new_openttd_cfg_order[i]]; + for (const auto &searchpath : new_openttd_cfg_order) { + if (IsValidSearchPath(searchpath)) { + config_dir = _searchpaths[searchpath]; break; } } @@ -1030,6 +959,8 @@ void DeterminePaths(const char *exe, bool only_local_path) _private_file = config_dir + "private.cfg"; extern std::string _secrets_file; _secrets_file = config_dir + "secrets.cfg"; + extern std::string _favs_file; + _favs_file = config_dir + "favs.cfg"; #ifdef USE_XDG if (config_dir == config_home) { @@ -1061,8 +992,8 @@ void DeterminePaths(const char *exe, bool only_local_path) SAVE_DIR, AUTOSAVE_DIR, SCENARIO_DIR, HEIGHTMAP_DIR, BASESET_DIR, NEWGRF_DIR, AI_DIR, AI_LIBRARY_DIR, GAME_DIR, GAME_LIBRARY_DIR, SCREENSHOT_DIR, SOCIAL_INTEGRATION_DIR }; - for (uint i = 0; i < lengthof(default_subdirs); i++) { - FioCreateDirectory(_personal_dir + _subdirs[default_subdirs[i]]); + for (const auto &default_subdir : default_subdirs) { + FioCreateDirectory(_personal_dir + _subdirs[default_subdir]); } /* If we have network we make a directory for the autodownloading of content */ @@ -1072,9 +1003,9 @@ void DeterminePaths(const char *exe, bool only_local_path) FillValidSearchPaths(only_local_path); /* Create the directory for each of the types of content */ - const Subdirectory dirs[] = { SCENARIO_DIR, HEIGHTMAP_DIR, BASESET_DIR, NEWGRF_DIR, AI_DIR, AI_LIBRARY_DIR, GAME_DIR, GAME_LIBRARY_DIR, SOCIAL_INTEGRATION_DIR }; - for (uint i = 0; i < lengthof(dirs); i++) { - FioCreateDirectory(FioGetDirectory(SP_AUTODOWNLOAD_DIR, dirs[i])); + const Subdirectory subdirs[] = { SCENARIO_DIR, HEIGHTMAP_DIR, BASESET_DIR, NEWGRF_DIR, AI_DIR, AI_LIBRARY_DIR, GAME_DIR, GAME_LIBRARY_DIR, SOCIAL_INTEGRATION_DIR }; + for (const auto &subdir : subdirs) { + FioCreateDirectory(FioGetDirectory(SP_AUTODOWNLOAD_DIR, subdir)); } extern std::string _log_file; @@ -1134,12 +1065,13 @@ std::unique_ptr ReadFileToMem(const std::string &filename, size_t &lenp, * @param filename The filename to look in for the extension. * @return True iff the extension is nullptr, or the filename ends with it. */ -static bool MatchesExtension(const char *extension, const char *filename) +static bool MatchesExtension(std::string_view extension, const std::string &filename) { - if (extension == nullptr) return true; + if (extension.empty()) return true; + if (filename.length() < extension.length()) return false; - const char *ext = strrchr(filename, extension[0]); - return ext != nullptr && StrEqualsIgnoreCase(ext, extension); + std::string_view filename_sv = filename; // String view to avoid making another copy of the substring. + return StrCompareIgnoreCase(extension, filename_sv.substr(filename_sv.length() - extension.length())) == 0; } /** @@ -1151,36 +1083,24 @@ static bool MatchesExtension(const char *extension, const char *filename) * @param basepath_length from where in the path are we 'based' on the search path * @param recursive whether to recursively search the sub directories */ -static uint ScanPath(FileScanner *fs, const char *extension, const char *path, size_t basepath_length, bool recursive) +static uint ScanPath(FileScanner *fs, std::string_view extension, const std::filesystem::path &path, size_t basepath_length, bool recursive) { uint num = 0; - struct stat sb; - struct dirent *dirent; - DIR *dir; - if (path == nullptr || (dir = ttd_opendir(path)) == nullptr) return 0; - - while ((dirent = readdir(dir)) != nullptr) { - std::string d_name = FS2OTTD(dirent->d_name); - - if (!FiosIsValidFile(path, dirent, &sb)) continue; - - std::string filename(path); - filename += d_name; - - if (S_ISDIR(sb.st_mode)) { - /* Directory */ + std::error_code error_code; + for (const auto &dir_entry : std::filesystem::directory_iterator(path, error_code)) { + if (dir_entry.is_directory()) { if (!recursive) continue; - if (d_name == "." || d_name == "..") continue; - AppendPathSeparator(filename); - num += ScanPath(fs, extension, filename.c_str(), basepath_length, recursive); - } else if (S_ISREG(sb.st_mode)) { - /* File */ - if (MatchesExtension(extension, filename.c_str()) && fs->AddFile(filename, basepath_length, {})) num++; + num += ScanPath(fs, extension, dir_entry.path(), basepath_length, recursive); + } else if (dir_entry.is_regular_file()) { + std::string file = FS2OTTD(dir_entry.path()); + if (!MatchesExtension(extension, file)) continue; + if (fs->AddFile(file, basepath_length, {})) num++; } } - - closedir(dir); + if (error_code) { + Debug(misc, 9, "Unable to read directory {}: {}", path.string(), error_code.message()); + } return num; } @@ -1191,12 +1111,11 @@ static uint ScanPath(FileScanner *fs, const char *extension, const char *path, s * @param extension the extension of files to search for. * @param tar the tar to search in. */ -static uint ScanTar(FileScanner *fs, const char *extension, const TarFileList::value_type &tar) +static uint ScanTar(FileScanner *fs, std::string_view extension, const TarFileList::value_type &tar) { uint num = 0; - const auto &filename = tar.first; - if (MatchesExtension(extension, filename.c_str()) && fs->AddFile(filename, 0, tar.second.tar_filename)) num++; + if (MatchesExtension(extension, tar.first) && fs->AddFile(tar.first, 0, tar.second.tar_filename)) num++; return num; } @@ -1210,7 +1129,7 @@ static uint ScanTar(FileScanner *fs, const char *extension, const TarFileList::v * @return the number of found files, i.e. the number of times that * AddFile returned true. */ -uint FileScanner::Scan(const char *extension, Subdirectory sd, bool tars, bool recursive) +uint FileScanner::Scan(std::string_view extension, Subdirectory sd, bool tars, bool recursive) { this->subdir = sd; @@ -1221,7 +1140,7 @@ uint FileScanner::Scan(const char *extension, Subdirectory sd, bool tars, bool r if (sp == SP_WORKING_DIR && !_do_scan_working_directory) continue; std::string path = FioGetDirectory(sp, sd); - num += ScanPath(this, extension, path.c_str(), path.size(), recursive); + num += ScanPath(this, extension, OTTD2FS(path), path.size(), recursive); } if (tars && sd != NO_DIRECTORY) { @@ -1252,9 +1171,9 @@ uint FileScanner::Scan(const char *extension, Subdirectory sd, bool tars, bool r * @return the number of found files, i.e. the number of times that * AddFile returned true. */ -uint FileScanner::Scan(const char *extension, const std::string &directory, bool recursive) +uint FileScanner::Scan(const std::string_view extension, const std::string &directory, bool recursive) { std::string path(directory); AppendPathSeparator(path); - return ScanPath(this, extension, path.c_str(), path.size(), recursive); + return ScanPath(this, extension, OTTD2FS(path), path.size(), recursive); } diff --git a/src/fileio_func.h b/src/fileio_func.h index 6f9bd65442..eaa6f76164 100644 --- a/src/fileio_func.h +++ b/src/fileio_func.h @@ -20,6 +20,7 @@ std::string FioFindFullPath(Subdirectory subdir, const std::string &filename); std::string FioGetDirectory(Searchpath sp, Subdirectory subdir); std::string FioFindDirectory(Subdirectory subdir); void FioCreateDirectory(const std::string &name); +bool FioRemove(const std::string &filename); const char *FiosGetScreenshotDir(); @@ -41,8 +42,8 @@ public: /** Destruct the proper one... */ virtual ~FileScanner() = default; - uint Scan(const char *extension, Subdirectory sd, bool tars = true, bool recursive = true); - uint Scan(const char *extension, const std::string &directory, bool recursive = true); + uint Scan(std::string_view extension, Subdirectory sd, bool tars = true, bool recursive = true); + uint Scan(std::string_view extension, const std::string &directory, bool recursive = true); /** * Add a file with the given filename. @@ -80,40 +81,6 @@ public: DECLARE_ENUM_AS_BIT_SET(TarScanner::Mode) -/* Implementation of opendir/readdir/closedir for Windows */ -#if defined(_WIN32) -struct DIR; - -struct dirent { // XXX - only d_name implemented - wchar_t *d_name; // name of found file - /* little hack which will point to parent DIR struct which will - * save us a call to GetFileAttributes if we want information - * about the file (for example in function fio_bla) */ - DIR *dir; -}; - -DIR *opendir(const wchar_t *path); -struct dirent *readdir(DIR *d); -int closedir(DIR *d); -#else -/* Use system-supplied opendir/readdir/closedir functions */ -# include -# include -#endif /* defined(_WIN32) */ - -/** - * A wrapper around opendir() which will convert the string from - * OPENTTD encoding to that of the filesystem. For all purposes this - * function behaves the same as the original opendir function - * @param path string to open directory of - * @return DIR pointer - */ -inline DIR *ttd_opendir(const char *path) -{ - return opendir(OTTD2FS(path).c_str()); -} - - /** Auto-close a file upon scope exit. */ class FileCloser { FILE *f; diff --git a/src/fileio_type.h b/src/fileio_type.h index c871c1c14b..a353e12b8a 100644 --- a/src/fileio_type.h +++ b/src/fileio_type.h @@ -40,6 +40,8 @@ enum DetailedFileType { DFT_FIOS_DIR, ///< A directory entry. DFT_FIOS_DIRECT, ///< Direct filename. + DFT_END, ///< End of this enum. Supports a compile time size check against _fios_colours in fios_gui.cpp + DFT_INVALID = 255, ///< Unknown or invalid file. }; diff --git a/src/fios.cpp b/src/fios.cpp index ec1f3de3b2..5bb7a2d2d1 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -21,10 +21,7 @@ #include "tar_type.h" #include #include - -#ifndef _WIN32 -# include -#endif /* _WIN32 */ +#include #include "table/strings.h" @@ -36,8 +33,7 @@ SortingBits _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING; /* OS-specific functions are taken from their respective files (win32/unix .c) */ extern bool FiosIsRoot(const std::string &path); -extern bool FiosIsValidFile(const std::string &path, const struct dirent *ent, struct stat *sb); -extern bool FiosIsHiddenFile(const struct dirent *ent); +extern bool FiosIsHiddenFile(const std::filesystem::path &path); extern void FiosGetDrives(FileList &file_list); /* get the name of an oldstyle savegame */ @@ -53,7 +49,7 @@ bool FiosItem::operator< (const FiosItem &other) const int r = false; if ((_savegame_sort_order & SORT_BY_NAME) == 0 && (*this).mtime != other.mtime) { - r = this->mtime - other.mtime; + r = ClampTo(this->mtime - other.mtime); } else { r = StrNaturalCompare((*this).title, other.title); } @@ -246,8 +242,7 @@ std::string FiosMakeHeightmapName(const char *name) */ bool FiosDelete(const char *name) { - std::string filename = FiosMakeSavegameName(name); - return unlink(filename.c_str()) == 0; + return FioRemove(FiosMakeSavegameName(name)); } typedef std::tuple FiosGetTypeAndNameProc(SaveLoadOperation fop, const std::string &filename, const std::string_view ext); @@ -292,32 +287,13 @@ bool FiosFileScanner::AddFile(const std::string &filename, size_t, const std::st } FiosItem *fios = &file_list.emplace_back(); -#ifdef _WIN32 - // Retrieve the file modified date using GetFileTime rather than stat to work around an obscure MSVC bug that affects Windows XP - HANDLE fh = CreateFile(OTTD2FS(filename).c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr); - if (fh != INVALID_HANDLE_VALUE) { - FILETIME ft; - ULARGE_INTEGER ft_int64; - - if (GetFileTime(fh, nullptr, nullptr, &ft) != 0) { - ft_int64.HighPart = ft.dwHighDateTime; - ft_int64.LowPart = ft.dwLowDateTime; - - // Convert from hectonanoseconds since 01/01/1601 to seconds since 01/01/1970 - fios->mtime = ft_int64.QuadPart / 10000000ULL - 11644473600ULL; - } else { - fios->mtime = 0; - } - - CloseHandle(fh); -#else - struct stat sb; - if (stat(filename.c_str(), &sb) == 0) { - fios->mtime = sb.st_mtime; -#endif - } else { + std::error_code error_code; + auto write_time = std::filesystem::last_write_time(OTTD2FS(filename), error_code); + if (error_code) { fios->mtime = 0; + } else { + fios->mtime = std::chrono::duration_cast(write_time.time_since_epoch()).count(); } fios->type = type; @@ -345,48 +321,38 @@ bool FiosFileScanner::AddFile(const std::string &filename, size_t, const std::st */ static void FiosGetFileList(SaveLoadOperation fop, bool show_dirs, FiosGetTypeAndNameProc *callback_proc, Subdirectory subdir, FileList &file_list) { - struct stat sb; - struct dirent *dirent; - DIR *dir; - FiosItem *fios; size_t sort_start; file_list.clear(); assert(_fios_path != nullptr); - /* A parent directory link exists if we are not in the root directory */ - if (show_dirs && !FiosIsRoot(*_fios_path)) { - fios = &file_list.emplace_back(); - fios->type = FIOS_TYPE_PARENT; - fios->mtime = 0; - fios->name = ".."; - SetDParamStr(0, ".."); - fios->title = GetString(STR_SAVELOAD_PARENT_DIRECTORY); - } - - /* Show subdirectories */ - if (show_dirs && (dir = ttd_opendir(_fios_path->c_str())) != nullptr) { - while ((dirent = readdir(dir)) != nullptr) { - std::string d_name = FS2OTTD(dirent->d_name); - - /* found file must be directory, but not '.' or '..' */ - if (FiosIsValidFile(*_fios_path, dirent, &sb) && S_ISDIR(sb.st_mode) && - (!FiosIsHiddenFile(dirent) || StrStartsWithIgnoreCase(PERSONAL_DIR, d_name)) && - d_name != "." && d_name != "..") { - fios = &file_list.emplace_back(); - fios->type = FIOS_TYPE_DIR; - fios->mtime = 0; - fios->name = d_name; - SetDParamStr(0, fios->name + PATHSEP); - fios->title = GetString(STR_SAVELOAD_DIRECTORY); - } - } - closedir(dir); - } - - /* Sort the subdirs always by name, ascending, remember user-sorting order */ if (show_dirs) { + /* A parent directory link exists if we are not in the root directory */ + if (!FiosIsRoot(*_fios_path)) { + FiosItem &fios = file_list.emplace_back(); + fios.type = FIOS_TYPE_PARENT; + fios.mtime = 0; + fios.name = ".."; + SetDParamStr(0, ".."); + fios.title = GetString(STR_SAVELOAD_PARENT_DIRECTORY); + } + + /* Show subdirectories */ + std::error_code error_code; + for (const auto &dir_entry : std::filesystem::directory_iterator(OTTD2FS(*_fios_path), error_code)) { + if (!dir_entry.is_directory()) continue; + if (FiosIsHiddenFile(dir_entry) && dir_entry.path().filename() != PERSONAL_DIR) continue; + + FiosItem &fios = file_list.emplace_back(); + fios.type = FIOS_TYPE_DIR; + fios.mtime = 0; + fios.name = FS2OTTD(dir_entry.path().filename()); + SetDParamStr(0, fios.name + PATHSEP); + fios.title = GetString(STR_SAVELOAD_DIRECTORY); + } + + /* Sort the subdirs always by name, ascending, remember user-sorting order */ SortingBits order = _savegame_sort_order; _savegame_sort_order = SORT_BY_NAME | SORT_ASCENDING; std::sort(file_list.begin(), file_list.end()); @@ -399,17 +365,15 @@ static void FiosGetFileList(SaveLoadOperation fop, bool show_dirs, FiosGetTypeAn /* Show files */ FiosFileScanner scanner(fop, callback_proc, file_list); if (subdir == NO_DIRECTORY) { - scanner.Scan(nullptr, *_fios_path, false); + scanner.Scan({}, *_fios_path, false); } else { - scanner.Scan(nullptr, subdir, true, true); + scanner.Scan({}, subdir, true, true); } std::sort(file_list.begin() + sort_start, file_list.end()); /* Show drives */ FiosGetDrives(file_list); - - file_list.shrink_to_fit(); } /** @@ -741,7 +705,7 @@ FiosNumberedSaveName::FiosNumberedSaveName(const std::string &prefix) : prefix(p /* Get the save list. */ FileList list; FiosFileScanner scanner(SLO_SAVE, proc, list); - scanner.Scan(".sav", _autosave_path->c_str(), false); + scanner.Scan(".sav", *_autosave_path, false); /* Find the number for the most recent save, if any. */ if (list.begin() != list.end()) { diff --git a/src/fios.h b/src/fios.h index 0bfc9f7640..d44eb2f1ff 100644 --- a/src/fios.h +++ b/src/fios.h @@ -78,7 +78,7 @@ extern LoadCheckData _load_check_data; /** Deals with finding savegames */ struct FiosItem { FiosType type; - uint64_t mtime; + int64_t mtime; std::string title; std::string name; bool operator< (const FiosItem &other) const; diff --git a/src/fios_gui.cpp b/src/fios_gui.cpp index ac073062fe..08824aa395 100644 --- a/src/fios_gui.cpp +++ b/src/fios_gui.cpp @@ -70,7 +70,8 @@ static constexpr NWidgetPart _nested_load_dialog_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), EndContainer(), /* Current directory and free space */ - NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), + EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), /* Left side : filter box and available files */ @@ -78,9 +79,9 @@ static constexpr NWidgetPart _nested_load_dialog_widgets[] = { /* Filter box with label */ NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_HORIZONTAL), SetPadding(WidgetDimensions::unscaled.framerect.top, 0, WidgetDimensions::unscaled.framerect.bottom, 0), - SetPIP(WidgetDimensions::unscaled.frametext.left, WidgetDimensions::unscaled.frametext.right, 0), - NWidget(WWT_TEXT, COLOUR_GREY), SetFill(0, 1), SetDataTip(STR_SAVELOAD_FILTER_TITLE , STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_SL_FILTER), SetFill(1, 0), SetMinimalSize(50, 12), SetResize(1, 0), + SetPIP(WidgetDimensions::unscaled.frametext.left, WidgetDimensions::unscaled.frametext.right, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetFill(0, 1), SetDataTip(STR_SAVELOAD_FILTER_TITLE , STR_NULL), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_SL_FILTER), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), EndContainer(), EndContainer(), @@ -90,13 +91,14 @@ static constexpr NWidgetPart _nested_load_dialog_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYNAME), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYDATE), SetDataTip(STR_SORT_BY_CAPTION_DATE, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), EndContainer(), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SL_HOME_BUTTON), SetMinimalSize(12, 12), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SL_HOME_BUTTON), SetAspect(1), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON), EndContainer(), /* Files */ NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_FILE_BACKGROUND), NWidget(WWT_INSET, COLOUR_GREY, WID_SL_DRIVES_DIRECTORIES_LIST), SetFill(1, 1), SetPadding(2, 2, 2, 2), - SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), EndContainer(), + SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), + EndContainer(), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SL_SCROLLBAR), EndContainer(), @@ -131,14 +133,15 @@ static constexpr NWidgetPart _nested_load_heightmap_dialog_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), EndContainer(), /* Current directory and free space */ - NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), + EndContainer(), /* Filter box with label */ NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_HORIZONTAL), SetPadding(WidgetDimensions::unscaled.framerect.top, 0, WidgetDimensions::unscaled.framerect.bottom, 0), - SetPIP(WidgetDimensions::unscaled.frametext.left, WidgetDimensions::unscaled.frametext.right, 0), - NWidget(WWT_TEXT, COLOUR_GREY), SetFill(0, 1), SetDataTip(STR_SAVELOAD_FILTER_TITLE , STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_SL_FILTER), SetFill(1, 0), SetMinimalSize(50, 12), SetResize(1, 0), + SetPIP(WidgetDimensions::unscaled.frametext.left, WidgetDimensions::unscaled.frametext.right, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetFill(0, 1), SetDataTip(STR_SAVELOAD_FILTER_TITLE , STR_NULL), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_SL_FILTER), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), EndContainer(), EndContainer(), @@ -148,13 +151,14 @@ static constexpr NWidgetPart _nested_load_heightmap_dialog_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYNAME), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYDATE), SetDataTip(STR_SORT_BY_CAPTION_DATE, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), EndContainer(), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SL_HOME_BUTTON), SetMinimalSize(12, 12), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SL_HOME_BUTTON), SetAspect(1), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON), EndContainer(), /* Files */ NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_FILE_BACKGROUND), NWidget(WWT_INSET, COLOUR_GREY, WID_SL_DRIVES_DIRECTORIES_LIST), SetFill(1, 1), SetPadding(2, 2, 2, 2), - SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), EndContainer(), + SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), + EndContainer(), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SL_SCROLLBAR), EndContainer(), @@ -176,17 +180,19 @@ static constexpr NWidgetPart _nested_save_dialog_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), EndContainer(), /* Current directory and free space */ - NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), /* Left side : filter box and available files */ NWidget(NWID_VERTICAL), /* Filter box with label */ NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_HORIZONTAL), SetPadding(WidgetDimensions::unscaled.framerect.top, 0, WidgetDimensions::unscaled.framerect.bottom, 0), - SetPIP(WidgetDimensions::unscaled.frametext.left, WidgetDimensions::unscaled.frametext.right, 0), + SetPIP(WidgetDimensions::unscaled.frametext.left, WidgetDimensions::unscaled.frametext.right, 0), NWidget(WWT_TEXT, COLOUR_GREY), SetFill(0, 1), SetDataTip(STR_SAVELOAD_FILTER_TITLE , STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_SL_FILTER), SetFill(1, 0), SetMinimalSize(50, 12), SetResize(1, 0), - SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_SL_FILTER), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), EndContainer(), EndContainer(), /* Sort buttons */ @@ -195,13 +201,14 @@ static constexpr NWidgetPart _nested_save_dialog_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYNAME), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYDATE), SetDataTip(STR_SORT_BY_CAPTION_DATE, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), EndContainer(), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SL_HOME_BUTTON), SetMinimalSize(12, 12), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SL_HOME_BUTTON), SetAspect(1), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON), EndContainer(), /* Files */ NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_FILE_BACKGROUND), NWidget(WWT_INSET, COLOUR_GREY, WID_SL_DRIVES_DIRECTORIES_LIST), SetPadding(2, 2, 2, 2), - SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), EndContainer(), + SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), + EndContainer(), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SL_SCROLLBAR), EndContainer(), @@ -218,9 +225,11 @@ static constexpr NWidgetPart _nested_save_dialog_widgets[] = { /* Right side : game details */ NWidget(NWID_VERTICAL), - NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_DETAILS), SetResize(1, 1), SetFill(1, 1), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_DETAILS), SetResize(1, 1), SetFill(1, 1), + EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), SetFill(1, 1), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), SetFill(1, 1), + EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), EndContainer(), @@ -238,7 +247,8 @@ static const TextColour _fios_colours[] = { TC_DARK_GREEN, // DFT_FIOS_DIR TC_ORANGE, // DFT_FIOS_DIRECT }; - +/* This should align with the DetailedFileType enum defined in fileio_type.h */ +static_assert(std::size(_fios_colours) == DFT_END); /** * Sort the collected list save games prior to displaying it in the save/load gui. @@ -302,7 +312,7 @@ public: this->filename_editbox.text.Assign(GenerateDefaultSaveName()); } - SaveLoadWindow(WindowDesc *desc, AbstractFileType abstract_filetype, SaveLoadOperation fop) + SaveLoadWindow(WindowDesc &desc, AbstractFileType abstract_filetype, SaveLoadOperation fop) : Window(desc), filename_editbox(64), abstract_filetype(abstract_filetype), fop(fop), filter_editbox(EDITBOX_MAX_SIZE) { assert(this->fop == SLO_SAVE || this->fop == SLO_LOAD); @@ -441,8 +451,8 @@ public: GfxFillRect(br, PC_BLACK); Rect tr = r.Shrink(WidgetDimensions::scaled.inset).WithHeight(this->resize.step_height); - uint scroll_pos = this->vscroll->GetPosition(); - for (auto it = this->display_list.begin() + scroll_pos; it != this->display_list.end() && tr.top < br.bottom; ++it) { + auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->display_list); + for (auto it = first; it != last; ++it) { const FiosItem *item = *it; if (item == this->selected) { @@ -498,7 +508,7 @@ public: if (tr.top > tr.bottom) return; /* Climate */ - byte landscape = _load_check_data.settings.game_creation.landscape; + uint8_t landscape = _load_check_data.settings.game_creation.landscape; if (landscape < NUM_LANDSCAPE) { SetDParam(0, STR_CLIMATE_TEMPERATE_LANDSCAPE + landscape); DrawString(tr, STR_NETWORK_SERVER_LIST_LANDSCAPE); @@ -561,23 +571,23 @@ public: } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_SL_BACKGROUND: - size->height = 2 * GetCharacterHeight(FS_NORMAL) + padding.height; + size.height = 2 * GetCharacterHeight(FS_NORMAL) + padding.height; break; case WID_SL_DRIVES_DIRECTORIES_LIST: - resize->height = GetCharacterHeight(FS_NORMAL); - size->height = resize->height * 10 + padding.height; + resize.height = GetCharacterHeight(FS_NORMAL); + size.height = resize.height * 10 + padding.height; break; case WID_SL_SORT_BYNAME: case WID_SL_SORT_BYDATE: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } } @@ -883,27 +893,27 @@ public: }; /** Load game/scenario */ -static WindowDesc _load_dialog_desc(__FILE__, __LINE__, +static WindowDesc _load_dialog_desc( WDP_CENTER, "load_game", 500, 294, WC_SAVELOAD, WC_NONE, 0, - std::begin(_nested_load_dialog_widgets), std::end(_nested_load_dialog_widgets) + _nested_load_dialog_widgets ); /** Load heightmap */ -static WindowDesc _load_heightmap_dialog_desc(__FILE__, __LINE__, +static WindowDesc _load_heightmap_dialog_desc( WDP_CENTER, "load_heightmap", 257, 320, WC_SAVELOAD, WC_NONE, 0, - std::begin(_nested_load_heightmap_dialog_widgets), std::end(_nested_load_heightmap_dialog_widgets) + _nested_load_heightmap_dialog_widgets ); /** Save game/scenario */ -static WindowDesc _save_dialog_desc(__FILE__, __LINE__, +static WindowDesc _save_dialog_desc( WDP_CENTER, "save_game", 500, 294, WC_SAVELOAD, WC_NONE, 0, - std::begin(_nested_save_dialog_widgets), std::end(_nested_save_dialog_widgets) + _nested_save_dialog_widgets ); /** @@ -915,13 +925,10 @@ void ShowSaveLoadDialog(AbstractFileType abstract_filetype, SaveLoadOperation fo { CloseWindowById(WC_SAVELOAD, 0); - WindowDesc *sld; if (fop == SLO_SAVE) { - sld = &_save_dialog_desc; + new SaveLoadWindow(_save_dialog_desc, abstract_filetype, fop); } else { /* Dialogue for loading a file. */ - sld = (abstract_filetype == FT_HEIGHTMAP) ? &_load_heightmap_dialog_desc : &_load_dialog_desc; + new SaveLoadWindow((abstract_filetype == FT_HEIGHTMAP) ? _load_heightmap_dialog_desc : _load_dialog_desc, abstract_filetype, fop); } - - new SaveLoadWindow(sld, abstract_filetype, fop); } diff --git a/src/fontcache.cpp b/src/fontcache.cpp index 2a5772fc3b..639b23e4e5 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -33,8 +33,7 @@ FontCacheSettings _fcsettings; * @param fs The size of the font. */ FontCache::FontCache(FontSize fs) : parent(FontCache::Get(fs)), fs(fs), height(_default_font_height[fs]), - ascender(_default_font_ascender[fs]), descender(_default_font_ascender[fs] - _default_font_height[fs]), - units_per_em(1) + ascender(_default_font_ascender[fs]), descender(_default_font_ascender[fs] - _default_font_height[fs]) { assert(this->parent == nullptr || this->fs == this->parent->fs); FontCache::caches[this->fs] = this; @@ -91,15 +90,15 @@ int GetCharacterHeight(FontSize size) } /* Check if a glyph should be rendered with anti-aliasing. */ -bool GetFontAAState(FontSize size, bool check_blitter) +bool GetFontAAState() { /* AA is only supported for 32 bpp */ - if (check_blitter && BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false; + if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false; - return _fcsettings.global_aa || GetFontCacheSubSetting(size)->aa; + return _fcsettings.global_aa; } -void SetFont(FontSize fontsize, const std::string &font, uint size, bool aa) +void SetFont(FontSize fontsize, const std::string &font, uint size) { FontCacheSubSetting *setting = GetFontCacheSubSetting(fontsize); bool changed = false; @@ -114,11 +113,6 @@ void SetFont(FontSize fontsize, const std::string &font, uint size, bool aa) changed = true; } - if (setting->aa != aa) { - setting->aa = aa; - changed = true; - } - if (!changed) return; if (fontsize != FS_MONO) { @@ -144,50 +138,77 @@ void SetFont(FontSize fontsize, const std::string &font, uint size, bool aa) #ifdef WITH_FREETYPE extern void LoadFreeTypeFont(FontSize fs); -extern void LoadFreeTypeFont(FontSize fs, const std::string &file_name, uint size); extern void UninitFreeType(); #elif defined(_WIN32) extern void LoadWin32Font(FontSize fs); -extern void LoadWin32Font(FontSize fs, const std::string &file_name, uint size); #elif defined(WITH_COCOA) extern void LoadCoreTextFont(FontSize fs); -extern void LoadCoreTextFont(FontSize fs, const std::string &file_name, uint size); #endif -static void TryLoadDefaultTrueTypeFont([[maybe_unused]] FontSize fs) +/** + * Test if a font setting uses the default font. + * @return true iff the font is not configured and no fallback font data is present. + */ +static bool IsDefaultFont(const FontCacheSubSetting &setting) { -#if defined(WITH_FREETYPE) || defined(_WIN32) || defined(WITH_COCOA) - std::string font_name{}; - switch (fs) { - case FS_NORMAL: - font_name = "OpenTTD-Sans.ttf"; - break; - case FS_SMALL: - font_name = "OpenTTD-Small.ttf"; - break; - case FS_LARGE: - font_name = "OpenTTD-Serif.ttf"; - break; - case FS_MONO: - font_name = "OpenTTD-Mono.ttf"; - break; + return setting.font.empty() && setting.os_handle == nullptr; +} +/** + * Get the scalable font size to use for a FontSize. + * @param fs FontSize to get the scalable font size for. + * @return Scalable font size to use. + */ +uint GetFontCacheFontSize(FontSize fs) +{ + const FontCacheSubSetting &setting = *GetFontCacheSubSetting(fs); + return IsDefaultFont(setting) ? FontCache::GetDefaultFontHeight(fs) : setting.size; +} + +#if defined(WITH_FREETYPE) || defined(_WIN32) || defined(WITH_COCOA) +/** + * Get name of default font file for a given font size. + * @param fs Font size. + * @return Name of default font file. + */ +static std::string GetDefaultTruetypeFont(FontSize fs) +{ + switch (fs) { + case FS_NORMAL: return "OpenTTD-Sans.ttf"; + case FS_SMALL: return "OpenTTD-Small.ttf"; + case FS_LARGE: return "OpenTTD-Serif.ttf"; + case FS_MONO: return "OpenTTD-Mono.ttf"; default: NOT_REACHED(); } - - /* Find font file. */ - std::string full_font = FioFindFullPath(BASESET_DIR, font_name); - if (!full_font.empty()) { - int size = FontCache::GetDefaultFontHeight(fs); -#ifdef WITH_FREETYPE - LoadFreeTypeFont(fs, full_font, size); -#elif defined(_WIN32) - LoadWin32Font(fs, full_font, size); -#elif defined(WITH_COCOA) - LoadCoreTextFont(fs, full_font, size); -#endif - } +} #endif /* defined(WITH_FREETYPE) || defined(_WIN32) || defined(WITH_COCOA) */ + +/** + * Get path of default font file for a given font size. + * @param fs Font size. + * @return Full path of default font file. + */ +static std::string GetDefaultTruetypeFontFile([[maybe_unused]] FontSize fs) +{ +#if defined(WITH_FREETYPE) || defined(_WIN32) || defined(WITH_COCOA) + /* Find font file. */ + return FioFindFullPath(BASESET_DIR, GetDefaultTruetypeFont(fs)); +#else + return {}; +#endif /* defined(WITH_FREETYPE) || defined(_WIN32) || defined(WITH_COCOA) */ +} + +/** + * Get font to use for a given font size. + * @param fs Font size. + * @return If configured, the font name to use, or the path of the default TrueType font if sprites are not preferred. + */ +std::string GetFontCacheFontName(FontSize fs) +{ + const FontCacheSubSetting *settings = GetFontCacheSubSetting(fs); + if (!settings->font.empty()) return settings->font; + if (_fcsettings.prefer_sprite) return {}; + return GetDefaultTruetypeFontFile(fs); } /** @@ -204,17 +225,13 @@ void InitFontCache(bool monospace) FontCache *fc = FontCache::Get(fs); if (fc->HasParent()) delete fc; - if (!_fcsettings.prefer_sprite && GetFontCacheSubSetting(fs)->font.empty()) { - TryLoadDefaultTrueTypeFont(fs); - } else { #ifdef WITH_FREETYPE - LoadFreeTypeFont(fs); + LoadFreeTypeFont(fs); #elif defined(_WIN32) - LoadWin32Font(fs); + LoadWin32Font(fs); #elif defined(WITH_COCOA) - LoadCoreTextFont(fs); + LoadCoreTextFont(fs); #endif - } } } @@ -233,19 +250,6 @@ void UninitFontCache() #endif /* WITH_FREETYPE */ } -/** - * Should any of the active fonts be anti-aliased? - * @return True if any of the loaded fonts want anti-aliased drawing. - */ -bool HasAntialiasedFonts() -{ - for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { - if (!FontCache::Get(fs)->IsBuiltInFont() && GetFontAAState(fs, false)) return true; - } - - return false; -} - #if !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA) bool SetFallbackFont(FontCacheSettings *, const std::string &, int, MissingGlyphSearcher *) { return false; } diff --git a/src/fontcache.h b/src/fontcache.h index 9ba6055504..5d54879323 100644 --- a/src/fontcache.h +++ b/src/fontcache.h @@ -26,7 +26,6 @@ protected: int height; ///< The height of the font. int ascender; ///< The ascender value of the font. int descender; ///< The descender value of the font. - int units_per_em; ///< The units per EM value of the font. public: FontCache(FontSize fs); @@ -60,12 +59,6 @@ public: */ inline int GetDescender() const{ return this->descender; } - /** - * Get the units per EM value of the font. - * @return The units per EM value of the font. - */ - inline int GetUnitsPerEM() const { return this->units_per_em; } - /** * Get the nominal font size of the font. * @return The nominal font size. @@ -113,14 +106,6 @@ public: */ virtual GlyphID MapCharToGlyph(char32_t key, bool fallback = true) = 0; - /** - * Read a font table from the font. - * @param tag The of the table to load. - * @param length The length of the read data. - * @return The loaded table data. - */ - virtual const void *GetFontTable(uint32_t tag, size_t &length) = 0; - /** * Get the native OS font handle, if there is one. * @return Opaque OS font handle. @@ -207,7 +192,6 @@ inline bool GetDrawGlyphShadow(FontSize size) struct FontCacheSubSetting { std::string font; ///< The name of the font, or path to the font. uint size; ///< The (requested) size of the font. - bool aa; ///< Whether to do anti aliasing or not. const void *os_handle = nullptr; ///< Optional native OS font info. Only valid during font search. }; @@ -240,11 +224,12 @@ inline FontCacheSubSetting *GetFontCacheSubSetting(FontSize fs) } } +uint GetFontCacheFontSize(FontSize fs); +std::string GetFontCacheFontName(FontSize fs); void InitFontCache(bool monospace); void UninitFontCache(); -bool HasAntialiasedFonts(); -bool GetFontAAState(FontSize size, bool check_blitter = true); -void SetFont(FontSize fontsize, const std::string &font, uint size, bool aa); +bool GetFontAAState(); +void SetFont(FontSize fontsize, const std::string &font, uint size); #endif /* FONTCACHE_H */ diff --git a/src/fontcache/freetypefontcache.cpp b/src/fontcache/freetypefontcache.cpp index bcbfbc2a52..9c9ccaaeeb 100644 --- a/src/fontcache/freetypefontcache.cpp +++ b/src/fontcache/freetypefontcache.cpp @@ -33,8 +33,7 @@ class FreeTypeFontCache : public TrueTypeFontCache { private: FT_Face face; ///< The font face associated with this font. - void SetFontSize(FontSize fs, FT_Face face, int pixels); - const void *InternalGetFontTable(uint32_t tag, size_t &length) override; + void SetFontSize(int pixels); const Sprite *InternalGetGlyph(GlyphID key, bool aa) override; public: @@ -60,10 +59,10 @@ FreeTypeFontCache::FreeTypeFontCache(FontSize fs, FT_Face face, int pixels) : Tr { assert(face != nullptr); - this->SetFontSize(fs, face, pixels); + this->SetFontSize(pixels); } -void FreeTypeFontCache::SetFontSize(FontSize, FT_Face, int pixels) +void FreeTypeFontCache::SetFontSize(int pixels) { if (pixels == 0) { /* Try to determine a good height based on the minimal height recommended by the font. */ @@ -105,7 +104,6 @@ void FreeTypeFontCache::SetFontSize(FontSize, FT_Face, int pixels) } if (err == FT_Err_Ok) { - this->units_per_em = this->face->units_per_EM; this->ascender = this->face->size->metrics.ascender >> 6; this->descender = this->face->size->metrics.descender >> 6; this->height = this->ascender - this->descender; @@ -162,7 +160,8 @@ void LoadFreeTypeFont(FontSize fs) { FontCacheSubSetting *settings = GetFontCacheSubSetting(fs); - if (settings->font.empty()) return; + std::string font = GetFontCacheFontName(fs); + if (font.empty()) return; if (_library == nullptr) { if (FT_Init_FreeType(&_library) != FT_Err_Ok) { @@ -173,7 +172,7 @@ void LoadFreeTypeFont(FontSize fs) Debug(fontcache, 2, "Initialized"); } - const char *font_name = settings->font.c_str(); + const char *font_name = font.c_str(); FT_Face face = nullptr; /* If font is an absolute path to a ttf, try loading that first. */ @@ -193,7 +192,7 @@ void LoadFreeTypeFont(FontSize fs) if (error != FT_Err_Ok) error = GetFontByFaceName(font_name, &face); if (error == FT_Err_Ok) { - error = LoadFont(fs, face, font_name, settings->size); + error = LoadFont(fs, face, font_name, GetFontCacheFontSize(fs)); if (error != FT_Err_Ok) { ShowInfo("Unable to use '{}' for {} font, FreeType reported error 0x{:X}, using sprite font instead", font_name, FontSizeToName(fs), error); } @@ -202,34 +201,6 @@ void LoadFreeTypeFont(FontSize fs) } } -/** - * Load a TrueType font from a file. - * @param fs The font size to load. - * @param file_name Path to the font file. - * @param size Requested font size. - */ -void LoadFreeTypeFont(FontSize fs, const std::string &file_name, uint size) -{ - if (_library == nullptr) { - if (FT_Init_FreeType(&_library) != FT_Err_Ok) { - ShowInfo("Unable to initialize FreeType, using sprite fonts instead"); - return; - } - - Debug(fontcache, 2, "Initialized"); - } - - FT_Face face = nullptr; - int32_t index = 0; - FT_Error error = FT_New_Face(_library, file_name.c_str(), index, &face); - if (error == FT_Err_Ok) { - LoadFont(fs, face, file_name.c_str(), size); - } else { - FT_Done_Face(face); - } -} - - /** * Free everything that was allocated for this font cache. */ @@ -246,7 +217,7 @@ FreeTypeFontCache::~FreeTypeFontCache() void FreeTypeFontCache::ClearFontCache() { /* Font scaling might have changed, determine font size anew if it was automatically selected. */ - if (this->face != nullptr) this->SetFontSize(this->fs, this->face, this->req_size); + if (this->face != nullptr) this->SetFontSize(this->req_size); this->TrueTypeFontCache::ClearFontCache(); } @@ -272,8 +243,8 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa) /* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */ SpriteLoader::SpriteCollection spritecollection; - SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_NORMAL]; - sprite.AllocateData(ZOOM_LVL_NORMAL, static_cast(width) * height); + SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_MIN]; + sprite.AllocateData(ZOOM_LVL_MIN, static_cast(width) * height); sprite.type = SpriteType::Font; sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL); sprite.width = width; @@ -302,13 +273,14 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa) } } + UniquePtrSpriteAllocator allocator; + BlitterFactory::GetCurrentBlitter()->Encode(spritecollection, allocator); + GlyphEntry new_glyph; - new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(spritecollection, SimpleSpriteAlloc); - new_glyph.width = slot->advance.x >> 6; + new_glyph.data = std::move(allocator.data); + new_glyph.width = slot->advance.x >> 6; - this->SetGlyphPtr(key, &new_glyph); - - return new_glyph.sprite; + return this->SetGlyphPtr(key, std::move(new_glyph)).GetSprite(); } @@ -325,22 +297,6 @@ GlyphID FreeTypeFontCache::MapCharToGlyph(char32_t key, bool allow_fallback) return glyph; } -const void *FreeTypeFontCache::InternalGetFontTable(uint32_t tag, size_t &length) -{ - FT_ULong len = 0; - FT_Byte *result = nullptr; - - FT_Load_Sfnt_Table(this->face, tag, 0, nullptr, &len); - - if (len > 0) { - result = MallocT(len); - FT_Load_Sfnt_Table(this->face, tag, 0, result, &len); - } - - length = len; - return result; -} - /** * Free everything allocated w.r.t. freetype. */ diff --git a/src/fontcache/spritefontcache.cpp b/src/fontcache/spritefontcache.cpp index 92d687482f..c9f75153b5 100644 --- a/src/fontcache/spritefontcache.cpp +++ b/src/fontcache/spritefontcache.cpp @@ -23,19 +23,19 @@ static const int ASCII_LETTERSTART = 32; ///< First printable ASCII letter. /** * Scale traditional pixel dimensions to font zoom level, for drawing sprite fonts. - * @param value Pixel amount at #ZOOM_LVL_BASE (traditional "normal" interface size). + * @param value Pixel amount at #ZOOM_BASE (traditional "normal" interface size). * @return Pixel amount at _font_zoom (current interface size). */ static int ScaleFontTrad(int value) { - return UnScaleByZoom(value * ZOOM_LVL_BASE, _font_zoom); + return UnScaleByZoom(value * ZOOM_BASE, _font_zoom); } /** * Create a new sprite font cache. * @param fs The font size to create the cache for. */ -SpriteFontCache::SpriteFontCache(FontSize fs) : FontCache(fs), glyph_to_spriteid_map(nullptr) +SpriteFontCache::SpriteFontCache(FontSize fs) : FontCache(fs) { this->InitializeUnicodeGlyphMap(); this->height = ScaleGUITrad(FontCache::GetDefaultFontHeight(this->fs)); @@ -43,30 +43,26 @@ SpriteFontCache::SpriteFontCache(FontSize fs) : FontCache(fs), glyph_to_spriteid } /** - * Free everything we allocated. + * Get SpriteID associated with a GlyphID. + * @param key Glyph to find. + * @return SpriteID of glyph, or 0 if not present. */ -SpriteFontCache::~SpriteFontCache() +SpriteID SpriteFontCache::GetUnicodeGlyph(GlyphID key) { - this->ClearGlyphToSpriteMap(); -} - -SpriteID SpriteFontCache::GetUnicodeGlyph(char32_t key) -{ - if (this->glyph_to_spriteid_map[GB(key, 8, 8)] == nullptr) return 0; - return this->glyph_to_spriteid_map[GB(key, 8, 8)][GB(key, 0, 8)]; + const auto found = this->glyph_to_spriteid_map.find(key & ~SPRITE_GLYPH); + if (found == std::end(this->glyph_to_spriteid_map)) return 0; + return found->second; } void SpriteFontCache::SetUnicodeGlyph(char32_t key, SpriteID sprite) { - if (this->glyph_to_spriteid_map == nullptr) this->glyph_to_spriteid_map = CallocT(256); - if (this->glyph_to_spriteid_map[GB(key, 8, 8)] == nullptr) this->glyph_to_spriteid_map[GB(key, 8, 8)] = CallocT(256); - this->glyph_to_spriteid_map[GB(key, 8, 8)][GB(key, 0, 8)] = sprite; + this->glyph_to_spriteid_map[key] = sprite; } void SpriteFontCache::InitializeUnicodeGlyphMap() { /* Clear out existing glyph map if it exists */ - this->ClearGlyphToSpriteMap(); + this->glyph_to_spriteid_map.clear(); SpriteID base; switch (this->fs) { @@ -84,34 +80,20 @@ void SpriteFontCache::InitializeUnicodeGlyphMap() this->SetUnicodeGlyph(i + SCC_SPRITE_START, sprite); } - for (uint i = 0; i < lengthof(_default_unicode_map); i++) { - byte key = _default_unicode_map[i].key; + for (const auto &unicode_map : _default_unicode_map) { + uint8_t key = unicode_map.key; if (key == CLRA) { /* Clear the glyph. This happens if the glyph at this code point * is non-standard and should be accessed by an SCC_xxx enum * entry only. */ - this->SetUnicodeGlyph(_default_unicode_map[i].code, 0); + this->SetUnicodeGlyph(unicode_map.code, 0); } else { SpriteID sprite = base + key - ASCII_LETTERSTART; - this->SetUnicodeGlyph(_default_unicode_map[i].code, sprite); + this->SetUnicodeGlyph(unicode_map.code, sprite); } } } -/** - * Clear the glyph to sprite mapping. - */ -void SpriteFontCache::ClearGlyphToSpriteMap() -{ - if (this->glyph_to_spriteid_map == nullptr) return; - - for (uint i = 0; i < 256; i++) { - free(this->glyph_to_spriteid_map[i]); - } - free(this->glyph_to_spriteid_map); - this->glyph_to_spriteid_map = nullptr; -} - void SpriteFontCache::ClearFontCache() { Layouter::ResetFontCache(this->fs); @@ -121,18 +103,26 @@ void SpriteFontCache::ClearFontCache() const Sprite *SpriteFontCache::GetGlyph(GlyphID key) { - SpriteID sprite = this->GetUnicodeGlyph(key); + SpriteID sprite = this->GetUnicodeGlyph(static_cast(key & ~SPRITE_GLYPH)); if (sprite == 0) sprite = this->GetUnicodeGlyph('?'); return GetSprite(sprite, SpriteType::Font); } uint SpriteFontCache::GetGlyphWidth(GlyphID key) { - SpriteID sprite = this->GetUnicodeGlyph(key); + SpriteID sprite = this->GetUnicodeGlyph(static_cast(key & ~SPRITE_GLYPH)); if (sprite == 0) sprite = this->GetUnicodeGlyph('?'); return SpriteExists(sprite) ? GetSprite(sprite, SpriteType::Font)->width + ScaleFontTrad(this->fs != FS_NORMAL ? 1 : 0) : 0; } +GlyphID SpriteFontCache::MapCharToGlyph(char32_t key, [[maybe_unused]] bool allow_fallback) +{ + assert(IsPrintable(key)); + SpriteID sprite = this->GetUnicodeGlyph(key); + if (sprite == 0) return 0; + return SPRITE_GLYPH | key; +} + bool SpriteFontCache::GetDrawGlyphShadow() { return false; diff --git a/src/fontcache/spritefontcache.h b/src/fontcache/spritefontcache.h index e35cb1a5d6..61dd5866e2 100644 --- a/src/fontcache/spritefontcache.h +++ b/src/fontcache/spritefontcache.h @@ -15,24 +15,21 @@ /** Font cache for fonts that are based on a freetype font. */ class SpriteFontCache : public FontCache { -private: - SpriteID **glyph_to_spriteid_map; ///< Mapping of glyphs to sprite IDs. - SpriteID GetUnicodeGlyph(char32_t key); - - void ClearGlyphToSpriteMap(); public: SpriteFontCache(FontSize fs); - ~SpriteFontCache(); void SetUnicodeGlyph(char32_t key, SpriteID sprite) override; void InitializeUnicodeGlyphMap() override; void ClearFontCache() override; const Sprite *GetGlyph(GlyphID key) override; uint GetGlyphWidth(GlyphID key) override; bool GetDrawGlyphShadow() override; - GlyphID MapCharToGlyph(char32_t key, [[maybe_unused]] bool allow_fallback = true) override { assert(IsPrintable(key)); return SPRITE_GLYPH | key; } - const void *GetFontTable(uint32_t, size_t &length) override { length = 0; return nullptr; } + GlyphID MapCharToGlyph(char32_t key, bool allow_fallback = true) override; std::string GetFontName() override { return "sprite"; } bool IsBuiltInFont() override { return true; } + +private: + std::unordered_map glyph_to_spriteid_map{}; ///< Mapping of glyphs to sprite IDs. + SpriteID GetUnicodeGlyph(GlyphID key); }; #endif /* SPRITEFONTCACHE_H */ diff --git a/src/fontcache/truetypefontcache.cpp b/src/fontcache/truetypefontcache.cpp index 196add775c..890464e039 100644 --- a/src/fontcache/truetypefontcache.cpp +++ b/src/fontcache/truetypefontcache.cpp @@ -10,7 +10,6 @@ #include "../stdafx.h" #include "../debug.h" #include "../fontcache.h" -#include "../blitter/factory.hpp" #include "../core/bitmath_func.hpp" #include "../gfx_layout.h" #include "truetypefontcache.h" @@ -22,7 +21,7 @@ * @param fs The font size that is going to be cached. * @param pixels The number of pixels this font should be high. */ -TrueTypeFontCache::TrueTypeFontCache(FontSize fs, int pixels) : FontCache(fs), req_size(pixels), glyph_to_sprite(nullptr) +TrueTypeFontCache::TrueTypeFontCache(FontSize fs, int pixels) : FontCache(fs), req_size(pixels) { } @@ -33,10 +32,6 @@ TrueTypeFontCache::~TrueTypeFontCache() { /* Virtual functions get called statically in destructors, so make it explicit to remove any confusion. */ this->TrueTypeFontCache::ClearFontCache(); - - for (auto &iter : this->font_tables) { - free(iter.second.second); - } } /** @@ -44,54 +39,27 @@ TrueTypeFontCache::~TrueTypeFontCache() */ void TrueTypeFontCache::ClearFontCache() { - if (this->glyph_to_sprite == nullptr) return; - - for (int i = 0; i < 256; i++) { - if (this->glyph_to_sprite[i] == nullptr) continue; - - for (int j = 0; j < 256; j++) { - if (this->glyph_to_sprite[i][j].duplicate) continue; - free(this->glyph_to_sprite[i][j].sprite); - } - - free(this->glyph_to_sprite[i]); - } - - free(this->glyph_to_sprite); - this->glyph_to_sprite = nullptr; - + this->glyph_to_sprite_map.clear(); Layouter::ResetFontCache(this->fs); } TrueTypeFontCache::GlyphEntry *TrueTypeFontCache::GetGlyphPtr(GlyphID key) { - if (this->glyph_to_sprite == nullptr) return nullptr; - if (this->glyph_to_sprite[GB(key, 8, 8)] == nullptr) return nullptr; - return &this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)]; + auto found = this->glyph_to_sprite_map.find(key); + if (found == std::end(this->glyph_to_sprite_map)) return nullptr; + return &found->second; } -void TrueTypeFontCache::SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool duplicate) +TrueTypeFontCache::GlyphEntry &TrueTypeFontCache::SetGlyphPtr(GlyphID key, GlyphEntry &&glyph) { - if (this->glyph_to_sprite == nullptr) { - Debug(fontcache, 3, "Allocating root glyph cache for size {}", this->fs); - this->glyph_to_sprite = CallocT(256); - } - - if (this->glyph_to_sprite[GB(key, 8, 8)] == nullptr) { - Debug(fontcache, 3, "Allocating glyph cache for range 0x{:02X}00, size {}", GB(key, 8, 8), this->fs); - this->glyph_to_sprite[GB(key, 8, 8)] = CallocT(256); - } - - Debug(fontcache, 4, "Set glyph for unicode character 0x{:04X}, size {}", key, this->fs); - this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].sprite = glyph->sprite; - this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].width = glyph->width; - this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].duplicate = duplicate; + this->glyph_to_sprite_map[key] = std::move(glyph); + return this->glyph_to_sprite_map[key]; } bool TrueTypeFontCache::GetDrawGlyphShadow() { - return this->fs == FS_NORMAL && GetFontAAState(FS_NORMAL); + return this->fs == FS_NORMAL && GetFontAAState(); } uint TrueTypeFontCache::GetGlyphWidth(GlyphID key) @@ -99,7 +67,7 @@ uint TrueTypeFontCache::GetGlyphWidth(GlyphID key) if ((key & SPRITE_GLYPH) != 0) return this->parent->GetGlyphWidth(key); GlyphEntry *glyph = this->GetGlyphPtr(key); - if (glyph == nullptr || glyph->sprite == nullptr) { + if (glyph == nullptr || glyph->data == nullptr) { this->GetGlyph(key); glyph = this->GetGlyphPtr(key); } @@ -113,68 +81,7 @@ const Sprite *TrueTypeFontCache::GetGlyph(GlyphID key) /* Check for the glyph in our cache */ GlyphEntry *glyph = this->GetGlyphPtr(key); - if (glyph != nullptr && glyph->sprite != nullptr) return glyph->sprite; + if (glyph != nullptr && glyph->data != nullptr) return glyph->GetSprite(); - if (key == 0) { - GlyphID question_glyph = this->MapCharToGlyph('?'); - if (question_glyph == 0) { - /* The font misses the '?' character. Use built-in sprite. - * Note: We cannot use the baseset as this also has to work in the bootstrap GUI. */ -#define CPSET { 0, 0, 0, 0, 1 } -#define CP___ { 0, 0, 0, 0, 0 } - static SpriteLoader::CommonPixel builtin_questionmark_data[10 * 8] = { - CP___, CP___, CPSET, CPSET, CPSET, CPSET, CP___, CP___, - CP___, CPSET, CPSET, CP___, CP___, CPSET, CPSET, CP___, - CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, - CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, - CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, - CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, - CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, - CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___, - CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, - CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, - }; -#undef CPSET -#undef CP___ - static const SpriteLoader::SpriteCollection builtin_questionmark = {{ { - 10, // height - 8, // width - 0, // x_offs - 0, // y_offs - SpriteType::Font, - SCC_PAL, - builtin_questionmark_data - } }}; - - Sprite *spr = BlitterFactory::GetCurrentBlitter()->Encode(builtin_questionmark, SimpleSpriteAlloc); - assert(spr != nullptr); - GlyphEntry new_glyph; - new_glyph.sprite = spr; - new_glyph.width = spr->width + (this->fs != FS_NORMAL); - this->SetGlyphPtr(key, &new_glyph, false); - return new_glyph.sprite; - } else { - /* Use '?' for missing characters. */ - this->GetGlyph(question_glyph); - glyph = this->GetGlyphPtr(question_glyph); - this->SetGlyphPtr(key, glyph, true); - return glyph->sprite; - } - } - - return this->InternalGetGlyph(key, GetFontAAState(this->fs)); -} - -const void *TrueTypeFontCache::GetFontTable(uint32_t tag, size_t &length) -{ - const auto iter = this->font_tables.find(tag); - if (iter != this->font_tables.end()) { - length = iter->second.first; - return iter->second.second; - } - - const void *result = this->InternalGetFontTable(tag, length); - - this->font_tables[tag] = std::pair(length, result); - return result; + return this->InternalGetGlyph(key, GetFontAAState()); } diff --git a/src/fontcache/truetypefontcache.h b/src/fontcache/truetypefontcache.h index 2c84bbe2c9..3eb275df6e 100644 --- a/src/fontcache/truetypefontcache.h +++ b/src/fontcache/truetypefontcache.h @@ -15,8 +15,8 @@ static const int MAX_FONT_SIZE = 72; ///< Maximum font size. -static const byte FACE_COLOUR = 1; -static const byte SHADOW_COLOUR = 2; +static const uint8_t FACE_COLOUR = 1; +static const uint8_t SHADOW_COLOUR = 2; /** Font cache for fonts that are based on a TrueType font. */ class TrueTypeFontCache : public FontCache { @@ -27,35 +27,19 @@ protected: int req_size; ///< Requested font size. int used_size; ///< Used font size. - using FontTable = std::map>; ///< Table with font table cache - FontTable font_tables; ///< Cached font tables. - /** Container for information about a glyph. */ struct GlyphEntry { - Sprite *sprite; ///< The loaded sprite. - byte width; ///< The width of the glyph. - bool duplicate; ///< Whether this glyph entry is a duplicate, i.e. may this be freed? + std::unique_ptr data; ///< The loaded sprite. + uint8_t width = 0; ///< The width of the glyph. + + Sprite *GetSprite() { return reinterpret_cast(data.get()); } }; - /** - * The glyph cache. This is structured to reduce memory consumption. - * 1) There is a 'segment' table for each font size. - * 2) Each segment table is a discrete block of characters. - * 3) Each block contains 256 (aligned) characters sequential characters. - * - * The cache is accessed in the following way: - * For character 0x0041 ('A'): glyph_to_sprite[0x00][0x41] - * For character 0x20AC (Euro): glyph_to_sprite[0x20][0xAC] - * - * Currently only 256 segments are allocated, "limiting" us to 65536 characters. - * This can be simply changed in the two functions Get & SetGlyphPtr. - */ - GlyphEntry **glyph_to_sprite; + std::unordered_map glyph_to_sprite_map{}; GlyphEntry *GetGlyphPtr(GlyphID key); - void SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool duplicate = false); + GlyphEntry &SetGlyphPtr(GlyphID key, GlyphEntry &&glyph); - virtual const void *InternalGetFontTable(uint32_t tag, size_t &length) = 0; virtual const Sprite *InternalGetGlyph(GlyphID key, bool aa) = 0; public: @@ -65,7 +49,6 @@ public: void SetUnicodeGlyph(char32_t key, SpriteID sprite) override { this->parent->SetUnicodeGlyph(key, sprite); } void InitializeUnicodeGlyphMap() override { this->parent->InitializeUnicodeGlyphMap(); } const Sprite *GetGlyph(GlyphID key) override; - const void *GetFontTable(uint32_t tag, size_t &length) override; void ClearFontCache() override; uint GetGlyphWidth(GlyphID key) override; bool GetDrawGlyphShadow() override; diff --git a/src/framerate_gui.cpp b/src/framerate_gui.cpp index 114d5c2d89..59325d3653 100644 --- a/src/framerate_gui.cpp +++ b/src/framerate_gui.cpp @@ -448,7 +448,7 @@ struct FramerateWindow : Window { static constexpr int MIN_ELEMENTS = 5; ///< smallest number of elements to display - FramerateWindow(WindowDesc *desc, WindowNumber number) : Window(desc) + FramerateWindow(WindowDesc &desc, WindowNumber number) : Window(desc) { this->InitNested(number); this->small = this->IsShaded(); @@ -540,32 +540,32 @@ struct FramerateWindow : Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_FRW_RATE_GAMELOOP: SetDParam(0, STR_FRAMERATE_FPS_GOOD); SetDParam(1, 999999); SetDParam(2, 2); - *size = GetStringBoundingBox(STR_FRAMERATE_RATE_GAMELOOP); + size = GetStringBoundingBox(STR_FRAMERATE_RATE_GAMELOOP); break; case WID_FRW_RATE_DRAWING: SetDParam(0, STR_FRAMERATE_FPS_GOOD); SetDParam(1, 999999); SetDParam(2, 2); - *size = GetStringBoundingBox(STR_FRAMERATE_RATE_BLITTER); + size = GetStringBoundingBox(STR_FRAMERATE_RATE_BLITTER); break; case WID_FRW_RATE_FACTOR: SetDParam(0, 999999); SetDParam(1, 2); - *size = GetStringBoundingBox(STR_FRAMERATE_SPEED_FACTOR); + size = GetStringBoundingBox(STR_FRAMERATE_SPEED_FACTOR); break; case WID_FRW_TIMES_NAMES: { - size->width = 0; - size->height = GetCharacterHeight(FS_NORMAL) + WidgetDimensions::scaled.vsep_normal + MIN_ELEMENTS * GetCharacterHeight(FS_NORMAL); - resize->width = 0; - resize->height = GetCharacterHeight(FS_NORMAL); + size.width = 0; + size.height = GetCharacterHeight(FS_NORMAL) + WidgetDimensions::scaled.vsep_normal + MIN_ELEMENTS * GetCharacterHeight(FS_NORMAL); + resize.width = 0; + resize.height = GetCharacterHeight(FS_NORMAL); for (PerformanceElement e : DISPLAY_ORDER_PFE) { if (_pf_data[e].num_valid == 0) continue; Dimension line_size; @@ -576,7 +576,7 @@ struct FramerateWindow : Window { SetDParamStr(1, GetAIName(e - PFE_AI0)); line_size = GetStringBoundingBox(STR_FRAMERATE_AI); } - size->width = std::max(size->width, line_size.width); + size.width = std::max(size.width, line_size.width); } break; } @@ -584,14 +584,14 @@ struct FramerateWindow : Window { case WID_FRW_TIMES_CURRENT: case WID_FRW_TIMES_AVERAGE: case WID_FRW_ALLOCSIZE: { - *size = GetStringBoundingBox(STR_FRAMERATE_CURRENT + (widget - WID_FRW_TIMES_CURRENT)); + size = GetStringBoundingBox(STR_FRAMERATE_CURRENT + (widget - WID_FRW_TIMES_CURRENT)); SetDParam(0, 999999); SetDParam(1, 2); Dimension item_size = GetStringBoundingBox(STR_FRAMERATE_MS_GOOD); - size->width = std::max(size->width, item_size.width); - size->height += GetCharacterHeight(FS_NORMAL) * MIN_ELEMENTS + WidgetDimensions::scaled.vsep_normal; - resize->width = 0; - resize->height = GetCharacterHeight(FS_NORMAL); + size.width = std::max(size.width, item_size.width); + size.height += GetCharacterHeight(FS_NORMAL) * MIN_ELEMENTS + WidgetDimensions::scaled.vsep_normal; + resize.width = 0; + resize.height = GetCharacterHeight(FS_NORMAL); break; } } @@ -601,7 +601,7 @@ struct FramerateWindow : Window { void DrawElementTimesColumn(const Rect &r, StringID heading_str, const CachedDecimal *values) const { const Scrollbar *sb = this->GetScrollbar(WID_FRW_SCROLLBAR); - uint16_t skip = sb->GetPosition(); + int32_t skip = sb->GetPosition(); int drawable = this->num_displayed; int y = r.top; DrawString(r.left, r.right, y, heading_str, TC_FROMSTRING, SA_CENTER, true); @@ -623,7 +623,7 @@ struct FramerateWindow : Window { void DrawElementAllocationsColumn(const Rect &r) const { const Scrollbar *sb = this->GetScrollbar(WID_FRW_SCROLLBAR); - uint16_t skip = sb->GetPosition(); + int32_t skip = sb->GetPosition(); int drawable = this->num_displayed; int y = r.top; DrawString(r.left, r.right, y, STR_FRAMERATE_MEMORYUSE, TC_FROMSTRING, SA_CENTER, true); @@ -657,7 +657,7 @@ struct FramerateWindow : Window { case WID_FRW_TIMES_NAMES: { /* Render a column of titles for performance element names */ const Scrollbar *sb = this->GetScrollbar(WID_FRW_SCROLLBAR); - uint16_t skip = sb->GetPosition(); + int32_t skip = sb->GetPosition(); int drawable = this->num_displayed; int y = r.top + GetCharacterHeight(FS_NORMAL) + WidgetDimensions::scaled.vsep_normal; // first line contains headings in the value columns for (PerformanceElement e : DISPLAY_ORDER_PFE) { @@ -701,8 +701,8 @@ struct FramerateWindow : Window { case WID_FRW_TIMES_AVERAGE: { /* Open time graph windows when clicking detail measurement lines */ const Scrollbar *sb = this->GetScrollbar(WID_FRW_SCROLLBAR); - int line = sb->GetScrolledRowFromWidget(pt.y, this, widget, WidgetDimensions::scaled.vsep_normal + GetCharacterHeight(FS_NORMAL)); - if (line != INT_MAX) { + int32_t line = sb->GetScrolledRowFromWidget(pt.y, this, widget, WidgetDimensions::scaled.vsep_normal + GetCharacterHeight(FS_NORMAL)); + if (line != INT32_MAX) { line++; /* Find the visible line that was clicked */ for (PerformanceElement e : DISPLAY_ORDER_PFE) { @@ -726,11 +726,11 @@ struct FramerateWindow : Window { } }; -static WindowDesc _framerate_display_desc(__FILE__, __LINE__, +static WindowDesc _framerate_display_desc( WDP_AUTO, "framerate_display", 0, 0, WC_FRAMERATE_DISPLAY, WC_NONE, 0, - std::begin(_framerate_window_widgets), std::end(_framerate_window_widgets) + _framerate_window_widgets ); @@ -755,7 +755,7 @@ struct FrametimeGraphWindow : Window { PerformanceElement element; ///< what element this window renders graph for Dimension graph_size; ///< size of the main graph area (excluding axis labels) - FrametimeGraphWindow(WindowDesc *desc, WindowNumber number) : Window(desc) + FrametimeGraphWindow(WindowDesc &desc, WindowNumber number) : Window(desc) { this->element = (PerformanceElement)number; this->horizontal_scale = 4; @@ -780,7 +780,7 @@ struct FrametimeGraphWindow : Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget == WID_FGW_GRAPH) { SetDParam(0, 100); @@ -792,10 +792,10 @@ struct FrametimeGraphWindow : Window { graph_size.height = std::max(100u, 10 * (size_ms_label.height + 1)); /* Always 2:1 graph area */ graph_size.width = 2 * graph_size.height; - *size = graph_size; + size = graph_size; - size->width += size_ms_label.width + 2; - size->height += size_s_label.height + 2; + size.width += size_ms_label.width + 2; + size.height += size_s_label.height + 2; } } @@ -810,22 +810,22 @@ struct FrametimeGraphWindow : Window { /* Determine horizontal scale based on period covered by 60 points * (slightly less than 2 seconds at full game speed) */ struct ScaleDef { TimingMeasurement range; int scale; }; - static const ScaleDef hscales[] = { + static const std::initializer_list hscales = { { TIMESTAMP_PRECISION * 120, 60 }, { TIMESTAMP_PRECISION * 10, 20 }, { TIMESTAMP_PRECISION * 5, 10 }, { TIMESTAMP_PRECISION * 3, 4 }, { TIMESTAMP_PRECISION * 1, 2 }, }; - for (const ScaleDef *sc = hscales; sc < hscales + lengthof(hscales); sc++) { - if (range < sc->range) this->horizontal_scale = sc->scale; + for (const auto &sc : hscales) { + if (range < sc.range) this->horizontal_scale = sc.scale; } } void SelectVerticalScale(TimingMeasurement range) { /* Determine vertical scale based on peak value (within the horizontal scale + a bit) */ - static const TimingMeasurement vscales[] = { + static const std::initializer_list vscales = { TIMESTAMP_PRECISION * 100, TIMESTAMP_PRECISION * 10, TIMESTAMP_PRECISION * 5, @@ -836,8 +836,8 @@ struct FrametimeGraphWindow : Window { TIMESTAMP_PRECISION / 50, TIMESTAMP_PRECISION / 200, }; - for (const TimingMeasurement *sc = vscales; sc < vscales + lengthof(vscales); sc++) { - if (range < *sc) this->vertical_scale = (int)*sc; + for (const auto &sc : vscales) { + if (range < sc) this->vertical_scale = (int)sc; } } @@ -1017,11 +1017,11 @@ struct FrametimeGraphWindow : Window { } }; -static WindowDesc _frametime_graph_window_desc(__FILE__, __LINE__, +static WindowDesc _frametime_graph_window_desc( WDP_AUTO, "frametime_graph", 140, 90, WC_FRAMETIME_GRAPH, WC_NONE, 0, - std::begin(_frametime_graph_window_widgets), std::end(_frametime_graph_window_widgets) + _frametime_graph_window_widgets ); @@ -1029,14 +1029,14 @@ static WindowDesc _frametime_graph_window_desc(__FILE__, __LINE__, /** Open the general framerate window */ void ShowFramerateWindow() { - AllocateWindowDescFront(&_framerate_display_desc, 0); + AllocateWindowDescFront(_framerate_display_desc, 0); } /** Open a graph window for a performance element */ void ShowFrametimeGraphWindow(PerformanceElement elem) { if (elem < PFE_FIRST || elem >= PFE_MAX) return; // maybe warn? - AllocateWindowDescFront(&_frametime_graph_window_desc, elem, true); + AllocateWindowDescFront(_frametime_graph_window_desc, elem, true); } /** Print performance statistics to game console */ @@ -1048,7 +1048,7 @@ void ConPrintFramerate() IConsolePrint(TC_SILVER, "Based on num. data points: {} {} {}", count1, count2, count3); - static const char *MEASUREMENT_NAMES[PFE_MAX] = { + static const std::array MEASUREMENT_NAMES = { "Game loop", " GL station ticks", " GL train ticks", @@ -1066,15 +1066,13 @@ void ConPrintFramerate() }; std::string ai_name_buf; - static const PerformanceElement rate_elements[] = { PFE_GAMELOOP, PFE_DRAWING, PFE_VIDEO }; - bool printed_anything = false; - for (const PerformanceElement *e = rate_elements; e < rate_elements + lengthof(rate_elements); e++) { - auto &pf = _pf_data[*e]; + for (const auto &e : { PFE_GAMELOOP, PFE_DRAWING, PFE_VIDEO }) { + auto &pf = _pf_data[e]; if (pf.num_valid == 0) continue; IConsolePrint(TC_GREEN, "{} rate: {:.2f}fps (expected: {:.2f}fps)", - MEASUREMENT_NAMES[*e], + MEASUREMENT_NAMES[e], pf.GetRate(), pf.expected_rate); printed_anything = true; diff --git a/src/game/game.hpp b/src/game/game.hpp index 7ec438e88e..c3664cd696 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -31,9 +31,8 @@ public: /** * Start up a new GameScript. - * @param deviate Whether to apply random deviation to the configured GameScript. */ - static void StartNew(bool deviate = true); + static void StartNew(); /** * Uninitialize the Game system. diff --git a/src/game/game_core.cpp b/src/game/game_core.cpp index ad3558c0e1..a5cdb2575b 100644 --- a/src/game/game_core.cpp +++ b/src/game/game_core.cpp @@ -43,7 +43,7 @@ Game::frame_counter++; - Backup cur_company(_current_company, FILE_LINE); + Backup cur_company(_current_company); cur_company.Change(OWNER_DEITY); Game::instance->GameLoop(); cur_company.Restore(); @@ -69,7 +69,7 @@ } } -/* static */ void Game::StartNew(bool deviate) +/* static */ void Game::StartNew() { if (Game::instance != nullptr) return; @@ -83,10 +83,9 @@ GameInfo *info = config->GetInfo(); if (info == nullptr) return; - if (deviate) config->AddRandomDeviation(OWNER_DEITY); config->AnchorUnchangeableSettings(); - Backup cur_company(_current_company, FILE_LINE); + Backup cur_company(_current_company); cur_company.Change(OWNER_DEITY); Game::info = info; @@ -102,7 +101,7 @@ /* static */ void Game::Uninitialize(bool keepConfig) { - Backup cur_company(_current_company, FILE_LINE); + Backup cur_company(_current_company); delete Game::instance; Game::instance = nullptr; @@ -162,7 +161,7 @@ } /* Queue the event */ - Backup cur_company(_current_company, OWNER_DEITY, FILE_LINE); + Backup cur_company(_current_company, OWNER_DEITY); Game::instance->InsertEvent(event); cur_company.Restore(); @@ -212,7 +211,7 @@ /* static */ void Game::Save() { if (Game::instance != nullptr && (!_networking || _network_server)) { - Backup cur_company(_current_company, OWNER_DEITY, FILE_LINE); + Backup cur_company(_current_company, OWNER_DEITY); Game::instance->Save(); cur_company.Restore(); } else { diff --git a/src/game/game_gui.cpp b/src/game/game_gui.cpp index 879428c0c4..36c9d1b7c7 100644 --- a/src/game/game_gui.cpp +++ b/src/game/game_gui.cpp @@ -14,7 +14,8 @@ #include "../window_func.h" #include "../network/network.h" #include "../network/network_content.h" -#include "../widgets/dropdown_func.h" +#include "../dropdown_type.h" +#include "../dropdown_func.h" #include "../timer/timer.h" #include "../timer/timer_window.h" @@ -73,11 +74,11 @@ static constexpr NWidgetPart _nested_gs_config_widgets[] = { }; /** Window definition for the configure GS window. */ -static WindowDesc _gs_config_desc(__FILE__, __LINE__, +static WindowDesc _gs_config_desc( WDP_CENTER, "settings_gs_config", 500, 350, WC_GAME_OPTIONS, WC_NONE, 0, - std::begin(_nested_gs_config_widgets), std::end(_nested_gs_config_widgets) + _nested_gs_config_widgets ); /** @@ -95,7 +96,7 @@ struct GSConfigWindow : public Window { typedef std::vector VisibleSettingsList; ///< typdef for a vector of script settings VisibleSettingsList visible_settings; ///< List of visible GS settings - GSConfigWindow() : Window(&_gs_config_desc), + GSConfigWindow() : Window(_gs_config_desc), clicked_button(-1), clicked_dropdown(false), closing_dropdown(false) @@ -135,19 +136,19 @@ struct GSConfigWindow : public Window { this->vscroll->SetCount(this->visible_settings.size()); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_GSC_SETTINGS: this->line_height = std::max(SETTING_BUTTON_HEIGHT, GetCharacterHeight(FS_NORMAL)) + padding.height; - resize->width = 1; - resize->height = this->line_height; - size->height = 5 * this->line_height; + resize.width = 1; + resize.height = this->line_height; + size.height = 5 * this->line_height; break; case WID_GSC_GSLIST: this->line_height = GetCharacterHeight(FS_NORMAL) + padding.height; - size->height = 1 * this->line_height; + size.height = 1 * this->line_height; break; } } @@ -199,18 +200,10 @@ struct GSConfigWindow : public Window { TextColour colour; uint idx = 0; if (config_item.description.empty()) { - if (Game::GetInstance() == nullptr && config_item.random_deviation != 0) { - str = STR_AI_SETTINGS_JUST_DEVIATION; - } else { - str = STR_JUST_STRING1; - } + str = STR_JUST_STRING1; colour = TC_ORANGE; } else { - if (Game::GetInstance() == nullptr && config_item.random_deviation != 0) { - str = STR_AI_SETTINGS_SETTING_DEVIATION; - } else { - str = STR_AI_SETTINGS_SETTING; - } + str = STR_AI_SETTINGS_SETTING; colour = TC_LIGHT_BLUE; SetDParamStr(idx++, config_item.description); } @@ -225,35 +218,13 @@ struct GSConfigWindow : public Window { DrawArrowButtons(br.left, y + button_y_offset, COLOUR_YELLOW, (this->clicked_button == i) ? 1 + (this->clicked_increase != rtl) : 0, editable && current_value > config_item.min_value, editable && current_value < config_item.max_value); } - if (Game::GetInstance() != nullptr || config_item.random_deviation == 0) { - auto config_iterator = config_item.labels.find(current_value); - if (config_iterator != config_item.labels.end()) { - SetDParam(idx++, STR_JUST_RAW_STRING); - SetDParamStr(idx++, config_iterator->second); - } else { - SetDParam(idx++, STR_JUST_INT); - SetDParam(idx++, current_value); - } + auto config_iterator = config_item.labels.find(current_value); + if (config_iterator != config_item.labels.end()) { + SetDParam(idx++, STR_JUST_RAW_STRING); + SetDParamStr(idx++, config_iterator->second); } else { - int min_deviated = std::max(config_item.min_value, current_value - config_item.random_deviation); - auto config_iterator = config_item.labels.find(min_deviated); - if (config_iterator != config_item.labels.end()) { - SetDParam(idx++, STR_JUST_RAW_STRING); - SetDParamStr(idx++, config_iterator->second); - } else { - SetDParam(idx++, STR_JUST_INT); - SetDParam(idx++, min_deviated); - } - - int max_deviated = std::min(config_item.max_value, current_value + config_item.random_deviation); - config_iterator = config_item.labels.find(max_deviated); - if (config_iterator != config_item.labels.end()) { - SetDParam(idx++, STR_JUST_RAW_STRING); - SetDParamStr(idx++, config_iterator->second); - } else { - SetDParam(idx++, STR_JUST_INT); - SetDParam(idx++, max_deviated); - } + SetDParam(idx++, STR_JUST_INT); + SetDParam(idx++, current_value); } } @@ -347,7 +318,7 @@ struct GSConfigWindow : public Window { DropDownList list; for (int i = config_item.min_value; i <= config_item.max_value; i++) { - list.push_back(std::make_unique(config_item.labels.find(i)->second, i, false)); + list.push_back(MakeDropDownListStringItem(config_item.labels.find(i)->second, i)); } ShowDropDownListAt(this, std::move(list), old_val, WID_GSC_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE); @@ -397,10 +368,10 @@ struct GSConfigWindow : public Window { } } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (StrEmpty(str)) return; - int32_t value = atoi(str); + if (!str.has_value() || str->empty()) return; + int32_t value = atoi(str->c_str()); SetValue(value); } diff --git a/src/game/game_text.cpp b/src/game/game_text.cpp index d6730fe5f6..682d5238e0 100644 --- a/src/game/game_text.cpp +++ b/src/game/game_text.cpp @@ -136,7 +136,7 @@ struct TranslationWriter : LanguageWriter { /* We don't write the length. */ } - void Write(const byte *buffer, size_t length) override + void Write(const uint8_t *buffer, size_t length) override { this->strings.emplace_back((const char *)buffer, length); } @@ -180,7 +180,7 @@ public: /** * Scan. */ - void Scan(const char *directory) + void Scan(const std::string &directory) { this->FileScanner::Scan(".txt", directory, false); } @@ -241,7 +241,7 @@ GameStrings *LoadTranslations() } } else { /* Scan filesystem */ - scanner.Scan(ldir.c_str()); + scanner.Scan(ldir); } gs->Compile(); @@ -386,7 +386,7 @@ void ReconsiderGameScriptLanguage() { if (_current_data == nullptr) return; - std::string language = _current_language->file.stem().string(); + std::string language = FS2OTTD(_current_language->file.stem()); for (auto &p : _current_data->compiled_strings) { if (p.language == language) { _current_data->cur_language = &p; diff --git a/src/gamelog.cpp b/src/gamelog.cpp index 7555380342..4384010b1a 100644 --- a/src/gamelog.cpp +++ b/src/gamelog.cpp @@ -26,7 +26,7 @@ extern SavegameType _savegame_type; ///< type of savegame we are loading extern uint32_t _ttdp_version; ///< version of TTDP savegame (if applicable) extern SaveLoadVersion _sl_version; ///< the major savegame version identifier -extern byte _sl_minor_version; ///< the minor savegame version, DO NOT USE! +extern uint8_t _sl_minor_version; ///< the minor savegame version, DO NOT USE! Gamelog _gamelog; ///< Gamelog instance @@ -463,7 +463,7 @@ void Gamelog::TestMode() * @param bug type of bug, @see enum GRFBugs * @param data additional data */ -void Gamelog::GRFBug(uint32_t grfid, byte bug, uint64_t data) +void Gamelog::GRFBug(uint32_t grfid, uint8_t bug, uint64_t data) { assert(this->action_type == GLAT_GRFBUG); @@ -682,7 +682,7 @@ void Gamelog::GRFUpdate(const GRFConfig *oldc, const GRFConfig *newc) * @param[out] ever_modified Max value of 'modified' from all binaries that ever saved this savegame. * @param[out] removed_newgrfs Set to true if any NewGRFs have been removed. */ -void Gamelog::Info(uint32_t *last_ottd_rev, byte *ever_modified, bool *removed_newgrfs) +void Gamelog::Info(uint32_t *last_ottd_rev, uint8_t *ever_modified, bool *removed_newgrfs) { for (const LoggedAction &la : this->data->action) { for (const auto &lc : la.change) { diff --git a/src/gamelog.h b/src/gamelog.h index 919ef9b5ba..597683769f 100644 --- a/src/gamelog.h +++ b/src/gamelog.h @@ -80,7 +80,7 @@ public: void GRFAddList(const GRFConfig *newg); void GRFRemove(uint32_t grfid); void GRFAdd(const GRFConfig *newg); - void GRFBug(uint32_t grfid, byte bug, uint64_t data); + void GRFBug(uint32_t grfid, uint8_t bug, uint64_t data); bool GRFBugReverse(uint32_t grfid, uint16_t internal_id); void GRFCompatible(const GRFIdentifier *newg); void GRFMove(uint32_t grfid, int32_t offset); @@ -89,7 +89,7 @@ public: void TestRevision(); void TestMode(); - void Info(uint32_t *last_ottd_rev, byte *ever_modified, bool *removed_newgrfs); + void Info(uint32_t *last_ottd_rev, uint8_t *ever_modified, bool *removed_newgrfs); const GRFIdentifier *GetOverriddenIdentifier(const GRFConfig *c); /* Saveload handler for gamelog needs access to internal data. */ diff --git a/src/gamelog_internal.h b/src/gamelog_internal.h index 463c0eab0e..23c35c8bd6 100644 --- a/src/gamelog_internal.h +++ b/src/gamelog_internal.h @@ -38,24 +38,24 @@ struct LoggedChange { struct LoggedChangeMode : LoggedChange { LoggedChangeMode() : LoggedChange(GLCT_MODE) {} - LoggedChangeMode(byte mode, byte landscape) : + LoggedChangeMode(uint8_t mode, uint8_t landscape) : LoggedChange(GLCT_MODE), mode(mode), landscape(landscape) {} void FormatTo(std::back_insert_iterator &output_iterator, GrfIDMapping &grf_names, GamelogActionType action_type) override; - byte mode; ///< new game mode - Editor x Game - byte landscape; ///< landscape (temperate, arctic, ...) + uint8_t mode; ///< new game mode - Editor x Game + uint8_t landscape; ///< landscape (temperate, arctic, ...) }; struct LoggedChangeRevision : LoggedChange { LoggedChangeRevision() : LoggedChange(GLCT_REVISION) {} - LoggedChangeRevision(const std::string &text, uint32_t newgrf, uint16_t slver, byte modified) : + LoggedChangeRevision(const std::string &text, uint32_t newgrf, uint16_t slver, uint8_t modified) : LoggedChange(GLCT_REVISION), text(text), newgrf(newgrf), slver(slver), modified(modified) {} void FormatTo(std::back_insert_iterator &output_iterator, GrfIDMapping &grf_names, GamelogActionType action_type) override; std::string text; ///< revision string, _openttd_revision uint32_t newgrf; ///< _openttd_newgrf_version uint16_t slver; ///< _sl_version - byte modified; //< _openttd_revision_modified + uint8_t modified; //< _openttd_revision_modified }; struct LoggedChangeOldVersion : LoggedChange { @@ -123,13 +123,13 @@ struct LoggedChangeSettingChanged : LoggedChange { struct LoggedChangeGRFBug : LoggedChange { LoggedChangeGRFBug() : LoggedChange(GLCT_GRFBUG) {} - LoggedChangeGRFBug(uint64_t data, uint32_t grfid, byte bug) : + LoggedChangeGRFBug(uint64_t data, uint32_t grfid, uint8_t bug) : LoggedChange(GLCT_GRFBUG), data(data), grfid(grfid), bug(bug) {} void FormatTo(std::back_insert_iterator &output_iterator, GrfIDMapping &grf_names, GamelogActionType action_type) override; uint64_t data; ///< additional data uint32_t grfid; ///< ID of problematic GRF - byte bug; ///< type of bug, @see enum GRFBugs + uint8_t bug; ///< type of bug, @see enum GRFBugs }; struct LoggedChangeEmergencySave : LoggedChange { diff --git a/src/genworld.cpp b/src/genworld.cpp index b657273f95..2499248cb1 100644 --- a/src/genworld.cpp +++ b/src/genworld.cpp @@ -26,6 +26,7 @@ #include "void_map.h" #include "town.h" #include "newgrf.h" +#include "newgrf_house.h" #include "core/random_func.hpp" #include "core/backup_type.hpp" #include "progress.h" @@ -86,7 +87,7 @@ static void CleanupGeneration() static void _GenerateWorld() { /* Make sure everything is done via OWNER_NONE. */ - Backup _cur_company(_current_company, OWNER_NONE, FILE_LINE); + Backup _cur_company(_current_company, OWNER_NONE); try { _generating_world = true; @@ -102,6 +103,10 @@ static void _GenerateWorld() IncreaseGeneratingWorldProgress(GWP_MAP_INIT); /* Must start economy early because of the costs. */ StartupEconomy(); + if (!CheckTownRoadTypes()) { + HandleGeneratingWorldAbortion(); + return; + } bool landscape_generated = false; @@ -311,6 +316,7 @@ void GenerateWorld(GenWorldMode mode, uint size_x, uint size_y, bool reset_setti /* Load the right landscape stuff, and the NewGRFs! */ GfxLoadSprites(); + InitializeBuildingCounts(); LoadStringWidthTable(); /* Re-init the windowing system */ diff --git a/src/genworld.h b/src/genworld.h index e76eb15d1f..23bdf633fe 100644 --- a/src/genworld.h +++ b/src/genworld.h @@ -91,7 +91,7 @@ bool IsGeneratingWorldAborted(); void HandleGeneratingWorldAbortion(); /* genworld_gui.cpp */ -void SetNewLandscapeType(byte landscape); +void SetNewLandscapeType(uint8_t landscape); void SetGeneratingWorldProgress(GenWorldProgress cls, uint total); void IncreaseGeneratingWorldProgress(GenWorldProgress cls); void PrepareGenerateWorldProgress(); diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp index c895640756..4b16bdab50 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -18,8 +18,9 @@ #include "sound_func.h" #include "fios.h" #include "string_func.h" -#include "widgets/dropdown_type.h" -#include "widgets/dropdown_func.h" +#include "dropdown_type.h" +#include "dropdown_common_type.h" +#include "dropdown_func.h" #include "querystring_gui.h" #include "town.h" #include "core/geometry_func.hpp" @@ -61,7 +62,7 @@ static uint GetMapHeightLimit() * Changes landscape type and sets genworld window dirty * @param landscape new landscape type */ -void SetNewLandscapeType(byte landscape) +void SetNewLandscapeType(uint8_t landscape) { _settings_newgame.game_creation.landscape = landscape; InvalidateWindowClassesData(WC_SELECT_GAME); @@ -136,24 +137,24 @@ static constexpr NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR), /* Snow coverage. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), EndContainer(), /* Desert coverage. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), EndContainer(), /* Temperate/Toyland spacer. */ NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), /* Starting date. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_MAPGEN_DATE_TOOLTIP), SetFill(1, 1), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWNNAME_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP), SetFill(1, 1), @@ -241,9 +242,9 @@ static constexpr NWidgetPart _nested_heightmap_load_widgets[] = { NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP), SetFill(1, 1), /* Heightmap highest peak. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_TEXT), SetDataTip(STR_JUST_INT, STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP), SetFill(1, 1), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_HEIGHTMAP_HEIGHT_UP), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_HEIGHTMAP_HEIGHT_UP), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT), SetFill(1, 1), EndContainer(), @@ -270,24 +271,24 @@ static constexpr NWidgetPart _nested_heightmap_load_widgets[] = { NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR), /* Snow coverage. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), EndContainer(), /* Desert coverage. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), EndContainer(), /* Temperate/Toyland spacer. */ NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), /* Starting date. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_MAPGEN_DATE_TOOLTIP), SetFill(1, 1), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWNNAME_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP), SetFill(1, 1), @@ -338,7 +339,7 @@ static DropDownList BuildMapsizeDropDown() for (uint i = MIN_MAP_SIZE_BITS; i <= MAX_MAP_SIZE_BITS; i++) { SetDParam(0, 1LL << i); - list.push_back(std::make_unique(STR_JUST_INT, i, false)); + list.push_back(MakeDropDownListStringItem(STR_JUST_INT, i)); } return list; @@ -351,20 +352,20 @@ static DropDownList BuildTownNameDropDown() /* Add and sort newgrf townnames generators */ const auto &grf_names = GetGRFTownNameList(); for (uint i = 0; i < grf_names.size(); i++) { - list.push_back(std::make_unique(grf_names[i], BUILTIN_TOWNNAME_GENERATOR_COUNT + i, false)); + list.push_back(MakeDropDownListStringItem(grf_names[i], BUILTIN_TOWNNAME_GENERATOR_COUNT + i)); } std::sort(list.begin(), list.end(), DropDownListStringItem::NatSortFunc); size_t newgrf_size = list.size(); /* Insert newgrf_names at the top of the list */ if (newgrf_size > 0) { - list.push_back(std::make_unique(-1, false)); // separator line + list.push_back(MakeDropDownListDividerItem()); // separator line newgrf_size++; } /* Add and sort original townnames generators */ for (uint i = 0; i < BUILTIN_TOWNNAME_GENERATOR_COUNT; i++) { - list.push_back(std::make_unique(STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH + i, i, false)); + list.push_back(MakeDropDownListStringItem(STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH + i, i)); } std::sort(list.begin() + newgrf_size, list.end(), DropDownListStringItem::NatSortFunc); @@ -372,16 +373,16 @@ static DropDownList BuildTownNameDropDown() } -static const StringID _elevations[] = {STR_TERRAIN_TYPE_VERY_FLAT, STR_TERRAIN_TYPE_FLAT, STR_TERRAIN_TYPE_HILLY, STR_TERRAIN_TYPE_MOUNTAINOUS, STR_TERRAIN_TYPE_ALPINIST, STR_TERRAIN_TYPE_CUSTOM, INVALID_STRING_ID}; -static const StringID _sea_lakes[] = {STR_SEA_LEVEL_VERY_LOW, STR_SEA_LEVEL_LOW, STR_SEA_LEVEL_MEDIUM, STR_SEA_LEVEL_HIGH, STR_SEA_LEVEL_CUSTOM, INVALID_STRING_ID}; -static const StringID _rivers[] = {STR_RIVERS_NONE, STR_RIVERS_FEW, STR_RIVERS_MODERATE, STR_RIVERS_LOT, INVALID_STRING_ID}; -static const StringID _smoothness[] = {STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH, INVALID_STRING_ID}; -static const StringID _rotation[] = {STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE, STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE, INVALID_STRING_ID}; -static const StringID _num_towns[] = {STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, STR_NUM_CUSTOM, INVALID_STRING_ID}; -static const StringID _num_inds[] = {STR_FUNDING_ONLY, STR_MINIMAL, STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, STR_NUM_CUSTOM, INVALID_STRING_ID}; -static const StringID _variety[] = {STR_VARIETY_NONE, STR_VARIETY_VERY_LOW, STR_VARIETY_LOW, STR_VARIETY_MEDIUM, STR_VARIETY_HIGH, STR_VARIETY_VERY_HIGH, INVALID_STRING_ID}; +static const StringID _elevations[] = {STR_TERRAIN_TYPE_VERY_FLAT, STR_TERRAIN_TYPE_FLAT, STR_TERRAIN_TYPE_HILLY, STR_TERRAIN_TYPE_MOUNTAINOUS, STR_TERRAIN_TYPE_ALPINIST, STR_TERRAIN_TYPE_CUSTOM}; +static const StringID _sea_lakes[] = {STR_SEA_LEVEL_VERY_LOW, STR_SEA_LEVEL_LOW, STR_SEA_LEVEL_MEDIUM, STR_SEA_LEVEL_HIGH, STR_SEA_LEVEL_CUSTOM}; +static const StringID _rivers[] = {STR_RIVERS_NONE, STR_RIVERS_FEW, STR_RIVERS_MODERATE, STR_RIVERS_LOT}; +static const StringID _smoothness[] = {STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH}; +static const StringID _rotation[] = {STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE, STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE}; +static const StringID _num_towns[] = {STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, STR_NUM_CUSTOM}; +static const StringID _num_inds[] = {STR_FUNDING_ONLY, STR_MINIMAL, STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, STR_NUM_CUSTOM}; +static const StringID _variety[] = {STR_VARIETY_NONE, STR_VARIETY_VERY_LOW, STR_VARIETY_LOW, STR_VARIETY_MEDIUM, STR_VARIETY_HIGH, STR_VARIETY_VERY_HIGH}; -static_assert(lengthof(_num_inds) == ID_END + 1); +static_assert(std::size(_num_inds) == ID_END); struct GenerateLandscapeWindow : public Window { WidgetID widget_id; @@ -390,7 +391,7 @@ struct GenerateLandscapeWindow : public Window { std::string name; GenerateLandscapeWindowMode mode; - GenerateLandscapeWindow(WindowDesc *desc, WindowNumber number = 0) : Window(desc) + GenerateLandscapeWindow(WindowDesc &desc, WindowNumber number = 0) : Window(desc) { this->InitNested(number); @@ -570,15 +571,15 @@ struct GenerateLandscapeWindow : public Window { } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { Dimension d{0, (uint)GetCharacterHeight(FS_NORMAL)}; - const StringID *strs = nullptr; + std::span strs; switch (widget) { case WID_GL_TEMPERATE: case WID_GL_ARCTIC: case WID_GL_TROPICAL: case WID_GL_TOYLAND: - size->width += WidgetDimensions::scaled.fullbevel.Horizontal(); - size->height += WidgetDimensions::scaled.fullbevel.Vertical(); + size.width += WidgetDimensions::scaled.fullbevel.Horizontal(); + size.height += WidgetDimensions::scaled.fullbevel.Vertical(); break; case WID_GL_HEIGHTMAP_HEIGHT_TEXT: @@ -653,20 +654,16 @@ struct GenerateLandscapeWindow : public Window { break; case WID_GL_HEIGHTMAP_NAME_TEXT: - size->width = 0; + size.width = 0; break; default: return; } - if (strs != nullptr) { - while (*strs != INVALID_STRING_ID) { - d = maxdim(d, GetStringBoundingBox(*strs++)); - } - } + d = maxdim(d, GetStringListBoundingBox(strs)); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); } void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override @@ -938,14 +935,14 @@ struct GenerateLandscapeWindow : public Window { this->InvalidateData(); } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { /* Was 'cancel' pressed? */ - if (str == nullptr) return; + if (!str.has_value()) return; int32_t value; - if (!StrEmpty(str)) { - value = atoi(str); + if (!str->empty()) { + value = atoi(str->c_str()); } else { /* An empty string means revert to the default */ switch (this->widget_id) { @@ -1003,18 +1000,18 @@ struct GenerateLandscapeWindow : public Window { } }; -static WindowDesc _generate_landscape_desc(__FILE__, __LINE__, +static WindowDesc _generate_landscape_desc( WDP_CENTER, nullptr, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, 0, - std::begin(_nested_generate_landscape_widgets), std::end(_nested_generate_landscape_widgets) + _nested_generate_landscape_widgets ); -static WindowDesc _heightmap_load_desc(__FILE__, __LINE__, +static WindowDesc _heightmap_load_desc( WDP_CENTER, nullptr, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, 0, - std::begin(_nested_heightmap_load_widgets), std::end(_nested_heightmap_load_widgets) + _nested_heightmap_load_widgets ); static void _ShowGenerateLandscape(GenerateLandscapeWindowMode mode) @@ -1032,7 +1029,7 @@ static void _ShowGenerateLandscape(GenerateLandscapeWindowMode mode) if (!GetHeightmapDimensions(_file_to_saveload.detail_ftype, _file_to_saveload.name.c_str(), &x, &y)) return; } - WindowDesc *desc = (mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc; + WindowDesc &desc = (mode == GLWM_HEIGHTMAP) ? _heightmap_load_desc : _generate_landscape_desc; GenerateLandscapeWindow *w = AllocateWindowDescFront(desc, mode, true); if (mode == GLWM_HEIGHTMAP) { @@ -1078,7 +1075,7 @@ struct CreateScenarioWindow : public Window { WidgetID widget_id; - CreateScenarioWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + CreateScenarioWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->InitNested(window_number); this->LowerWidget(_settings_newgame.game_creation.landscape + WID_CS_TEMPERATE); @@ -1120,14 +1117,14 @@ struct CreateScenarioWindow : public Window this->DrawWidgets(); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { StringID str = STR_JUST_INT; switch (widget) { case WID_CS_TEMPERATE: case WID_CS_ARCTIC: case WID_CS_TROPICAL: case WID_CS_TOYLAND: - size->width += WidgetDimensions::scaled.fullbevel.Horizontal(); - size->height += WidgetDimensions::scaled.fullbevel.Vertical(); + size.width += WidgetDimensions::scaled.fullbevel.Horizontal(); + size.height += WidgetDimensions::scaled.fullbevel.Vertical(); break; case WID_CS_START_DATE_TEXT: @@ -1150,7 +1147,7 @@ struct CreateScenarioWindow : public Window Dimension d = GetStringBoundingBox(str); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); } void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override @@ -1232,25 +1229,25 @@ struct CreateScenarioWindow : public Window this->SetDirty(); } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (!StrEmpty(str)) { - int32_t value = atoi(str); + if (!str.has_value() || str->empty()) return; - switch (this->widget_id) { - case WID_CS_START_DATE_TEXT: - this->SetWidgetDirty(WID_CS_START_DATE_TEXT); - _settings_newgame.game_creation.starting_year = Clamp(TimerGameCalendar::Year(value), CalendarTime::MIN_YEAR, CalendarTime::MAX_YEAR); - break; + int32_t value = atoi(str->c_str()); - case WID_CS_FLAT_LAND_HEIGHT_TEXT: - this->SetWidgetDirty(WID_CS_FLAT_LAND_HEIGHT_TEXT); - _settings_newgame.game_creation.se_flat_world_height = Clamp(value, 0, GetMapHeightLimit()); - break; - } + switch (this->widget_id) { + case WID_CS_START_DATE_TEXT: + this->SetWidgetDirty(WID_CS_START_DATE_TEXT); + _settings_newgame.game_creation.starting_year = Clamp(TimerGameCalendar::Year(value), CalendarTime::MIN_YEAR, CalendarTime::MAX_YEAR); + break; - this->SetDirty(); + case WID_CS_FLAT_LAND_HEIGHT_TEXT: + this->SetWidgetDirty(WID_CS_FLAT_LAND_HEIGHT_TEXT); + _settings_newgame.game_creation.se_flat_world_height = Clamp(value, 0, GetMapHeightLimit()); + break; } + + this->SetDirty(); } }; @@ -1295,16 +1292,16 @@ static constexpr NWidgetPart _nested_create_scenario_widgets[] = { /* Date. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_START_DATE_TEXT), SetFill(1, 1), SetDataTip(STR_JUST_DATE_LONG, STR_MAPGEN_DATE_TOOLTIP), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), EndContainer(), /* Flat map height. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_TEXT), SetFill(1, 1), SetDataTip(STR_JUST_INT, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), EndContainer(), EndContainer(), EndContainer(), @@ -1313,18 +1310,18 @@ static constexpr NWidgetPart _nested_create_scenario_widgets[] = { EndContainer(), }; -static WindowDesc _create_scenario_desc(__FILE__, __LINE__, +static WindowDesc _create_scenario_desc( WDP_CENTER, nullptr, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, 0, - std::begin(_nested_create_scenario_widgets), std::end(_nested_create_scenario_widgets) + _nested_create_scenario_widgets ); /** Show the window to create a scenario. */ void ShowCreateScenario() { CloseWindowByClass(WC_GENERATE_LANDSCAPE); - new CreateScenarioWindow(&_create_scenario_desc, GLWM_SCENARIO); + new CreateScenarioWindow(_create_scenario_desc, GLWM_SCENARIO); } static constexpr NWidgetPart _nested_generate_progress_widgets[] = { @@ -1339,11 +1336,11 @@ static constexpr NWidgetPart _nested_generate_progress_widgets[] = { }; -static WindowDesc _generate_progress_desc(__FILE__, __LINE__, +static WindowDesc _generate_progress_desc( WDP_CENTER, nullptr, 0, 0, WC_MODAL_PROGRESS, WC_NONE, 0, - std::begin(_nested_generate_progress_widgets), std::end(_nested_generate_progress_widgets) + _nested_generate_progress_widgets ); struct GenWorldStatus { @@ -1358,11 +1355,11 @@ static GenWorldStatus _gws; static const StringID _generation_class_table[] = { STR_GENERATION_WORLD_GENERATION, - STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION, + STR_GENERATION_LANDSCAPE_GENERATION, STR_GENERATION_RIVER_GENERATION, STR_GENERATION_CLEARING_TILES, - STR_SCENEDIT_TOOLBAR_TOWN_GENERATION, - STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION, + STR_GENERATION_TOWN_GENERATION, + STR_GENERATION_INDUSTRY_GENERATION, STR_GENERATION_OBJECT_GENERATION, STR_GENERATION_TREE_GENERATION, STR_GENERATION_SETTINGUP_GAME, @@ -1384,7 +1381,7 @@ static void AbortGeneratingWorldCallback(Window *, bool confirmed) struct GenerateProgressWindow : public Window { - GenerateProgressWindow() : Window(&_generate_progress_desc) + GenerateProgressWindow() : Window(_generate_progress_desc) { this->InitNested(); } @@ -1404,23 +1401,23 @@ struct GenerateProgressWindow : public Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_GP_PROGRESS_BAR: { SetDParamMaxValue(0, 100); - *size = GetStringBoundingBox(STR_GENERATION_PROGRESS); + size = GetStringBoundingBox(STR_GENERATION_PROGRESS); /* We need some spacing for the 'border' */ - size->height += WidgetDimensions::scaled.frametext.Horizontal(); - size->width += WidgetDimensions::scaled.frametext.Vertical(); + size.height += WidgetDimensions::scaled.frametext.Horizontal(); + size.width += WidgetDimensions::scaled.frametext.Vertical(); break; } case WID_GP_PROGRESS_TEXT: for (uint i = 0; i < GWP_CLASS_COUNT; i++) { - size->width = std::max(size->width, GetStringBoundingBox(_generation_class_table[i]).width + padding.width); + size.width = std::max(size.width, GetStringBoundingBox(_generation_class_table[i]).width + padding.width); } - size->height = GetCharacterHeight(FS_NORMAL) * 2 + WidgetDimensions::scaled.vsep_normal; + size.height = GetCharacterHeight(FS_NORMAL) * 2 + WidgetDimensions::scaled.vsep_normal; break; } } @@ -1432,7 +1429,7 @@ struct GenerateProgressWindow : public Window { /* Draw the % complete with a bar and a text */ DrawFrameRect(r, COLOUR_GREY, FR_BORDERONLY | FR_LOWERED); Rect br = r.Shrink(WidgetDimensions::scaled.bevel); - DrawFrameRect(br.WithWidth(br.Width() * _gws.percent / 100, false), COLOUR_MAUVE, FR_NONE); + DrawFrameRect(br.WithWidth(br.Width() * _gws.percent / 100, _current_text_dir == TD_RTL), COLOUR_MAUVE, FR_NONE); SetDParam(0, _gws.percent); DrawString(br.left, br.right, CenterBounds(br.top, br.bottom, GetCharacterHeight(FS_NORMAL)), STR_GENERATION_PROGRESS, TC_FROMSTRING, SA_HOR_CENTER); break; diff --git a/src/gfx.cpp b/src/gfx.cpp index 4d6f5a0602..d97e343b23 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -22,6 +22,7 @@ #include "newgrf_debug.h" #include "core/backup_type.hpp" #include "core/container_func.hpp" +#include "core/geometry_func.hpp" #include "viewport_func.h" #include "table/string_colours.h" @@ -30,9 +31,9 @@ #include "safeguards.h" -byte _dirkeys; ///< 1 = left, 2 = up, 4 = right, 8 = down +uint8_t _dirkeys; ///< 1 = left, 2 = up, 4 = right, 8 = down bool _fullscreen; -byte _support8bpp; +uint8_t _support8bpp; CursorVars _cursor; bool _ctrl_pressed; ///< Is Ctrl pressed? bool _shift_pressed; ///< Is Shift pressed? @@ -46,18 +47,18 @@ bool _screen_disable_anim = false; ///< Disable palette animation (important f std::atomic _exit_game; GameMode _game_mode; SwitchMode _switch_mode; ///< The next mainloop command. -std::chrono::steady_clock::time_point _switch_mode_time; ///< The time when the switch mode was requested. PauseMode _pause_mode; +GameSessionStats _game_session_stats; ///< Statistics about the current session. -static byte _stringwidth_table[FS_END][224]; ///< Cache containing width of often used characters. @see GetCharacterWidth() +static uint8_t _stringwidth_table[FS_END][224]; ///< Cache containing width of often used characters. @see GetCharacterWidth() DrawPixelInfo *_cur_dpi; static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE); -static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE, ZoomLevel zoom = ZOOM_LVL_NORMAL); +static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE, ZoomLevel zoom = ZOOM_LVL_MIN); static ReusableBuffer _cursor_backup; -ZoomLevel _gui_zoom = ZOOM_LVL_OUT_4X; ///< GUI Zoom level +ZoomLevel _gui_zoom = ZOOM_LVL_NORMAL; ///< GUI Zoom level ZoomLevel _font_zoom = _gui_zoom; ///< Sprite font Zoom level (not clamped) int _gui_scale = MIN_INTERFACE_SCALE; ///< GUI scale, 100 is 100%. int _gui_scale_cfg; ///< GUI scale in config. @@ -70,14 +71,14 @@ int _gui_scale_cfg; ///< GUI scale in config. * @ingroup dirty */ static Rect _invalid_rect; -static const byte *_colour_remap_ptr; -static byte _string_colourremap[3]; ///< Recoloursprite for stringdrawing. The grf loader ensures that #SpriteType::Font sprites only use colours 0 to 2. +static const uint8_t *_colour_remap_ptr; +static uint8_t _string_colourremap[3]; ///< Recoloursprite for stringdrawing. The grf loader ensures that #SpriteType::Font sprites only use colours 0 to 2. static const uint DIRTY_BLOCK_HEIGHT = 8; static const uint DIRTY_BLOCK_WIDTH = 64; static uint _dirty_bytes_per_line = 0; -static byte *_dirty_blocks = nullptr; +static uint8_t *_dirty_blocks = nullptr; extern uint _dirty_block_colour; void GfxScroll(int left, int top, int width, int height, int xo, int yo) @@ -99,7 +100,7 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo) /** * Applies a certain FillRectMode-operation to a rectangle [left, right] x [top, bottom] on the screen. * - * @pre dpi->zoom == ZOOM_LVL_NORMAL, right >= left, bottom >= top + * @pre dpi->zoom == ZOOM_LVL_MIN, right >= left, bottom >= top * @param left Minimum X (inclusive) * @param top Minimum Y (inclusive) * @param right Maximum X (inclusive) @@ -118,7 +119,7 @@ void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectM const int otop = top; const int oleft = left; - if (dpi->zoom != ZOOM_LVL_NORMAL) return; + if (dpi->zoom != ZOOM_LVL_MIN) return; if (left > right || top > bottom) return; if (right < dpi->left || left >= dpi->left + dpi->width) return; if (bottom < dpi->top || top >= dpi->top + dpi->height) return; @@ -147,7 +148,7 @@ void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectM break; case FILLRECT_CHECKER: { - byte bo = (oleft - left + dpi->left + otop - top + dpi->top) & 1; + uint8_t bo = (oleft - left + dpi->left + otop - top + dpi->top) & 1; do { for (int i = (bo ^= 1); i < right; i += 2) blitter->SetPixel(dst, i, 0, (uint8_t)colour); dst = blitter->MoveTo(dst, 0, 1); @@ -198,7 +199,7 @@ static std::vector MakePolygonSegments(const std::vector &sh * The odd-even winding rule is used, i.e. self-intersecting polygons will have holes in them. * Left and top edges are inclusive, right and bottom edges are exclusive. * @note For rectangles the GfxFillRect function will be faster. - * @pre dpi->zoom == ZOOM_LVL_NORMAL + * @pre dpi->zoom == ZOOM_LVL_MIN * @param shape List of points on the polygon. * @param colour An 8 bit palette index (FILLRECT_OPAQUE and FILLRECT_CHECKER) or a recolour spritenumber (FILLRECT_RECOLOUR). * @param mode @@ -210,7 +211,7 @@ void GfxFillPolygon(const std::vector &shape, int colour, FillRectMode mo { Blitter *blitter = BlitterFactory::GetCurrentBlitter(); const DrawPixelInfo *dpi = _cur_dpi; - if (dpi->zoom != ZOOM_LVL_NORMAL) return; + if (dpi->zoom != ZOOM_LVL_MIN) return; std::vector segments = MakePolygonSegments(shape, Point{ dpi->left, dpi->top }); @@ -431,7 +432,7 @@ void DrawBox(int x, int y, int dx1, int dy1, int dx2, int dy2, int dx3, int dy3) * ....V. */ - static const byte colour = PC_WHITE; + static const uint8_t colour = PC_WHITE; GfxDrawLineUnscaled(x, y, x + dx1, y + dy1, colour); GfxDrawLineUnscaled(x, y, x + dx2, y + dy2, colour); @@ -474,7 +475,7 @@ static void SetColourRemap(TextColour colour) bool raw_colour = (colour & TC_IS_PALETTE_COLOUR) != 0; colour &= ~(TC_NO_SHADE | TC_IS_PALETTE_COLOUR | TC_FORCED); - _string_colourremap[1] = raw_colour ? (byte)colour : _string_colourmap[colour]; + _string_colourremap[1] = raw_colour ? (uint8_t)colour : _string_colourmap[colour]; _string_colourremap[2] = no_shade ? 0 : 1; _colour_remap_ptr = _string_colourremap; } @@ -490,11 +491,12 @@ static void SetColourRemap(TextColour colour) * will be drawn in the right direction. * @param underline Whether to underline what has been drawn or not. * @param truncation Whether to perform string truncation or not. + * @param default_colour Colour of text if not specified within string. * * @return In case of left or center alignment the right most pixel we have drawn to. * In case of right alignment the left most pixel we have drawn to. */ -static int DrawLayoutLine(const ParagraphLayouter::Line &line, int y, int left, int right, StringAlignment align, bool underline, bool truncation) +static int DrawLayoutLine(const ParagraphLayouter::Line &line, int y, int left, int right, StringAlignment align, bool underline, bool truncation, TextColour default_colour) { if (line.CountRuns() == 0) return 0; @@ -588,6 +590,7 @@ static int DrawLayoutLine(const ParagraphLayouter::Line &line, int y, int left, FontCache *fc = f->fc; TextColour colour = f->colour; + if (colour == TC_INVALID) colour = default_colour; colour_has_shadow = (colour & TC_NO_SHADE) == 0 && colour != TC_BLACK; SetColourRemap(do_shadow ? TC_BLACK : colour); // the last run also sets the colour for the truncation dots if (do_shadow && (!fc->GetDrawGlyphShadow() || !colour_has_shadow)) continue; @@ -602,9 +605,9 @@ static int DrawLayoutLine(const ParagraphLayouter::Line &line, int y, int left, /* Not a valid glyph (empty) */ if (glyph == 0xFFFF) continue; - int begin_x = positions[i].x + left - offset_x; - int end_x = positions[i + 1].x + left - offset_x - 1; - int top = positions[i].y + y; + int begin_x = positions[i].left + left - offset_x; + int end_x = positions[i].right + left - offset_x; + int top = positions[i].top + y; /* Truncated away. */ if (truncation && (begin_x < min_x || end_x > max_x)) continue; @@ -664,10 +667,10 @@ int DrawString(int left, int right, int top, std::string_view str, TextColour co return 0; } - Layouter layout(str, INT32_MAX, colour, fontsize); + Layouter layout(str, INT32_MAX, fontsize); if (layout.empty()) return 0; - return DrawLayoutLine(*layout.front(), top, left, right, align, underline, true); + return DrawLayoutLine(*layout.front(), top, left, right, align, underline, true, colour); } /** @@ -701,7 +704,7 @@ int DrawString(int left, int right, int top, StringID str, TextColour colour, St int GetStringHeight(std::string_view str, int maxw, FontSize fontsize) { assert(maxw > 0); - Layouter layout(str, maxw, TC_FROMSTRING, fontsize); + Layouter layout(str, maxw, fontsize); return layout.GetBounds().height; } @@ -777,7 +780,7 @@ int DrawStringMultiLine(int left, int right, int top, int bottom, std::string_vi * do we really want to support fonts of 0 or less pixels high? */ if (maxh <= 0) return top; - Layouter layout(str, maxw, colour, fontsize); + Layouter layout(str, maxw, fontsize); int total_height = layout.GetBounds().height; int y; switch (align & SA_VERT_MASK) { @@ -806,7 +809,7 @@ int DrawStringMultiLine(int left, int right, int top, int bottom, std::string_vi last_line = y + line_height; if (first_line > y) first_line = y; - DrawLayoutLine(*line, y, left, right, align, underline, false); + DrawLayoutLine(*line, y, left, right, align, underline, false, colour); } y += line_height; } @@ -847,7 +850,7 @@ int DrawStringMultiLine(int left, int right, int top, int bottom, StringID str, */ Dimension GetStringBoundingBox(std::string_view str, FontSize start_fontsize) { - Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize); + Layouter layout(str, INT32_MAX, start_fontsize); return layout.GetBounds(); } @@ -864,50 +867,32 @@ Dimension GetStringBoundingBox(StringID strid, FontSize start_fontsize) /** * Get maximum width of a list of strings. - * @param list List of strings, terminated with INVALID_STRING_ID. + * @param list List of strings. * @param fontsize Font size to use. * @return Width of longest string within the list. */ -uint GetStringListWidth(const StringID *list, FontSize fontsize) +uint GetStringListWidth(std::span list, FontSize fontsize) { uint width = 0; - for (const StringID *str = list; *str != INVALID_STRING_ID; str++) { - width = std::max(width, GetStringBoundingBox(*str, fontsize).width); + for (auto str : list) { + width = std::max(width, GetStringBoundingBox(str, fontsize).width); } return width; } /** - * Get the leading corner of a character in a single-line string relative - * to the start of the string. - * @param str String containing the character. - * @param ch Pointer to the character in the string. - * @param start_fontsize Font size to start the text with. - * @return Upper left corner of the glyph associated with the character. + * Get maximum dimension of a list of strings. + * @param list List of strings, terminated by INVALID_STRING_ID. + * @param fontsize Font size to use. + * @return Dimension of highest and longest string within the list. */ -Point GetCharPosInString(std::string_view str, const char *ch, FontSize start_fontsize) +Dimension GetStringListBoundingBox(std::span list, FontSize fontsize) { - /* Ensure "ch" is inside "str" or at the exact end. */ - assert(ch >= str.data() && (ch - str.data()) <= static_cast(str.size())); - auto it_ch = str.begin() + (ch - str.data()); - - Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize); - return layout.GetCharPosition(it_ch); -} - -/** - * Get the character from a string that is drawn at a specific position. - * @param str String to test. - * @param x Position relative to the start of the string. - * @param start_fontsize Font size to start the text with. - * @return Index of the character position or -1 if there is no character at the position. - */ -ptrdiff_t GetCharAtPosition(std::string_view str, int x, FontSize start_fontsize) -{ - if (x < 0) return -1; - - Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize); - return layout.GetCharAtPosition(x, 0); + Dimension d{0, 0}; + for (auto str : list) { + d = maxdim(d, GetStringBoundingBox(str, fontsize)); + } + return d; } /** @@ -1169,9 +1154,7 @@ std::unique_ptr DrawSpriteToRgbaBuffer(SpriteID spriteId, ZoomLevel const Sprite *sprite = GetSprite(real_sprite, SpriteType::Normal); Dimension dim = GetSpriteSize(real_sprite, nullptr, zoom); size_t dim_size = static_cast(dim.width) * dim.height; - std::unique_ptr result(new uint32_t[dim_size]); - /* Set buffer to fully transparent. */ - MemSetT(result.get(), 0, dim_size); + std::unique_ptr result = std::make_unique(dim_size); /* Prepare new DrawPixelInfo - Normally this would be the screen but we want to draw to another buffer here. * Normally, pitch would be scaled screen width, but in our case our "screen" is only the sprite width wide. */ @@ -1187,23 +1170,21 @@ std::unique_ptr DrawSpriteToRgbaBuffer(SpriteID spriteId, ZoomLevel dim_size = static_cast(dim.width) * dim.height; /* If the current blitter is a paletted blitter, we have to render to an extra buffer and resolve the palette later. */ - std::unique_ptr pal_buffer{}; + std::unique_ptr pal_buffer{}; if (blitter->GetScreenDepth() == 8) { - pal_buffer.reset(new byte[dim_size]); - MemSetT(pal_buffer.get(), 0, dim_size); - + pal_buffer = std::make_unique(dim_size); dpi.dst_ptr = pal_buffer.get(); } /* Temporarily disable screen animations while blitting - This prevents 40bpp_anim from writing to the animation buffer. */ - Backup disable_anim(_screen_disable_anim, true, FILE_LINE); + Backup disable_anim(_screen_disable_anim, true); GfxBlitter<1, true>(sprite, 0, 0, BM_NORMAL, nullptr, real_sprite, zoom, &dpi); disable_anim.Restore(); if (blitter->GetScreenDepth() == 8) { /* Resolve palette. */ uint32_t *dst = result.get(); - const byte *src = pal_buffer.get(); + const uint8_t *src = pal_buffer.get(); for (size_t i = 0; i < dim_size; ++i) { *dst++ = _cur_palette.palette[*src++].data; } @@ -1214,7 +1195,7 @@ std::unique_ptr DrawSpriteToRgbaBuffer(SpriteID spriteId, ZoomLevel static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id) { - GfxBlitter(sprite, x, y, mode, sub, sprite_id, _cur_dpi->zoom); + GfxBlitter(sprite, x, y, mode, sub, sprite_id, _cur_dpi->zoom); } static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id, ZoomLevel zoom) @@ -1243,7 +1224,7 @@ void LoadStringWidthTable(bool monospace) * @param key Character code glyph * @return Width of the character glyph */ -byte GetCharacterWidth(FontSize size, char32_t key) +uint8_t GetCharacterWidth(FontSize size, char32_t key) { /* Use _stringwidth_table cache if possible */ if (key >= 32 && key < 256) return _stringwidth_table[size][key - 32]; @@ -1256,9 +1237,9 @@ byte GetCharacterWidth(FontSize size, char32_t key) * @param size Font of the digit * @return Width of the digit. */ -byte GetDigitWidth(FontSize size) +uint8_t GetDigitWidth(FontSize size) { - byte width = 0; + uint8_t width = 0; for (char c = '0'; c <= '9'; c++) { width = std::max(GetCharacterWidth(size, c), width); } @@ -1287,7 +1268,7 @@ void GetBroadestDigit(uint *front, uint *next, FontSize size) void ScreenSizeChanged() { _dirty_bytes_per_line = CeilDiv(_screen.width, DIRTY_BLOCK_WIDTH); - _dirty_blocks = ReallocT(_dirty_blocks, static_cast(_dirty_bytes_per_line) * CeilDiv(_screen.height, DIRTY_BLOCK_HEIGHT)); + _dirty_blocks = ReallocT(_dirty_blocks, static_cast(_dirty_bytes_per_line) * CeilDiv(_screen.height, DIRTY_BLOCK_HEIGHT)); /* check the dirty rect */ if (_invalid_rect.right >= _screen.width) _invalid_rect.right = _screen.width; @@ -1367,8 +1348,8 @@ void DrawMouseCursor() /* Draw cursor on screen */ _cur_dpi = &_screen; - for (uint i = 0; i < _cursor.sprite_count; ++i) { - DrawSprite(_cursor.sprite_seq[i].sprite, _cursor.sprite_seq[i].pal, _cursor.pos.x + _cursor.sprite_pos[i].x, _cursor.pos.y + _cursor.sprite_pos[i].y); + for (const auto &cs : _cursor.sprites) { + DrawSprite(cs.image.sprite, cs.image.pal, _cursor.pos.x + cs.pos.x, _cursor.pos.y + cs.pos.y); } VideoDriver::GetInstance()->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y); @@ -1415,7 +1396,7 @@ void RedrawScreenRect(int left, int top, int right, int bottom) */ void DrawDirtyBlocks() { - byte *b = _dirty_blocks; + uint8_t *b = _dirty_blocks; const int w = Align(_screen.width, DIRTY_BLOCK_WIDTH); const int h = Align(_screen.height, DIRTY_BLOCK_HEIGHT); int x; @@ -1430,7 +1411,7 @@ void DrawDirtyBlocks() int top; int right = x + DIRTY_BLOCK_WIDTH; int bottom = y; - byte *p = b; + uint8_t *p = b; int h2; /* First try coalescing downwards */ @@ -1446,7 +1427,7 @@ void DrawDirtyBlocks() p = b; while (right != w) { - byte *p2 = ++p; + uint8_t *p2 = ++p; int i = h2; /* Check if a full line of dirty flags is set. */ do { @@ -1504,7 +1485,7 @@ void DrawDirtyBlocks() */ void AddDirtyBlock(int left, int top, int right, int bottom) { - byte *b; + uint8_t *b; int width; int height; @@ -1569,7 +1550,7 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh Blitter *blitter = BlitterFactory::GetCurrentBlitter(); const DrawPixelInfo *o = _cur_dpi; - n->zoom = ZOOM_LVL_NORMAL; + n->zoom = ZOOM_LVL_MIN; assert(width > 0); assert(height > 0); @@ -1619,20 +1600,22 @@ void UpdateCursorSize() /* Ignore setting any cursor before the sprites are loaded. */ if (GetMaxSpriteID() == 0) return; - static_assert(lengthof(_cursor.sprite_seq) == lengthof(_cursor.sprite_pos)); - assert(_cursor.sprite_count <= lengthof(_cursor.sprite_seq)); - for (uint i = 0; i < _cursor.sprite_count; ++i) { - const Sprite *p = GetSprite(GB(_cursor.sprite_seq[i].sprite, 0, SPRITE_WIDTH), SpriteType::Normal); + bool first = true; + for (const auto &cs : _cursor.sprites) { + const Sprite *p = GetSprite(GB(cs.image.sprite, 0, SPRITE_WIDTH), SpriteType::Normal); Point offs, size; - offs.x = UnScaleGUI(p->x_offs) + _cursor.sprite_pos[i].x; - offs.y = UnScaleGUI(p->y_offs) + _cursor.sprite_pos[i].y; + offs.x = UnScaleGUI(p->x_offs) + cs.pos.x; + offs.y = UnScaleGUI(p->y_offs) + cs.pos.y; size.x = UnScaleGUI(p->width); size.y = UnScaleGUI(p->height); - if (i == 0) { + if (first) { + /* First sprite sets the total. */ _cursor.total_offs = offs; _cursor.total_size = size; + first = false; } else { + /* Additional sprites expand the total. */ int right = std::max(_cursor.total_offs.x + _cursor.total_size.x, offs.x + size.x); int bottom = std::max(_cursor.total_offs.y + _cursor.total_size.y, offs.y + size.y); if (offs.x < _cursor.total_offs.x) _cursor.total_offs.x = offs.x; @@ -1652,13 +1635,10 @@ void UpdateCursorSize() */ static void SetCursorSprite(CursorID cursor, PaletteID pal) { - if (_cursor.sprite_count == 1 && _cursor.sprite_seq[0].sprite == cursor && _cursor.sprite_seq[0].pal == pal) return; + if (_cursor.sprites.size() == 1 && _cursor.sprites[0].image.sprite == cursor && _cursor.sprites[0].image.pal == pal) return; - _cursor.sprite_count = 1; - _cursor.sprite_seq[0].sprite = cursor; - _cursor.sprite_seq[0].pal = pal; - _cursor.sprite_pos[0].x = 0; - _cursor.sprite_pos[0].y = 0; + _cursor.sprites.clear(); + _cursor.sprites.emplace_back(cursor, pal, 0, 0); UpdateCursorSize(); } @@ -1669,7 +1649,8 @@ static void SwitchAnimatedCursor() if (cur == nullptr || cur->sprite == AnimCursor::LAST) cur = _cursor.animate_list; - SetCursorSprite(cur->sprite, _cursor.sprite_seq[0].pal); + assert(!_cursor.sprites.empty()); + SetCursorSprite(cur->sprite, _cursor.sprites[0].image.pal); _cursor.animate_timeout = cur->display_time; _cursor.animate_cur = cur + 1; @@ -1688,10 +1669,11 @@ void CursorTick() */ void SetMouseCursorBusy(bool busy) { + assert(!_cursor.sprites.empty()); if (busy) { - if (_cursor.sprite_seq[0].sprite == SPR_CURSOR_MOUSE) SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE); + if (_cursor.sprites[0].image.sprite == SPR_CURSOR_MOUSE) SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE); } else { - if (_cursor.sprite_seq[0].sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE); + if (_cursor.sprites[0].image.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE); } } @@ -1716,9 +1698,10 @@ void SetMouseCursor(CursorID sprite, PaletteID pal) */ void SetAnimatedMouseCursor(const AnimCursor *table) { + assert(!_cursor.sprites.empty()); _cursor.animate_list = table; _cursor.animate_cur = nullptr; - _cursor.sprite_seq[0].pal = PAL_NONE; + _cursor.sprites[0].image.pal = PAL_NONE; SwitchAnimatedCursor(); } @@ -1793,7 +1776,7 @@ void UpdateGUIZoom() _gui_scale = Clamp(_gui_scale_cfg, MIN_INTERFACE_SCALE, MAX_INTERFACE_SCALE); } - int8_t new_zoom = ScaleGUITrad(1) <= 1 ? ZOOM_LVL_OUT_4X : ScaleGUITrad(1) >= 4 ? ZOOM_LVL_MIN : ZOOM_LVL_OUT_2X; + int8_t new_zoom = ScaleGUITrad(1) <= 1 ? ZOOM_LVL_NORMAL : ScaleGUITrad(1) >= 4 ? ZOOM_LVL_IN_4X : ZOOM_LVL_IN_2X; /* Font glyphs should not be clamped to min/max zoom. */ _font_zoom = static_cast(new_zoom); /* Ensure the gui_zoom is clamped between min/max. */ diff --git a/src/gfx_func.h b/src/gfx_func.h index 9681158768..63927c475d 100644 --- a/src/gfx_func.h +++ b/src/gfx_func.h @@ -48,9 +48,9 @@ void GameLoop(); void CreateConsole(); -extern byte _dirkeys; ///< 1 = left, 2 = up, 4 = right, 8 = down +extern uint8_t _dirkeys; ///< 1 = left, 2 = up, 4 = right, 8 = down extern bool _fullscreen; -extern byte _support8bpp; +extern uint8_t _support8bpp; extern CursorVars _cursor; extern bool _ctrl_pressed; ///< Is Ctrl pressed? extern bool _shift_pressed; ///< Is Shift pressed? @@ -79,6 +79,7 @@ void ChangeGameSpeed(bool enable_fast_forward); void DrawMouseCursor(); void ScreenSizeChanged(); void GameSizeChanged(); +void UpdateGUIZoom(); bool AdjustGUIZoom(bool automatic); void UndrawMouseCursor(); @@ -133,15 +134,14 @@ inline void GfxFillRect(const Rect &r, int colour, FillRectMode mode = FILLRECT_ Dimension GetStringBoundingBox(std::string_view str, FontSize start_fontsize = FS_NORMAL); Dimension GetStringBoundingBox(StringID strid, FontSize start_fontsize = FS_NORMAL); -uint GetStringListWidth(const StringID *list, FontSize fontsize = FS_NORMAL); +uint GetStringListWidth(std::span list, FontSize fontsize = FS_NORMAL); +Dimension GetStringListBoundingBox(std::span list, FontSize fontsize = FS_NORMAL); int GetStringHeight(std::string_view str, int maxw, FontSize fontsize = FS_NORMAL); int GetStringHeight(StringID str, int maxw); int GetStringLineCount(StringID str, int maxw); Dimension GetStringMultiLineBoundingBox(StringID str, const Dimension &suggestion); Dimension GetStringMultiLineBoundingBox(std::string_view str, const Dimension &suggestion); void LoadStringWidthTable(bool monospace = false); -Point GetCharPosInString(std::string_view str, const char *ch, FontSize start_fontsize = FS_NORMAL); -ptrdiff_t GetCharAtPosition(std::string_view str, int x, FontSize start_fontsize = FS_NORMAL); void DrawDirtyBlocks(); void AddDirtyBlock(int left, int top, int right, int bottom); @@ -181,8 +181,8 @@ void SortResolutions(); bool ToggleFullScreen(bool fs); /* gfx.cpp */ -byte GetCharacterWidth(FontSize size, char32_t key); -byte GetDigitWidth(FontSize size = FS_NORMAL); +uint8_t GetCharacterWidth(FontSize size, char32_t key); +uint8_t GetDigitWidth(FontSize size = FS_NORMAL); void GetBroadestDigit(uint *front, uint *next, FontSize size = FS_NORMAL); int GetCharacterHeight(FontSize size); diff --git a/src/gfx_layout.cpp b/src/gfx_layout.cpp index 91280e5555..ea33b14acf 100644 --- a/src/gfx_layout.cpp +++ b/src/gfx_layout.cpp @@ -11,6 +11,7 @@ #include "core/math_func.hpp" #include "gfx_layout.h" #include "string_func.h" +#include "strings_func.h" #include "debug.h" #include "table/control_codes.h" @@ -124,12 +125,11 @@ static inline void GetLayouter(Layouter::LineCacheItem &line, std::string_view s * Create a new layouter. * @param str The string to create the layout for. * @param maxw The maximum width. - * @param colour The colour of the font. * @param fontsize The size of font to use. */ -Layouter::Layouter(std::string_view str, int maxw, TextColour colour, FontSize fontsize) : string(str) +Layouter::Layouter(std::string_view str, int maxw, FontSize fontsize) : string(str) { - FontState state(colour, fontsize); + FontState state(TC_INVALID, fontsize); while (true) { auto line_length = str.find_first_of('\n'); @@ -225,13 +225,13 @@ static bool IsConsumedFormattingCode(char32_t ch) * @return Upper left corner of the character relative to the start of the string. * @note Will only work right for single-line strings. */ -Point Layouter::GetCharPosition(std::string_view::const_iterator ch) const +ParagraphLayouter::Position Layouter::GetCharPosition(std::string_view::const_iterator ch) const { const auto &line = this->front(); /* Pointer to the end-of-string marker? Return total line width. */ if (ch == this->string.end()) { - Point p = { line->GetWidth(), 0 }; + Point p = {_current_text_dir == TD_LTR ? line->GetWidth() : 0, 0}; return p; } @@ -245,8 +245,8 @@ Point Layouter::GetCharPosition(std::string_view::const_iterator ch) const } /* Initial position, returned if character not found. */ - static const std::vector zero = { {0, 0} }; - auto position = zero.begin(); + const ParagraphLayouter::Position initial_position = Point{_current_text_dir == TD_LTR ? 0 : line->GetWidth(), 0}; + const ParagraphLayouter::Position *position = &initial_position; /* We couldn't find the code point index. */ if (str != ch) return *position; @@ -254,24 +254,26 @@ Point Layouter::GetCharPosition(std::string_view::const_iterator ch) const /* Valid character. */ /* Scan all runs until we've found our code point index. */ + size_t best_index = SIZE_MAX; for (int run_index = 0; run_index < line->CountRuns(); run_index++) { const ParagraphLayouter::VisualRun &run = line->GetVisualRun(run_index); const auto &positions = run.GetPositions(); const auto &charmap = run.GetGlyphToCharMap(); - /* Run starts after our character, use the last found position. */ - if ((size_t)charmap.front() > index) return *position; + auto itp = positions.begin(); + for (auto it = charmap.begin(); it != charmap.end(); ++it, ++itp) { + const size_t cur_index = static_cast(*it); + /* Found exact character match? */ + if (cur_index == index) return *itp; - position = positions.begin(); - for (auto it = charmap.begin(); it != charmap.end(); /* nothing */) { - /* Plain honest-to-$deity match. */ - if ((size_t)*it == index) return *position; - ++it; - if (it == charmap.end()) break; - - /* We just passed our character, it's probably a ligature, use the last found position. */ - if ((size_t)*it > index) return *position; - ++position; + /* If the character we are looking for has been combined with other characters to form a ligature then + * we may not be able to find an exact match. We don't actually know if our character is part of a + * ligature. In this case we will aim to select the first character of the ligature instead, so the best + * index is the index nearest to but lower than the desired index. */ + if (cur_index < index && (best_index < cur_index || best_index == SIZE_MAX)) { + best_index = cur_index; + position = &*itp; + } } } @@ -301,8 +303,8 @@ ptrdiff_t Layouter::GetCharAtPosition(int x, size_t line_index) const /* Not a valid glyph (empty). */ if (glyphs[i] == 0xFFFF) continue; - int begin_x = positions[i].x; - int end_x = positions[i + 1].x; + int begin_x = positions[i].left; + int end_x = positions[i].right + 1; if (IsInsideMM(x, begin_x, end_x)) { /* Found our glyph, now convert to UTF-8 string index. */ @@ -386,7 +388,7 @@ Layouter::LineCacheItem &Layouter::GetCachedParagraphLayout(std::string_view str LineCacheKey key; key.state_before = state; key.str.assign(str); - return (*linecache)[key]; + return (*linecache)[std::move(key)]; } /** @@ -407,3 +409,36 @@ void Layouter::ReduceLineCache() if (linecache->size() > 4096) ResetLineCache(); } } + +/** + * Get the leading corner of a character in a single-line string relative + * to the start of the string. + * @param str String containing the character. + * @param ch Pointer to the character in the string. + * @param start_fontsize Font size to start the text with. + * @return Upper left corner of the glyph associated with the character. + */ +ParagraphLayouter::Position GetCharPosInString(std::string_view str, const char *ch, FontSize start_fontsize) +{ + /* Ensure "ch" is inside "str" or at the exact end. */ + assert(ch >= str.data() && (ch - str.data()) <= static_cast(str.size())); + auto it_ch = str.begin() + (ch - str.data()); + + Layouter layout(str, INT32_MAX, start_fontsize); + return layout.GetCharPosition(it_ch); +} + +/** + * Get the character from a string that is drawn at a specific position. + * @param str String to test. + * @param x Position relative to the start of the string. + * @param start_fontsize Font size to start the text with. + * @return Index of the character position or -1 if there is no character at the position. + */ +ptrdiff_t GetCharAtPosition(std::string_view str, int x, FontSize start_fontsize) +{ + if (x < 0) return -1; + + Layouter layout(str, INT32_MAX, start_fontsize); + return layout.GetCharAtPosition(x, 0); +} diff --git a/src/gfx_layout.h b/src/gfx_layout.h index 636b5cdadc..b400596c3e 100644 --- a/src/gfx_layout.h +++ b/src/gfx_layout.h @@ -36,7 +36,7 @@ struct FontState { */ inline void SetColour(TextColour c) { - assert((c & TC_COLOUR_MASK) >= TC_BLUE && (c & TC_COLOUR_MASK) <= TC_BLACK); + assert(((c & TC_COLOUR_MASK) >= TC_BLUE && (c & TC_COLOUR_MASK) <= TC_BLACK) || (c & TC_COLOUR_MASK) == TC_INVALID); assert((c & (TC_COLOUR_MASK | TC_FLAGS_MASK)) == c); if ((this->cur_colour & TC_FORCED) == 0) this->cur_colour = c; } @@ -90,16 +90,29 @@ class ParagraphLayouter { public: virtual ~ParagraphLayouter() = default; + /** Position of a glyph within a VisualRun. */ + class Position { + public: + int16_t left; ///< Left-most position of glyph. + int16_t right; ///< Right-most position of glyph. + int16_t top; ///< Top-most position of glyph. + + constexpr inline Position(int16_t left, int16_t right, int16_t top) : left(left), right(right), top(top) { } + + /** Conversion from a single point to a Position. */ + constexpr inline Position(const Point &pt) : left(pt.x), right(pt.x), top(pt.y) { } + }; + /** Visual run contains data about the bit of text with the same font. */ class VisualRun { public: virtual ~VisualRun() = default; virtual const Font *GetFont() const = 0; virtual int GetGlyphCount() const = 0; - virtual const std::vector &GetGlyphs() const = 0; - virtual const std::vector &GetPositions() const = 0; + virtual std::span GetGlyphs() const = 0; + virtual std::span GetPositions() const = 0; virtual int GetLeading() const = 0; - virtual const std::vector &GetGlyphToCharMap() const = 0; + virtual std::span GetGlyphToCharMap() const = 0; }; /** A single line worth of VisualRuns. */ @@ -132,7 +145,7 @@ class Layouter : public std::vector glyphs; ///< The glyphs we're drawing. - std::vector positions; ///< The positions of the glyphs. + std::vector positions; ///< The positions of the glyphs. std::vector glyph_to_char; ///< The char index of the glyphs. Font *font; ///< The font used to layout these. @@ -49,10 +49,10 @@ public: FallbackVisualRun(Font *font, const char32_t *chars, int glyph_count, int char_offset, int x); const Font *GetFont() const override { return this->font; } int GetGlyphCount() const override { return static_cast(this->glyphs.size()); } - const std::vector &GetGlyphs() const override { return this->glyphs; } - const std::vector &GetPositions() const override { return this->positions; } + std::span GetGlyphs() const override { return this->glyphs; } + std::span GetPositions() const override { return this->positions; } int GetLeading() const override { return this->GetFont()->fc->GetHeight(); } - const std::vector &GetGlyphToCharMap() const override { return this->glyph_to_char; } + std::span GetGlyphToCharMap() const override { return this->glyph_to_char; } }; /** A single line worth of VisualRuns. */ @@ -116,25 +116,22 @@ FallbackParagraphLayout::FallbackVisualRun::FallbackVisualRun(Font *font, const this->glyphs.reserve(char_count); this->glyph_to_char.reserve(char_count); - - /* Positions contains the location of the begin of each of the glyphs, and the end of the last one. */ - this->positions.reserve(char_count + 1); + this->positions.reserve(char_count); int advance = x; for (int i = 0; i < char_count; i++) { const GlyphID &glyph_id = this->glyphs.emplace_back(font->fc->MapCharToGlyph(chars[i])); + int x_advance = font->fc->GetGlyphWidth(glyph_id); if (isbuiltin) { - this->positions.emplace_back(advance, font->fc->GetAscender()); // Apply sprite font's ascender. + this->positions.emplace_back(advance, advance + x_advance - 1, font->fc->GetAscender()); // Apply sprite font's ascender. } else if (chars[i] >= SCC_SPRITE_START && chars[i] <= SCC_SPRITE_END) { - this->positions.emplace_back(advance, (font->fc->GetHeight() - ScaleSpriteTrad(FontCache::GetDefaultFontHeight(font->fc->GetSize()))) / 2); // Align sprite font to centre + this->positions.emplace_back(advance, advance + x_advance - 1, (font->fc->GetHeight() - ScaleSpriteTrad(FontCache::GetDefaultFontHeight(font->fc->GetSize()))) / 2); // Align sprite font to centre } else { - this->positions.emplace_back(advance, 0); // No ascender adjustment. + this->positions.emplace_back(advance, advance + x_advance - 1, 0); // No ascender adjustment. } - advance += font->fc->GetGlyphWidth(glyph_id); + advance += x_advance; this->glyph_to_char.push_back(char_offset + i); } - /* End-of-run position. */ - this->positions.emplace_back(advance, 0); } /** @@ -165,7 +162,9 @@ int FallbackParagraphLayout::FallbackLine::GetWidth() const * the last run gives us the end of the line and thus the width. */ const auto &run = this->GetVisualRun(this->CountRuns() - 1); - return run.GetPositions().back().x; + const auto &positions = run.GetPositions(); + if (positions.empty()) return 0; + return positions.back().right + 1; } /** @@ -218,7 +217,7 @@ std::unique_ptr FallbackParagraphLayout::NextLine */ if (this->buffer == nullptr) return nullptr; - std::unique_ptr l(new FallbackLine()); + std::unique_ptr l = std::make_unique(); if (*this->buffer == '\0') { /* Only a newline. */ diff --git a/src/gfx_layout_icu.cpp b/src/gfx_layout_icu.cpp index e0008f2fa5..9d3dff5f8e 100644 --- a/src/gfx_layout_icu.cpp +++ b/src/gfx_layout_icu.cpp @@ -45,7 +45,7 @@ public: std::vector glyphs; ///< The glyphs of the run. Valid after Shape() is called. std::vector advance; ///< The advance (width) of the glyphs. Valid after Shape() is called. std::vector glyph_to_char; ///< The mapping from glyphs to characters. Valid after Shape() is called. - std::vector positions; ///< The positions of the glyphs. Valid after Shape() is called. + std::vector positions; ///< The positions of the glyphs. Valid after Shape() is called. int total_advance = 0; ///< The total advance of the run. Valid after Shape() is called. ICURun(int start, int length, UBiDiLevel level, UScriptCode script = USCRIPT_UNKNOWN, Font *font = nullptr) : start(start), length(length), level(level), script(script), font(font) {} @@ -62,7 +62,7 @@ public: class ICUVisualRun : public ParagraphLayouter::VisualRun { private: std::vector glyphs; - std::vector positions; + std::vector positions; std::vector glyph_to_char; int total_advance; @@ -71,9 +71,9 @@ public: public: ICUVisualRun(const ICURun &run, int x); - const std::vector &GetGlyphs() const override { return this->glyphs; } - const std::vector &GetPositions() const override { return this->positions; } - const std::vector &GetGlyphToCharMap() const override { return this->glyph_to_char; } + std::span GetGlyphs() const override { return this->glyphs; } + std::span GetPositions() const override { return this->positions; } + std::span GetGlyphToCharMap() const override { return this->glyph_to_char; } const Font *GetFont() const override { return this->font; } int GetLeading() const override { return this->font->fc->GetHeight(); } @@ -104,7 +104,7 @@ private: int partial_offset; public: - ICUParagraphLayout(std::vector &runs, UChar *buff, size_t buff_length) : runs(runs), buff(buff), buff_length(buff_length) + ICUParagraphLayout(std::vector &&runs, UChar *buff, size_t buff_length) : runs(std::move(runs)), buff(buff), buff_length(buff_length) { this->Reflow(); } @@ -136,8 +136,8 @@ ICUParagraphLayout::ICUVisualRun::ICUVisualRun(const ICURun &run, int x) : this->positions.reserve(run.positions.size()); /* Copy positions, moving x coordinate by x offset. */ - for (const Point &pt : run.positions) { - this->positions.emplace_back(pt.x + x, pt.y); + for (const auto &pos : run.positions) { + this->positions.emplace_back(pos.left + x, pos.right + x, pos.top); } } @@ -151,7 +151,7 @@ void ICURun::Shape(UChar *buff, size_t buff_length) { auto hbfont = hb_ft_font_create_referenced(*(static_cast(font->fc->GetOSHandle()))); /* Match the flags with how we render the glyphs. */ - hb_ft_font_set_load_flags(hbfont, GetFontAAState(this->font->fc->GetSize()) ? FT_LOAD_TARGET_NORMAL : FT_LOAD_TARGET_MONO); + hb_ft_font_set_load_flags(hbfont, GetFontAAState() ? FT_LOAD_TARGET_NORMAL : FT_LOAD_TARGET_MONO); /* ICU buffer is in UTF-16. */ auto hbbuf = hb_buffer_create(); @@ -179,7 +179,7 @@ void ICURun::Shape(UChar *buff, size_t buff_length) /* Reserve space, as we already know the size. */ this->glyphs.reserve(glyph_count); this->glyph_to_char.reserve(glyph_count); - this->positions.reserve(glyph_count + 1); + this->positions.reserve(glyph_count); this->advance.reserve(glyph_count); /* Prepare the glyphs/position. ICUVisualRun will give the position an offset if needed. */ @@ -189,14 +189,13 @@ void ICURun::Shape(UChar *buff, size_t buff_length) if (buff[glyph_info[i].cluster] >= SCC_SPRITE_START && buff[glyph_info[i].cluster] <= SCC_SPRITE_END && glyph_info[i].codepoint == 0) { auto glyph = this->font->fc->MapCharToGlyph(buff[glyph_info[i].cluster]); - - this->glyphs.push_back(glyph); - this->positions.emplace_back(advance, (this->font->fc->GetHeight() - ScaleSpriteTrad(FontCache::GetDefaultFontHeight(this->font->fc->GetSize()))) / 2); // Align sprite font to centre x_advance = this->font->fc->GetGlyphWidth(glyph); + this->glyphs.push_back(glyph); + this->positions.emplace_back(advance, advance + x_advance - 1, (this->font->fc->GetHeight() - ScaleSpriteTrad(FontCache::GetDefaultFontHeight(this->font->fc->GetSize()))) / 2); // Align sprite font to centre } else { - this->glyphs.push_back(glyph_info[i].codepoint); - this->positions.emplace_back(glyph_pos[i].x_offset / FONT_SCALE + advance, glyph_pos[i].y_offset / FONT_SCALE); x_advance = glyph_pos[i].x_advance / FONT_SCALE; + this->glyphs.push_back(glyph_info[i].codepoint); + this->positions.emplace_back(glyph_pos[i].x_offset / FONT_SCALE + advance, glyph_pos[i].x_offset / FONT_SCALE + advance + x_advance - 1, glyph_pos[i].y_offset / FONT_SCALE); } this->glyph_to_char.push_back(glyph_info[i].cluster); @@ -204,9 +203,6 @@ void ICURun::Shape(UChar *buff, size_t buff_length) advance += x_advance; } - /* End-of-run position. */ - this->positions.emplace_back(advance, 0); - /* Track the total advancement we made. */ this->total_advance = advance; @@ -284,7 +280,7 @@ std::vector ItemizeBidi(UChar *buff, size_t length) UBiDiLevel level; ubidi_getLogicalRun(ubidi, start_pos, &logical_pos, &level); - runs.emplace_back(ICURun(start_pos, logical_pos - start_pos, level)); + runs.emplace_back(start_pos, logical_pos - start_pos, level); } assert(static_cast(count) == runs.size()); @@ -315,7 +311,7 @@ std::vector ItemizeScript(UChar *buff, size_t length, std::vectorstart + cur_run->length); assert(stop_pos - cur_pos > 0); - runs.push_back(ICURun(cur_pos, stop_pos - cur_pos, cur_run->level, script_itemizer.getScriptCode())); + runs.emplace_back(cur_pos, stop_pos - cur_pos, cur_run->level, script_itemizer.getScriptCode()); if (stop_pos == cur_run->start + cur_run->length) cur_run++; cur_pos = stop_pos; @@ -347,7 +343,7 @@ std::vector ItemizeStyle(std::vector &runs_current, FontMap &fon int stop_pos = std::min(font_map.first, cur_run->start + cur_run->length); assert(stop_pos - cur_pos > 0); - runs.push_back(ICURun(cur_pos, stop_pos - cur_pos, cur_run->level, cur_run->script, font_map.second)); + runs.emplace_back(cur_pos, stop_pos - cur_pos, cur_run->level, cur_run->script, font_map.second); if (stop_pos == cur_run->start + cur_run->length) cur_run++; cur_pos = stop_pos; @@ -378,7 +374,7 @@ std::vector ItemizeStyle(std::vector &runs_current, FontMap &fon run.Shape(buff, length); } - return new ICUParagraphLayout(runs, buff, length); + return new ICUParagraphLayout(std::move(runs), buff, length); } /* static */ std::unique_ptr ICUParagraphLayoutFactory::break_iterator; @@ -489,7 +485,7 @@ std::unique_ptr ICUParagraphLayout::NextLine(int ubidi_reorderVisual(bidi_level.data(), bidi_level.size(), vis_to_log.data()); /* Create line. */ - std::unique_ptr line(new ICULine()); + std::unique_ptr line = std::make_unique(); int cur_pos = 0; for (auto &i : vis_to_log) { diff --git a/src/gfx_type.h b/src/gfx_type.h index fbedceb87c..c6866f46e2 100644 --- a/src/gfx_type.h +++ b/src/gfx_type.h @@ -11,6 +11,7 @@ #define GFX_TYPE_H #include "core/endian_type.hpp" +#include "core/enum_type.hpp" #include "core/geometry_type.hpp" #include "zoom_type.h" @@ -108,7 +109,14 @@ enum WindowKeyCodes { struct AnimCursor { static const CursorID LAST = MAX_UVALUE(CursorID); CursorID sprite; ///< Must be set to LAST_ANIM when it is the last sprite of the loop - byte display_time; ///< Amount of ticks this sprite will be shown + uint8_t display_time; ///< Amount of ticks this sprite will be shown +}; + +struct CursorSprite { + PalSpriteID image; ///< Image. + Point pos; ///< Relative position. + + constexpr CursorSprite(SpriteID spr, PaletteID pal, int x, int y) : image({spr, pal}), pos({x, y}) {} }; /** Collection of variables for cursor-display and -animation */ @@ -125,9 +133,7 @@ struct CursorVars { int h_wheel; /* Mouse appearance */ - PalSpriteID sprite_seq[16]; ///< current image of cursor - Point sprite_pos[16]; ///< relative position of individual sprites - uint sprite_count; ///< number of sprites to draw + std::vector sprites; ///< Sprites comprising cursor. Point total_offs, total_size; ///< union of sprite properties Point draw_pos, draw_size; ///< position and size bounding-box for drawing @@ -226,7 +232,7 @@ struct SubSprite { int left, top, right, bottom; }; -enum Colours : byte { +enum Colours : uint8_t { COLOUR_BEGIN, COLOUR_DARK_BLUE = COLOUR_BEGIN, COLOUR_PALE_GREEN, @@ -247,6 +253,7 @@ enum Colours : byte { COLOUR_END, INVALID_COLOUR = 0xFF, }; +DECLARE_POSTFIX_INCREMENT(Colours) DECLARE_ENUM_AS_ADDABLE(Colours) /** Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palette.png */ @@ -304,7 +311,7 @@ enum PaletteType { }; /** Types of sprites that might be loaded */ -enum class SpriteType : byte { +enum class SpriteType : uint8_t { Normal = 0, ///< The most basic (normal) sprite MapGen = 1, ///< Special sprite for the map generator Font = 2, ///< A sprite used for fonts diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp index 785dbde159..f2fccc890c 100644 --- a/src/gfxinit.cpp +++ b/src/gfxinit.cpp @@ -52,12 +52,12 @@ static uint LoadGrfFile(const std::string &filename, uint load_index, bool needs Debug(sprite, 2, "Reading grf-file '{}'", filename); - byte container_ver = file.GetContainerVersion(); + uint8_t container_ver = file.GetContainerVersion(); if (container_ver == 0) UserError("Base grf '{}' is corrupt", filename); ReadGRFSpriteOffsets(file); if (container_ver >= 2) { /* Read compression. */ - byte compression = file.ReadByte(); + uint8_t compression = file.ReadByte(); if (compression != 0) UserError("Unsupported compression format"); } @@ -89,12 +89,12 @@ static void LoadGrfFileIndexed(const std::string &filename, const SpriteID *inde Debug(sprite, 2, "Reading indexed grf-file '{}'", filename); - byte container_ver = file.GetContainerVersion(); + uint8_t container_ver = file.GetContainerVersion(); if (container_ver == 0) UserError("Base grf '{}' is corrupt", filename); ReadGRFSpriteOffsets(file); if (container_ver >= 2) { /* Read compression. */ - byte compression = file.ReadByte(); + uint8_t compression = file.ReadByte(); if (compression != 0) UserError("Unsupported compression format"); } @@ -127,9 +127,9 @@ void CheckExternalFiles() if (used_set->GetNumInvalid() != 0) { /* Not all files were loaded successfully, see which ones */ fmt::format_to(output_iterator, "Trying to load graphics set '{}', but it is incomplete. The game will probably not run correctly until you properly install this set or select another one. See section 4.1 of README.md.\n\nThe following files are corrupted or missing:\n", used_set->name); - for (uint i = 0; i < GraphicsSet::NUM_FILES; i++) { - MD5File::ChecksumResult res = GraphicsSet::CheckMD5(&used_set->files[i], BASESET_DIR); - if (res != MD5File::CR_MATCH) fmt::format_to(output_iterator, "\t{} is {} ({})\n", used_set->files[i].filename, res == MD5File::CR_MISMATCH ? "corrupt" : "missing", used_set->files[i].missing_warning); + for (const auto &file : used_set->files) { + MD5File::ChecksumResult res = GraphicsSet::CheckMD5(&file, BASESET_DIR); + if (res != MD5File::CR_MATCH) fmt::format_to(output_iterator, "\t{} is {} ({})\n", file.filename, res == MD5File::CR_MISMATCH ? "corrupt" : "missing", file.missing_warning); } fmt::format_to(output_iterator, "\n"); } @@ -219,10 +219,10 @@ static void LoadSpriteTables() } -static void RealChangeBlitter(const char *repl_blitter) +static void RealChangeBlitter(const std::string_view repl_blitter) { - const char *cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName(); - if (strcmp(cur_blitter, repl_blitter) == 0) return; + const std::string_view cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName(); + if (cur_blitter == repl_blitter) return; Debug(driver, 1, "Switching blitter from '{}' to '{}'... ", cur_blitter, repl_blitter); Blitter *new_blitter = BlitterFactory::SelectBlitter(repl_blitter); @@ -266,11 +266,11 @@ static bool SwitchNewGRFBlitter() if (c->palette & GRFP_BLT_32BPP) depth_wanted_by_grf = 32; } /* We need a 32bpp blitter for font anti-alias. */ - if (HasAntialiasedFonts()) depth_wanted_by_grf = 32; + if (GetFontAAState()) depth_wanted_by_grf = 32; /* Search the best blitter. */ static const struct { - const char *name; + const std::string_view name; uint animation; ///< 0: no support, 1: do support, 2: both uint min_base_depth, max_base_depth, min_grf_depth, max_grf_depth; } replacement_blitters[] = { @@ -290,23 +290,22 @@ static bool SwitchNewGRFBlitter() }; const bool animation_wanted = HasBit(_display_opt, DO_FULL_ANIMATION); - const char *cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName(); + const std::string_view cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName(); - for (uint i = 0; i < lengthof(replacement_blitters); i++) { - if (animation_wanted && (replacement_blitters[i].animation == 0)) continue; - if (!animation_wanted && (replacement_blitters[i].animation == 1)) continue; + for (const auto &replacement_blitter : replacement_blitters) { + if (animation_wanted && (replacement_blitter.animation == 0)) continue; + if (!animation_wanted && (replacement_blitter.animation == 1)) continue; - if (!IsInsideMM(depth_wanted_by_base, replacement_blitters[i].min_base_depth, replacement_blitters[i].max_base_depth + 1)) continue; - if (!IsInsideMM(depth_wanted_by_grf, replacement_blitters[i].min_grf_depth, replacement_blitters[i].max_grf_depth + 1)) continue; - const char *repl_blitter = replacement_blitters[i].name; + if (!IsInsideMM(depth_wanted_by_base, replacement_blitter.min_base_depth, replacement_blitter.max_base_depth + 1)) continue; + if (!IsInsideMM(depth_wanted_by_grf, replacement_blitter.min_grf_depth, replacement_blitter.max_grf_depth + 1)) continue; - if (strcmp(repl_blitter, cur_blitter) == 0) { + if (replacement_blitter.name == cur_blitter) { return false; } - if (BlitterFactory::GetBlitterFactory(repl_blitter) == nullptr) continue; + if (BlitterFactory::GetBlitterFactory(replacement_blitter.name) == nullptr) continue; /* Inform the video driver we want to switch blitter as soon as possible. */ - VideoDriver::GetInstance()->QueueOnMainThread(std::bind(&RealChangeBlitter, repl_blitter)); + VideoDriver::GetInstance()->QueueOnMainThread(std::bind(&RealChangeBlitter, replacement_blitter.name)); break; } diff --git a/src/goal.cpp b/src/goal.cpp index 9b0cb20027..f33535fb74 100644 --- a/src/goal.cpp +++ b/src/goal.cpp @@ -306,7 +306,7 @@ CommandCost CmdGoalQuestionAnswer(DoCommandFlag flags, uint16_t uniqueid, uint8_ } if (flags & DC_EXEC) { - Game::NewEvent(new ScriptEventGoalQuestionAnswer(uniqueid, (ScriptCompany::CompanyID)(byte)_current_company, (ScriptGoal::QuestionButton)(1 << button))); + Game::NewEvent(new ScriptEventGoalQuestionAnswer(uniqueid, (ScriptCompany::CompanyID)(uint8_t)_current_company, (ScriptGoal::QuestionButton)(1 << button))); } return CommandCost(); diff --git a/src/goal_gui.cpp b/src/goal_gui.cpp index d8be74d358..9b4573c361 100644 --- a/src/goal_gui.cpp +++ b/src/goal_gui.cpp @@ -40,7 +40,7 @@ enum GoalColumn { struct GoalListWindow : public Window { Scrollbar *vscroll; ///< Reference to the scrollbar widget. - GoalListWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + GoalListWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_GOAL_SCROLLBAR); @@ -168,18 +168,18 @@ struct GoalListWindow : public Window { return num; } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_GOAL_LIST) return; Dimension d = GetStringBoundingBox(STR_GOALS_NONE); - resize->width = 1; - resize->height = d.height; + resize.width = 1; + resize.height = d.height; d.height *= 5; d.width += WidgetDimensions::scaled.framerect.Horizontal(); d.height += WidgetDimensions::scaled.framerect.Vertical(); - *size = maxdim(*size, d); + size = maxdim(size, d); } /** @@ -302,11 +302,11 @@ static constexpr NWidgetPart _nested_goals_list_widgets[] = { EndContainer(), }; -static WindowDesc _goals_list_desc(__FILE__, __LINE__, +static WindowDesc _goals_list_desc( WDP_AUTO, "list_goals", 500, 127, WC_GOALS_LIST, WC_NONE, 0, - std::begin(_nested_goals_list_widgets), std::end(_nested_goals_list_widgets) + _nested_goals_list_widgets ); /** @@ -317,7 +317,7 @@ void ShowGoalsList(CompanyID company) { if (!Company::IsValidID(company)) company = (CompanyID)INVALID_COMPANY; - AllocateWindowDescFront(&_goals_list_desc, company); + AllocateWindowDescFront(_goals_list_desc, company); } /** Ask a question about a goal. */ @@ -327,7 +327,7 @@ struct GoalQuestionWindow : public Window { int button[3]; ///< Buttons to display. TextColour colour; ///< Colour of the question text. - GoalQuestionWindow(WindowDesc *desc, WindowNumber window_number, TextColour colour, uint32_t button_mask, const std::string &question) : Window(desc), colour(colour) + GoalQuestionWindow(WindowDesc &desc, WindowNumber window_number, TextColour colour, uint32_t button_mask, const std::string &question) : Window(desc), colour(colour) { this->question = question; @@ -388,12 +388,12 @@ struct GoalQuestionWindow : public Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_GQ_QUESTION) return; SetDParamStr(0, this->question); - size->height = GetStringHeight(STR_JUST_RAW_STRING, size->width); + size.height = GetStringHeight(STR_JUST_RAW_STRING, size.width); } void DrawWidget(const Rect &r, WidgetID widget) const override @@ -447,32 +447,28 @@ static constexpr auto _nested_goal_question_widgets_error = NestedGoalWidgets static WindowDesc _goal_question_list_desc[] = { { - __FILE__, __LINE__, WDP_CENTER, nullptr, 0, 0, WC_GOAL_QUESTION, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_goal_question_widgets_question), std::end(_nested_goal_question_widgets_question), + _nested_goal_question_widgets_question, }, { - __FILE__, __LINE__, WDP_CENTER, nullptr, 0, 0, WC_GOAL_QUESTION, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_goal_question_widgets_info), std::end(_nested_goal_question_widgets_info), + _nested_goal_question_widgets_info, }, { - __FILE__, __LINE__, WDP_CENTER, nullptr, 0, 0, WC_GOAL_QUESTION, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_goal_question_widgets_warning), std::end(_nested_goal_question_widgets_warning), + _nested_goal_question_widgets_warning, }, { - __FILE__, __LINE__, WDP_CENTER, nullptr, 0, 0, WC_GOAL_QUESTION, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_goal_question_widgets_error), std::end(_nested_goal_question_widgets_error), + _nested_goal_question_widgets_error, }, }; @@ -483,8 +479,8 @@ static WindowDesc _goal_question_list_desc[] = { * @param button_mask Buttons to display. * @param question Question to ask. */ -void ShowGoalQuestion(uint16_t id, byte type, uint32_t button_mask, const std::string &question) +void ShowGoalQuestion(uint16_t id, uint8_t type, uint32_t button_mask, const std::string &question) { assert(type < GQT_END); - new GoalQuestionWindow(&_goal_question_list_desc[type], id, type == 3 ? TC_WHITE : TC_BLACK, button_mask, question); + new GoalQuestionWindow(_goal_question_list_desc[type], id, type == 3 ? TC_WHITE : TC_BLACK, button_mask, question); } diff --git a/src/goal_type.h b/src/goal_type.h index f4af4af197..66a3f3bf8a 100644 --- a/src/goal_type.h +++ b/src/goal_type.h @@ -14,7 +14,7 @@ static const uint32_t GOAL_QUESTION_BUTTON_COUNT = 18; ///< Amount of buttons available. -enum GoalQuestionType : byte { +enum GoalQuestionType : uint8_t { GQT_QUESTION = 0, GQT_INFORMATION = 1, GQT_WARNING = 2, @@ -23,7 +23,7 @@ enum GoalQuestionType : byte { }; /** Types of goal destinations */ -enum GoalType : byte { +enum GoalType : uint8_t { GT_NONE, ///< Destination is not linked GT_TILE, ///< Destination is a tile GT_INDUSTRY, ///< Destination is an industry diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp index da5ba21c53..9424144c4c 100644 --- a/src/graph_gui.cpp +++ b/src/graph_gui.cpp @@ -49,7 +49,7 @@ static_assert(static_cast(INT64_MAX_IN_DOUBLE) < INT64_MAX); /****************/ struct GraphLegendWindow : Window { - GraphLegendWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + GraphLegendWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->InitNested(window_number); @@ -117,7 +117,7 @@ static std::unique_ptr MakeNWidgetCompanyLines() { auto vert = std::make_unique(NC_EQUALSIZE); vert->SetPadding(2, 2, 2, 2); - uint sprite_height = GetSpriteSize(SPR_COMPANY_ICON, nullptr, ZOOM_LVL_OUT_4X).height; + uint sprite_height = GetSpriteSize(SPR_COMPANY_ICON, nullptr, ZOOM_LVL_NORMAL).height; for (WidgetID widnum = WID_GL_FIRST_COMPANY; widnum <= WID_GL_LAST_COMPANY; widnum++) { auto panel = std::make_unique(WWT_PANEL, COLOUR_BROWN, widnum); @@ -142,16 +142,16 @@ static constexpr NWidgetPart _nested_graph_legend_widgets[] = { EndContainer(), }; -static WindowDesc _graph_legend_desc(__FILE__, __LINE__, +static WindowDesc _graph_legend_desc( WDP_AUTO, "graph_legend", 0, 0, WC_GRAPH_LEGEND, WC_NONE, 0, - std::begin(_nested_graph_legend_widgets), std::end(_nested_graph_legend_widgets) + _nested_graph_legend_widgets ); static void ShowGraphLegend() { - AllocateWindowDescFront(&_graph_legend_desc, 0); + AllocateWindowDescFront(_graph_legend_desc, 0); } /** Contains the interval of a graph's data. */ @@ -173,8 +173,8 @@ protected: static const int GRAPH_ZERO_LINE_COLOUR = GREY_SCALE(8); static const int GRAPH_YEAR_LINE_COLOUR = GREY_SCALE(5); static const int GRAPH_NUM_MONTHS = 24; ///< Number of months displayed in the graph. - static const int PAYMENT_GRAPH_X_STEP_DAYS = 20; ///< X-axis step label for cargo payment rates "Days in transit". - static const int PAYMENT_GRAPH_X_STEP_SECONDS = 10; ///< X-axis step label for cargo payment rates "Seconds in transit". + static const int PAYMENT_GRAPH_X_STEP_DAYS = 10; ///< X-axis step label for cargo payment rates "Days in transit". + static const int PAYMENT_GRAPH_X_STEP_SECONDS = 20; ///< X-axis step label for cargo payment rates "Seconds in transit". static const int ECONOMY_QUARTER_MINUTES = 3; ///< Minutes per economic quarter. static const TextColour GRAPH_AXIS_LABEL_COLOUR = TC_BLACK; ///< colour of the graph axis label. @@ -183,9 +183,9 @@ protected: static const int MIN_GRID_PIXEL_SIZE = 20; ///< Minimum distance between graph lines. uint64_t excluded_data; ///< bitmask of the datasets that shouldn't be displayed. - byte num_dataset; - byte num_on_x_axis; - byte num_vert_lines; + uint8_t num_dataset; + uint8_t num_on_x_axis; + uint8_t num_vert_lines; /* The starting month and year that values are plotted against. */ TimerGameEconomy::Month month; @@ -199,7 +199,7 @@ protected: uint16_t x_values_increment; StringID format_str_y_axis; - byte colours[GRAPH_MAX_DATASETS]; + uint8_t colours[GRAPH_MAX_DATASETS]; OverflowSafeInt64 cost[GRAPH_MAX_DATASETS][GRAPH_NUM_MONTHS]; ///< Stored costs for the last #GRAPH_NUM_MONTHS months /** @@ -443,7 +443,7 @@ protected: /* Centre the dot between the grid lines. */ x = r.left + (x_sep / 2); - byte colour = this->colours[i]; + uint8_t colour = this->colours[i]; uint prev_x = INVALID_DATAPOINT_POS; uint prev_y = INVALID_DATAPOINT_POS; @@ -493,7 +493,7 @@ protected: } - BaseGraphWindow(WindowDesc *desc, StringID format_str_y_axis) : + BaseGraphWindow(WindowDesc &desc, StringID format_str_y_axis) : Window(desc), format_str_y_axis(format_str_y_axis) { @@ -517,7 +517,7 @@ protected: } public: - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_GRAPH_GRAPH) return; @@ -548,9 +548,9 @@ public: SetDParam(1, INT64_MAX); uint y_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL).width; - size->width = std::max(size->width, ScaleGUITrad(5) + y_label_width + this->num_vert_lines * (x_label_width + ScaleGUITrad(5)) + ScaleGUITrad(9)); - size->height = std::max(size->height, ScaleGUITrad(5) + (1 + MIN_GRAPH_NUM_LINES_Y * 2 + (this->draw_dates ? 3 : 1)) * GetCharacterHeight(FS_SMALL) + ScaleGUITrad(4)); - size->height = std::max(size->height, size->width / 3); + size.width = std::max(size.width, ScaleGUITrad(5) + y_label_width + this->num_vert_lines * (x_label_width + ScaleGUITrad(5)) + ScaleGUITrad(9)); + size.height = std::max(size.height, ScaleGUITrad(5) + (1 + MIN_GRAPH_NUM_LINES_Y * 2 + (this->draw_dates ? 3 : 1)) * GetCharacterHeight(FS_SMALL) + ScaleGUITrad(4)); + size.height = std::max(size.height, size.width / 3); } void DrawWidget(const Rect &r, WidgetID widget) const override @@ -600,7 +600,7 @@ public: if (!Company::IsValidID(c)) SetBit(excluded_companies, c); } - byte nums = 0; + uint8_t nums = 0; for (const Company *c : Company::Iterate()) { nums = std::min(this->num_vert_lines, std::max(nums, c->num_valid_stat_ent)); } @@ -627,7 +627,7 @@ public: for (CompanyID k = COMPANY_FIRST; k < MAX_COMPANIES; k++) { const Company *c = Company::GetIfValid(k); if (c != nullptr) { - this->colours[numd] = _colour_gradient[c->colour][6]; + this->colours[numd] = GetColourGradient(c->colour, SHADE_LIGHTER); for (int j = this->num_on_x_axis, i = 0; --j >= 0;) { if (j >= c->num_valid_stat_ent) { this->cost[numd][i] = INVALID_DATAPOINT; @@ -652,7 +652,7 @@ public: /********************/ struct OperatingProfitGraphWindow : BaseGraphWindow { - OperatingProfitGraphWindow(WindowDesc *desc, WindowNumber window_number) : + OperatingProfitGraphWindow(WindowDesc &desc, WindowNumber window_number) : BaseGraphWindow(desc, STR_JUST_CURRENCY_SHORT) { this->num_on_x_axis = GRAPH_NUM_MONTHS; @@ -692,17 +692,17 @@ static constexpr NWidgetPart _nested_operating_profit_widgets[] = { EndContainer(), }; -static WindowDesc _operating_profit_desc(__FILE__, __LINE__, +static WindowDesc _operating_profit_desc( WDP_AUTO, "graph_operating_profit", 0, 0, WC_OPERATING_PROFIT, WC_NONE, 0, - std::begin(_nested_operating_profit_widgets), std::end(_nested_operating_profit_widgets) + _nested_operating_profit_widgets ); void ShowOperatingProfitGraph() { - AllocateWindowDescFront(&_operating_profit_desc, 0); + AllocateWindowDescFront(_operating_profit_desc, 0); } @@ -711,7 +711,7 @@ void ShowOperatingProfitGraph() /****************/ struct IncomeGraphWindow : BaseGraphWindow { - IncomeGraphWindow(WindowDesc *desc, WindowNumber window_number) : + IncomeGraphWindow(WindowDesc &desc, WindowNumber window_number) : BaseGraphWindow(desc, STR_JUST_CURRENCY_SHORT) { this->num_on_x_axis = GRAPH_NUM_MONTHS; @@ -751,16 +751,16 @@ static constexpr NWidgetPart _nested_income_graph_widgets[] = { EndContainer(), }; -static WindowDesc _income_graph_desc(__FILE__, __LINE__, +static WindowDesc _income_graph_desc( WDP_AUTO, "graph_income", 0, 0, WC_INCOME_GRAPH, WC_NONE, 0, - std::begin(_nested_income_graph_widgets), std::end(_nested_income_graph_widgets) + _nested_income_graph_widgets ); void ShowIncomeGraph() { - AllocateWindowDescFront(&_income_graph_desc, 0); + AllocateWindowDescFront(_income_graph_desc, 0); } /*******************/ @@ -768,7 +768,7 @@ void ShowIncomeGraph() /*******************/ struct DeliveredCargoGraphWindow : BaseGraphWindow { - DeliveredCargoGraphWindow(WindowDesc *desc, WindowNumber window_number) : + DeliveredCargoGraphWindow(WindowDesc &desc, WindowNumber window_number) : BaseGraphWindow(desc, STR_JUST_COMMA) { this->num_on_x_axis = GRAPH_NUM_MONTHS; @@ -808,16 +808,16 @@ static constexpr NWidgetPart _nested_delivered_cargo_graph_widgets[] = { EndContainer(), }; -static WindowDesc _delivered_cargo_graph_desc(__FILE__, __LINE__, +static WindowDesc _delivered_cargo_graph_desc( WDP_AUTO, "graph_delivered_cargo", 0, 0, WC_DELIVERED_CARGO, WC_NONE, 0, - std::begin(_nested_delivered_cargo_graph_widgets), std::end(_nested_delivered_cargo_graph_widgets) + _nested_delivered_cargo_graph_widgets ); void ShowDeliveredCargoGraph() { - AllocateWindowDescFront(&_delivered_cargo_graph_desc, 0); + AllocateWindowDescFront(_delivered_cargo_graph_desc, 0); } /***********************/ @@ -825,7 +825,7 @@ void ShowDeliveredCargoGraph() /***********************/ struct PerformanceHistoryGraphWindow : BaseGraphWindow { - PerformanceHistoryGraphWindow(WindowDesc *desc, WindowNumber window_number) : + PerformanceHistoryGraphWindow(WindowDesc &desc, WindowNumber window_number) : BaseGraphWindow(desc, STR_JUST_COMMA) { this->num_on_x_axis = GRAPH_NUM_MONTHS; @@ -872,16 +872,16 @@ static constexpr NWidgetPart _nested_performance_history_widgets[] = { EndContainer(), }; -static WindowDesc _performance_history_desc(__FILE__, __LINE__, +static WindowDesc _performance_history_desc( WDP_AUTO, "graph_performance", 0, 0, WC_PERFORMANCE_HISTORY, WC_NONE, 0, - std::begin(_nested_performance_history_widgets), std::end(_nested_performance_history_widgets) + _nested_performance_history_widgets ); void ShowPerformanceHistoryGraph() { - AllocateWindowDescFront(&_performance_history_desc, 0); + AllocateWindowDescFront(_performance_history_desc, 0); } /*****************/ @@ -889,7 +889,7 @@ void ShowPerformanceHistoryGraph() /*****************/ struct CompanyValueGraphWindow : BaseGraphWindow { - CompanyValueGraphWindow(WindowDesc *desc, WindowNumber window_number) : + CompanyValueGraphWindow(WindowDesc &desc, WindowNumber window_number) : BaseGraphWindow(desc, STR_JUST_CURRENCY_SHORT) { this->num_on_x_axis = GRAPH_NUM_MONTHS; @@ -929,16 +929,16 @@ static constexpr NWidgetPart _nested_company_value_graph_widgets[] = { EndContainer(), }; -static WindowDesc _company_value_graph_desc(__FILE__, __LINE__, +static WindowDesc _company_value_graph_desc( WDP_AUTO, "graph_company_value", 0, 0, WC_COMPANY_VALUE, WC_NONE, 0, - std::begin(_nested_company_value_graph_widgets), std::end(_nested_company_value_graph_widgets) + _nested_company_value_graph_widgets ); void ShowCompanyValueGraph() { - AllocateWindowDescFront(&_company_value_graph_desc, 0); + AllocateWindowDescFront(_company_value_graph_desc, 0); } /*****************/ @@ -950,7 +950,7 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { Scrollbar *vscroll; ///< Cargo list scrollbar. uint legend_width; ///< Width of legend 'blob'. - PaymentRatesGraphWindow(WindowDesc *desc, WindowNumber window_number) : + PaymentRatesGraphWindow(WindowDesc &desc, WindowNumber window_number) : BaseGraphWindow(desc, STR_JUST_CURRENCY_SHORT) { this->num_on_x_axis = 20; @@ -990,14 +990,14 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_CPR_MATRIX) { BaseGraphWindow::UpdateWidgetSize(widget, size, padding, fill, resize); return; } - size->height = GetCharacterHeight(FS_SMALL) + WidgetDimensions::scaled.framerect.Vertical(); + size.height = GetCharacterHeight(FS_SMALL) + WidgetDimensions::scaled.framerect.Vertical(); for (const CargoSpec *cs : _sorted_standard_cargo_specs) { SetDParam(0, cs->name); @@ -1005,13 +1005,13 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { d.width += this->legend_width + WidgetDimensions::scaled.hsep_normal; // colour field d.width += WidgetDimensions::scaled.framerect.Horizontal(); d.height += WidgetDimensions::scaled.framerect.Vertical(); - *size = maxdim(d, *size); + size = maxdim(d, size); } - this->line_height = size->height; - size->height = this->line_height * 11; /* Default number of cargo types in most climates. */ - resize->width = 0; - resize->height = this->line_height; + this->line_height = size.height; + size.height = this->line_height * 11; /* Default number of cargo types in most climates. */ + resize.width = 0; + resize.height = this->line_height; } void DrawWidget(const Rect &r, WidgetID widget) const override @@ -1023,13 +1023,11 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { bool rtl = _current_text_dir == TD_RTL; - int pos = this->vscroll->GetPosition(); - int max = pos + this->vscroll->GetCapacity(); + auto [first, last] = this->vscroll->GetVisibleRangeIterators(_sorted_standard_cargo_specs); Rect line = r.WithHeight(this->line_height); - for (const CargoSpec *cs : _sorted_standard_cargo_specs) { - if (pos-- > 0) continue; - if (--max < 0) break; + for (auto it = first; it != last; ++it) { + const CargoSpec *cs = *it; bool lowered = !HasBit(_legend_excluded_cargo, cs->Index()); @@ -1079,7 +1077,6 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { ToggleBit(_legend_excluded_cargo, (*it)->Index()); this->UpdateExcludedData(); this->SetDirty(); - break; } break; } @@ -1169,17 +1166,17 @@ static constexpr NWidgetPart _nested_cargo_payment_rates_widgets[] = { EndContainer(), }; -static WindowDesc _cargo_payment_rates_desc(__FILE__, __LINE__, +static WindowDesc _cargo_payment_rates_desc( WDP_AUTO, "graph_cargo_payment_rates", 0, 0, WC_PAYMENT_RATES, WC_NONE, 0, - std::begin(_nested_cargo_payment_rates_widgets), std::end(_nested_cargo_payment_rates_widgets) + _nested_cargo_payment_rates_widgets ); void ShowCargoPaymentRates() { - AllocateWindowDescFront(&_cargo_payment_rates_desc, 0); + AllocateWindowDescFront(_cargo_payment_rates_desc, 0); } /*****************************/ @@ -1190,7 +1187,7 @@ struct PerformanceRatingDetailWindow : Window { static CompanyID company; int timeout; - PerformanceRatingDetailWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + PerformanceRatingDetailWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->UpdateCompanyStats(); @@ -1218,12 +1215,12 @@ struct PerformanceRatingDetailWindow : Window { uint score_detail_left; uint score_detail_right; - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_PRD_SCORE_FIRST: this->bar_height = GetCharacterHeight(FS_NORMAL) + WidgetDimensions::scaled.fullbevel.Vertical(); - size->height = this->bar_height + WidgetDimensions::scaled.matrix.Vertical(); + size.height = this->bar_height + WidgetDimensions::scaled.matrix.Vertical(); uint score_info_width = 0; for (uint i = SCORE_BEGIN; i < SCORE_END; i++) { @@ -1254,14 +1251,14 @@ struct PerformanceRatingDetailWindow : Window { * least 999 999 M which roughly is equally long. Furthermore if the * exchange rate is that high, 999 999 k is usually not enough anymore * to show the different currency numbers. */ - if (_currency->rate < 1000) max /= _currency->rate; + if (GetCurrency().rate < 1000) max /= GetCurrency().rate; SetDParam(0, max); SetDParam(1, max); uint score_detail_width = GetStringBoundingBox(STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY).width; - size->width = WidgetDimensions::scaled.frametext.Horizontal() + score_info_width + WidgetDimensions::scaled.hsep_wide + this->bar_width + WidgetDimensions::scaled.hsep_wide + score_detail_width; + size.width = WidgetDimensions::scaled.frametext.Horizontal() + score_info_width + WidgetDimensions::scaled.hsep_wide + this->bar_width + WidgetDimensions::scaled.hsep_wide + score_detail_width; uint left = WidgetDimensions::scaled.frametext.left; - uint right = size->width - WidgetDimensions::scaled.frametext.right; + uint right = size.width - WidgetDimensions::scaled.frametext.right; bool rtl = _current_text_dir == TD_RTL; this->score_info_left = rtl ? right - score_info_width : left; @@ -1294,8 +1291,8 @@ struct PerformanceRatingDetailWindow : Window { ScoreID score_type = (ScoreID)(widget - WID_PRD_SCORE_FIRST); /* The colours used to show how the progress is going */ - int colour_done = _colour_gradient[COLOUR_GREEN][4]; - int colour_notdone = _colour_gradient[COLOUR_RED][4]; + int colour_done = GetColourGradient(COLOUR_GREEN, SHADE_NORMAL); + int colour_notdone = GetColourGradient(COLOUR_RED, SHADE_NORMAL); /* Draw all the score parts */ int64_t val = _score_part[company][score_type]; @@ -1405,7 +1402,9 @@ struct PerformanceRatingDetailWindow : Window { } /* Make sure the widget is lowered */ - this->LowerWidget(WID_PRD_COMPANY_FIRST + this->company); + if (this->company != INVALID_COMPANY) { + this->LowerWidget(WID_PRD_COMPANY_FIRST + this->company); + } } }; @@ -1462,16 +1461,16 @@ static constexpr NWidgetPart _nested_performance_rating_detail_widgets[] = { NWidgetFunction(MakePerformanceDetailPanels), }; -static WindowDesc _performance_rating_detail_desc(__FILE__, __LINE__, +static WindowDesc _performance_rating_detail_desc( WDP_AUTO, "league_details", 0, 0, WC_PERFORMANCE_DETAIL, WC_NONE, 0, - std::begin(_nested_performance_rating_detail_widgets), std::end(_nested_performance_rating_detail_widgets) + _nested_performance_rating_detail_widgets ); void ShowPerformanceRatingDetail() { - AllocateWindowDescFront(&_performance_rating_detail_desc, 0); + AllocateWindowDescFront(_performance_rating_detail_desc, 0); } void InitializeGraphGui() diff --git a/src/ground_vehicle.cpp b/src/ground_vehicle.cpp index ef755775e3..a6ab9758c0 100644 --- a/src/ground_vehicle.cpp +++ b/src/ground_vehicle.cpp @@ -41,8 +41,8 @@ void GroundVehicle::PowerChanged() if (track_speed > 0) max_track_speed = std::min(max_track_speed, track_speed); } - byte air_drag; - byte air_drag_value = v->GetAirDrag(); + uint8_t air_drag; + uint8_t air_drag_value = v->GetAirDrag(); /* If air drag is set to zero (default), the resulting air drag coefficient is dependent on max speed. */ if (air_drag_value == 0) { diff --git a/src/ground_vehicle.hpp b/src/ground_vehicle.hpp index 331b212048..c14d04ca79 100644 --- a/src/ground_vehicle.hpp +++ b/src/ground_vehicle.hpp @@ -14,6 +14,7 @@ #include "vehicle_gui.h" #include "landscape.h" #include "window_func.h" + #include "widgets/vehicle_widget.h" /** What is the status of our acceleration? */ @@ -45,6 +46,8 @@ struct GroundVehicleCache { /* Cached UI information. */ uint16_t last_speed; ///< The last speed we did display, so we only have to redraw when this changes. + + auto operator<=>(const GroundVehicleCache &) const = default; }; /** Ground vehicle flags. */ @@ -63,9 +66,9 @@ enum GroundVehicleFlags { * virtual uint16_t GetPower() const = 0; * virtual uint16_t GetPoweredPartPower(const T *head) const = 0; * virtual uint16_t GetWeight() const = 0; - * virtual byte GetTractiveEffort() const = 0; - * virtual byte GetAirDrag() const = 0; - * virtual byte GetAirDragArea() const = 0; + * virtual uint8_t GetTractiveEffort() const = 0; + * virtual uint8_t GetAirDrag() const = 0; + * virtual uint8_t GetAirDragArea() const = 0; * virtual AccelStatus GetAccelerationStatus() const = 0; * virtual uint16_t GetCurrentSpeed() const = 0; * virtual uint32_t GetRollingFriction() const = 0; @@ -362,7 +365,7 @@ protected: inline uint DoUpdateSpeed(uint accel, int min_speed, int max_speed) { uint spd = this->subspeed + accel; - this->subspeed = (byte)spd; + this->subspeed = (uint8_t)spd; /* When we are going faster than the maximum speed, reduce the speed * somewhat gradually. But never lower than the maximum speed. */ diff --git a/src/group.h b/src/group.h index 3886b155c4..39d9033d36 100644 --- a/src/group.h +++ b/src/group.h @@ -81,6 +81,7 @@ struct Group : GroupPool::PoolItem<&_group_pool> { bool folded; ///< NOSAVE: Is this group folded in the group view? GroupID parent; ///< Parent group + uint16_t number; ///< Per-company group number. Group(CompanyID owner = INVALID_COMPANY); }; diff --git a/src/group_cmd.cpp b/src/group_cmd.cpp index bc379e3212..96aa2d1c9f 100644 --- a/src/group_cmd.cpp +++ b/src/group_cmd.cpp @@ -142,7 +142,7 @@ uint16_t GroupStatistics::GetNumEngines(EngineID engine) const stats.num_vehicle += delta; stats.profit_last_year += v->GetDisplayProfitLastYear() * delta; - if (v->age > VEHICLE_PROFIT_MIN_AGE) { + if (v->economy_age > VEHICLE_PROFIT_MIN_AGE) { stats_all.num_vehicle_min_age += delta; stats_all.profit_last_year_min_age += v->GetDisplayProfitLastYear() * delta; stats.num_vehicle_min_age += delta; @@ -209,7 +209,7 @@ uint16_t GroupStatistics::GetNumEngines(EngineID engine) const for (const Vehicle *v : Vehicle::Iterate()) { if (v->IsPrimaryVehicle()) { GroupStatistics::AddProfitLastYear(v); - if (v->age > VEHICLE_PROFIT_MIN_AGE) GroupStatistics::VehicleReachedMinAge(v); + if (v->economy_age > VEHICLE_PROFIT_MIN_AGE) GroupStatistics::VehicleReachedMinAge(v); } } } @@ -350,8 +350,9 @@ std::tuple CmdCreateGroup(DoCommandFlag flags, VehicleType g->vehicle_type = vt; g->parent = INVALID_GROUP; + Company *c = Company::Get(g->owner); + g->number = c->freegroups.UseID(c->freegroups.NextID()); if (pg == nullptr) { - const Company *c = Company::Get(_current_company); g->livery.colour1 = c->livery[LS_DEFAULT].colour1; g->livery.colour2 = c->livery[LS_DEFAULT].colour2; if (c->settings.renew_keep_length) SetBit(g->flags, GroupFlags::GF_REPLACE_WAGON_REMOVAL); @@ -397,14 +398,15 @@ CommandCost CmdDeleteGroup(DoCommandFlag flags, GroupID group_id) /* Update backupped orders if needed */ OrderBackup::ClearGroup(g->index); - /* If we set an autoreplace for the group we delete, remove it. */ - if (_current_company < MAX_COMPANIES) { - Company *c; + if (g->owner < MAX_COMPANIES) { + Company *c = Company::Get(g->owner); - c = Company::Get(_current_company); + /* If we set an autoreplace for the group we delete, remove it. */ for (EngineRenew *er : EngineRenew::Iterate()) { if (er->group_id == g->index) RemoveEngineReplacementForCompany(c, er->from, g->index, flags); } + + c->freegroups.ReleaseID(g->number); } VehicleType vt = g->vehicle_type; diff --git a/src/group_cmd.h b/src/group_cmd.h index e177a71614..81c6f4cdf2 100644 --- a/src/group_cmd.h +++ b/src/group_cmd.h @@ -16,11 +16,11 @@ #include "vehiclelist.h" #include "vehiclelist_cmd.h" -enum Colours : byte; +enum Colours : uint8_t; enum GroupFlags : uint8_t; /** Action for \c CmdAlterGroup. */ -enum class AlterGroupMode : byte { +enum class AlterGroupMode : uint8_t { Rename, ///< Change group name. SetParent, ///< Change group parent. }; diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 50e6990fe8..bb2a8d840d 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -18,7 +18,7 @@ #include "vehicle_func.h" #include "autoreplace_gui.h" #include "company_func.h" -#include "widgets/dropdown_func.h" +#include "dropdown_func.h" #include "tilehighlight_func.h" #include "vehicle_gui_base.h" #include "core/geometry_func.hpp" @@ -27,6 +27,7 @@ #include "company_gui.h" #include "gui.h" #include "group_cmd.h" +#include "group_gui.h" #include "vehicle_cmd.h" #include "gfx_func.h" @@ -36,8 +37,6 @@ #include "safeguards.h" -typedef GUIList GUIGroupList; - static constexpr NWidgetPart _nested_group_widgets[] = { NWidget(NWID_HORIZONTAL), // Window header NWidget(WWT_CLOSEBOX, COLOUR_GREY), @@ -74,19 +73,19 @@ static constexpr NWidgetPart _nested_group_widgets[] = { /* right part */ NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), - NWidget(NWID_VERTICAL), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GL_GROUP_BY_ORDER), SetFill(1, 1), SetMinimalSize(0, 12), SetDataTip(STR_STATION_VIEW_GROUP, STR_TOOLTIP_GROUP_ORDER), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_SORT_BY_ORDER), SetFill(1, 1), SetMinimalSize(0, 12), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), EndContainer(), - NWidget(NWID_VERTICAL), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_GROUP_BY_DROPDOWN), SetFill(1, 0), SetMinimalSize(0, 12), SetDataTip(0x0, STR_TOOLTIP_GROUP_ORDER), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_SORT_BY_DROPDOWN), SetFill(1, 0), SetMinimalSize(0, 12), SetDataTip(0x0, STR_TOOLTIP_SORT_CRITERIA), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_GROUP_BY_DROPDOWN), SetFill(1, 1), SetMinimalSize(0, 12), SetDataTip(0x0, STR_TOOLTIP_GROUP_ORDER), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_SORT_BY_DROPDOWN), SetFill(1, 1), SetMinimalSize(0, 12), SetDataTip(0x0, STR_TOOLTIP_SORT_CRITERIA), EndContainer(), - NWidget(NWID_VERTICAL), - NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(0, 12), SetResize(1, 0), EndContainer(), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), + NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical()), SetFill(0, 1), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_FILTER_BY_CARGO), SetMinimalSize(0, 12), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_FILTER_CRITERIA), - NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(0, 12), SetResize(1, 0), EndContainer(), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_FILTER_BY_CARGO), SetMinimalSize(0, 12), SetFill(0, 1), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_FILTER_CRITERIA), + NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(0, 1), SetResize(1, 0), EndContainer(), EndContainer(), EndContainer(), EndContainer(), @@ -101,9 +100,9 @@ static constexpr NWidgetPart _nested_group_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_MANAGE_VEHICLES_DROPDOWN), SetMinimalSize(118, 12), SetDataTip(STR_VEHICLE_LIST_MANAGE_LIST, STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_STOP_ALL), SetMinimalSize(12, 12), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_STOP_ALL), SetAspect(WidgetDimensions::ASPECT_VEHICLE_FLAG), SetDataTip(SPR_FLAG_VEH_STOPPED, STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_START_ALL), SetMinimalSize(12, 12), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_START_ALL), SetAspect(WidgetDimensions::ASPECT_VEHICLE_FLAG), SetDataTip(SPR_FLAG_VEH_RUNNING, STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), @@ -111,6 +110,83 @@ static constexpr NWidgetPart _nested_group_widgets[] = { EndContainer(), }; +/** + * Add children to GUI group list to build a hierarchical tree. + * @param dst Destination list. + * @param src Source list. + * @param fold Whether to handle group folding/hiding. + * @param parent Current tree parent (set by self with recursion). + * @param indent Current tree indentation level (set by self with recursion). + */ +static void GuiGroupListAddChildren(GUIGroupList &dst, const GUIGroupList &src, bool fold, GroupID parent = INVALID_GROUP, uint8_t indent = 0) +{ + for (const auto &item : src) { + if (item.group->parent != parent) continue; + + dst.emplace_back(item.group, indent); + + if (fold && item.group->folded) { + /* Test if this group has children at all. If not, the folded flag should be cleared to avoid lingering unfold buttons in the list. */ + GroupID groupid = item.group->index; + bool has_children = std::any_of(src.begin(), src.end(), [groupid](const auto &child) { return child.group->parent == groupid; }); + Group::Get(item.group->index)->folded = has_children; + } else { + GuiGroupListAddChildren(dst, src, fold, item.group->index, indent + 1); + } + } + + if (indent > 0 || dst.empty()) return; + + /* Hierarchy is complete, traverse in reverse to find where indentation levels continue. */ + uint16_t level_mask = 0; + for (auto it = std::rbegin(dst); std::next(it) != std::rend(dst); ++it) { + auto next_it = std::next(it); + SB(level_mask, it->indent, 1, it->indent <= next_it->indent); + next_it->level_mask = level_mask; + } +} + +/** + * Build GUI group list, a sorted hierarchical list of groups for owner and vehicle type. + * @param dst Destination list, owned by the caller. + * @param fold Whether to handle group folding/hiding. + * @param owner Owner of groups. + * @param veh_type Vehicle type of groups. + */ +void BuildGuiGroupList(GUIGroupList &dst, bool fold, Owner owner, VehicleType veh_type) +{ + GUIGroupList list; + + for (const Group *g : Group::Iterate()) { + if (g->owner == owner && g->vehicle_type == veh_type) { + list.emplace_back(g, 0); + } + } + + list.ForceResort(); + + /* Sort the groups by their name */ + std::array, 2> last_group{}; + + list.Sort([&last_group](const GUIGroupListItem &a, const GUIGroupListItem &b) -> bool { + if (a.group != last_group[0].first) { + SetDParam(0, a.group->index); + last_group[0] = {a.group, GetString(STR_GROUP_NAME)}; + } + + if (b.group != last_group[1].first) { + SetDParam(0, b.group->index); + last_group[1] = {b.group, GetString(STR_GROUP_NAME)}; + } + + int r = StrNaturalCompare(last_group[0].second, last_group[1].second); // Sort by name (natural sorting). + if (r == 0) return a.group->number < b.group->number; + return r < 0; + }); + + GuiGroupListAddChildren(dst, list, fold, INVALID_GROUP, 0); +} + class VehicleGroupWindow : public BaseVehicleListWindow { private: /* Columns in the group list */ @@ -133,26 +209,8 @@ private: uint tiny_step_height; ///< Step height for the group list Scrollbar *group_sb; - std::vector indents; ///< Indentation levels - Dimension column_size[VGC_END]; ///< Size of the columns in the group list. - void AddChildren(GUIGroupList &source, GroupID parent, int indent) - { - for (const Group *g : source) { - if (g->parent != parent) continue; - this->groups.push_back(g); - this->indents.push_back(indent); - if (g->folded) { - /* Test if this group has children at all. If not, the folded flag should be cleared to avoid lingering unfold buttons in the list. */ - bool has_children = std::any_of(source.begin(), source.end(), [g](const Group *child){ return child->parent == g->index; }); - Group::Get(g->index)->folded = has_children; - } else { - AddChildren(source, g->index, indent + 1); - } - } - } - /** * (Re)Build the group list. * @@ -163,42 +221,9 @@ private: if (!this->groups.NeedRebuild()) return; this->groups.clear(); - this->indents.clear(); - GUIGroupList list; + BuildGuiGroupList(this->groups, true, owner, this->vli.vtype); - for (const Group *g : Group::Iterate()) { - if (g->owner == owner && g->vehicle_type == this->vli.vtype) { - list.push_back(g); - } - } - - list.ForceResort(); - - /* Sort the groups by their name */ - const Group *last_group[2] = { nullptr, nullptr }; - std::string last_name[2] = { {}, {} }; - list.Sort([&](const Group * const &a, const Group * const &b) { - if (a != last_group[0]) { - last_group[0] = a; - SetDParam(0, a->index); - last_name[0] = GetString(STR_GROUP_NAME); - } - - if (b != last_group[1]) { - last_group[1] = b; - SetDParam(0, b->index); - last_name[1] = GetString(STR_GROUP_NAME); - } - - int r = StrNaturalCompare(last_name[0], last_name[1]); // Sort by name (natural sorting). - if (r == 0) return a->index < b->index; - return r < 0; - }); - - AddChildren(list, INVALID_GROUP, 0); - - this->groups.shrink_to_fit(); this->groups.RebuildDone(); } @@ -224,8 +249,8 @@ private: this->column_size[VGC_PROFIT].width = 0; this->column_size[VGC_PROFIT].height = 0; static const SpriteID profit_sprites[] = {SPR_PROFIT_NA, SPR_PROFIT_NEGATIVE, SPR_PROFIT_SOME, SPR_PROFIT_LOT}; - for (uint i = 0; i < lengthof(profit_sprites); i++) { - Dimension d = GetSpriteSize(profit_sprites[i]); + for (const auto &profit_sprite : profit_sprites) { + Dimension d = GetSpriteSize(profit_sprite); this->column_size[VGC_PROFIT] = maxdim(this->column_size[VGC_PROFIT], d); } this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_PROFIT].height); @@ -258,11 +283,11 @@ private: * @param protection Whether autoreplace protection is set. * @param has_children Whether the group has children and should have a fold / unfold button. */ - void DrawGroupInfo(int y, int left, int right, GroupID g_id, int indent = 0, bool protection = false, bool has_children = false) const + void DrawGroupInfo(int y, int left, int right, GroupID g_id, uint16_t level_mask = 0, uint8_t indent = 0, bool protection = false, bool has_children = false) const { /* Highlight the group if a vehicle is dragged over it */ if (g_id == this->group_over) { - GfxFillRect(left + WidgetDimensions::scaled.bevel.left, y + WidgetDimensions::scaled.framerect.top, right - WidgetDimensions::scaled.bevel.right, y + this->tiny_step_height - 1 - WidgetDimensions::scaled.framerect.bottom, _colour_gradient[COLOUR_GREY][7]); + GfxFillRect(left + WidgetDimensions::scaled.bevel.left, y + WidgetDimensions::scaled.framerect.top, right - WidgetDimensions::scaled.bevel.right, y + this->tiny_step_height - 1 - WidgetDimensions::scaled.framerect.bottom, GetColourGradient(COLOUR_GREY, SHADE_LIGHTEST)); } if (g_id == NEW_GROUP) return; @@ -272,10 +297,27 @@ private: const GroupStatistics &stats = GroupStatistics::Get(this->vli.company, g_id, this->vli.vtype); bool rtl = _current_text_dir == TD_RTL; + const int offset = (rtl ? -(int)this->column_size[VGC_FOLD].width : (int)this->column_size[VGC_FOLD].width) / 2; + const int level_width = rtl ? -WidgetDimensions::scaled.hsep_indent : WidgetDimensions::scaled.hsep_indent; + const int linecolour = GetColourGradient(COLOUR_ORANGE, SHADE_NORMAL); + + if (indent > 0) { + /* Draw tree continuation lines. */ + int tx = (rtl ? right - WidgetDimensions::scaled.framerect.right : left + WidgetDimensions::scaled.framerect.left) + offset; + for (uint lvl = 1; lvl <= indent; ++lvl) { + if (HasBit(level_mask, lvl)) GfxDrawLine(tx, y, tx, y + this->tiny_step_height - 1, linecolour, WidgetDimensions::scaled.fullbevel.top); + if (lvl < indent) tx += level_width; + } + /* Draw our node in the tree. */ + int ycentre = y + this->tiny_step_height / 2 - 1; + if (!HasBit(level_mask, indent)) GfxDrawLine(tx, y, tx, ycentre, linecolour, WidgetDimensions::scaled.fullbevel.top); + GfxDrawLine(tx, ycentre, tx + offset - (rtl ? -1 : 1), ycentre, linecolour, WidgetDimensions::scaled.fullbevel.top); + } + /* draw fold / unfold button */ int x = rtl ? right - WidgetDimensions::scaled.framerect.right - this->column_size[VGC_FOLD].width + 1 : left + WidgetDimensions::scaled.framerect.left; if (has_children) { - DrawSprite(Group::Get(g_id)->folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED, PAL_NONE, rtl ? x - indent : x + indent, y + (this->tiny_step_height - this->column_size[VGC_FOLD].height) / 2); + DrawSprite(Group::Get(g_id)->folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED, PAL_NONE, x + indent * level_width, y + (this->tiny_step_height - this->column_size[VGC_FOLD].height) / 2); } /* draw group name */ @@ -289,7 +331,7 @@ private: str = STR_GROUP_NAME; } x = rtl ? x - WidgetDimensions::scaled.hsep_normal - this->column_size[VGC_NAME].width : x + WidgetDimensions::scaled.hsep_normal + this->column_size[VGC_FOLD].width; - DrawString(x + (rtl ? 0 : indent), x + this->column_size[VGC_NAME].width - 1 - (rtl ? indent : 0), y + (this->tiny_step_height - this->column_size[VGC_NAME].height) / 2, str, colour); + DrawString(x + (rtl ? 0 : indent * WidgetDimensions::scaled.hsep_indent), x + this->column_size[VGC_NAME].width - 1 - (rtl ? indent * WidgetDimensions::scaled.hsep_indent : 0), y + (this->tiny_step_height - this->column_size[VGC_NAME].height) / 2, str, colour); /* draw autoreplace protection */ x = rtl ? x - WidgetDimensions::scaled.hsep_wide - this->column_size[VGC_PROTECT].width : x + WidgetDimensions::scaled.hsep_wide + this->column_size[VGC_NAME].width; @@ -346,7 +388,7 @@ private: } public: - VehicleGroupWindow(WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(desc, window_number) + VehicleGroupWindow(WindowDesc &desc, WindowNumber window_number) : BaseVehicleListWindow(desc, window_number) { this->CreateNestedTree(); @@ -384,56 +426,56 @@ public: *this->sorting = this->vehgroups.GetListing(); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_GL_LIST_GROUP: - size->width = this->ComputeGroupInfoSize(); - resize->height = this->tiny_step_height; - fill->height = this->tiny_step_height; + size.width = this->ComputeGroupInfoSize(); + resize.height = this->tiny_step_height; + fill.height = this->tiny_step_height; break; case WID_GL_ALL_VEHICLES: case WID_GL_DEFAULT_VEHICLES: - size->width = this->ComputeGroupInfoSize(); - size->height = this->tiny_step_height; + size.width = this->ComputeGroupInfoSize(); + size.height = this->tiny_step_height; break; case WID_GL_SORT_BY_ORDER: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } case WID_GL_LIST_VEHICLE: this->ComputeGroupInfoSize(); - resize->height = GetVehicleListHeight(this->vli.vtype, this->tiny_step_height); - size->height = 4 * resize->height; + resize.height = GetVehicleListHeight(this->vli.vtype, this->tiny_step_height); + size.height = 4 * resize.height; break; case WID_GL_GROUP_BY_DROPDOWN: - size->width = GetStringListWidth(this->vehicle_group_by_names) + padding.width; + size.width = GetStringListWidth(this->vehicle_group_by_names) + padding.width; break; case WID_GL_SORT_BY_DROPDOWN: - size->width = GetStringListWidth(this->vehicle_group_none_sorter_names_calendar); - size->width = std::max(size->width, GetStringListWidth(this->vehicle_group_none_sorter_names_wallclock)); - size->width = std::max(size->width, GetStringListWidth(this->vehicle_group_shared_orders_sorter_names_calendar)); - size->width = std::max(size->width, GetStringListWidth(this->vehicle_group_shared_orders_sorter_names_wallclock)); - size->width += padding.width; + size.width = GetStringListWidth(this->vehicle_group_none_sorter_names_calendar); + size.width = std::max(size.width, GetStringListWidth(this->vehicle_group_none_sorter_names_wallclock)); + size.width = std::max(size.width, GetStringListWidth(this->vehicle_group_shared_orders_sorter_names_calendar)); + size.width = std::max(size.width, GetStringListWidth(this->vehicle_group_shared_orders_sorter_names_wallclock)); + size.width += padding.width; break; case WID_GL_FILTER_BY_CARGO: - size->width = std::max(size->width, GetDropDownListDimension(this->BuildCargoDropDownList(true)).width + padding.width); + size.width = std::max(size.width, GetDropDownListDimension(this->BuildCargoDropDownList(true)).width + padding.width); break; case WID_GL_MANAGE_VEHICLES_DROPDOWN: { Dimension d = this->GetActionDropdownSize(true, true, true); d.height += padding.height; d.width += padding.width; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } } @@ -546,7 +588,7 @@ public: this->GetWidget(WID_GL_REPLACE_PROTECTION)->widget_data = protect_sprite + this->vli.vtype; /* Set text of "group by" dropdown widget. */ - this->GetWidget(WID_GL_GROUP_BY_DROPDOWN)->widget_data = this->vehicle_group_by_names[this->grouping]; + this->GetWidget(WID_GL_GROUP_BY_DROPDOWN)->widget_data = std::data(this->vehicle_group_by_names)[this->grouping]; /* Set text of "sort by" dropdown widget. */ this->GetWidget(WID_GL_SORT_BY_DROPDOWN)->widget_data = this->GetVehicleSorterNames()[this->vehgroups.SortType()]; @@ -602,13 +644,13 @@ public: case WID_GL_LIST_GROUP: { int y1 = r.top; - size_t max = std::min(this->group_sb->GetPosition() + this->group_sb->GetCapacity(), this->groups.size()); - for (size_t i = this->group_sb->GetPosition(); i < max; ++i) { - const Group *g = this->groups[i]; + auto [first, last] = this->group_sb->GetVisibleRangeIterators(this->groups); + for (auto it = first; it != last; ++it) { + const Group *g = it->group; assert(g->owner == this->owner); - DrawGroupInfo(y1, r.left, r.right, g->index, this->indents[i] * WidgetDimensions::scaled.hsep_indent, HasBit(g->flags, GroupFlags::GF_REPLACE_PROTECTION), g->folded || (i + 1 < this->groups.size() && indents[i + 1] > this->indents[i])); + DrawGroupInfo(y1, r.left, r.right, g->index, it->level_mask, it->indent, HasBit(g->flags, GroupFlags::GF_REPLACE_PROTECTION), g->folded || (std::next(it) != std::end(this->groups) && std::next(it)->indent > it->indent)); y1 += this->tiny_step_height; } @@ -626,11 +668,11 @@ public: if (this->vli.index != ALL_GROUP && this->grouping == GB_NONE) { /* Mark vehicles which are in sub-groups (only if we are not using shared order coalescing) */ Rect mr = r.WithHeight(this->resize.step_height); - size_t max = std::min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->vehgroups.size()); - for (size_t i = this->vscroll->GetPosition(); i < max; ++i) { - const Vehicle *v = this->vehgroups[i].GetSingleVehicle(); + auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->vehgroups); + for (auto it = first; it != last; ++it) { + const Vehicle *v = it->GetSingleVehicle(); if (v->group_id != this->vli.index) { - GfxFillRect(mr.Shrink(WidgetDimensions::scaled.bevel), _colour_gradient[COLOUR_GREY][3], FILLRECT_CHECKER); + GfxFillRect(mr.Shrink(WidgetDimensions::scaled.bevel), GetColourGradient(COLOUR_GREY, SHADE_DARK), FILLRECT_CHECKER); } mr = mr.Translate(0, this->resize.step_height); } @@ -690,27 +732,26 @@ public: auto it = this->group_sb->GetScrolledItemFromWidget(this->groups, pt.y, this, WID_GL_LIST_GROUP); if (it == this->groups.end()) return; - size_t id_g = it - this->groups.begin(); - if ((*it)->folded || (id_g + 1 < this->groups.size() && this->indents[id_g + 1] > this->indents[id_g])) { + if (it->group->folded || (std::next(it) != std::end(this->groups) && std::next(it)->indent > it->indent)) { /* The group has children, check if the user clicked the fold / unfold button. */ NWidgetCore *group_display = this->GetWidget(widget); int x = _current_text_dir == TD_RTL ? - group_display->pos_x + group_display->current_x - WidgetDimensions::scaled.framerect.right - this->indents[id_g] * WidgetDimensions::scaled.hsep_indent - this->column_size[VGC_FOLD].width : - group_display->pos_x + WidgetDimensions::scaled.framerect.left + this->indents[id_g] * WidgetDimensions::scaled.hsep_indent; + group_display->pos_x + group_display->current_x - WidgetDimensions::scaled.framerect.right - it->indent * WidgetDimensions::scaled.hsep_indent - this->column_size[VGC_FOLD].width : + group_display->pos_x + WidgetDimensions::scaled.framerect.left + it->indent * WidgetDimensions::scaled.hsep_indent; if (click_count > 1 || (pt.x >= x && pt.x < (int)(x + this->column_size[VGC_FOLD].width))) { GroupID g = this->vli.index; if (!IsAllGroupID(g) && !IsDefaultGroupID(g)) { do { g = Group::Get(g)->parent; - if (g == groups[id_g]->index) { + if (g == it->group->index) { this->vli.index = g; break; } } while (g != INVALID_GROUP); } - Group::Get(groups[id_g]->index)->folded = !groups[id_g]->folded; + Group::Get(it->group->index)->folded = !it->group->folded; this->groups.ForceRebuild(); this->SetDirty(); @@ -718,7 +759,7 @@ public: } } - this->group_sel = this->vli.index = this->groups[id_g]->index; + this->group_sel = this->vli.index = it->group->index; SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); @@ -805,7 +846,7 @@ public: break; case WID_GL_MANAGE_VEHICLES_DROPDOWN: { - ShowDropDownList(this, this->BuildActionDropdownList(true, Group::IsValidID(this->vli.index), IsDefaultGroupID(this->vli.index)), 0, WID_GL_MANAGE_VEHICLES_DROPDOWN); + ShowDropDownList(this, this->BuildActionDropdownList(true, Group::IsValidID(this->vli.index), IsDefaultGroupID(this->vli.index)), -1, WID_GL_MANAGE_VEHICLES_DROPDOWN); break; } @@ -843,7 +884,7 @@ public: case WID_GL_LIST_GROUP: { // Matrix group auto it = this->group_sb->GetScrolledItemFromWidget(this->groups, pt.y, this, WID_GL_LIST_GROUP); - GroupID new_g = it == this->groups.end() ? INVALID_GROUP : (*it)->index; + GroupID new_g = it == this->groups.end() ? INVALID_GROUP : it->group->index; if (this->group_sel != new_g && g->parent != new_g) { Command::Post(STR_ERROR_GROUP_CAN_T_SET_PARENT, AlterGroupMode::SetParent, this->group_sel, new_g, {}); @@ -876,7 +917,7 @@ public: this->SetDirty(); auto it = this->group_sb->GetScrolledItemFromWidget(this->groups, pt.y, this, WID_GL_LIST_GROUP); - GroupID new_g = it == this->groups.end() ? NEW_GROUP : (*it)->index; + GroupID new_g = it == this->groups.end() ? NEW_GROUP : it->group->index; Command::Post(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE, new_g == NEW_GROUP ? CcAddVehicleNewGroup : nullptr, new_g, vindex, _ctrl_pressed || this->grouping == GB_SHARED_ORDERS, VehicleListIdentifier{}); break; @@ -931,9 +972,9 @@ public: _cursor.vehchain = false; } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (str != nullptr) Command::Post(STR_ERROR_GROUP_CAN_T_RENAME, AlterGroupMode::Rename, this->group_rename, 0, str); + if (str.has_value()) Command::Post(STR_ERROR_GROUP_CAN_T_RENAME, AlterGroupMode::Rename, this->group_rename, 0, *str); this->group_rename = INVALID_GROUP; } @@ -1025,7 +1066,7 @@ public: case WID_GL_LIST_GROUP: { // ... the list of custom groups. auto it = this->group_sb->GetScrolledItemFromWidget(this->groups, pt.y, this, WID_GL_LIST_GROUP); - new_group_over = it == this->groups.end() ? NEW_GROUP : (*it)->index; + new_group_over = it == this->groups.end() ? NEW_GROUP : it->group->index; break; } } @@ -1080,18 +1121,19 @@ public: this->vli.index = g_id; if (g_id != ALL_GROUP && g_id != DEFAULT_GROUP) { const Group *g = Group::Get(g_id); - int id_g = find_index(this->groups, g); - // The group's branch is maybe collapsed, so try to expand it - if (id_g == -1) { + + auto found = std::find_if(std::begin(this->groups), std::end(this->groups), [g](const auto &item) { return item.group == g; }); + if (found == std::end(this->groups)) { + /* The group's branch is maybe collapsed, so try to expand it. */ for (auto pg = Group::GetIfValid(g->parent); pg != nullptr; pg = Group::GetIfValid(pg->parent)) { pg->folded = false; } this->groups.ForceRebuild(); this->BuildGroupList(this->owner); this->group_sb->SetCount(this->groups.size()); - id_g = find_index(this->groups, g); + found = std::find_if(std::begin(this->groups), std::end(this->groups), [g](const auto &item) { return item.group == g; }); } - this->group_sb->ScrollTowards(id_g); + if (found != std::end(this->groups)) this->group_sb->ScrollTowards(std::distance(std::begin(this->groups), found)); } this->vehgroups.ForceRebuild(); this->SetDirty(); @@ -1100,18 +1142,18 @@ public: }; -static WindowDesc _other_group_desc(__FILE__, __LINE__, +static WindowDesc _other_group_desc( WDP_AUTO, "list_groups", 460, 246, WC_INVALID, WC_NONE, 0, - std::begin(_nested_group_widgets), std::end(_nested_group_widgets) + _nested_group_widgets ); -static WindowDesc _train_group_desc(__FILE__, __LINE__, +static WindowDesc _train_group_desc( WDP_AUTO, "list_groups_train", 525, 246, WC_TRAINS_LIST, WC_NONE, 0, - std::begin(_nested_group_widgets), std::end(_nested_group_widgets) + _nested_group_widgets ); /** @@ -1121,17 +1163,17 @@ static WindowDesc _train_group_desc(__FILE__, __LINE__, * @param group The group to be selected. Defaults to INVALID_GROUP. * @param need_existing_window Whether the existing window is needed. Defaults to false. */ -void ShowCompanyGroup(CompanyID company, VehicleType vehicle_type, GroupID group = INVALID_GROUP, bool need_existing_window = false) +void ShowCompanyGroup(CompanyID company, VehicleType vehicle_type, GroupID group, bool need_existing_window) { if (!Company::IsValidID(company)) return; const WindowNumber num = VehicleListIdentifier(VL_GROUP_LIST, vehicle_type, company).Pack(); VehicleGroupWindow *w; if (vehicle_type == VEH_TRAIN) { - w = AllocateWindowDescFront(&_train_group_desc, num, need_existing_window); + w = AllocateWindowDescFront(_train_group_desc, num, need_existing_window); } else { _other_group_desc.cls = GetWindowClassForVehicleType(vehicle_type); - w = AllocateWindowDescFront(&_other_group_desc, num, need_existing_window); + w = AllocateWindowDescFront(_other_group_desc, num, need_existing_window); } if (w != nullptr) w->SelectGroup(group); } @@ -1153,7 +1195,7 @@ void ShowCompanyGroupForVehicle(const Vehicle *v) */ static inline VehicleGroupWindow *FindVehicleGroupWindow(VehicleType vt, Owner owner) { - return (VehicleGroupWindow *)FindWindowById(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_GROUP_LIST, vt, owner).Pack()); + return dynamic_cast(FindWindowById(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_GROUP_LIST, vt, owner).Pack())); } /** diff --git a/src/group_gui.h b/src/group_gui.h index d42704663e..d2fb2f71a0 100644 --- a/src/group_gui.h +++ b/src/group_gui.h @@ -17,4 +17,16 @@ void ShowCompanyGroup(CompanyID company, VehicleType veh, GroupID group = INVALI void ShowCompanyGroupForVehicle(const Vehicle *v); void DeleteGroupHighlightOfVehicle(const Vehicle *v); +struct GUIGroupListItem { + const Group *group; + uint8_t indent; ///< Display indentation level. + uint16_t level_mask; ///< Bitmask of indentation continuation. + + constexpr GUIGroupListItem(const Group *group, int8_t indent) : group(group), indent(indent), level_mask(0) {} +}; + +using GUIGroupList = GUIList; + +void BuildGuiGroupList(GUIGroupList &dst, bool fold, Owner owner, VehicleType veh_type); + #endif /* GROUP_GUI_H */ diff --git a/src/gui.h b/src/gui.h index a55978c54a..87df7a3283 100644 --- a/src/gui.h +++ b/src/gui.h @@ -62,7 +62,7 @@ void ShowSubsidiesList(); /* goal_gui.cpp */ void ShowGoalsList(CompanyID company); -void ShowGoalQuestion(uint16_t id, byte type, uint32_t button_mask, const std::string &question); +void ShowGoalQuestion(uint16_t id, uint8_t type, uint32_t button_mask, const std::string &question); /* story_gui.cpp */ void ShowStoryBook(CompanyID company, uint16_t page_id = INVALID_STORY_PAGE, bool centered = false); @@ -72,7 +72,7 @@ void ShowExtraViewportWindow(TileIndex tile = INVALID_TILE); void ShowExtraViewportWindowForTileUnderCursor(); /* bridge_gui.cpp */ -void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transport_type, byte bridge_type); +void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transport_type, uint8_t bridge_type); /* music_gui.cpp */ void ShowMusicWindow(); diff --git a/src/heightmap.cpp b/src/heightmap.cpp index 230a090bad..3252c392dc 100644 --- a/src/heightmap.cpp +++ b/src/heightmap.cpp @@ -60,7 +60,7 @@ static inline bool IsValidHeightmapDimension(size_t width, size_t height) * Convert RGB colours to Grayscale using 29.9% Red, 58.7% Green, 11.4% Blue * (average luminosity formula, NTSC Colour Space) */ -static inline byte RGBToGrayscale(byte red, byte green, byte blue) +static inline uint8_t RGBToGrayscale(uint8_t red, uint8_t green, uint8_t blue) { /* To avoid doubles and stuff, multiply it with a total of 65536 (16bits), then * divide by it to normalize the value to a byte again. */ @@ -75,10 +75,10 @@ static inline byte RGBToGrayscale(byte red, byte green, byte blue) /** * The PNG Heightmap loader. */ -static void ReadHeightmapPNGImageData(byte *map, png_structp png_ptr, png_infop info_ptr) +static void ReadHeightmapPNGImageData(uint8_t *map, png_structp png_ptr, png_infop info_ptr) { uint x, y; - byte gray_palette[256]; + uint8_t gray_palette[256]; png_bytep *row_pointers = nullptr; bool has_palette = png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE; uint channels = png_get_channels(png_ptr, info_ptr); @@ -114,7 +114,7 @@ static void ReadHeightmapPNGImageData(byte *map, png_structp png_ptr, png_infop /* Read the raw image data and convert in 8-bit grayscale */ for (x = 0; x < png_get_image_width(png_ptr, info_ptr); x++) { for (y = 0; y < png_get_image_height(png_ptr, info_ptr); y++) { - byte *pixel = &map[y * png_get_image_width(png_ptr, info_ptr) + x]; + uint8_t *pixel = &map[y * png_get_image_width(png_ptr, info_ptr) + x]; uint x_offset = x * channels; if (has_palette) { @@ -134,7 +134,7 @@ static void ReadHeightmapPNGImageData(byte *map, png_structp png_ptr, png_infop * If map == nullptr only the size of the PNG is read, otherwise a map * with grayscale pixels is allocated and assigned to *map. */ -static bool ReadHeightmapPNG(const char *filename, uint *x, uint *y, byte **map) +static bool ReadHeightmapPNG(const char *filename, uint *x, uint *y, uint8_t **map) { FILE *fp; png_structp png_ptr = nullptr; @@ -188,7 +188,7 @@ static bool ReadHeightmapPNG(const char *filename, uint *x, uint *y, byte **map) } if (map != nullptr) { - *map = MallocT(static_cast(width) * height); + *map = MallocT(static_cast(width) * height); ReadHeightmapPNGImageData(*map, png_ptr, info_ptr); } @@ -206,10 +206,10 @@ static bool ReadHeightmapPNG(const char *filename, uint *x, uint *y, byte **map) /** * The BMP Heightmap loader. */ -static void ReadHeightmapBMPImageData(byte *map, BmpInfo *info, BmpData *data) +static void ReadHeightmapBMPImageData(uint8_t *map, BmpInfo *info, BmpData *data) { uint x, y; - byte gray_palette[256]; + uint8_t gray_palette[256]; if (data->palette != nullptr) { uint i; @@ -244,8 +244,8 @@ static void ReadHeightmapBMPImageData(byte *map, BmpInfo *info, BmpData *data) /* Read the raw image data and convert in 8-bit grayscale */ for (y = 0; y < info->height; y++) { - byte *pixel = &map[y * info->width]; - byte *bitmap = &data->bitmap[y * info->width * (info->bpp == 24 ? 3 : 1)]; + uint8_t *pixel = &map[y * info->width]; + uint8_t *bitmap = &data->bitmap[y * info->width * (info->bpp == 24 ? 3 : 1)]; for (x = 0; x < info->width; x++) { if (info->bpp != 24) { @@ -263,7 +263,7 @@ static void ReadHeightmapBMPImageData(byte *map, BmpInfo *info, BmpData *data) * If map == nullptr only the size of the BMP is read, otherwise a map * with grayscale pixels is allocated and assigned to *map. */ -static bool ReadHeightmapBMP(const char *filename, uint *x, uint *y, byte **map) +static bool ReadHeightmapBMP(const char *filename, uint *x, uint *y, uint8_t **map) { FILE *f; BmpInfo info; @@ -303,7 +303,7 @@ static bool ReadHeightmapBMP(const char *filename, uint *x, uint *y, byte **map) return false; } - *map = MallocT(static_cast(info.width) * info.height); + *map = MallocT(static_cast(info.width) * info.height); ReadHeightmapBMPImageData(*map, &info, &data); } @@ -323,7 +323,7 @@ static bool ReadHeightmapBMP(const char *filename, uint *x, uint *y, byte **map) * @param img_height the height of the image in pixels/tiles * @param map the input map */ -static void GrayscaleToMapHeights(uint img_width, uint img_height, byte *map) +static void GrayscaleToMapHeights(uint img_width, uint img_height, uint8_t *map) { /* Defines the detail of the aspect ratio (to avoid doubles) */ const uint num_div = 16384; @@ -423,7 +423,7 @@ void FixSlopes() { uint width, height; int row, col; - byte current_tile; + uint8_t current_tile; /* Adjust height difference to maximum one horizontal/vertical change. */ width = Map::SizeX(); @@ -484,7 +484,7 @@ void FixSlopes() * @param[in,out] map If not \c nullptr, destination to store the loaded block of image data. * @return Whether loading was successful. */ -static bool ReadHeightMap(DetailedFileType dft, const char *filename, uint *x, uint *y, byte **map) +static bool ReadHeightMap(DetailedFileType dft, const char *filename, uint *x, uint *y, uint8_t **map) { switch (dft) { default: @@ -523,7 +523,7 @@ bool GetHeightmapDimensions(DetailedFileType dft, const char *filename, uint *x, bool LoadHeightmap(DetailedFileType dft, const char *filename) { uint x, y; - byte *map = nullptr; + uint8_t *map = nullptr; if (!ReadHeightMap(dft, filename, &x, &y, &map)) { free(map); @@ -543,7 +543,7 @@ bool LoadHeightmap(DetailedFileType dft, const char *filename) * Make an empty world where all tiles are of height 'tile_height'. * @param tile_height of the desired new empty world */ -void FlatEmptyWorld(byte tile_height) +void FlatEmptyWorld(uint8_t tile_height) { int edge_distance = _settings_game.construction.freeform_edges ? 0 : 2; for (uint row = edge_distance; row < Map::SizeY() - edge_distance; row++) { diff --git a/src/heightmap.h b/src/heightmap.h index d7c431c2e4..20e7ff5938 100644 --- a/src/heightmap.h +++ b/src/heightmap.h @@ -23,7 +23,7 @@ enum HeightmapRotation { bool GetHeightmapDimensions(DetailedFileType dft, const char *filename, uint *x, uint *y); bool LoadHeightmap(DetailedFileType dft, const char *filename); -void FlatEmptyWorld(byte tile_height); +void FlatEmptyWorld(uint8_t tile_height); void FixSlopes(); #endif /* HEIGHTMAP_H */ diff --git a/src/help_gui.cpp b/src/help_gui.cpp index 8345430ed8..bcfa1bc4db 100644 --- a/src/help_gui.cpp +++ b/src/help_gui.cpp @@ -15,8 +15,8 @@ #include "table/control_codes.h" #include "string_func.h" #include "openttd.h" - #include "help_gui.h" + #include "widgets/help_widget.h" #include "widgets/misc_widget.h" @@ -121,7 +121,7 @@ struct GameManualTextfileWindow : public TextfileWindow { /** Window class displaying the help window. */ struct HelpWindow : public Window { - HelpWindow(WindowDesc *desc, WindowNumber number) : Window(desc) + HelpWindow(WindowDesc &desc, WindowNumber number) : Window(desc) { this->InitNested(number); @@ -193,14 +193,14 @@ static constexpr NWidgetPart _nested_helpwin_widgets[] = { EndContainer(), }; -static WindowDesc _helpwin_desc(__FILE__, __LINE__, +static WindowDesc _helpwin_desc( WDP_CENTER, nullptr, 0, 0, WC_HELPWIN, WC_NONE, 0, - std::begin(_nested_helpwin_widgets), std::end(_nested_helpwin_widgets) + _nested_helpwin_widgets ); void ShowHelpWindow() { - AllocateWindowDescFront(&_helpwin_desc, 0); + AllocateWindowDescFront(_helpwin_desc, 0); } diff --git a/src/highscore.cpp b/src/highscore.cpp index 14bfd33ef8..f6fd57978b 100644 --- a/src/highscore.cpp +++ b/src/highscore.cpp @@ -129,7 +129,7 @@ void SaveToHighScore() for (int i = 0; i < SP_SAVED_HIGHSCORE_END; i++) { for (HighScore &hs : _highscore_table[i]) { /* This code is weird and old fashioned to keep compatibility with the old high score files. */ - byte name_length = ClampTo(hs.name.size()); + uint8_t name_length = ClampTo(hs.name.size()); if (fwrite(&name_length, sizeof(name_length), 1, fp.get()) != 1 || // Write the string length of the name fwrite(hs.name.data(), name_length, 1, fp.get()) > 1 || // Yes... could be 0 bytes too fwrite(&hs.score, sizeof(hs.score), 1, fp.get()) != 1 || @@ -153,7 +153,7 @@ void LoadFromHighScore() for (int i = 0; i < SP_SAVED_HIGHSCORE_END; i++) { for (HighScore &hs : _highscore_table[i]) { /* This code is weird and old fashioned to keep compatibility with the old high score files. */ - byte name_length; + uint8_t name_length; char buffer[std::numeric_limits::max() + 1]; if (fread(&name_length, sizeof(name_length), 1, fp.get()) != 1 || diff --git a/src/highscore_gui.cpp b/src/highscore_gui.cpp index 2198b191bc..70bf6fc5c8 100644 --- a/src/highscore_gui.cpp +++ b/src/highscore_gui.cpp @@ -33,7 +33,7 @@ struct EndGameHighScoreBaseWindow : Window { uint32_t background_img; int8_t rank; - EndGameHighScoreBaseWindow(WindowDesc *desc) : Window(desc) + EndGameHighScoreBaseWindow(WindowDesc &desc) : Window(desc) { this->InitNested(); CLRBITS(this->flags, WF_WHITE_BORDER); @@ -96,7 +96,7 @@ struct EndGameHighScoreBaseWindow : Window { /** End game window shown at the end of the game */ struct EndGameWindow : EndGameHighScoreBaseWindow { - EndGameWindow(WindowDesc *desc) : EndGameHighScoreBaseWindow(desc) + EndGameWindow(WindowDesc &desc) : EndGameHighScoreBaseWindow(desc) { /* Pause in single-player to have a look at the highscore at your own leisure */ if (!_networking) Command::Post(PM_PAUSED_NORMAL, true); @@ -158,7 +158,7 @@ struct EndGameWindow : EndGameHighScoreBaseWindow { struct HighScoreWindow : EndGameHighScoreBaseWindow { bool game_paused_by_player; ///< True if the game was paused by the player when the highscore window was opened. - HighScoreWindow(WindowDesc *desc, int difficulty, int8_t ranking) : EndGameHighScoreBaseWindow(desc) + HighScoreWindow(WindowDesc &desc, int difficulty, int8_t ranking) : EndGameHighScoreBaseWindow(desc) { /* pause game to show the chart */ this->game_paused_by_player = _pause_mode == PM_PAUSED_NORMAL; @@ -214,18 +214,18 @@ static constexpr NWidgetPart _nested_highscore_widgets[] = { NWidget(WWT_PANEL, COLOUR_BROWN, WID_H_BACKGROUND), SetResize(1, 1), EndContainer(), }; -static WindowDesc _highscore_desc(__FILE__, __LINE__, +static WindowDesc _highscore_desc( WDP_MANUAL, nullptr, 0, 0, WC_HIGHSCORE, WC_NONE, 0, - std::begin(_nested_highscore_widgets), std::end(_nested_highscore_widgets) + _nested_highscore_widgets ); -static WindowDesc _endgame_desc(__FILE__, __LINE__, +static WindowDesc _endgame_desc( WDP_MANUAL, nullptr, 0, 0, WC_ENDSCREEN, WC_NONE, 0, - std::begin(_nested_highscore_widgets), std::end(_nested_highscore_widgets) + _nested_highscore_widgets ); /** @@ -236,7 +236,7 @@ static WindowDesc _endgame_desc(__FILE__, __LINE__, void ShowHighscoreTable(int difficulty, int8_t ranking) { CloseWindowByClass(WC_HIGHSCORE); - new HighScoreWindow(&_highscore_desc, difficulty, ranking); + new HighScoreWindow(_highscore_desc, difficulty, ranking); } /** @@ -250,7 +250,7 @@ void ShowEndGameChart() HideVitalWindows(); CloseWindowByClass(WC_ENDSCREEN); - new EndGameWindow(&_endgame_desc); + new EndGameWindow(_endgame_desc); } static IntervalTimer _check_end_game({TimerGameCalendar::YEAR, TimerGameCalendar::Priority::NONE}, [](auto) diff --git a/src/hotkeys.cpp b/src/hotkeys.cpp index 2260e456ea..2d41f43255 100644 --- a/src/hotkeys.cpp +++ b/src/hotkeys.cpp @@ -26,12 +26,12 @@ static std::vector *_hotkey_lists = nullptr; /** String representation of a keycode */ struct KeycodeNames { - const char *name; ///< Name of the keycode + const std::string_view name; ///< Name of the keycode WindowKeyCodes keycode; ///< The keycode }; /** Array of non-standard keycodes that can be used in the hotkeys config file. */ -static const KeycodeNames _keycode_to_name[] = { +static const std::initializer_list _keycode_to_name = { {"SHIFT", WKC_SHIFT}, {"CTRL", WKC_CTRL}, {"ALT", WKC_ALT}, @@ -99,10 +99,10 @@ static uint16_t ParseCode(const char *start, const char *end) assert(start <= end); while (start < end && *start == ' ') start++; while (end > start && *end == ' ') end--; - std::string_view str{start, (size_t)(end - start)}; - for (uint i = 0; i < lengthof(_keycode_to_name); i++) { - if (StrEqualsIgnoreCase(str, _keycode_to_name[i].name)) { - return _keycode_to_name[i].keycode; + std::string_view str{start, end}; + for (const auto &kn : _keycode_to_name) { + if (StrEqualsIgnoreCase(str, kn.name)) { + return kn.keycode; } } if (end - start == 1) { @@ -193,9 +193,9 @@ static std::string KeycodeToString(uint16_t keycode) if (!str.empty()) str += "+"; keycode = keycode & ~WKC_SPECIAL_KEYS; - for (uint i = 0; i < lengthof(_keycode_to_name); i++) { - if (_keycode_to_name[i].keycode == keycode) { - str += _keycode_to_name[i].name; + for (const auto &kn : _keycode_to_name) { + if (kn.keycode == keycode) { + str += kn.name; return str; } } diff --git a/src/house.h b/src/house.h index c3308ea59b..04cddb5c2d 100644 --- a/src/house.h +++ b/src/house.h @@ -20,7 +20,7 @@ * Simple value that indicates the house has reached the final stage of * construction. */ -static const byte TOWN_HOUSE_COMPLETED = 3; +static const uint8_t TOWN_HOUSE_COMPLETED = 3; static const HouseID NUM_HOUSES_PER_GRF = 255; ///< Number of supported houses per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on. @@ -30,14 +30,9 @@ static const HouseID NUM_HOUSES = 512; ///< Total number of houses. static const HouseID INVALID_HOUSE_ID = 0xFFFF; static const uint HOUSE_NUM_ACCEPTS = 16; ///< Max number of cargoes accepted by a tile +static const uint HOUSE_ORIGINAL_NUM_ACCEPTS = 3; ///< Original number of accepted cargo types. -/** - * There can only be as many classes as there are new houses, plus one for - * NO_CLASS, as the original houses don't have classes. - */ -static const uint HOUSE_CLASS_MAX = NUM_HOUSES - NEW_HOUSE_OFFSET + 1; - -enum BuildingFlags { +enum BuildingFlags : uint8_t { TILE_NO_FLAG = 0, TILE_SIZE_1x1 = 1U << 0, TILE_NOT_SLOPED = 1U << 1, @@ -55,7 +50,7 @@ enum BuildingFlags { }; DECLARE_ENUM_AS_BIT_SET(BuildingFlags) -enum HouseZonesBits { +enum HouseZonesBits : uint8_t { HZB_BEGIN = 0, HZB_TOWN_EDGE = 0, HZB_TOWN_OUTSKIRT, @@ -68,7 +63,7 @@ static_assert(HZB_END == 5); DECLARE_POSTFIX_INCREMENT(HouseZonesBits) -enum HouseZones { ///< Bit Value Meaning +enum HouseZones : uint16_t { HZ_NOZNS = 0x0000, ///< 0 This is just to get rid of zeros, meaning none HZ_ZON1 = 1U << HZB_TOWN_EDGE, ///< 0..4 1,2,4,8,10 which town zones the building can be built in, Zone1 been the further suburb HZ_ZON2 = 1U << HZB_TOWN_OUTSKIRT, @@ -85,7 +80,7 @@ enum HouseZones { ///< Bit Value Meaning }; DECLARE_ENUM_AS_BIT_SET(HouseZones) -enum HouseExtraFlags { +enum HouseExtraFlags : uint8_t { NO_EXTRA_FLAG = 0, BUILDING_IS_HISTORICAL = 1U << 0, ///< this house will only appear during town generation in random games, thus the historical BUILDING_IS_PROTECTED = 1U << 1, ///< towns and AI will not remove this house, while human players will be able to @@ -99,12 +94,12 @@ struct HouseSpec { /* Standard properties */ TimerGameCalendar::Year min_year; ///< introduction year of the house TimerGameCalendar::Year max_year; ///< last year it can be built - byte population; ///< population (Zero on other tiles in multi tile house.) - byte removal_cost; ///< cost multiplier for removing it + uint8_t population; ///< population (Zero on other tiles in multi tile house.) + uint8_t removal_cost; ///< cost multiplier for removing it StringID building_name; ///< building name uint16_t remove_rating_decrease; ///< rating decrease if removed - byte mail_generation; ///< mail generation multiplier (tile based, as the acceptances below) - byte cargo_acceptance[HOUSE_NUM_ACCEPTS]; ///< acceptance level for the cargo slots + uint8_t mail_generation; ///< mail generation multiplier (tile based, as the acceptances below) + uint8_t cargo_acceptance[HOUSE_NUM_ACCEPTS]; ///< acceptance level for the cargo slots CargoID accepts_cargo[HOUSE_NUM_ACCEPTS]; ///< input cargo slots CargoLabel accepts_cargo_label[HOUSE_NUM_ACCEPTS]; ///< input landscape cargo slots BuildingFlags building_flags; ///< some flags that describe the house (size, stadium etc...) @@ -115,22 +110,19 @@ struct HouseSpec { GRFFileProps grf_prop; ///< Properties related the the grf file uint16_t callback_mask; ///< Bitmask of house callbacks that have to be called Colours random_colour[4]; ///< 4 "random" colours - byte probability; ///< Relative probability of appearing (16 is the standard value) + uint8_t probability; ///< Relative probability of appearing (16 is the standard value) HouseExtraFlags extra_flags; ///< some more flags HouseClassID class_id; ///< defines the class this house has (not grf file based) AnimationInfo animation; ///< information about the animation. - byte processing_time; ///< Periodic refresh multiplier - byte minimum_life; ///< The minimum number of years this house will survive before the town rebuilds it + uint8_t processing_time; ///< Periodic refresh multiplier + uint8_t minimum_life; ///< The minimum number of years this house will survive before the town rebuilds it CargoTypes watched_cargoes; ///< Cargo types watched for acceptance. + HouseID Index() const; Money GetRemovalCost() const; - static inline HouseSpec *Get(size_t house_id) - { - assert(house_id < NUM_HOUSES); - extern HouseSpec _house_specs[]; - return &_house_specs[house_id]; - } + static std::vector &Specs(); + static HouseSpec *Get(size_t house_id); }; /** @@ -144,4 +136,6 @@ inline HouseID GetTranslatedHouseID(HouseID hid) return hs->grf_prop.override == INVALID_HOUSE_ID ? hid : hs->grf_prop.override; } +void ShowBuildHousePicker(struct Window *); + #endif /* HOUSE_H */ diff --git a/src/industry.h b/src/industry.h index 52b4dcd359..6c23927104 100644 --- a/src/industry.h +++ b/src/industry.h @@ -41,7 +41,7 @@ enum ProductionLevels { * Flags to control/override the behaviour of an industry. * These flags are controlled by game scripts. */ -enum IndustryControlFlags : byte { +enum IndustryControlFlags : uint8_t { /** No flags in effect */ INDCTL_NONE = 0, /** When industry production change is evaluated, rolls to decrease are ignored. */ @@ -90,22 +90,22 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { TimerGameEconomy::Date last_accepted; ///< Last day cargo was accepted by this industry }; - using ProducedCargoArray = std::array; - using AcceptedCargoArray = std::array; + using ProducedCargoes = std::vector; + using AcceptedCargoes = std::vector; TileArea location; ///< Location of the industry Town *town; ///< Nearest town Station *neutral_station; ///< Associated neutral station - ProducedCargoArray produced; ///< INDUSTRY_NUM_OUTPUTS production cargo slots - AcceptedCargoArray accepted; ///< INDUSTRY_NUM_INPUTS input cargo slots - byte prod_level; ///< general production level + ProducedCargoes produced; ///< produced cargo slots + AcceptedCargoes accepted; ///< accepted cargo slots + uint8_t prod_level; ///< general production level uint16_t counter; ///< used for animation and/or production (if available cargo) IndustryType type; ///< type of industry. Owner owner; ///< owner of the industry. Which SHOULD always be (imho) OWNER_NONE Colours random_colour; ///< randomized colour of the industry, for display purpose TimerGameEconomy::Year last_prod_year; ///< last economy year of production - byte was_cargo_delivered; ///< flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry + uint8_t was_cargo_delivered; ///< flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry IndustryControlFlags ctlflags; ///< flags overriding standard behaviours PartOfSubsidy part_of_subsidy; ///< NOSAVE: is this industry a source/destination of a subsidy? @@ -115,7 +115,7 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { Owner founder; ///< Founder of the industry TimerGameCalendar::Date construction_date; ///< Date of the construction of the industry uint8_t construction_type; ///< Way the industry was constructed (@see IndustryConstructionType) - byte selected_layout; ///< Which tile layout was used when creating the industry + uint8_t selected_layout; ///< Which tile layout was used when creating the industry Owner exclusive_supplier; ///< Which company has exclusive rights to deliver cargo (INVALID_OWNER = anyone) Owner exclusive_consumer; ///< Which company has exclusive rights to take cargo (INVALID_OWNER = anyone) std::string text; ///< General text with additional information. @@ -139,12 +139,34 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { return IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == this->index; } + /** + * Safely get a produced cargo slot, or an empty data if the slot does not exist. + * @param slot produced cargo slot to retrieve. + * @return the real slot, or an empty slot. + */ + inline const ProducedCargo &GetProduced(size_t slot) const + { + static const ProducedCargo empty{INVALID_CARGO, 0, 0, {}}; + return slot < this->produced.size() ? this->produced[slot] : empty; + } + + /** + * Safely get an accepted cargo slot, or an empty data if the slot does not exist. + * @param slot accepted cargo slot to retrieve. + * @return the real slot, or an empty slot. + */ + inline const AcceptedCargo &GetAccepted(size_t slot) const + { + static const AcceptedCargo empty{INVALID_CARGO, 0, {}}; + return slot < this->accepted.size() ? this->accepted[slot] : empty; + } + /** * Get produced cargo slot for a specific cargo type. * @param cargo CargoID to find. * @return Iterator pointing to produced cargo slot if it exists, or the end iterator. */ - inline ProducedCargoArray::iterator GetCargoProduced(CargoID cargo) + inline ProducedCargoes::iterator GetCargoProduced(CargoID cargo) { if (!IsValidCargoID(cargo)) return std::end(this->produced); return std::find_if(std::begin(this->produced), std::end(this->produced), [&cargo](const auto &p) { return p.cargo == cargo; }); @@ -155,7 +177,7 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { * @param cargo CargoID to find. * @return Iterator pointing to produced cargo slot if it exists, or the end iterator. */ - inline ProducedCargoArray::const_iterator GetCargoProduced(CargoID cargo) const + inline ProducedCargoes::const_iterator GetCargoProduced(CargoID cargo) const { if (!IsValidCargoID(cargo)) return std::end(this->produced); return std::find_if(std::begin(this->produced), std::end(this->produced), [&cargo](const auto &p) { return p.cargo == cargo; }); @@ -166,7 +188,18 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { * @param cargo CargoID to find. * @return Iterator pointing to accepted cargo slot if it exists, or the end iterator. */ - inline AcceptedCargoArray::iterator GetCargoAccepted(CargoID cargo) + inline AcceptedCargoes::iterator GetCargoAccepted(CargoID cargo) + { + if (!IsValidCargoID(cargo)) return std::end(this->accepted); + return std::find_if(std::begin(this->accepted), std::end(this->accepted), [&cargo](const auto &a) { return a.cargo == cargo; }); + } + + /** + * Get accepted cargo slot for a specific cargo type (const-variant). + * @param cargo CargoID to find. + * @return Iterator pointing to accepted cargo slot if it exists, or the end iterator. + */ + inline AcceptedCargoes::const_iterator GetCargoAccepted(CargoID cargo) const { if (!IsValidCargoID(cargo)) return std::end(this->accepted); return std::find_if(std::begin(this->accepted), std::end(this->accepted), [&cargo](const auto &a) { return a.cargo == cargo; }); @@ -275,7 +308,7 @@ bool IsTileForestIndustry(TileIndex tile); /** Data for managing the number of industries of a single industry type. */ struct IndustryTypeBuildData { uint32_t probability; ///< Relative probability of building this industry. - byte min_number; ///< Smallest number of industries that should exist (either \c 0 or \c 1). + uint8_t min_number; ///< Smallest number of industries that should exist (either \c 0 or \c 1). uint16_t target_count; ///< Desired number of industries of this type. uint16_t max_wait; ///< Starting number of turns to wait (copied to #wait_count). uint16_t wait_count; ///< Number of turns to wait before trying to build again. @@ -310,4 +343,6 @@ enum IndustryDirectoryInvalidateWindowData { IDIWD_FORCE_RESORT, }; +void TrimIndustryAcceptedProduced(Industry *ind); + #endif /* INDUSTRY_H */ diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 0264e6cbd0..8596b6e658 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -60,7 +60,7 @@ INSTANTIATE_POOL_METHODS(Industry) void ShowIndustryViewWindow(int industry); void BuildOilRig(TileIndex tile); -static byte _industry_sound_ctr; +static uint8_t _industry_sound_ctr; static TileIndex _industry_sound_tile; uint16_t Industry::counts[NUM_INDUSTRYTYPES]; @@ -82,9 +82,9 @@ void ResetIndustries() auto industry_insert = std::copy(std::begin(_origin_industry_specs), std::end(_origin_industry_specs), std::begin(_industry_specs)); std::fill(industry_insert, std::end(_industry_specs), IndustrySpec{}); - for (IndustryType i = 0; i < lengthof(_origin_industry_specs); i++) { - /* Enable only the current climate industries */ - _industry_specs[i].enabled = HasBit(_industry_specs[i].climate_availability, _settings_game.game_creation.landscape); + /* Enable only the current climate industries */ + for (auto it = std::begin(_industry_specs); it != industry_insert; ++it) { + it->enabled = HasBit(it->climate_availability, _settings_game.game_creation.landscape); } auto industry_tile_insert = std::copy(std::begin(_origin_industry_tile_specs), std::end(_origin_industry_tile_specs), std::begin(_industry_tile_specs)); @@ -438,7 +438,7 @@ static void AddAcceptedCargo_Industry(TileIndex tile, CargoArray &acceptance, Ca uint16_t res = GetIndustryTileCallback(CBID_INDTILE_ACCEPT_CARGO, 0, 0, gfx, Industry::GetByTile(tile), tile); if (res != CALLBACK_FAILED) { accepts_cargo.fill(INVALID_CARGO); - for (uint i = 0; i < 3; i++) accepts_cargo[i] = GetCargoTranslation(GB(res, i * 5, 5), itspec->grf_prop.grffile); + for (uint i = 0; i < INDUSTRY_ORIGINAL_NUM_INPUTS; i++) accepts_cargo[i] = GetCargoTranslation(GB(res, i * 5, 5), itspec->grf_prop.grffile); } } @@ -447,11 +447,11 @@ static void AddAcceptedCargo_Industry(TileIndex tile, CargoArray &acceptance, Ca uint16_t res = GetIndustryTileCallback(CBID_INDTILE_CARGO_ACCEPTANCE, 0, 0, gfx, Industry::GetByTile(tile), tile); if (res != CALLBACK_FAILED) { cargo_acceptance.fill(0); - for (uint i = 0; i < 3; i++) cargo_acceptance[i] = GB(res, i * 4, 4); + for (uint i = 0; i < INDUSTRY_ORIGINAL_NUM_INPUTS; i++) cargo_acceptance[i] = GB(res, i * 4, 4); } } - for (byte i = 0; i < std::size(itspec->accepts_cargo); i++) { + for (uint8_t i = 0; i < std::size(itspec->accepts_cargo); i++) { CargoID a = accepts_cargo[i]; if (!IsValidCargoID(a) || cargo_acceptance[i] <= 0) continue; // work only with valid cargoes @@ -547,7 +547,7 @@ static bool TransportIndustryGoods(TileIndex tile) static void AnimateSugarSieve(TileIndex tile) { - byte m = GetAnimationFrame(tile) + 1; + uint8_t m = GetAnimationFrame(tile) + 1; if (_settings_client.sound.ambient) { switch (m & 7) { @@ -567,7 +567,7 @@ static void AnimateSugarSieve(TileIndex tile) static void AnimateToffeeQuarry(TileIndex tile) { - byte m = GetAnimationFrame(tile); + uint8_t m = GetAnimationFrame(tile); if (_industry_anim_offs_toffee[m] == 0xFF && _settings_client.sound.ambient) { SndPlayTileFx(SND_30_TOFFEE_QUARRY, tile); @@ -584,7 +584,7 @@ static void AnimateToffeeQuarry(TileIndex tile) static void AnimateBubbleCatcher(TileIndex tile) { - byte m = GetAnimationFrame(tile); + uint8_t m = GetAnimationFrame(tile); if (++m >= 40) { m = 0; @@ -597,7 +597,7 @@ static void AnimateBubbleCatcher(TileIndex tile) static void AnimatePowerPlantSparks(TileIndex tile) { - byte m = GetAnimationFrame(tile); + uint8_t m = GetAnimationFrame(tile); if (m == 6) { SetAnimationFrame(tile, 0); DeleteAnimatedTile(tile); @@ -609,7 +609,7 @@ static void AnimatePowerPlantSparks(TileIndex tile) static void AnimateToyFactory(TileIndex tile) { - byte m = GetAnimationFrame(tile) + 1; + uint8_t m = GetAnimationFrame(tile) + 1; switch (m) { case 1: if (_settings_client.sound.ambient) SndPlayTileFx(SND_2C_TOY_FACTORY_1, tile); break; @@ -641,7 +641,7 @@ static void AnimatePlasticFountain(TileIndex tile, IndustryGfx gfx) static void AnimateOilWell(TileIndex tile, IndustryGfx gfx) { bool b = Chance16(1, 7); - byte m = GetAnimationFrame(tile) + 1; + uint8_t m = GetAnimationFrame(tile) + 1; if (m == 4 && (m = 0, ++gfx) == GFX_OILWELL_ANIMATED_3 + 1 && (gfx = GFX_OILWELL_ANIMATED_1, b)) { SetIndustryGfx(tile, GFX_OILWELL_NOT_ANIMATED); SetIndustryConstructionStage(tile, 3); @@ -661,7 +661,7 @@ static void AnimateMineTower(TileIndex tile) if (state < 0x1A0) { if (state < 0x20 || state >= 0x180) { - byte m = GetAnimationFrame(tile); + uint8_t m = GetAnimationFrame(tile); if (!(m & 0x40)) { SetAnimationFrame(tile, m | 0x40); if (_settings_client.sound.ambient) SndPlayTileFx(SND_0B_MINE, tile); @@ -670,7 +670,7 @@ static void AnimateMineTower(TileIndex tile) } else { if (state & 3) return; } - byte m = (GetAnimationFrame(tile) + 1) | 0x40; + uint8_t m = (GetAnimationFrame(tile) + 1) | 0x40; if (m > 0xC2) m = 0xC0; SetAnimationFrame(tile, m); MarkTileDirtyByTile(tile); @@ -678,7 +678,7 @@ static void AnimateMineTower(TileIndex tile) int i = (state < 0x220 || state >= 0x380) ? 7 : 3; if (state & i) return; - byte m = (GetAnimationFrame(tile) & 0xBF) - 1; + uint8_t m = (GetAnimationFrame(tile) & 0xBF) - 1; if (m < 0x80) m = 0x82; SetAnimationFrame(tile, m); MarkTileDirtyByTile(tile); @@ -747,13 +747,13 @@ static void CreateChimneySmoke(TileIndex tile) static void MakeIndustryTileBigger(TileIndex tile) { - byte cnt = GetIndustryConstructionCounter(tile) + 1; + uint8_t cnt = GetIndustryConstructionCounter(tile) + 1; if (cnt != 4) { SetIndustryConstructionCounter(tile, cnt); return; } - byte stage = GetIndustryConstructionStage(tile) + 1; + uint8_t stage = GetIndustryConstructionStage(tile) + 1; SetIndustryConstructionCounter(tile, 0); SetIndustryConstructionStage(tile, stage); StartStopIndustryTileAnimation(tile, IAT_CONSTRUCTION_STATE_CHANGE); @@ -985,7 +985,7 @@ bool IsTileForestIndustry(TileIndex tile) return std::any_of(std::begin(ind->produced), std::end(ind->produced), [](const auto &p) { return IsValidCargoID(p.cargo) && CargoSpec::Get(p.cargo)->label == CT_WOOD; }); } -static const byte _plantfarmfield_type[] = {1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6}; +static const uint8_t _plantfarmfield_type[] = {1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6}; /** * Check whether the tile can be replaced by a farm field. @@ -1010,7 +1010,7 @@ static bool IsSuitableForFarmField(TileIndex tile, bool allow_fields) * @param type type of fence to set * @param side the side of the tile to attempt placement */ -static void SetupFarmFieldFence(TileIndex tile, int size, byte type, DiagDirection side) +static void SetupFarmFieldFence(TileIndex tile, int size, uint8_t type, DiagDirection side) { TileIndexDiff diff = (DiagDirToAxis(side) == AXIS_Y ? TileDiffXY(1, 0) : TileDiffXY(0, 1)); TileIndexDiff neighbour_diff = TileOffsByDiagDir(side); @@ -1022,7 +1022,7 @@ static void SetupFarmFieldFence(TileIndex tile, int size, byte type, DiagDirecti TileIndex neighbour = tile + neighbour_diff; if (!IsTileType(neighbour, MP_CLEAR) || !IsClearGround(neighbour, CLEAR_FIELDS) || GetFence(neighbour, ReverseDiagDir(side)) == 0) { /* Add fence as long as neighbouring tile does not already have a fence in the same position. */ - byte or_ = type; + uint8_t or_ = type; if (or_ == 1 && Chance16(1, 7)) or_ = 2; @@ -1105,7 +1105,7 @@ static bool SearchLumberMillTrees(TileIndex tile, void *) if (IsTileType(tile, MP_TREES) && GetTreeGrowth(tile) > 2) { ///< 3 and up means all fully grown trees /* found a tree */ - Backup cur_company(_current_company, OWNER_NONE, FILE_LINE); + Backup cur_company(_current_company, OWNER_NONE); _industry_sound_ctr = 1; _industry_sound_tile = tile; @@ -1125,8 +1125,9 @@ static bool SearchLumberMillTrees(TileIndex tile, void *) */ static void ChopLumberMillTrees(Industry *i) { - /* Skip production if cargo slot is invalid. */ - if (!IsValidCargoID(i->produced[0].cargo)) return; + /* Don't process lumber mill if cargo is not set up correctly. */ + auto itp = std::begin(i->produced); + if (itp == std::end(i->produced) || !IsValidCargoID(itp->cargo)) return; /* We only want to cut trees if all tiles are completed. */ for (TileIndex tile_cur : i->location) { @@ -1137,7 +1138,7 @@ static void ChopLumberMillTrees(Industry *i) TileIndex tile = i->location.tile; if (CircularTileSearch(&tile, 40, SearchLumberMillTrees, nullptr)) { // 40x40 tiles to search. - i->produced[0].waiting = ClampTo(i->produced[0].waiting + ScaleByCargoScale(45, false)); // Found a tree, add according value to waiting cargo. + itp->waiting = ClampTo(itp->waiting + ScaleByCargoScale(45, false)); // Found a tree, add according value to waiting cargo. } } @@ -1165,11 +1166,11 @@ static void ProduceIndustryGoods(Industry *i) /* play a sound? */ if ((i->counter & 0x3F) == 0) { uint32_t r; - if (Chance16R(1, 14, r) && indsp->number_of_sounds != 0 && _settings_client.sound.ambient) { + if (Chance16R(1, 14, r) && !indsp->random_sounds.empty() && _settings_client.sound.ambient) { if (std::any_of(std::begin(i->produced), std::end(i->produced), [](const auto &p) { return p.history[LAST_MONTH].production > 0; })) { /* Play sound since last month had production */ SndPlayTileFx( - (SoundFx)(indsp->random_sounds[((r >> 16) * indsp->number_of_sounds) >> 16]), + static_cast(indsp->random_sounds[((r >> 16) * indsp->random_sounds.size()) >> 16]), i->location.tile); } } @@ -1307,7 +1308,7 @@ static CommandCost CheckNewIndustry_OilRefinery(TileIndex tile) { if (_game_mode == GM_EDITOR) return CommandCost(); - if (CheckScaledDistanceFromEdge(TILE_ADDXY(tile, 1, 1), _settings_game.game_creation.oil_refinery_limit)) return CommandCost(); + if (CheckScaledDistanceFromEdge(TileAddXY(tile, 1, 1), _settings_game.game_creation.oil_refinery_limit)) return CommandCost(); return_cmd_error(STR_ERROR_CAN_ONLY_BE_POSITIONED); } @@ -1324,7 +1325,7 @@ static CommandCost CheckNewIndustry_OilRig(TileIndex tile) if (_game_mode == GM_EDITOR && _ignore_restrictions) return CommandCost(); if (TileHeight(tile) == 0 && - CheckScaledDistanceFromEdge(TILE_ADDXY(tile, 1, 1), _settings_game.game_creation.oil_refinery_limit)) return CommandCost(); + CheckScaledDistanceFromEdge(TileAddXY(tile, 1, 1), _settings_game.game_creation.oil_refinery_limit)) return CommandCost(); return_cmd_error(STR_ERROR_CAN_ONLY_BE_POSITIONED); } @@ -1433,7 +1434,7 @@ static CommandCost FindTownForIndustry(TileIndex tile, int type, Town **t) if (_settings_game.economy.multiple_industry_per_town) return CommandCost(); for (const Industry *i : Industry::Iterate()) { - if (i->type == (byte)type && i->town == *t) { + if (i->type == (uint8_t)type && i->town == *t) { *t = nullptr; return_cmd_error(STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN); } @@ -1500,7 +1501,7 @@ static CommandCost CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTil } /* Clear the tiles as OWNER_TOWN to not affect town rating, and to not clear protected buildings */ - Backup cur_company(_current_company, OWNER_TOWN, FILE_LINE); + Backup cur_company(_current_company, OWNER_TOWN); ret = Command::Do(DC_NONE, cur_tile); cur_company.Restore(); @@ -1642,7 +1643,7 @@ static bool CheckIfCanLevelIndustryPlatform(TileIndex tile, DoCommandFlag flags, /* _current_company is OWNER_NONE for randomly generated industries and in editor, or the company who funded or prospected the industry. * Perform terraforming as OWNER_TOWN to disable autoslope and town ratings. */ - Backup cur_company(_current_company, OWNER_TOWN, FILE_LINE); + Backup cur_company(_current_company, OWNER_TOWN); for (TileIndex tile_walk : ta) { uint curh = TileHeight(tile_walk); @@ -1693,7 +1694,7 @@ static CommandCost CheckIfFarEnoughFromConflictingIndustry(TileIndex tile, int t /* On a large map with many industries, it may be faster to check an area. */ static const int dmax = 14; - if (Industry::GetNumItems() > (size_t) (dmax * dmax * 2)) { + if (Industry::GetNumItems() > static_cast(dmax * dmax * 2)) { const Industry *i = nullptr; TileArea tile_area = TileArea(tile, 1, 1).Expand(dmax); for (TileIndex atile : tile_area) { @@ -1787,21 +1788,25 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, i->type = type; Industry::IncIndustryTypeCount(type); - for (auto it = std::begin(i->produced); it != std::end(i->produced); ++it) { - size_t index = it - std::begin(i->produced); - it->cargo = indspec->produced_cargo[index]; - it->rate = indspec->production_rate[index]; + for (size_t index = 0; index < std::size(indspec->produced_cargo); ++index) { + if (!IsValidCargoID(indspec->produced_cargo[index])) break; + + Industry::ProducedCargo &p = i->produced.emplace_back(); + p.cargo = indspec->produced_cargo[index]; + p.rate = indspec->production_rate[index]; } - for (auto it = std::begin(i->accepted); it != std::end(i->accepted); ++it) { - size_t index = it - std::begin(i->accepted); - it->cargo = indspec->accepts_cargo[index]; + for (size_t index = 0; index < std::size(indspec->accepts_cargo); ++index) { + if (!IsValidCargoID(indspec->accepts_cargo[index])) break; + + Industry::AcceptedCargo &a = i->accepted.emplace_back(); + a.cargo = indspec->accepts_cargo[index]; } /* Randomize inital production if non-original economy is used and there are no production related callbacks. */ if (!indspec->UsesOriginalEconomy()) { for (auto &p : i->produced) { - p.rate = ClampTo((RandomRange(256) + 128) * p.rate >> 8); + p.rate = ClampTo((RandomRange(256) + 128) * p.rate >> 8); } } @@ -1824,7 +1829,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, /* Adding 1 here makes it conform to specs of var44 of varaction2 for industries * 0 = created prior of newindustries * else, chosen layout + 1 */ - i->selected_layout = (byte)(layout_index + 1); + i->selected_layout = (uint8_t)(layout_index + 1); i->exclusive_supplier = INVALID_OWNER; i->exclusive_consumer = INVALID_OWNER; @@ -1869,9 +1874,9 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, if (HasBit(indspec->callback_mask, CBM_IND_INPUT_CARGO_TYPES)) { /* Clear all input cargo types */ - for (auto &a : i->accepted) a.cargo = INVALID_CARGO; + i->accepted.clear(); /* Query actual types */ - uint maxcargoes = (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) ? static_cast(i->accepted.size()) : 3; + uint maxcargoes = (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) ? INDUSTRY_NUM_INPUTS : 3; for (uint j = 0; j < maxcargoes; j++) { uint16_t res = GetIndustryCallback(CBID_INDUSTRY_INPUT_CARGO_TYPES, j, 0, i, type, INVALID_TILE); if (res == CALLBACK_FAILED || GB(res, 0, 8) == UINT8_MAX) break; @@ -1883,9 +1888,14 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, /* Industries without "unlimited" cargo types support depend on the specific order/slots of cargo types. * They need to be able to blank out specific slots without aborting the callback sequence, * and solve this by returning undefined cargo indexes. Skip these. */ - if (!IsValidCargoID(cargo) && !(indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED)) continue; + if (!IsValidCargoID(cargo) && !(indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED)) { + /* As slots are allocated as needed now, this means we do need to add a slot for the invalid cargo. */ + Industry::AcceptedCargo &a = i->accepted.emplace_back(); + a.cargo = INVALID_CARGO; + continue; + } /* Verify valid cargo */ - if (std::find(indspec->accepts_cargo, endof(indspec->accepts_cargo), cargo) == endof(indspec->accepts_cargo)) { + if (std::find(std::begin(indspec->accepts_cargo), std::end(indspec->accepts_cargo), cargo) == std::end(indspec->accepts_cargo)) { /* Cargo not in spec, error in NewGRF */ ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_INPUT_CARGO_TYPES, res); break; @@ -1895,15 +1905,16 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_INPUT_CARGO_TYPES, res); break; } - i->accepted[j].cargo = cargo; + Industry::AcceptedCargo &a = i->accepted.emplace_back(); + a.cargo = cargo; } } if (HasBit(indspec->callback_mask, CBM_IND_OUTPUT_CARGO_TYPES)) { /* Clear all output cargo types */ - for (auto &p : i->produced) p.cargo = INVALID_CARGO; + i->produced.clear(); /* Query actual types */ - uint maxcargoes = (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) ? static_cast(i->produced.size()) : 2; + uint maxcargoes = (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) ? INDUSTRY_NUM_OUTPUTS : 2; for (uint j = 0; j < maxcargoes; j++) { uint16_t res = GetIndustryCallback(CBID_INDUSTRY_OUTPUT_CARGO_TYPES, j, 0, i, type, INVALID_TILE); if (res == CALLBACK_FAILED || GB(res, 0, 8) == UINT8_MAX) break; @@ -1913,9 +1924,14 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, } CargoID cargo = GetCargoTranslation(GB(res, 0, 8), indspec->grf_prop.grffile); /* Allow older GRFs to skip slots. */ - if (!IsValidCargoID(cargo) && !(indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED)) continue; + if (!IsValidCargoID(cargo) && !(indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED)) { + /* As slots are allocated as needed now, this means we do need to add a slot for the invalid cargo. */ + Industry::ProducedCargo &p = i->produced.emplace_back(); + p.cargo = INVALID_CARGO; + continue; + } /* Verify valid cargo */ - if (std::find(indspec->produced_cargo, endof(indspec->produced_cargo), cargo) == endof(indspec->produced_cargo)) { + if (std::find(std::begin(indspec->produced_cargo), std::end(indspec->produced_cargo), cargo) == std::end(indspec->produced_cargo)) { /* Cargo not in spec, error in NewGRF */ ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_OUTPUT_CARGO_TYPES, res); break; @@ -1925,7 +1941,8 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_OUTPUT_CARGO_TYPES, res); break; } - i->produced[j].cargo = cargo; + Industry::ProducedCargo &p = i->produced.emplace_back(); + p.cargo = cargo; } } @@ -2081,7 +2098,7 @@ CommandCost CmdBuildIndustry(DoCommandFlag flags, TileIndex tile, IndustryType i if (prospect_success) { /* Prospected industries are build as OWNER_TOWN to not e.g. be build on owned land of the founder */ IndustryAvailabilityCallType calltype = _current_company == OWNER_DEITY ? IACT_RANDOMCREATION : IACT_PROSPECTCREATION; - Backup cur_company(_current_company, OWNER_TOWN, FILE_LINE); + Backup cur_company(_current_company, OWNER_TOWN); for (int i = 0; i < 5000; i++) { /* We should not have more than one Random() in a function call * because parameter evaluation order is not guaranteed in the c++ standard @@ -2157,7 +2174,7 @@ CommandCost CmdIndustrySetFlags(DoCommandFlag flags, IndustryID ind_id, Industry * @param custom_news Custom news message text. * @return Empty cost or an error. */ -CommandCost CmdIndustrySetProduction(DoCommandFlag flags, IndustryID ind_id, byte prod_level, bool show_news, const std::string &custom_news) +CommandCost CmdIndustrySetProduction(DoCommandFlag flags, IndustryID ind_id, uint8_t prod_level, bool show_news, const std::string &custom_news) { if (_current_company != OWNER_DEITY) return CMD_ERROR; if (prod_level < PRODLEVEL_MINIMUM || prod_level > PRODLEVEL_MAXIMUM) return CMD_ERROR; @@ -2313,7 +2330,7 @@ static uint32_t GetScaledIndustryGenerationProbability(IndustryType it, bool *fo * @param[out] min_number Minimal number of industries that should exist at the map. * @return Relative probability for the industry to appear. */ -static uint16_t GetIndustryGamePlayProbability(IndustryType it, byte *min_number) +static uint16_t GetIndustryGamePlayProbability(IndustryType it, uint8_t *min_number) { if (_settings_game.difficulty.industry_density == ID_FUND_ONLY) { *min_number = 0; @@ -2321,7 +2338,7 @@ static uint16_t GetIndustryGamePlayProbability(IndustryType it, byte *min_number } const IndustrySpec *ind_spc = GetIndustrySpec(it); - byte chance = ind_spc->appear_ingame[_settings_game.game_creation.landscape]; + uint8_t chance = ind_spc->appear_ingame[_settings_game.game_creation.landscape]; if (!ind_spc->enabled || ind_spc->layouts.empty() || ((ind_spc->behaviour & INDUSTRYBEH_BEFORE_1950) && TimerGameCalendar::year > 1950) || ((ind_spc->behaviour & INDUSTRYBEH_AFTER_1960) && TimerGameCalendar::year < 1960) || @@ -2383,7 +2400,7 @@ static Industry *PlaceIndustry(IndustryType type, IndustryAvailabilityCallType c */ static void PlaceInitialIndustry(IndustryType type, bool try_hard) { - Backup cur_company(_current_company, OWNER_NONE, FILE_LINE); + Backup cur_company(_current_company, OWNER_NONE); IncreaseGeneratingWorldProgress(GWP_INDUSTRY); PlaceIndustry(type, IACT_MAPGENERATION, try_hard); @@ -2541,7 +2558,7 @@ void ClearAllIndustryCachedNames() */ bool IndustryTypeBuildData::GetIndustryTypeData(IndustryType it) { - byte min_number; + uint8_t min_number; uint32_t probability = GetIndustryGamePlayProbability(it, &min_number); bool changed = min_number != this->min_number || probability != this->probability; this->min_number = min_number; @@ -2801,8 +2818,8 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) bool recalculate_multipliers = false; ///< reinitialize production_rate to match prod_level /* use original economy for industries using production related callbacks */ bool original_economy = indspec->UsesOriginalEconomy(); - byte div = 0; - byte mul = 0; + uint8_t div = 0; + uint8_t mul = 0; int8_t increment = 0; bool callback_enabled = HasBit(indspec->callback_mask, monthly ? CBM_IND_MONTHLYPROD_CHANGE : CBM_IND_PRODUCTION_CHANGE); @@ -2847,7 +2864,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) if (original_economy) { if (only_decrease || Chance16(1, 3)) { /* If more than 60% transported, 66% chance of increase, else 33% chance of increase */ - if (!only_decrease && (i->produced[0].history[LAST_MONTH].PctTransported() > PERCENT_TRANSPORTED_60) != Chance16(1, 3)) { + if (!only_decrease && (i->GetProduced(0).history[LAST_MONTH].PctTransported() > PERCENT_TRANSPORTED_60) != Chance16(1, 3)) { mul = 1; // Increase production } else { div = 1; // Decrease production @@ -3023,7 +3040,7 @@ static IntervalTimer _economy_industries_daily({TimerGameEcono return; // Nothing to do? get out } - Backup cur_company(_current_company, OWNER_NONE, FILE_LINE); + Backup cur_company(_current_company, OWNER_NONE); /* perform the required industry changes for the day */ @@ -3051,7 +3068,7 @@ static IntervalTimer _economy_industries_daily({TimerGameEcono static IntervalTimer _economy_industries_monthly({TimerGameEconomy::MONTH, TimerGameEconomy::Priority::INDUSTRY}, [](auto) { - Backup cur_company(_current_company, OWNER_NONE, FILE_LINE); + Backup cur_company(_current_company, OWNER_NONE); _industry_builder.EconomyMonthlyLoop(); @@ -3153,13 +3170,6 @@ bool IndustrySpec::UsesOriginalEconomy() const HasBit(this->callback_mask, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(this->callback_mask, CBM_IND_PRODUCTION_CHANGE) || HasBit(this->callback_mask, CBM_IND_PROD_CHANGE_BUILD); // production change callbacks } -IndustrySpec::~IndustrySpec() -{ - if (HasBit(this->cleanup_flag, CLEAN_RANDOMSOUNDS)) { - free(this->random_sounds); - } -} - static CommandCost TerraformTile_Industry(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new) { if (AutoslopeEnabled()) { @@ -3211,3 +3221,18 @@ bool IndustryCompare::operator() (const IndustryListEntry &lhs, const IndustryLi /* Compare by distance first and use index as a tiebreaker. */ return std::tie(lhs.distance, lhs.industry->index) < std::tie(rhs.distance, rhs.industry->index); } + +/** + * Remove unused industry accepted/produced slots -- entries after the last slot with valid cargo. + * @param ind Industry to trim slots. + */ +void TrimIndustryAcceptedProduced(Industry *ind) +{ + auto ita = std::find_if(std::rbegin(ind->accepted), std::rend(ind->accepted), [](const auto &a) { return IsValidCargoID(a.cargo); }); + ind->accepted.erase(ita.base(), std::end(ind->accepted)); + ind->accepted.shrink_to_fit(); + + auto itp = std::find_if(std::rbegin(ind->produced), std::rend(ind->produced), [](const auto &p) { return IsValidCargoID(p.cargo); }); + ind->produced.erase(itp.base(), std::end(ind->produced)); + ind->produced.shrink_to_fit(); +} diff --git a/src/industry_cmd.h b/src/industry_cmd.h index 955ca68628..fee8034269 100644 --- a/src/industry_cmd.h +++ b/src/industry_cmd.h @@ -14,13 +14,13 @@ #include "company_type.h" #include "industry_type.h" -enum IndustryControlFlags : byte; +enum IndustryControlFlags : uint8_t; CommandCost CmdBuildIndustry(DoCommandFlag flags, TileIndex tile, IndustryType it, uint32_t first_layout, bool fund, uint32_t seed); CommandCost CmdIndustrySetFlags(DoCommandFlag flags, IndustryID ind_id, IndustryControlFlags ctlflags); CommandCost CmdIndustrySetExclusivity(DoCommandFlag flags, IndustryID ind_id, Owner company_id, bool consumer); CommandCost CmdIndustrySetText(DoCommandFlag flags, IndustryID ind_id, const std::string &text); -CommandCost CmdIndustrySetProduction(DoCommandFlag flags, IndustryID ind_id, byte prod_level, bool show_news, const std::string &text); +CommandCost CmdIndustrySetProduction(DoCommandFlag flags, IndustryID ind_id, uint8_t prod_level, bool show_news, const std::string &text); DEF_CMD_TRAIT(CMD_BUILD_INDUSTRY, CmdBuildIndustry, CMD_DEITY, CMDT_LANDSCAPE_CONSTRUCTION) DEF_CMD_TRAIT(CMD_INDUSTRY_SET_FLAGS, CmdIndustrySetFlags, CMD_DEITY, CMDT_OTHER_MANAGEMENT) diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index 573f3fb064..d083ce261b 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -28,15 +28,14 @@ #include "tilehighlight_func.h" #include "string_func.h" #include "sortlist_type.h" -#include "widgets/dropdown_func.h" +#include "dropdown_func.h" #include "company_base.h" #include "core/geometry_func.hpp" #include "core/random_func.hpp" #include "core/backup_type.hpp" #include "genworld.h" #include "smallmap_gui.h" -#include "widgets/dropdown_type.h" -#include "widgets/industry_widget.h" +#include "dropdown_type.h" #include "clear_map.h" #include "zoom_func.h" #include "industry_cmd.h" @@ -46,6 +45,8 @@ #include "timer/timer_window.h" #include "hotkeys.h" +#include "widgets/industry_widget.h" + #include "table/strings.h" #include @@ -154,32 +155,34 @@ enum CargoSuffixInOut { template static inline void GetAllCargoSuffixes(CargoSuffixInOut use_input, CargoSuffixType cst, const Industry *ind, IndustryType ind_type, const IndustrySpec *indspec, const TC &cargoes, TS &suffixes) { - static_assert(lengthof(cargoes) <= lengthof(suffixes)); + static_assert(std::tuple_size_v> <= lengthof(suffixes)); if (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) { /* Reworked behaviour with new many-in-many-out scheme */ for (uint j = 0; j < lengthof(suffixes); j++) { if (IsValidCargoID(cargoes[j])) { - byte local_id = indspec->grf_prop.grffile->cargo_map[cargoes[j]]; // should we check the value for valid? + uint8_t local_id = indspec->grf_prop.grffile->cargo_map[cargoes[j]]; // should we check the value for valid? uint cargotype = local_id << 16 | use_input; GetCargoSuffix(cargotype, cst, ind, ind_type, indspec, suffixes[j]); } else { - suffixes[j].text[0] = '\0'; + suffixes[j].text.clear(); suffixes[j].display = CSD_CARGO; } } } else { /* Compatible behaviour with old 3-in-2-out scheme */ for (uint j = 0; j < lengthof(suffixes); j++) { - suffixes[j].text[0] = '\0'; + suffixes[j].text.clear(); suffixes[j].display = CSD_CARGO; } switch (use_input) { case CARGOSUFFIX_OUT: + // Handle INDUSTRY_ORIGINAL_NUM_OUTPUTS cargoes if (IsValidCargoID(cargoes[0])) GetCargoSuffix(3, cst, ind, ind_type, indspec, suffixes[0]); if (IsValidCargoID(cargoes[1])) GetCargoSuffix(4, cst, ind, ind_type, indspec, suffixes[1]); break; case CARGOSUFFIX_IN: + // Handle INDUSTRY_ORIGINAL_NUM_INPUTS cargoes if (IsValidCargoID(cargoes[0])) GetCargoSuffix(0, cst, ind, ind_type, indspec, suffixes[0]); if (IsValidCargoID(cargoes[1])) GetCargoSuffix(1, cst, ind, ind_type, indspec, suffixes[1]); if (IsValidCargoID(cargoes[2])) GetCargoSuffix(2, cst, ind, ind_type, indspec, suffixes[2]); @@ -203,17 +206,17 @@ static inline void GetAllCargoSuffixes(CargoSuffixInOut use_input, CargoSuffixTy */ void GetCargoSuffix(CargoSuffixInOut use_input, CargoSuffixType cst, const Industry *ind, IndustryType ind_type, const IndustrySpec *indspec, CargoID cargo, uint8_t slot, CargoSuffix &suffix) { - suffix.text[0] = '\0'; + suffix.text.clear(); suffix.display = CSD_CARGO; if (!IsValidCargoID(cargo)) return; if (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) { - byte local_id = indspec->grf_prop.grffile->cargo_map[cargo]; // should we check the value for valid? + uint8_t local_id = indspec->grf_prop.grffile->cargo_map[cargo]; // should we check the value for valid? uint cargotype = local_id << 16 | use_input; GetCargoSuffix(cargotype, cst, ind, ind_type, indspec, suffix); } else if (use_input == CARGOSUFFIX_IN) { - if (slot < 3) GetCargoSuffix(slot, cst, ind, ind_type, indspec, suffix); + if (slot < INDUSTRY_ORIGINAL_NUM_INPUTS) GetCargoSuffix(slot, cst, ind, ind_type, indspec, suffix); } else if (use_input == CARGOSUFFIX_OUT) { - if (slot < 2) GetCargoSuffix(slot + 3, cst, ind, ind_type, indspec, suffix); + if (slot < INDUSTRY_ORIGINAL_NUM_OUTPUTS) GetCargoSuffix(slot + INDUSTRY_ORIGINAL_NUM_INPUTS, cst, ind, ind_type, indspec, suffix); } } @@ -292,11 +295,11 @@ static constexpr NWidgetPart _nested_build_industry_widgets[] = { }; /** Window definition of the dynamic place industries gui */ -static WindowDesc _build_industry_desc(__FILE__, __LINE__, +static WindowDesc _build_industry_desc( WDP_AUTO, "build_industry", 170, 212, WC_BUILD_INDUSTRY, WC_NONE, WDF_CONSTRUCTION, - std::begin(_nested_build_industry_widgets), std::end(_nested_build_industry_widgets) + _nested_build_industry_widgets ); /** Build (fund or prospect) a new industry, */ @@ -366,16 +369,18 @@ class BuildIndustryWindow : public Window { * @param prefixstr String to use for the first item * @return A formatted raw string */ - std::string MakeCargoListString(const CargoID *cargolist, const CargoSuffix *cargo_suffix, int cargolistlen, StringID prefixstr) const + std::string MakeCargoListString(const std::span cargolist, const std::span cargo_suffix, StringID prefixstr) const { - std::string cargostring; - int numcargo = 0; - int firstcargo = -1; + assert(cargolist.size() == cargo_suffix.size()); - for (int j = 0; j < cargolistlen; j++) { + std::string cargostring; + size_t numcargo = 0; + size_t firstcargo; + + for (size_t j = 0; j < cargolist.size(); j++) { if (!IsValidCargoID(cargolist[j])) continue; numcargo++; - if (firstcargo < 0) { + if (numcargo == 1) { firstcargo = j; continue; } @@ -398,7 +403,7 @@ class BuildIndustryWindow : public Window { } public: - BuildIndustryWindow() : Window(&_build_industry_desc) + BuildIndustryWindow() : Window(_build_industry_desc) { this->selected_type = INVALID_INDUSTRYTYPE; @@ -422,18 +427,20 @@ public: this->SetupArrays(); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_DPI_MATRIX_WIDGET: { - Dimension d = GetStringBoundingBox(STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES); + SetDParamMaxDigits(0, 4); + Dimension count = GetStringBoundingBox(STR_JUST_COMMA, FS_SMALL); + Dimension d{}; for (const auto &indtype : this->list) { d = maxdim(d, GetStringBoundingBox(GetIndustrySpec(indtype)->name)); } - resize->height = std::max(this->legend.height, GetCharacterHeight(FS_NORMAL)) + padding.height; - d.width += this->legend.width + WidgetDimensions::scaled.hsep_wide + padding.width; - d.height = 5 * resize->height; - *size = maxdim(*size, d); + resize.height = std::max({this->legend.height, d.height, count.height}) + padding.height; + d.width += this->legend.width + WidgetDimensions::scaled.hsep_wide + WidgetDimensions::scaled.hsep_normal + count.width + padding.width; + d.height = 5 * resize.height; + size = maxdim(size, d); break; } @@ -447,11 +454,11 @@ public: Dimension d = {0, 0}; for (const auto &indtype : this->list) { const IndustrySpec *indsp = GetIndustrySpec(indtype); - CargoSuffix cargo_suffix[lengthof(indsp->accepts_cargo)]; + CargoSuffix cargo_suffix[std::tuple_size_vaccepts_cargo)>]; /* Measure the accepted cargoes, if any. */ GetAllCargoSuffixes(CARGOSUFFIX_IN, CST_FUND, nullptr, indtype, indsp, indsp->accepts_cargo, cargo_suffix); - std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, lengthof(indsp->accepts_cargo), STR_INDUSTRY_VIEW_REQUIRES_N_CARGO); + std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, STR_INDUSTRY_VIEW_REQUIRES_N_CARGO); Dimension strdim = GetStringBoundingBox(cargostring); if (strdim.width > max_minwidth) { extra_lines_req = std::max(extra_lines_req, strdim.width / max_minwidth + 1); @@ -461,7 +468,7 @@ public: /* Measure the produced cargoes, if any. */ GetAllCargoSuffixes(CARGOSUFFIX_OUT, CST_FUND, nullptr, indtype, indsp, indsp->produced_cargo, cargo_suffix); - cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, lengthof(indsp->produced_cargo), STR_INDUSTRY_VIEW_PRODUCES_N_CARGO); + cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, STR_INDUSTRY_VIEW_PRODUCES_N_CARGO); strdim = GetStringBoundingBox(cargostring); if (strdim.width > max_minwidth) { extra_lines_prd = std::max(extra_lines_prd, strdim.width / max_minwidth + 1); @@ -477,8 +484,8 @@ public: /* Set it to something more sane :) */ height += extra_lines_prd + extra_lines_req + extra_lines_newgrf; - size->height = height * GetCharacterHeight(FS_NORMAL) + padding.height; - size->width = d.width + padding.width; + size.height = height * GetCharacterHeight(FS_NORMAL) + padding.height; + size.width = d.width + padding.width; break; } @@ -488,7 +495,7 @@ public: d = maxdim(d, GetStringBoundingBox(STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY)); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } } @@ -528,8 +535,9 @@ public: icon.top = r.top + (this->resize.step_height - this->legend.height + 1) / 2; icon.bottom = icon.top + this->legend.height - 1; - for (uint16_t i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < this->vscroll->GetCount(); i++) { - IndustryType type = this->list[i]; + auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->list); + for (auto it = first; it != last; ++it) { + IndustryType type = *it; bool selected = this->selected_type == type; const IndustrySpec *indsp = GetIndustrySpec(type); @@ -562,16 +570,16 @@ public: ir.top += GetCharacterHeight(FS_NORMAL); } - CargoSuffix cargo_suffix[lengthof(indsp->accepts_cargo)]; + CargoSuffix cargo_suffix[std::tuple_size_vaccepts_cargo)>]; /* Draw the accepted cargoes, if any. Otherwise, will print "Nothing". */ GetAllCargoSuffixes(CARGOSUFFIX_IN, CST_FUND, nullptr, this->selected_type, indsp, indsp->accepts_cargo, cargo_suffix); - std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, lengthof(indsp->accepts_cargo), STR_INDUSTRY_VIEW_REQUIRES_N_CARGO); + std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, STR_INDUSTRY_VIEW_REQUIRES_N_CARGO); ir.top = DrawStringMultiLine(ir, cargostring); /* Draw the produced cargoes, if any. Otherwise, will print "Nothing". */ GetAllCargoSuffixes(CARGOSUFFIX_OUT, CST_FUND, nullptr, this->selected_type, indsp, indsp->produced_cargo, cargo_suffix); - cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, lengthof(indsp->produced_cargo), STR_INDUSTRY_VIEW_PRODUCES_N_CARGO); + cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, STR_INDUSTRY_VIEW_PRODUCES_N_CARGO); ir.top = DrawStringMultiLine(ir, cargostring); /* Get the additional purchase info text, if it has not already been queried. */ @@ -602,7 +610,7 @@ public: if (Town::GetNumItems() == 0) { ShowErrorMessage(STR_ERROR_CAN_T_GENERATE_INDUSTRIES, STR_ERROR_MUST_FOUND_TOWN_FIRST, WL_INFO); } else { - Backup old_generating_world(_generating_world, true, FILE_LINE); + Backup old_generating_world(_generating_world, true); BasePersistentStorageArray::SwitchMode(PSM_ENTER_GAMELOOP); GenerateIndustries(); BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP); @@ -706,8 +714,8 @@ public: return; } - Backup cur_company(_current_company, OWNER_NONE, FILE_LINE); - Backup old_generating_world(_generating_world, true, FILE_LINE); + Backup cur_company(_current_company, OWNER_NONE); + Backup old_generating_world(_generating_world, true); _ignore_restrictions = true; Command::Post(STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY, &CcBuildIndustry, tile, this->selected_type, layout_index, false, seed); @@ -771,13 +779,7 @@ static void UpdateIndustryProduction(Industry *i); static inline bool IsProductionAlterable(const Industry *i) { const IndustrySpec *is = GetIndustrySpec(i->type); - bool has_prod = false; - for (size_t j = 0; j < lengthof(is->production_rate); j++) { - if (is->production_rate[j] != 0) { - has_prod = true; - break; - } - } + bool has_prod = std::any_of(std::begin(is->production_rate), std::end(is->production_rate), [](auto rate) { return rate != 0; }); return ((_game_mode == GM_EDITOR || _cheats.setup_prod.value) && (has_prod || is->IsRawIndustry()) && !_networking); @@ -804,13 +806,13 @@ class IndustryViewWindow : public Window Editability editable; ///< Mode for changing production InfoLine editbox_line; ///< The line clicked to open the edit box InfoLine clicked_line; ///< The line of the button that has been clicked - byte clicked_button; ///< The button that has been clicked (to raise) + uint8_t clicked_button; ///< The button that has been clicked (to raise) int production_offset_y; ///< The offset of the production texts/buttons int info_height; ///< Height needed for the #WID_IV_INFO panel int cheat_line_height; ///< Height of each line for the #WID_IV_INFO panel public: - IndustryViewWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + IndustryViewWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->flags |= WF_DISABLE_VP_SCROLL; this->editbox_line = IL_NONE; @@ -1002,9 +1004,9 @@ public: if (widget == WID_IV_CAPTION) SetDParam(0, this->window_number); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { - if (widget == WID_IV_INFO) size->height = this->info_height; + if (widget == WID_IV_INFO) size.height = this->info_height; } void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override @@ -1047,10 +1049,10 @@ public: case EA_MULTIPLIER: if (decrease) { if (i->prod_level <= PRODLEVEL_MINIMUM) return; - i->prod_level = static_cast(std::max(i->prod_level / 2, PRODLEVEL_MINIMUM)); + i->prod_level = static_cast(std::max(i->prod_level / 2, PRODLEVEL_MINIMUM)); } else { if (i->prod_level >= PRODLEVEL_MAXIMUM) return; - i->prod_level = static_cast(std::min(i->prod_level * 2, PRODLEVEL_MAXIMUM)); + i->prod_level = static_cast(std::min(i->prod_level * 2, PRODLEVEL_MAXIMUM)); } break; @@ -1062,7 +1064,7 @@ public: if (i->produced[line - IL_RATE1].rate >= 255) return; /* a zero production industry is unlikely to give anything but zero, so push it a little bit */ int new_prod = i->produced[line - IL_RATE1].rate == 0 ? 1 : i->produced[line - IL_RATE1].rate * 2; - i->produced[line - IL_RATE1].rate = ClampTo(new_prod); + i->produced[line - IL_RATE1].rate = ClampTo(new_prod); } break; @@ -1129,12 +1131,19 @@ public: } } - void OnQueryTextFinished(char *str) override + void OnMouseWheel(int wheel) override { - if (StrEmpty(str)) return; + if (_settings_client.gui.scrollwheel_scrolling != SWS_OFF) { + DoZoomInOutWindow(wheel < 0 ? ZOOM_IN : ZOOM_OUT, this); + } + } + + void OnQueryTextFinished(std::optional str) override + { + if (!str.has_value() || str->empty()) return; Industry *i = Industry::Get(this->window_number); - uint value = atoi(str); + uint value = atoi(str->c_str()); switch (this->editbox_line) { case IL_NONE: NOT_REACHED(); @@ -1195,7 +1204,7 @@ static constexpr NWidgetPart _nested_industry_view_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_CREAM), NWidget(WWT_CAPTION, COLOUR_CREAM, WID_IV_CAPTION), SetDataTip(STR_INDUSTRY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), - NWidget(WWT_PUSHIMGBTN, COLOUR_CREAM, WID_IV_GOTO), SetMinimalSize(12, 14), SetDataTip(SPR_GOTO_LOCATION, STR_INDUSTRY_VIEW_LOCATION_TOOLTIP), + NWidget(WWT_PUSHIMGBTN, COLOUR_CREAM, WID_IV_GOTO), SetAspect(WidgetDimensions::ASPECT_LOCATION), SetDataTip(SPR_GOTO_LOCATION, STR_INDUSTRY_VIEW_LOCATION_TOOLTIP), NWidget(WWT_DEBUGBOX, COLOUR_CREAM), NWidget(WWT_SHADEBOX, COLOUR_CREAM), NWidget(WWT_DEFSIZEBOX, COLOUR_CREAM), @@ -1215,23 +1224,23 @@ static constexpr NWidgetPart _nested_industry_view_widgets[] = { }; /** Window definition of the view industry gui */ -static WindowDesc _industry_view_desc(__FILE__, __LINE__, +static WindowDesc _industry_view_desc( WDP_AUTO, "view_industry", 260, 120, WC_INDUSTRY_VIEW, WC_NONE, 0, - std::begin(_nested_industry_view_widgets), std::end(_nested_industry_view_widgets) + _nested_industry_view_widgets ); void ShowIndustryViewWindow(int industry) { - AllocateWindowDescFront(&_industry_view_desc, industry); + AllocateWindowDescFront(_industry_view_desc, industry); } /** Widget definition of the industry directory gui */ static constexpr NWidgetPart _nested_industry_directory_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), - NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_INDUSTRY_DIRECTORY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_BROWN, WID_ID_CAPTION), SetDataTip(STR_INDUSTRY_DIRECTORY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), @@ -1268,7 +1277,7 @@ typedef GUIList &cargoes) +static bool CargoFilter(const Industry * const *industry, const std::pair &cargoes) { auto accepted_cargo = cargoes.first; auto produced_cargo = cargoes.second; @@ -1308,7 +1317,7 @@ static bool CDECL CargoFilter(const Industry * const *industry, const std::pair< return accepted_cargo_matches && produced_cargo_matches; } -static GUIIndustryList::FilterFunction * const _filter_funcs[] = { &CargoFilter }; +static GUIIndustryList::FilterFunction * const _industry_filter_funcs[] = { &CargoFilter }; /** Enum referring to the Hotkeys in the industry directory window */ enum IndustryDirectoryHotkeys { @@ -1323,8 +1332,13 @@ protected: static Listing last_sorting; /* Constants for sorting industries */ - static const StringID sorter_names[]; - static GUIIndustryList::SortFunction * const sorter_funcs[]; + static inline const StringID sorter_names[] = { + STR_SORT_BY_NAME, + STR_SORT_BY_TYPE, + STR_SORT_BY_PRODUCTION, + STR_SORT_BY_TRANSPORTED, + }; + static const std::initializer_list sorter_funcs; GUIIndustryList industries{IndustryDirectoryWindow::produced_cargo_filter}; Scrollbar *vscroll; @@ -1396,7 +1410,7 @@ protected: this->produced_cargo_filter_criteria = CargoFilterCriteria::CF_ANY; this->accepted_cargo_filter_criteria = CargoFilterCriteria::CF_ANY; - this->industries.SetFilterFuncs(_filter_funcs); + this->industries.SetFilterFuncs(_industry_filter_funcs); bool is_filtering_necessary = this->produced_cargo_filter_criteria != CargoFilterCriteria::CF_ANY || this->accepted_cargo_filter_criteria != CargoFilterCriteria::CF_ANY; @@ -1421,6 +1435,7 @@ protected: { if (this->industries.NeedRebuild()) { this->industries.clear(); + this->industries.reserve(Industry::GetNumItems()); for (const Industry *i : Industry::Iterate()) { if (this->string_filter.IsEmpty()) { @@ -1432,7 +1447,6 @@ protected: if (this->string_filter.GetState()) this->industries.push_back(i); } - this->industries.shrink_to_fit(); this->industries.RebuildDone(); auto filter = std::make_pair(this->accepted_cargo_filter_criteria, this->produced_cargo_filter_criteria); @@ -1550,26 +1564,27 @@ protected: StringID GetIndustryString(const Industry *i) const { const IndustrySpec *indsp = GetIndustrySpec(i->type); - byte p = 0; + uint8_t p = 0; /* Industry name */ SetDParam(p++, i->index); - static CargoSuffix cargo_suffix[INDUSTRY_NUM_OUTPUTS]; - /* Get industry productions (CargoID, production, suffix, transported) */ struct CargoInfo { - CargoID cargo_id; - uint16_t production; - const char *suffix; - uint transported; + CargoID cargo_id; ///< Cargo ID. + uint16_t production; ///< Production last month. + uint transported; ///< Percent transported last month. + std::string suffix; ///< Cargo suffix. + + CargoInfo(CargoID cargo_id, uint16_t production, uint transported, std::string &&suffix) : cargo_id(cargo_id), production(production), transported(transported), suffix(std::move(suffix)) {} }; std::vector cargos; for (auto itp = std::begin(i->produced); itp != std::end(i->produced); ++itp) { if (!IsValidCargoID(itp->cargo)) continue; - GetCargoSuffix(CARGOSUFFIX_OUT, CST_DIR, i, i->type, indsp, itp->cargo, itp - std::begin(i->produced), cargo_suffix[itp - std::begin(i->produced)]); - cargos.push_back({ itp->cargo, itp->history[LAST_MONTH].production, cargo_suffix[itp - std::begin(i->produced)].text.c_str(), ToPercent8(itp->history[LAST_MONTH].PctTransported()) }); + CargoSuffix cargo_suffix; + GetCargoSuffix(CARGOSUFFIX_OUT, CST_DIR, i, i->type, indsp, itp->cargo, itp - std::begin(i->produced), cargo_suffix); + cargos.emplace_back(itp->cargo, itp->history[LAST_MONTH].production, ToPercent8(itp->history[LAST_MONTH].PctTransported()), std::move(cargo_suffix.text)); } switch (static_cast(this->industries.SortType())) { @@ -1606,11 +1621,11 @@ protected: /* Display first 3 cargos */ for (size_t j = 0; j < std::min(3, cargos.size()); j++) { - CargoInfo ci = cargos[j]; + CargoInfo &ci = cargos[j]; SetDParam(p++, STR_INDUSTRY_DIRECTORY_ITEM_INFO); SetDParam(p++, ci.cargo_id); SetDParam(p++, ci.production); - SetDParamStr(p++, ci.suffix); + SetDParamStr(p++, std::move(ci.suffix)); SetDParam(p++, ci.transported); } @@ -1628,7 +1643,7 @@ protected: } public: - IndustryDirectoryWindow(WindowDesc *desc, WindowNumber) : Window(desc), industry_editbox(MAX_FILTER_LENGTH * MAX_CHAR_LENGTH, MAX_FILTER_LENGTH) + IndustryDirectoryWindow(WindowDesc &desc, WindowNumber) : Window(desc), industry_editbox(MAX_FILTER_LENGTH * MAX_CHAR_LENGTH, MAX_FILTER_LENGTH) { this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_ID_VSCROLLBAR); @@ -1659,6 +1674,11 @@ public: void SetStringParameters(WidgetID widget) const override { switch (widget) { + case WID_ID_CAPTION: + SetDParam(0, this->vscroll->GetCount()); + SetDParam(1, Industry::GetNumItems()); + break; + case WID_ID_DROPDOWN_CRITERIA: SetDParam(0, IndustryDirectoryWindow::sorter_names[this->industries.SortType()]); break; @@ -1699,55 +1719,51 @@ public: DrawString(ir, STR_INDUSTRY_DIRECTORY_NONE); break; } - int n = 0; const CargoID acf_cid = this->accepted_cargo_filter_criteria; - for (uint i = this->vscroll->GetPosition(); i < this->industries.size(); i++) { + auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->industries); + for (auto it = first; it != last; ++it) { TextColour tc = TC_FROMSTRING; if (acf_cid != CargoFilterCriteria::CF_ANY && acf_cid != CargoFilterCriteria::CF_NONE) { - Industry *ind = const_cast(this->industries[i]); + Industry *ind = const_cast(*it); if (IndustryTemporarilyRefusesCargo(ind, acf_cid)) { tc = TC_GREY | TC_FORCED; } } - DrawString(ir, this->GetIndustryString(this->industries[i]), tc); + DrawString(ir, this->GetIndustryString(*it), tc); ir.top += this->resize.step_height; - if (++n == this->vscroll->GetCapacity()) break; // max number of industries in 1 window } break; } } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_ID_DROPDOWN_ORDER: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } case WID_ID_DROPDOWN_CRITERIA: { - Dimension d = {0, 0}; - for (uint i = 0; IndustryDirectoryWindow::sorter_names[i] != INVALID_STRING_ID; i++) { - d = maxdim(d, GetStringBoundingBox(IndustryDirectoryWindow::sorter_names[i])); - } + Dimension d = GetStringListBoundingBox(IndustryDirectoryWindow::sorter_names); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } case WID_ID_INDUSTRY_LIST: { Dimension d = GetStringBoundingBox(STR_INDUSTRY_DIRECTORY_NONE); - resize->height = d.height; + resize.height = d.height; d.height *= 5; d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } } @@ -1758,14 +1774,14 @@ public: DropDownList list; /* Add item for disabling filtering. */ - list.push_back(std::make_unique(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ANY), CargoFilterCriteria::CF_ANY, false)); + list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ANY), CargoFilterCriteria::CF_ANY)); /* Add item for industries not producing anything, e.g. power plants */ - list.push_back(std::make_unique(this->GetCargoFilterLabel(CargoFilterCriteria::CF_NONE), CargoFilterCriteria::CF_NONE, false)); + list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_NONE), CargoFilterCriteria::CF_NONE)); /* Add cargos */ Dimension d = GetLargestCargoIconSize(); for (const CargoSpec *cs : _sorted_standard_cargo_specs) { - list.push_back(std::make_unique(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false)); + list.push_back(MakeDropDownListIconItem(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index())); } return list; @@ -1832,8 +1848,8 @@ public: void OnResize() override { - this->vscroll->SetCapacityFromWidget(this, WID_ID_INDUSTRY_LIST); - this->hscroll->SetCapacityFromWidget(this, WID_ID_INDUSTRY_LIST); + this->vscroll->SetCapacityFromWidget(this, WID_ID_INDUSTRY_LIST, WidgetDimensions::scaled.framerect.Vertical()); + this->hscroll->SetCapacityFromWidget(this, WID_ID_INDUSTRY_LIST, WidgetDimensions::scaled.framerect.Horizontal()); } void OnEditboxChanged(WidgetID wid) override @@ -1900,37 +1916,28 @@ public: Listing IndustryDirectoryWindow::last_sorting = {false, 0}; /* Available station sorting functions. */ -GUIIndustryList::SortFunction * const IndustryDirectoryWindow::sorter_funcs[] = { +const std::initializer_list IndustryDirectoryWindow::sorter_funcs = { &IndustryNameSorter, &IndustryTypeSorter, &IndustryProductionSorter, &IndustryTransportedCargoSorter }; -/* Names of the sorting functions */ -const StringID IndustryDirectoryWindow::sorter_names[] = { - STR_SORT_BY_NAME, - STR_SORT_BY_TYPE, - STR_SORT_BY_PRODUCTION, - STR_SORT_BY_TRANSPORTED, - INVALID_STRING_ID -}; - CargoID IndustryDirectoryWindow::produced_cargo_filter = CargoFilterCriteria::CF_ANY; /** Window definition of the industry directory gui */ -static WindowDesc _industry_directory_desc(__FILE__, __LINE__, +static WindowDesc _industry_directory_desc( WDP_AUTO, "list_industries", 428, 190, WC_INDUSTRY_DIRECTORY, WC_NONE, 0, - std::begin(_nested_industry_directory_widgets), std::end(_nested_industry_directory_widgets), + _nested_industry_directory_widgets, &IndustryDirectoryWindow::hotkeys ); void ShowIndustryDirectory() { - AllocateWindowDescFront(&_industry_directory_desc, 0); + AllocateWindowDescFront(_industry_directory_desc, 0); } /** Widgets of the industry cargoes window. */ @@ -1959,11 +1966,11 @@ static constexpr NWidgetPart _nested_industry_cargoes_widgets[] = { }; /** Window description for the industry cargoes window. */ -static WindowDesc _industry_cargoes_desc(__FILE__, __LINE__, +static WindowDesc _industry_cargoes_desc( WDP_AUTO, "industry_cargoes", 300, 210, WC_INDUSTRY_CARGOES, WC_NONE, 0, - std::begin(_nested_industry_cargoes_widgets), std::end(_nested_industry_cargoes_widgets) + _nested_industry_cargoes_widgets ); /** Available types of field. */ @@ -2088,45 +2095,35 @@ struct CargoesField { /** * Make a piece of cargo column. - * @param cargoes Array of #CargoID (may contain #INVALID_CARGO). - * @param length Number of cargoes in \a cargoes. - * @param count Number of cargoes to display (should be at least the number of valid cargoes, or \c -1 to let the method compute it). - * @param top_end This is the first cargo field of this column. - * @param bottom_end This is the last cargo field of this column. + * @param cargoes Span of #CargoID (may contain #INVALID_CARGO). * @note #supp_cargoes and #cust_cargoes should be filled in later. */ - void MakeCargo(const CargoID *cargoes, uint length, int count = -1, bool top_end = false, bool bottom_end = false) + void MakeCargo(const std::span cargoes) { this->type = CFT_CARGO; - auto insert = std::begin(this->u.cargo.vertical_cargoes); - for (uint i = 0; insert != std::end(this->u.cargo.vertical_cargoes) && i < length; i++) { - if (IsValidCargoID(cargoes[i])) { - *insert = cargoes[i]; - ++insert; - } - } - this->u.cargo.num_cargoes = (count < 0) ? static_cast(insert - std::begin(this->u.cargo.vertical_cargoes)) : count; + assert(std::size(cargoes) <= std::size(this->u.cargo.vertical_cargoes)); + auto insert = std::copy_if(std::begin(cargoes), std::end(cargoes), std::begin(this->u.cargo.vertical_cargoes), IsValidCargoID); + this->u.cargo.num_cargoes = static_cast(std::distance(std::begin(this->u.cargo.vertical_cargoes), insert)); CargoIDComparator comparator; std::sort(std::begin(this->u.cargo.vertical_cargoes), insert, comparator); std::fill(insert, std::end(this->u.cargo.vertical_cargoes), INVALID_CARGO); - this->u.cargo.top_end = top_end; - this->u.cargo.bottom_end = bottom_end; + this->u.cargo.top_end = false; + this->u.cargo.bottom_end = false; this->u.cargo.supp_cargoes = 0; this->u.cargo.cust_cargoes = 0; } /** * Make a field displaying cargo type names. - * @param cargoes Array of #CargoID (may contain #INVALID_CARGO). - * @param length Number of cargoes in \a cargoes. + * @param cargoes Span of #CargoID (may contain #INVALID_CARGO). * @param left_align ALign texts to the left (else to the right). */ - void MakeCargoLabel(const CargoID *cargoes, uint length, bool left_align) + void MakeCargoLabel(const std::span cargoes, bool left_align) { this->type = CFT_CARGO_LABEL; - uint i; - for (i = 0; i < MAX_CARGOES && i < length; i++) this->u.cargo_label.cargoes[i] = cargoes[i]; - for (; i < MAX_CARGOES; i++) this->u.cargo_label.cargoes[i] = INVALID_CARGO; + assert(std::size(cargoes) <= std::size(this->u.cargo_label.cargoes)); + auto insert = std::copy(std::begin(cargoes), std::end(cargoes), std::begin(this->u.cargo_label.cargoes)); + std::fill(insert, std::end(this->u.cargo_label.cargoes), INVALID_CARGO); this->u.cargo_label.left_align = left_align; } @@ -2196,7 +2193,7 @@ struct CargoesField { } /* Draw the other_produced/other_accepted cargoes. */ - const CargoID *other_right, *other_left; + std::span other_right, other_left; if (_current_text_dir == TD_RTL) { other_right = this->u.industry.other_accepted; other_left = this->u.industry.other_produced; @@ -2390,8 +2387,8 @@ private: } }; -static_assert(MAX_CARGOES >= cpp_lengthof(IndustrySpec, produced_cargo)); -static_assert(MAX_CARGOES >= cpp_lengthof(IndustrySpec, accepts_cargo)); +static_assert(MAX_CARGOES >= std::tuple_size_v); +static_assert(MAX_CARGOES >= std::tuple_size_v); Dimension CargoesField::legend; ///< Dimension of the legend blob. Dimension CargoesField::cargo_border; ///< Dimensions of border between cargo lines and industry boxes. @@ -2432,7 +2429,7 @@ struct CargoesRow { int other_count = 0; const IndustrySpec *indsp = GetIndustrySpec(ind_fld->u.industry.ind_type); - assert(CargoesField::max_cargoes <= lengthof(indsp->produced_cargo)); + assert(CargoesField::max_cargoes <= std::size(indsp->produced_cargo)); for (uint i = 0; i < CargoesField::max_cargoes; i++) { int col = cargo_fld->ConnectCargo(indsp->produced_cargo[i], true); if (col < 0) others[other_count++] = indsp->produced_cargo[i]; @@ -2470,7 +2467,7 @@ struct CargoesRow { int col = cargo_fld->ConnectCargo(cargo_fld->u.cargo.vertical_cargoes[i], !accepting); if (col >= 0) cargoes[col] = cargo_fld->u.cargo.vertical_cargoes[i]; } - label_fld->MakeCargoLabel(cargoes, lengthof(cargoes), accepting); + label_fld->MakeCargoLabel(cargoes, accepting); } @@ -2491,7 +2488,7 @@ struct CargoesRow { int other_count = 0; const IndustrySpec *indsp = GetIndustrySpec(ind_fld->u.industry.ind_type); - assert(CargoesField::max_cargoes <= lengthof(indsp->accepts_cargo)); + assert(CargoesField::max_cargoes <= std::size(indsp->accepts_cargo)); for (uint i = 0; i < CargoesField::max_cargoes; i++) { int col = cargo_fld->ConnectCargo(indsp->accepts_cargo[i], false); if (col < 0) others[other_count++] = indsp->accepts_cargo[i]; @@ -2504,12 +2501,11 @@ struct CargoesRow { } else { /* Houses only display what is demanded. */ for (uint i = 0; i < cargo_fld->u.cargo.num_cargoes; i++) { - for (uint h = 0; h < NUM_HOUSES; h++) { - HouseSpec *hs = HouseSpec::Get(h); - if (!hs->enabled) continue; + for (const auto &hs : HouseSpec::Specs()) { + if (!hs.enabled) continue; - for (uint j = 0; j < lengthof(hs->accepts_cargo); j++) { - if (hs->cargo_acceptance[j] > 0 && cargo_fld->u.cargo.vertical_cargoes[i] == hs->accepts_cargo[j]) { + for (uint j = 0; j < lengthof(hs.accepts_cargo); j++) { + if (hs.cargo_acceptance[j] > 0 && cargo_fld->u.cargo.vertical_cargoes[i] == hs.accepts_cargo[j]) { cargo_fld->ConnectCargo(cargo_fld->u.cargo.vertical_cargoes[i], false); goto next_cargo; } @@ -2558,7 +2554,7 @@ struct IndustryCargoesWindow : public Window { Dimension ind_textsize; ///< Size to hold any industry type text, as well as STR_INDUSTRY_CARGOES_SELECT_INDUSTRY. Scrollbar *vscroll; - IndustryCargoesWindow(int id) : Window(&_industry_cargoes_desc) + IndustryCargoesWindow(int id) : Window(_industry_cargoes_desc) { this->OnInit(); this->CreateNestedTree(); @@ -2607,8 +2603,8 @@ struct IndustryCargoesWindow : public Window { const IndustrySpec *indsp = GetIndustrySpec(it); if (!indsp->enabled) continue; this->ind_textsize = maxdim(this->ind_textsize, GetStringBoundingBox(indsp->name)); - CargoesField::max_cargoes = std::max(CargoesField::max_cargoes, std::count_if(indsp->accepts_cargo, endof(indsp->accepts_cargo), IsValidCargoID)); - CargoesField::max_cargoes = std::max(CargoesField::max_cargoes, std::count_if(indsp->produced_cargo, endof(indsp->produced_cargo), IsValidCargoID)); + CargoesField::max_cargoes = std::max(CargoesField::max_cargoes, std::count_if(std::begin(indsp->accepts_cargo), std::end(indsp->accepts_cargo), IsValidCargoID)); + CargoesField::max_cargoes = std::max(CargoesField::max_cargoes, std::count_if(std::begin(indsp->produced_cargo), std::end(indsp->produced_cargo), IsValidCargoID)); } d.width = std::max(d.width, this->ind_textsize.width); d.height = this->ind_textsize.height; @@ -2636,28 +2632,26 @@ struct IndustryCargoesWindow : public Window { CargoesField::cargo_field_width = CargoesField::cargo_border.width * 2 + CargoesField::cargo_line.width * CargoesField::max_cargoes + CargoesField::cargo_space.width * (CargoesField::max_cargoes - 1); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_IC_PANEL: - resize->height = CargoesField::normal_height; - size->width = CargoesField::industry_width * 3 + CargoesField::cargo_field_width * 2 + WidgetDimensions::scaled.frametext.Horizontal(); - size->height = CargoesField::small_height + 2 * resize->height + WidgetDimensions::scaled.frametext.Vertical(); + resize.height = CargoesField::normal_height; + size.width = CargoesField::industry_width * 3 + CargoesField::cargo_field_width * 2 + WidgetDimensions::scaled.frametext.Horizontal(); + size.height = CargoesField::small_height + 2 * resize.height + WidgetDimensions::scaled.frametext.Vertical(); break; case WID_IC_IND_DROPDOWN: - size->width = std::max(size->width, this->ind_textsize.width + padding.width); + size.width = std::max(size.width, this->ind_textsize.width + padding.width); break; case WID_IC_CARGO_DROPDOWN: - size->width = std::max(size->width, this->cargo_textsize.width + padding.width); + size.width = std::max(size.width, this->cargo_textsize.width + padding.width); break; } } - - CargoesFieldType type; ///< Type of field. - void SetStringParameters (WidgetID widget) const override + void SetStringParameters(WidgetID widget) const override { if (widget != WID_IC_CAPTION) return; @@ -2672,34 +2666,29 @@ struct IndustryCargoesWindow : public Window { /** * Do the two sets of cargoes have a valid cargo in common? - * @param cargoes1 Base address of the first cargo array. - * @param length1 Number of cargoes in the first cargo array. - * @param cargoes2 Base address of the second cargo array. - * @param length2 Number of cargoes in the second cargo array. + * @param cargoes1 Span of the first cargo list. + * @param cargoes2 Span of the second cargo list. * @return Arrays have at least one valid cargo in common. */ - static bool HasCommonValidCargo(const CargoID *cargoes1, uint length1, const CargoID *cargoes2, uint length2) + static bool HasCommonValidCargo(const std::span cargoes1, const std::span cargoes2) { - while (length1 > 0) { - if (IsValidCargoID(*cargoes1)) { - for (uint i = 0; i < length2; i++) if (*cargoes1 == cargoes2[i]) return true; + for (const CargoID cid1 : cargoes1) { + if (!IsValidCargoID(cid1)) continue; + for (const CargoID cid2 : cargoes2) { + if (cid1 == cid2) return true; } - cargoes1++; - length1--; } return false; } /** * Can houses be used to supply one of the cargoes? - * @param cargoes Base address of the cargo array. - * @param length Number of cargoes in the array. + * @param cargoes Span of cargo list. * @return Houses can supply at least one of the cargoes. */ - static bool HousesCanSupply(const CargoID *cargoes, uint length) + static bool HousesCanSupply(const std::span cargoes) { - for (uint i = 0; i < length; i++) { - CargoID cid = cargoes[i]; + for (const CargoID cid : cargoes) { if (!IsValidCargoID(cid)) continue; TownProductionEffect tpe = CargoSpec::Get(cid)->town_production_effect; if (tpe == TPE_PASSENGERS || tpe == TPE_MAIL) return true; @@ -2709,11 +2698,10 @@ struct IndustryCargoesWindow : public Window { /** * Can houses be used as customers of the produced cargoes? - * @param cargoes Base address of the cargo array. - * @param length Number of cargoes in the array. + * @param cargoes Span of cargo list. * @return Houses can accept at least one of the cargoes. */ - static bool HousesCanAccept(const CargoID *cargoes, uint length) + static bool HousesCanAccept(const std::span cargoes) { HouseZones climate_mask; switch (_settings_game.game_creation.landscape) { @@ -2723,15 +2711,14 @@ struct IndustryCargoesWindow : public Window { case LT_TOYLAND: climate_mask = HZ_TOYLND; break; default: NOT_REACHED(); } - for (uint i = 0; i < length; i++) { - if (!IsValidCargoID(cargoes[i])) continue; + for (const CargoID cid : cargoes) { + if (!IsValidCargoID(cid)) continue; - for (uint h = 0; h < NUM_HOUSES; h++) { - HouseSpec *hs = HouseSpec::Get(h); - if (!hs->enabled || !(hs->building_availability & climate_mask)) continue; + for (const auto &hs : HouseSpec::Specs()) { + if (!hs.enabled || !(hs.building_availability & climate_mask)) continue; - for (uint j = 0; j < lengthof(hs->accepts_cargo); j++) { - if (hs->cargo_acceptance[j] > 0 && cargoes[i] == hs->accepts_cargo[j]) return true; + for (uint j = 0; j < lengthof(hs.accepts_cargo); j++) { + if (hs.cargo_acceptance[j] > 0 && cid == hs.accepts_cargo[j]) return true; } } } @@ -2741,17 +2728,16 @@ struct IndustryCargoesWindow : public Window { /** * Count how many industries have accepted cargoes in common with one of the supplied set. * @param cargoes Cargoes to search. - * @param length Number of cargoes in \a cargoes. * @return Number of industries that have an accepted cargo in common with the supplied set. */ - static int CountMatchingAcceptingIndustries(const CargoID *cargoes, uint length) + static int CountMatchingAcceptingIndustries(const std::span cargoes) { int count = 0; for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) { const IndustrySpec *indsp = GetIndustrySpec(it); if (!indsp->enabled) continue; - if (HasCommonValidCargo(cargoes, length, indsp->accepts_cargo, lengthof(indsp->accepts_cargo))) count++; + if (HasCommonValidCargo(cargoes, indsp->accepts_cargo)) count++; } return count; } @@ -2759,17 +2745,16 @@ struct IndustryCargoesWindow : public Window { /** * Count how many industries have produced cargoes in common with one of the supplied set. * @param cargoes Cargoes to search. - * @param length Number of cargoes in \a cargoes. * @return Number of industries that have a produced cargo in common with the supplied set. */ - static int CountMatchingProducingIndustries(const CargoID *cargoes, uint length) + static int CountMatchingProducingIndustries(const std::span cargoes) { int count = 0; for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) { const IndustrySpec *indsp = GetIndustrySpec(it); if (!indsp->enabled) continue; - if (HasCommonValidCargo(cargoes, length, indsp->produced_cargo, lengthof(indsp->produced_cargo))) count++; + if (HasCommonValidCargo(cargoes, indsp->produced_cargo)) count++; } return count; } @@ -2844,18 +2829,18 @@ struct IndustryCargoesWindow : public Window { first_row.columns[4].MakeHeader(STR_INDUSTRY_CARGOES_CUSTOMERS); const IndustrySpec *central_sp = GetIndustrySpec(displayed_it); - bool houses_supply = HousesCanSupply(central_sp->accepts_cargo, lengthof(central_sp->accepts_cargo)); - bool houses_accept = HousesCanAccept(central_sp->produced_cargo, lengthof(central_sp->produced_cargo)); + bool houses_supply = HousesCanSupply(central_sp->accepts_cargo); + bool houses_accept = HousesCanAccept(central_sp->produced_cargo); /* Make a field consisting of two cargo columns. */ - int num_supp = CountMatchingProducingIndustries(central_sp->accepts_cargo, lengthof(central_sp->accepts_cargo)) + houses_supply; - int num_cust = CountMatchingAcceptingIndustries(central_sp->produced_cargo, lengthof(central_sp->produced_cargo)) + houses_accept; + int num_supp = CountMatchingProducingIndustries(central_sp->accepts_cargo) + houses_supply; + int num_cust = CountMatchingAcceptingIndustries(central_sp->produced_cargo) + houses_accept; int num_indrows = std::max(3, std::max(num_supp, num_cust)); // One is needed for the 'it' industry, and 2 for the cargo labels. for (int i = 0; i < num_indrows; i++) { CargoesRow &row = this->fields.emplace_back(); row.columns[0].MakeEmpty(CFT_EMPTY); - row.columns[1].MakeCargo(central_sp->accepts_cargo, lengthof(central_sp->accepts_cargo)); + row.columns[1].MakeCargo(central_sp->accepts_cargo); row.columns[2].MakeEmpty(CFT_EMPTY); - row.columns[3].MakeCargo(central_sp->produced_cargo, lengthof(central_sp->produced_cargo)); + row.columns[3].MakeCargo(central_sp->produced_cargo); row.columns[4].MakeEmpty(CFT_EMPTY); } /* Add central industry. */ @@ -2875,12 +2860,12 @@ struct IndustryCargoesWindow : public Window { const IndustrySpec *indsp = GetIndustrySpec(it); if (!indsp->enabled) continue; - if (HasCommonValidCargo(central_sp->accepts_cargo, lengthof(central_sp->accepts_cargo), indsp->produced_cargo, lengthof(indsp->produced_cargo))) { + if (HasCommonValidCargo(central_sp->accepts_cargo, indsp->produced_cargo)) { this->PlaceIndustry(1 + supp_count * num_indrows / num_supp, 0, it); _displayed_industries.set(it); supp_count++; } - if (HasCommonValidCargo(central_sp->produced_cargo, lengthof(central_sp->produced_cargo), indsp->accepts_cargo, lengthof(indsp->accepts_cargo))) { + if (HasCommonValidCargo(central_sp->produced_cargo, indsp->accepts_cargo)) { this->PlaceIndustry(1 + cust_count * num_indrows / num_cust, 4, it); _displayed_industries.set(it); cust_count++; @@ -2920,15 +2905,16 @@ struct IndustryCargoesWindow : public Window { first_row.columns[3].MakeEmpty(CFT_SMALL_EMPTY); first_row.columns[4].MakeEmpty(CFT_SMALL_EMPTY); - bool houses_supply = HousesCanSupply(&cid, 1); - bool houses_accept = HousesCanAccept(&cid, 1); - int num_supp = CountMatchingProducingIndustries(&cid, 1) + houses_supply + 1; // Ensure room for the cargo label. - int num_cust = CountMatchingAcceptingIndustries(&cid, 1) + houses_accept; + auto cargoes = std::span(&cid, 1); + bool houses_supply = HousesCanSupply(cargoes); + bool houses_accept = HousesCanAccept(cargoes); + int num_supp = CountMatchingProducingIndustries(cargoes) + houses_supply + 1; // Ensure room for the cargo label. + int num_cust = CountMatchingAcceptingIndustries(cargoes) + houses_accept; int num_indrows = std::max(num_supp, num_cust); for (int i = 0; i < num_indrows; i++) { CargoesRow &row = this->fields.emplace_back(); row.columns[0].MakeEmpty(CFT_EMPTY); - row.columns[1].MakeCargo(&cid, 1); + row.columns[1].MakeCargo(cargoes); row.columns[2].MakeEmpty(CFT_EMPTY); row.columns[3].MakeEmpty(CFT_EMPTY); row.columns[4].MakeEmpty(CFT_EMPTY); @@ -2943,12 +2929,12 @@ struct IndustryCargoesWindow : public Window { const IndustrySpec *indsp = GetIndustrySpec(it); if (!indsp->enabled) continue; - if (HasCommonValidCargo(&cid, 1, indsp->produced_cargo, lengthof(indsp->produced_cargo))) { + if (HasCommonValidCargo(cargoes, indsp->produced_cargo)) { this->PlaceIndustry(1 + supp_count * num_indrows / num_supp, 0, it); _displayed_industries.set(it); supp_count++; } - if (HasCommonValidCargo(&cid, 1, indsp->accepts_cargo, lengthof(indsp->accepts_cargo))) { + if (HasCommonValidCargo(cargoes, indsp->accepts_cargo)) { this->PlaceIndustry(1 + cust_count * num_indrows / num_cust, 2, it); _displayed_industries.set(it); cust_count++; @@ -3040,7 +3026,7 @@ struct IndustryCargoesWindow : public Window { pt.x -= nw->pos_x; pt.y -= nw->pos_y; - int vpos = WidgetDimensions::scaled.framerect.top + CargoesField::small_height - this->vscroll->GetPosition() * nw->resize_y; + int vpos = WidgetDimensions::scaled.frametext.top + CargoesField::small_height - this->vscroll->GetPosition() * nw->resize_y; if (pt.y < vpos) return false; int row = (pt.y - vpos) / CargoesField::normal_height; // row is relative to row 1. @@ -3048,7 +3034,7 @@ struct IndustryCargoesWindow : public Window { vpos = pt.y - vpos - row * CargoesField::normal_height; // Position in the row + 1 field row++; // rebase row to match index of this->fields. - int xpos = 2 * WidgetDimensions::scaled.framerect.left + ((this->ind_cargo < NUM_INDUSTRYTYPES) ? 0 : (CargoesField::industry_width + CargoesField::cargo_field_width) / 2); + int xpos = 2 * WidgetDimensions::scaled.frametext.left + ((this->ind_cargo < NUM_INDUSTRYTYPES) ? 0 : (CargoesField::industry_width + CargoesField::cargo_field_width) / 2); if (pt.x < xpos) return false; int column; for (column = 0; column <= 5; column++) { @@ -3121,7 +3107,7 @@ struct IndustryCargoesWindow : public Window { DropDownList lst; Dimension d = GetLargestCargoIconSize(); for (const CargoSpec *cs : _sorted_standard_cargo_specs) { - lst.push_back(std::make_unique(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false)); + lst.push_back(MakeDropDownListIconItem(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index())); } if (!lst.empty()) { int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? (int)(this->ind_cargo - NUM_INDUSTRYTYPES) : -1; @@ -3135,7 +3121,7 @@ struct IndustryCargoesWindow : public Window { for (IndustryType ind : _sorted_industry_types) { const IndustrySpec *indsp = GetIndustrySpec(ind); if (!indsp->enabled) continue; - lst.push_back(std::make_unique(indsp->name, ind, false)); + lst.push_back(MakeDropDownListStringItem(indsp->name, ind)); } if (!lst.empty()) { int selected = (this->ind_cargo < NUM_INDUSTRYTYPES) ? (int)this->ind_cargo : -1; @@ -3204,7 +3190,7 @@ struct IndustryCargoesWindow : public Window { void OnResize() override { - this->vscroll->SetCapacityFromWidget(this, WID_IC_PANEL, WidgetDimensions::scaled.framerect.top + CargoesField::small_height); + this->vscroll->SetCapacityFromWidget(this, WID_IC_PANEL, WidgetDimensions::scaled.framerect.Vertical() + CargoesField::small_height); } }; diff --git a/src/industry_map.h b/src/industry_map.h index bf664b24b0..ee45ade7c9 100644 --- a/src/industry_map.h +++ b/src/industry_map.h @@ -97,10 +97,10 @@ inline void SetIndustryCompleted(Tile tile) * @pre IsTileType(tile, MP_INDUSTRY) * @return the construction stage */ -inline byte GetIndustryConstructionStage(Tile tile) +inline uint8_t GetIndustryConstructionStage(Tile tile) { assert(IsTileType(tile, MP_INDUSTRY)); - return IsIndustryCompleted(tile) ? (byte)INDUSTRY_COMPLETED : GB(tile.m1(), 0, 2); + return IsIndustryCompleted(tile) ? (uint8_t)INDUSTRY_COMPLETED : GB(tile.m1(), 0, 2); } /** @@ -109,7 +109,7 @@ inline byte GetIndustryConstructionStage(Tile tile) * @param value the new construction stage * @pre IsTileType(tile, MP_INDUSTRY) */ -inline void SetIndustryConstructionStage(Tile tile, byte value) +inline void SetIndustryConstructionStage(Tile tile, uint8_t value) { assert(IsTileType(tile, MP_INDUSTRY)); SB(tile.m1(), 0, 2, value); @@ -159,7 +159,7 @@ inline void SetIndustryGfx(Tile t, IndustryGfx gfx) * @pre IsTileType(tile, MP_INDUSTRY) * @return the construction counter */ -inline byte GetIndustryConstructionCounter(Tile tile) +inline uint8_t GetIndustryConstructionCounter(Tile tile) { assert(IsTileType(tile, MP_INDUSTRY)); return GB(tile.m1(), 2, 2); @@ -171,7 +171,7 @@ inline byte GetIndustryConstructionCounter(Tile tile) * @param value the new value for the construction counter * @pre IsTileType(tile, MP_INDUSTRY) */ -inline void SetIndustryConstructionCounter(Tile tile, byte value) +inline void SetIndustryConstructionCounter(Tile tile, uint8_t value) { assert(IsTileType(tile, MP_INDUSTRY)); SB(tile.m1(), 2, 2, value); @@ -196,7 +196,7 @@ inline void ResetIndustryConstructionStage(Tile tile) * @param tile the tile to get the animation loop number of * @pre IsTileType(tile, MP_INDUSTRY) */ -inline byte GetIndustryAnimationLoop(Tile tile) +inline uint8_t GetIndustryAnimationLoop(Tile tile) { assert(IsTileType(tile, MP_INDUSTRY)); return tile.m4(); @@ -208,7 +208,7 @@ inline byte GetIndustryAnimationLoop(Tile tile) * @param count the new animation frame number * @pre IsTileType(tile, MP_INDUSTRY) */ -inline void SetIndustryAnimationLoop(Tile tile, byte count) +inline void SetIndustryAnimationLoop(Tile tile, uint8_t count) { assert(IsTileType(tile, MP_INDUSTRY)); tile.m4() = count; @@ -221,7 +221,7 @@ inline void SetIndustryAnimationLoop(Tile tile, byte count) * @pre IsTileType(tile, MP_INDUSTRY) * @return requested bits */ -inline byte GetIndustryRandomBits(Tile tile) +inline uint8_t GetIndustryRandomBits(Tile tile) { assert(IsTileType(tile, MP_INDUSTRY)); return tile.m3(); @@ -234,7 +234,7 @@ inline byte GetIndustryRandomBits(Tile tile) * @param bits the random bits * @pre IsTileType(tile, MP_INDUSTRY) */ -inline void SetIndustryRandomBits(Tile tile, byte bits) +inline void SetIndustryRandomBits(Tile tile, uint8_t bits) { assert(IsTileType(tile, MP_INDUSTRY)); tile.m3() = bits; @@ -247,7 +247,7 @@ inline void SetIndustryRandomBits(Tile tile, byte bits) * @pre IsTileType(tile, MP_INDUSTRY) * @return requested triggers */ -inline byte GetIndustryTriggers(Tile tile) +inline uint8_t GetIndustryTriggers(Tile tile) { assert(IsTileType(tile, MP_INDUSTRY)); return GB(tile.m6(), 3, 3); @@ -261,7 +261,7 @@ inline byte GetIndustryTriggers(Tile tile) * @param triggers the triggers to set * @pre IsTileType(tile, MP_INDUSTRY) */ -inline void SetIndustryTriggers(Tile tile, byte triggers) +inline void SetIndustryTriggers(Tile tile, uint8_t triggers) { assert(IsTileType(tile, MP_INDUSTRY)); SB(tile.m6(), 3, 3, triggers); diff --git a/src/industry_type.h b/src/industry_type.h index 185e1f3a79..1ae903ad20 100644 --- a/src/industry_type.h +++ b/src/industry_type.h @@ -37,6 +37,8 @@ static const int INDUSTRY_COMPLETED = 3; ///< final stage of industry constructi static const int INDUSTRY_NUM_INPUTS = 16; ///< Number of cargo types an industry can accept static const int INDUSTRY_NUM_OUTPUTS = 16; ///< Number of cargo types an industry can produce +static const int INDUSTRY_ORIGINAL_NUM_INPUTS = 3; ///< Original number of accepted cargo types. +static const int INDUSTRY_ORIGINAL_NUM_OUTPUTS = 2; ///< Original number of produced cargo types. void CheckIndustries(); diff --git a/src/industrytype.h b/src/industrytype.h index e1fbd881e8..b299851c10 100644 --- a/src/industrytype.h +++ b/src/industrytype.h @@ -18,10 +18,6 @@ #include "newgrf_animation_type.h" #include "newgrf_commons.h" -enum IndustryCleanupType { - CLEAN_RANDOMSOUNDS, ///< Free the dynamically allocated sounds table -}; - /** Available types of industry lifetimes. */ enum IndustryLifeType { INDUSTRYLIFE_BLACK_HOLE = 0, ///< Like power plants and banks @@ -108,45 +104,41 @@ struct IndustrySpec { uint32_t removal_cost_multiplier; ///< Base removal cost multiplier. uint32_t prospecting_chance; ///< Chance prospecting succeeds IndustryType conflicting[3]; ///< Industries this industry cannot be close to - byte check_proc; ///< Index to a procedure to check for conflicting circumstances - CargoID produced_cargo[INDUSTRY_NUM_OUTPUTS]; + uint8_t check_proc; ///< Index to a procedure to check for conflicting circumstances + std::array produced_cargo; std::variant produced_cargo_label[INDUSTRY_NUM_OUTPUTS]; - byte production_rate[INDUSTRY_NUM_OUTPUTS]; + uint8_t production_rate[INDUSTRY_NUM_OUTPUTS]; /** * minimum amount of cargo transported to the stations. * If the waiting cargo is less than this number, no cargo is moved to it. */ - byte minimal_cargo; - CargoID accepts_cargo[INDUSTRY_NUM_INPUTS]; ///< 16 accepted cargoes. + uint8_t minimal_cargo; + std::array accepts_cargo; ///< 16 accepted cargoes. std::variant accepts_cargo_label[INDUSTRY_NUM_INPUTS]; uint16_t input_cargo_multiplier[INDUSTRY_NUM_INPUTS][INDUSTRY_NUM_OUTPUTS]; ///< Input cargo multipliers (multiply amount of incoming cargo for the produced cargoes) IndustryLifeType life_type; ///< This is also known as Industry production flag, in newgrf specs - byte climate_availability; ///< Bitmask, giving landscape enums as bit position + uint8_t climate_availability; ///< Bitmask, giving landscape enums as bit position IndustryBehaviour behaviour; ///< How this industry will behave, and how others entities can use it - byte map_colour; ///< colour used for the small map + uint8_t map_colour; ///< colour used for the small map StringID name; ///< Displayed name of the industry StringID new_industry_text; ///< Message appearing when the industry is built StringID closure_text; ///< Message appearing when the industry closes StringID production_up_text; ///< Message appearing when the industry's production is increasing StringID production_down_text; ///< Message appearing when the industry's production is decreasing StringID station_name; ///< Default name for nearby station - byte appear_ingame[NUM_LANDSCAPE]; ///< Probability of appearance in game - byte appear_creation[NUM_LANDSCAPE]; ///< Probability of appearance during map creation - uint8_t number_of_sounds; ///< Number of sounds available in the sounds array - const uint8_t *random_sounds; ///< array of random sounds. + uint8_t appear_ingame[NUM_LANDSCAPE]; ///< Probability of appearance in game + uint8_t appear_creation[NUM_LANDSCAPE]; ///< Probability of appearance during map creation /* Newgrf data */ uint16_t callback_mask; ///< Bitmask of industry callbacks that have to be called - uint8_t cleanup_flag; ///< flags indicating which data should be freed upon cleaning up bool enabled; ///< entity still available (by default true).newgrf can disable it, though GRFFileProps grf_prop; ///< properties related to the grf file + std::vector random_sounds; ///< Random sounds; bool IsRawIndustry() const; bool IsProcessingIndustry() const; Money GetConstructionCost() const; Money GetRemovalCost() const; bool UsesOriginalEconomy() const; - - ~IndustrySpec(); }; /** @@ -158,8 +150,8 @@ struct IndustryTileSpec { std::array, INDUSTRY_NUM_INPUTS> accepts_cargo_label; std::array acceptance; ///< Level of acceptance per cargo type (signed, may be negative!) Slope slopes_refused; ///< slope pattern on which this tile cannot be built - byte anim_production; ///< Animation frame to start when goods are produced - byte anim_next; ///< Next frame in an animation + uint8_t anim_production; ///< Animation frame to start when goods are produced + uint8_t anim_next; ///< Next frame in an animation /** * When true, the tile has to be drawn using the animation * state instead of the construction state diff --git a/src/ini.cpp b/src/ini.cpp index 5931d891ec..95d7cb8d38 100644 --- a/src/ini.cpp +++ b/src/ini.cpp @@ -22,11 +22,7 @@ # include #endif -#ifdef _WIN32 -# include -# include -# include "core/mem_func.hpp" -#endif +#include #include "safeguards.h" @@ -91,30 +87,11 @@ bool IniFile::SaveToDisk(const std::string &filename) if (ret != 0) return false; #endif -#if defined(_WIN32) - /* Allocate space for one more \0 character. */ - wchar_t tfilename[MAX_PATH + 1], tfile_new[MAX_PATH + 1]; - wcsncpy(tfilename, OTTD2FS(filename).c_str(), MAX_PATH); - wcsncpy(tfile_new, OTTD2FS(file_new).c_str(), MAX_PATH); - /* SHFileOperation wants a double '\0' terminated string. */ - tfilename[MAX_PATH - 1] = '\0'; - tfile_new[MAX_PATH - 1] = '\0'; - tfilename[wcslen(tfilename) + 1] = '\0'; - tfile_new[wcslen(tfile_new) + 1] = '\0'; - - /* Rename file without any user confirmation. */ - SHFILEOPSTRUCT shfopt; - MemSetT(&shfopt, 0); - shfopt.wFunc = FO_MOVE; - shfopt.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_SILENT; - shfopt.pFrom = tfile_new; - shfopt.pTo = tfilename; - SHFileOperation(&shfopt); -#else - if (rename(file_new.c_str(), filename.c_str()) < 0) { - Debug(misc, 0, "Renaming {} to {} failed; configuration not saved", file_new, filename); + std::error_code ec; + std::filesystem::rename(OTTD2FS(file_new), OTTD2FS(filename), ec); + if (ec) { + Debug(misc, 0, "Renaming {} to {} failed; configuration not saved: {}", file_new, filename, ec.message()); } -#endif #ifdef __EMSCRIPTEN__ EM_ASM(if (window["openttd_syncfs"]) openttd_syncfs()); diff --git a/src/ini_load.cpp b/src/ini_load.cpp index 1a6eed76f5..e4209ad3b2 100644 --- a/src/ini_load.cpp +++ b/src/ini_load.cpp @@ -20,7 +20,7 @@ * @param parent the group we belong to * @param name the name of the item */ -IniItem::IniItem(const std::string &name) +IniItem::IniItem(std::string_view name) { this->name = StrMakeValid(name); } @@ -29,7 +29,7 @@ IniItem::IniItem(const std::string &name) * Replace the current value with another value. * @param value the value to replace with. */ -void IniItem::SetValue(const std::string_view value) +void IniItem::SetValue(std::string_view value) { this->value.emplace(value); } @@ -39,7 +39,7 @@ void IniItem::SetValue(const std::string_view value) * @param parent the file we belong to * @param name the name of the group */ -IniGroup::IniGroup(const std::string &name, IniGroupType type) : type(type), comment("\n") +IniGroup::IniGroup(std::string_view name, IniGroupType type) : type(type), comment("\n") { this->name = StrMakeValid(name); } @@ -49,7 +49,7 @@ IniGroup::IniGroup(const std::string &name, IniGroupType type) : type(type), com * @param name name of the item to find. * @return the requested item or nullptr if not found. */ -const IniItem *IniGroup::GetItem(const std::string &name) const +const IniItem *IniGroup::GetItem(std::string_view name) const { for (const IniItem &item : this->items) { if (item.name == name) return &item; @@ -63,7 +63,7 @@ const IniItem *IniGroup::GetItem(const std::string &name) const * @param name name of the item to find. * @return the requested item. */ -IniItem &IniGroup::GetOrCreateItem(const std::string &name) +IniItem &IniGroup::GetOrCreateItem(std::string_view name) { for (IniItem &item : this->items) { if (item.name == name) return item; @@ -78,7 +78,7 @@ IniItem &IniGroup::GetOrCreateItem(const std::string &name) * @param name name of the item to create. * @return the created item. */ -IniItem &IniGroup::CreateItem(const std::string &name) +IniItem &IniGroup::CreateItem(std::string_view name) { return this->items.emplace_back(name); } @@ -87,7 +87,7 @@ IniItem &IniGroup::CreateItem(const std::string &name) * Remove the item with the given name. * @param name Name of the item to remove. */ -void IniGroup::RemoveItem(const std::string &name) +void IniGroup::RemoveItem(std::string_view name) { this->items.remove_if([&name](const IniItem &item) { return item.name == name; }); } @@ -116,7 +116,7 @@ IniLoadFile::IniLoadFile(const IniGroupNameList &list_group_names, const IniGrou * @param name name of the group to find. * @return The requested group or \c nullptr if not found. */ -const IniGroup *IniLoadFile::GetGroup(const std::string &name) const +const IniGroup *IniLoadFile::GetGroup(std::string_view name) const { for (const IniGroup &group : this->groups) { if (group.name == name) return &group; @@ -130,7 +130,7 @@ const IniGroup *IniLoadFile::GetGroup(const std::string &name) const * @param name name of the group to find. * @return The requested group or \c nullptr if not found. */ -IniGroup *IniLoadFile::GetGroup(const std::string &name) +IniGroup *IniLoadFile::GetGroup(std::string_view name) { for (IniGroup &group : this->groups) { if (group.name == name) return &group; @@ -144,7 +144,7 @@ IniGroup *IniLoadFile::GetGroup(const std::string &name) * @param name name of the group to find. * @return the requested group. */ -IniGroup &IniLoadFile::GetOrCreateGroup(const std::string &name) +IniGroup &IniLoadFile::GetOrCreateGroup(std::string_view name) { for (IniGroup &group : this->groups) { if (group.name == name) return group; @@ -159,7 +159,7 @@ IniGroup &IniLoadFile::GetOrCreateGroup(const std::string &name) * @param name name of the group to create. * @return the created group. */ -IniGroup &IniLoadFile::CreateGroup(const std::string &name) +IniGroup &IniLoadFile::CreateGroup(std::string_view name) { IniGroupType type = IGT_VARIABLES; if (std::find(this->list_group_names.begin(), this->list_group_names.end(), name) != this->list_group_names.end()) type = IGT_LIST; @@ -172,7 +172,7 @@ IniGroup &IniLoadFile::CreateGroup(const std::string &name) * Remove the group with the given name. * @param name name of the group to remove. */ -void IniLoadFile::RemoveGroup(const std::string &name) +void IniLoadFile::RemoveGroup(std::string_view name) { size_t len = name.length(); this->groups.remove_if([&name, &len](const IniGroup &group) { return group.name.compare(0, len, name) == 0; }); @@ -202,7 +202,7 @@ void IniLoadFile::LoadFromDisk(const std::string &filename, Subdirectory subdir) end += ftell(in); /* for each line in the file */ - while ((size_t)ftell(in) < end && fgets(buffer, sizeof(buffer), in)) { + while (static_cast(ftell(in)) < end && fgets(buffer, sizeof(buffer), in)) { char c, *s; /* trim whitespace from the left side */ for (s = buffer; *s == ' ' || *s == '\t'; s++) {} @@ -237,7 +237,7 @@ void IniLoadFile::LoadFromDisk(const std::string &filename, Subdirectory subdir) e--; } s++; // skip [ - group = &this->CreateGroup(std::string(s, e - s)); + group = &this->CreateGroup(std::string_view(s, e - s)); if (comment_size != 0) { group->comment.assign(comment, comment_size); comment_size = 0; @@ -245,7 +245,7 @@ void IniLoadFile::LoadFromDisk(const std::string &filename, Subdirectory subdir) } else if (group != nullptr) { if (group->type == IGT_SEQUENCE) { /* A sequence group, use the line as item name without further interpretation. */ - IniItem &item = group->CreateItem(std::string(buffer, e - buffer)); + IniItem &item = group->CreateItem(std::string_view(buffer, e - buffer)); if (comment_size) { item.comment.assign(comment, comment_size); comment_size = 0; @@ -263,7 +263,7 @@ void IniLoadFile::LoadFromDisk(const std::string &filename, Subdirectory subdir) } /* it's an item in an existing group */ - IniItem &item = group->CreateItem(std::string(s, t - s)); + IniItem &item = group->CreateItem(std::string_view(s, t - s)); if (comment_size != 0) { item.comment.assign(comment, comment_size); comment_size = 0; diff --git a/src/ini_type.h b/src/ini_type.h index 5ea462ef18..2fb5a3333e 100644 --- a/src/ini_type.h +++ b/src/ini_type.h @@ -25,9 +25,9 @@ struct IniItem { std::optional value; ///< The value of this item std::string comment; ///< The comment associated with this item - IniItem(const std::string &name); + IniItem(std::string_view name); - void SetValue(const std::string_view value); + void SetValue(std::string_view value); }; /** A group within an ini file. */ @@ -37,12 +37,12 @@ struct IniGroup { std::string name; ///< name of group std::string comment; ///< comment for group - IniGroup(const std::string &name, IniGroupType type); + IniGroup(std::string_view name, IniGroupType type); - const IniItem *GetItem(const std::string &name) const; - IniItem &GetOrCreateItem(const std::string &name); - IniItem &CreateItem(const std::string &name); - void RemoveItem(const std::string &name); + const IniItem *GetItem(std::string_view name) const; + IniItem &GetOrCreateItem(std::string_view name); + IniItem &CreateItem(std::string_view name); + void RemoveItem(std::string_view name); void Clear(); }; @@ -58,11 +58,11 @@ struct IniLoadFile { IniLoadFile(const IniGroupNameList &list_group_names = {}, const IniGroupNameList &seq_group_names = {}); virtual ~IniLoadFile() { } - const IniGroup *GetGroup(const std::string &name) const; - IniGroup *GetGroup(const std::string &name); - IniGroup &GetOrCreateGroup(const std::string &name); - IniGroup &CreateGroup(const std::string &name); - void RemoveGroup(const std::string &name); + const IniGroup *GetGroup(std::string_view name) const; + IniGroup *GetGroup(std::string_view name); + IniGroup &GetOrCreateGroup(std::string_view name); + IniGroup &CreateGroup(std::string_view name); + void RemoveGroup(std::string_view name); void LoadFromDisk(const std::string &filename, Subdirectory subdir); diff --git a/src/intro_gui.cpp b/src/intro_gui.cpp index 2ffe2d4097..59bcbe39fe 100644 --- a/src/intro_gui.cpp +++ b/src/intro_gui.cpp @@ -48,13 +48,13 @@ */ struct IntroGameViewportCommand { /** Horizontal alignment value. */ - enum AlignmentH : byte { + enum AlignmentH : uint8_t { LEFT, CENTRE, RIGHT, }; /** Vertical alignment value. */ - enum AlignmentV : byte { + enum AlignmentV : uint8_t { TOP, MIDDLE, BOTTOM, @@ -176,7 +176,7 @@ struct SelectGameWindow : public Window { } } - SelectGameWindow(WindowDesc *desc) : Window(desc) + SelectGameWindow(WindowDesc &desc) : Window(desc) { this->CreateNestedTree(); this->FinishInitNested(0); @@ -184,7 +184,7 @@ struct SelectGameWindow : public Window { this->ReadIntroGameViewportCommands(); - this->cur_viewport_command_index = (size_t)-1; + this->cur_viewport_command_index = SIZE_MAX; this->cur_viewport_command_time = 0; this->mouse_idle_time = 0; this->mouse_idle_pos = _cursor.pos; @@ -297,13 +297,13 @@ struct SelectGameWindow : public Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_SGI_TEMPERATE_LANDSCAPE: case WID_SGI_ARCTIC_LANDSCAPE: case WID_SGI_TROPIC_LANDSCAPE: case WID_SGI_TOYLAND_LANDSCAPE: - size->width += WidgetDimensions::scaled.fullbevel.Horizontal(); - size->height += WidgetDimensions::scaled.fullbevel.Vertical(); + size.width += WidgetDimensions::scaled.fullbevel.Horizontal(); + size.height += WidgetDimensions::scaled.fullbevel.Vertical(); break; } } @@ -456,16 +456,16 @@ static constexpr NWidgetPart _nested_select_game_widgets[] = { EndContainer(), }; -static WindowDesc _select_game_desc(__FILE__, __LINE__, +static WindowDesc _select_game_desc( WDP_CENTER, nullptr, 0, 0, WC_SELECT_GAME, WC_NONE, WDF_NO_CLOSE, - std::begin(_nested_select_game_widgets), std::end(_nested_select_game_widgets) + _nested_select_game_widgets ); void ShowSelectGameWindow() { - new SelectGameWindow(&_select_game_desc); + new SelectGameWindow(_select_game_desc); } static void AskExitGameCallback(Window *, bool confirmed) diff --git a/src/landscape.cpp b/src/landscape.cpp index 43dacf8a35..121c603569 100644 --- a/src/landscape.cpp +++ b/src/landscape.cpp @@ -30,7 +30,8 @@ #include "core/random_func.hpp" #include "object_base.h" #include "company_func.h" -#include "pathfinder/npf/aystar.h" +#include "company_gui.h" +#include "pathfinder/aystar.h" #include "saveload/saveload.h" #include "framerate_type.h" #include "landscape_cmd.h" @@ -76,7 +77,7 @@ const TileTypeProcs * const _tile_type_procs[16] = { }; /** landscape slope => sprite */ -extern const byte _slope_to_sprite_offset[32] = { +extern const uint8_t _slope_to_sprite_offset[32] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 0, 15, 18, 0, }; @@ -163,44 +164,44 @@ Point InverseRemapCoords2(int x, int y, bool clamp_to_map, bool *clamped) * @param s The #Slope to modify. * @return Increment to the tile Z coordinate. */ -uint ApplyFoundationToSlope(Foundation f, Slope *s) +uint ApplyFoundationToSlope(Foundation f, Slope &s) { if (!IsFoundation(f)) return 0; if (IsLeveledFoundation(f)) { - uint dz = 1 + (IsSteepSlope(*s) ? 1 : 0); - *s = SLOPE_FLAT; + uint dz = 1 + (IsSteepSlope(s) ? 1 : 0); + s = SLOPE_FLAT; return dz; } if (f != FOUNDATION_STEEP_BOTH && IsNonContinuousFoundation(f)) { - *s = HalftileSlope(*s, GetHalftileFoundationCorner(f)); + s = HalftileSlope(s, GetHalftileFoundationCorner(f)); return 0; } if (IsSpecialRailFoundation(f)) { - *s = SlopeWithThreeCornersRaised(OppositeCorner(GetRailFoundationCorner(f))); + s = SlopeWithThreeCornersRaised(OppositeCorner(GetRailFoundationCorner(f))); return 0; } - uint dz = IsSteepSlope(*s) ? 1 : 0; - Corner highest_corner = GetHighestSlopeCorner(*s); + uint dz = IsSteepSlope(s) ? 1 : 0; + Corner highest_corner = GetHighestSlopeCorner(s); switch (f) { case FOUNDATION_INCLINED_X: - *s = (((highest_corner == CORNER_W) || (highest_corner == CORNER_S)) ? SLOPE_SW : SLOPE_NE); + s = (((highest_corner == CORNER_W) || (highest_corner == CORNER_S)) ? SLOPE_SW : SLOPE_NE); break; case FOUNDATION_INCLINED_Y: - *s = (((highest_corner == CORNER_S) || (highest_corner == CORNER_E)) ? SLOPE_SE : SLOPE_NW); + s = (((highest_corner == CORNER_S) || (highest_corner == CORNER_E)) ? SLOPE_SE : SLOPE_NW); break; case FOUNDATION_STEEP_LOWER: - *s = SlopeWithOneCornerRaised(highest_corner); + s = SlopeWithOneCornerRaised(highest_corner); break; case FOUNDATION_STEEP_BOTH: - *s = HalftileSlope(SlopeWithOneCornerRaised(highest_corner), highest_corner); + s = HalftileSlope(SlopeWithOneCornerRaised(highest_corner), highest_corner); break; default: NOT_REACHED(); @@ -347,7 +348,7 @@ int GetSlopeZInCorner(Slope tileh, Corner corner) * @param z1 Gets incremented by the height of the first corner of the edge. (near corner wrt. the camera) * @param z2 Gets incremented by the height of the second corner of the edge. (far corner wrt. the camera) */ -void GetSlopePixelZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2) +void GetSlopePixelZOnEdge(Slope tileh, DiagDirection edge, int &z1, int &z2) { static const Slope corners[4][4] = { /* corner | steep slope @@ -359,13 +360,13 @@ void GetSlopePixelZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2) }; int halftile_test = (IsHalftileSlope(tileh) ? SlopeWithOneCornerRaised(GetHalftileSlopeCorner(tileh)) : 0); - if (halftile_test == corners[edge][0]) *z2 += TILE_HEIGHT; // The slope is non-continuous in z2. z2 is on the upper side. - if (halftile_test == corners[edge][1]) *z1 += TILE_HEIGHT; // The slope is non-continuous in z1. z1 is on the upper side. + if (halftile_test == corners[edge][0]) z2 += TILE_HEIGHT; // The slope is non-continuous in z2. z2 is on the upper side. + if (halftile_test == corners[edge][1]) z1 += TILE_HEIGHT; // The slope is non-continuous in z1. z1 is on the upper side. - if ((tileh & corners[edge][0]) != 0) *z1 += TILE_HEIGHT; // z1 is raised - if ((tileh & corners[edge][1]) != 0) *z2 += TILE_HEIGHT; // z2 is raised - if (RemoveHalftileSlope(tileh) == corners[edge][2]) *z1 += TILE_HEIGHT; // z1 is highest corner of a steep slope - if (RemoveHalftileSlope(tileh) == corners[edge][3]) *z2 += TILE_HEIGHT; // z2 is highest corner of a steep slope + if ((tileh & corners[edge][0]) != 0) z1 += TILE_HEIGHT; // z1 is raised + if ((tileh & corners[edge][1]) != 0) z2 += TILE_HEIGHT; // z2 is raised + if (RemoveHalftileSlope(tileh) == corners[edge][2]) z1 += TILE_HEIGHT; // z1 is highest corner of a steep slope + if (RemoveHalftileSlope(tileh) == corners[edge][3]) z2 += TILE_HEIGHT; // z2 is highest corner of a steep slope } /** @@ -373,31 +374,27 @@ void GetSlopePixelZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2) * If a tile does not have a foundation, the function returns the same as GetTileSlope. * * @param tile The tile of interest. - * @param z returns the z of the foundation slope. (Can be nullptr, if not needed) - * @return The slope on top of the foundation. + * @return The slope on top of the foundation and the z of the foundation slope. */ -Slope GetFoundationSlope(TileIndex tile, int *z) +std::tuple GetFoundationSlope(TileIndex tile) { - Slope tileh = GetTileSlope(tile, z); + auto [tileh, z] = GetTileSlopeZ(tile); Foundation f = _tile_type_procs[GetTileType(tile)]->get_foundation_proc(tile, tileh); - uint z_inc = ApplyFoundationToSlope(f, &tileh); - if (z != nullptr) *z += z_inc; - return tileh; + z += ApplyFoundationToSlope(f, tileh); + return {tileh, z}; } bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here) { - int z; - int z_W_here = z_here; int z_N_here = z_here; - GetSlopePixelZOnEdge(slope_here, DIAGDIR_NW, &z_W_here, &z_N_here); + GetSlopePixelZOnEdge(slope_here, DIAGDIR_NW, z_W_here, z_N_here); - Slope slope = GetFoundationPixelSlope(TILE_ADDXY(tile, 0, -1), &z); + auto [slope, z] = GetFoundationPixelSlope(TileAddXY(tile, 0, -1)); int z_W = z; int z_N = z; - GetSlopePixelZOnEdge(slope, DIAGDIR_SE, &z_W, &z_N); + GetSlopePixelZOnEdge(slope, DIAGDIR_SE, z_W, z_N); return (z_N_here > z_N) || (z_W_here > z_W); } @@ -405,16 +402,14 @@ bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here) bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here) { - int z; - int z_E_here = z_here; int z_N_here = z_here; - GetSlopePixelZOnEdge(slope_here, DIAGDIR_NE, &z_E_here, &z_N_here); + GetSlopePixelZOnEdge(slope_here, DIAGDIR_NE, z_E_here, z_N_here); - Slope slope = GetFoundationPixelSlope(TILE_ADDXY(tile, -1, 0), &z); + auto [slope, z] = GetFoundationPixelSlope(TileAddXY(tile, -1, 0)); int z_E = z; int z_N = z; - GetSlopePixelZOnEdge(slope, DIAGDIR_SW, &z_E, &z_N); + GetSlopePixelZOnEdge(slope, DIAGDIR_SW, z_E, z_N); return (z_N_here > z_N) || (z_E_here > z_E); } @@ -432,8 +427,7 @@ void DrawFoundation(TileInfo *ti, Foundation f) assert(f != FOUNDATION_STEEP_BOTH); uint sprite_block = 0; - int z; - Slope slope = GetFoundationPixelSlope(ti->tile, &z); + auto [slope, z] = GetFoundationPixelSlope(ti->tile); /* Select the needed block of foundations sprites * Block 0: Walls at NW and NE edge @@ -458,11 +452,11 @@ void DrawFoundation(TileInfo *ti, Foundation f) } Corner highest_corner = GetHighestSlopeCorner(ti->tileh); - ti->z += ApplyPixelFoundationToSlope(f, &ti->tileh); + ti->z += ApplyPixelFoundationToSlope(f, ti->tileh); if (IsInclinedFoundation(f)) { /* inclined foundation */ - byte inclined = highest_corner * 2 + (f == FOUNDATION_INCLINED_Y ? 1 : 0); + uint8_t inclined = highest_corner * 2 + (f == FOUNDATION_INCLINED_Y ? 1 : 0); AddSortableSpriteToDraw(inclined_base + inclined, PAL_NONE, ti->x, ti->y, f == FOUNDATION_INCLINED_X ? TILE_SIZE : 1, @@ -517,7 +511,7 @@ void DrawFoundation(TileInfo *ti, Foundation f) OffsetGroundSprite(0, 0); } else { /* inclined foundation */ - byte inclined = GetHighestSlopeCorner(ti->tileh) * 2 + (f == FOUNDATION_INCLINED_Y ? 1 : 0); + uint8_t inclined = GetHighestSlopeCorner(ti->tileh) * 2 + (f == FOUNDATION_INCLINED_Y ? 1 : 0); AddSortableSpriteToDraw(inclined_base + inclined, PAL_NONE, ti->x, ti->y, f == FOUNDATION_INCLINED_X ? TILE_SIZE : 1, @@ -526,7 +520,7 @@ void DrawFoundation(TileInfo *ti, Foundation f) ); OffsetGroundSprite(0, 0); } - ti->z += ApplyPixelFoundationToSlope(f, &ti->tileh); + ti->z += ApplyPixelFoundationToSlope(f, ti->tileh); } } @@ -589,7 +583,7 @@ bool IsSnowLineSet() * @param table the 12 * 32 byte table containing the snowline for each day * @ingroup SnowLineGroup */ -void SetSnowLine(byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]) +void SetSnowLine(uint8_t table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]) { _snow_line = CallocT(1); _snow_line->lowest_value = 0xFF; @@ -608,7 +602,7 @@ void SetSnowLine(byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]) * @return the snow line height. * @ingroup SnowLineGroup */ -byte GetSnowLine() +uint8_t GetSnowLine() { if (_snow_line == nullptr) return _settings_game.game_creation.snow_line_height; @@ -621,7 +615,7 @@ byte GetSnowLine() * @return the highest snow line height. * @ingroup SnowLineGroup */ -byte HighestSnowLine() +uint8_t HighestSnowLine() { return _snow_line == nullptr ? _settings_game.game_creation.snow_line_height : _snow_line->highest_value; } @@ -631,7 +625,7 @@ byte HighestSnowLine() * @return the lowest snow line height. * @ingroup SnowLineGroup */ -byte LowestSnowLine() +uint8_t LowestSnowLine() { return _snow_line == nullptr ? _settings_game.game_creation.snow_line_height : _snow_line->lowest_value; } @@ -687,7 +681,16 @@ CommandCost CmdLandscapeClear(DoCommandFlag flags, TileIndex tile) if (flags & DC_EXEC) { if (c != nullptr) c->clear_limit -= 1 << 16; - if (do_clear) DoClearSquare(tile); + if (do_clear) { + if (IsWaterTile(tile) && IsCanal(tile)) { + Owner owner = GetTileOwner(tile); + if (Company::IsValidID(owner)) { + Company::Get(owner)->infrastructure.water--; + DirtyCompanyInfrastructureWindows(owner); + } + } + DoClearSquare(tile); + } } return cost; } @@ -812,8 +815,8 @@ void InitializeLandscape() for (uint y = 0; y < Map::SizeY(); y++) MakeVoid(TileXY(Map::MaxX(), y)); } -static const byte _genterrain_tbl_1[5] = { 10, 22, 33, 37, 4 }; -static const byte _genterrain_tbl_2[5] = { 0, 0, 0, 0, 33 }; +static const uint8_t _genterrain_tbl_1[5] = { 10, 22, 33, 37, 4 }; +static const uint8_t _genterrain_tbl_2[5] = { 0, 0, 0, 0, 33 }; static void GenerateTerrain(int type, uint flag) { @@ -837,7 +840,7 @@ static void GenerateTerrain(int type, uint flag) if (DiagDirToAxis(direction) == AXIS_Y) Swap(w, h); - const byte *p = templ->data; + const uint8_t *p = templ->data; if ((flag & 4) != 0) { /* This is only executed in secondary/tertiary loops to generate the terrain for arctic and tropic. @@ -940,19 +943,17 @@ static void GenerateTerrain(int type, uint flag) static void CreateDesertOrRainForest(uint desert_tropic_line) { uint update_freq = Map::Size() / 4; - const TileIndexDiffC *data; for (TileIndex tile = 0; tile != Map::Size(); ++tile) { if ((tile.base() % update_freq) == 0) IncreaseGeneratingWorldProgress(GWP_LANDSCAPE); if (!IsValidTile(tile)) continue; - for (data = _make_desert_or_rainforest_data; - data != endof(_make_desert_or_rainforest_data); ++data) { - TileIndex t = AddTileIndexDiffCWrap(tile, *data); - if (t != INVALID_TILE && (TileHeight(t) >= desert_tropic_line || IsTileType(t, MP_WATER))) break; - } - if (data == endof(_make_desert_or_rainforest_data)) { + auto allows_desert = [tile, desert_tropic_line](auto &offset) { + TileIndex t = AddTileIndexDiffCWrap(tile, offset); + return t == INVALID_TILE || (TileHeight(t) < desert_tropic_line && !IsTileType(t, MP_WATER)); + }; + if (std::all_of(std::begin(_make_desert_or_rainforest_data), std::end(_make_desert_or_rainforest_data), allows_desert)) { SetTropicZone(tile, TROPICZONE_DESERT); } } @@ -968,12 +969,11 @@ static void CreateDesertOrRainForest(uint desert_tropic_line) if (!IsValidTile(tile)) continue; - for (data = _make_desert_or_rainforest_data; - data != endof(_make_desert_or_rainforest_data); ++data) { - TileIndex t = AddTileIndexDiffCWrap(tile, *data); - if (t != INVALID_TILE && IsTileType(t, MP_CLEAR) && IsClearGround(t, CLEAR_DESERT)) break; - } - if (data == endof(_make_desert_or_rainforest_data)) { + auto allows_rainforest = [tile](auto &offset) { + TileIndex t = AddTileIndexDiffCWrap(tile, offset); + return t == INVALID_TILE || !IsTileType(t, MP_CLEAR) || !IsClearGround(t, CLEAR_DESERT); + }; + if (std::all_of(std::begin(_make_desert_or_rainforest_data), std::end(_make_desert_or_rainforest_data), allows_rainforest)) { SetTropicZone(tile, TROPICZONE_RAINFOREST); } } @@ -1194,10 +1194,8 @@ static bool FlowsDown(TileIndex begin, TileIndex end) { assert(DistanceManhattan(begin, end) == 1); - int heightBegin; - int heightEnd; - Slope slopeBegin = GetTileSlope(begin, &heightBegin); - Slope slopeEnd = GetTileSlope(end, &heightEnd); + auto [slopeBegin, heightBegin] = GetTileSlopeZ(begin); + auto [slopeEnd, heightEnd] = GetTileSlopeZ(end); return heightEnd <= heightBegin && /* Slope either is inclined or flat; rivers don't support other slopes. */ @@ -1213,48 +1211,48 @@ struct River_UserData { }; /* AyStar callback for checking whether we reached our destination. */ -static int32_t River_EndNodeCheck(const AyStar *aystar, const OpenListNode *current) +static int32_t River_EndNodeCheck(const AyStar *aystar, const PathNode *current) { - return current->path.node.tile == *(TileIndex*)aystar->user_target ? AYSTAR_FOUND_END_NODE : AYSTAR_DONE; + return current->GetTile() == *(TileIndex*)aystar->user_target ? AYSTAR_FOUND_END_NODE : AYSTAR_DONE; } /* AyStar callback for getting the cost of the current node. */ -static int32_t River_CalculateG(AyStar *, AyStarNode *, OpenListNode *) +static int32_t River_CalculateG(AyStar *, AyStarNode *, PathNode *) { return 1 + RandomRange(_settings_game.game_creation.river_route_random); } /* AyStar callback for getting the estimated cost to the destination. */ -static int32_t River_CalculateH(AyStar *aystar, AyStarNode *current, OpenListNode *) +static int32_t River_CalculateH(AyStar *aystar, AyStarNode *current, PathNode *) { - return DistanceManhattan(*(TileIndex*)aystar->user_target, current->tile); + return DistanceManhattan(*(TileIndex*)aystar->user_target, current->m_tile); } /* AyStar callback for getting the neighbouring nodes of the given node. */ -static void River_GetNeighbours(AyStar *aystar, OpenListNode *current) +static void River_GetNeighbours(AyStar *aystar, PathNode *current) { - TileIndex tile = current->path.node.tile; + TileIndex tile = current->GetTile(); - aystar->num_neighbours = 0; + aystar->neighbours.clear(); for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) { TileIndex t2 = tile + TileOffsByDiagDir(d); if (IsValidTile(t2) && FlowsDown(tile, t2)) { - aystar->neighbours[aystar->num_neighbours].tile = t2; - aystar->neighbours[aystar->num_neighbours].direction = INVALID_TRACKDIR; - aystar->num_neighbours++; + auto &neighbour = aystar->neighbours.emplace_back(); + neighbour.m_tile = t2; + neighbour.m_td = INVALID_TRACKDIR; } } } /* AyStar callback when an route has been found. */ -static void River_FoundEndNode(AyStar *aystar, OpenListNode *current) +static void River_FoundEndNode(AyStar *aystar, PathNode *current) { River_UserData *data = (River_UserData *)aystar->user_data; /* First, build the river without worrying about its width. */ uint cur_pos = 0; - for (PathNode *path = ¤t->path; path != nullptr; path = path->parent, cur_pos++) { - TileIndex tile = path->node.tile; + for (PathNode *path = current->m_parent; path != nullptr; path = path->m_parent, cur_pos++) { + TileIndex tile = path->GetTile(); if (!IsWaterTile(tile)) { MakeRiverAndModifyDesertZoneAround(tile); } @@ -1269,30 +1267,18 @@ static void River_FoundEndNode(AyStar *aystar, OpenListNode *current) uint radius; cur_pos = 0; - for (PathNode *path = ¤t->path; path != nullptr; path = path->parent, cur_pos++) { - TileIndex tile = path->node.tile; + for (PathNode *path = current->m_parent; path != nullptr; path = path->m_parent, cur_pos++) { + TileIndex tile = path->GetTile(); /* Check if we should widen river depending on how far we are away from the source. */ current_river_length = DistanceManhattan(data->spring, tile); radius = std::min(3u, (current_river_length / (long_river_length / 3u)) + 1u); - if (radius > 1) CircularTileSearch(&tile, radius, RiverMakeWider, (void *)&path->node.tile); + if (radius > 1) CircularTileSearch(&tile, radius, RiverMakeWider, (void *)&path->m_key.m_tile); } } } -static const uint RIVER_HASH_SIZE = 8; ///< The number of bits the hash for river finding should have. - -/** - * Simple hash function for river tiles to be used by AyStar. - * @param tile The tile to hash. - * @return The hash for the tile. - */ -static uint River_Hash(TileIndex tile, Trackdir) -{ - return GB(TileHash(TileX(tile), TileY(tile)), 0, RIVER_HASH_SIZE); -} - /** * Actually build the river between the begin and end tiles using AyStar. * @param begin The begin of the river. @@ -1313,14 +1299,11 @@ static void BuildRiver(TileIndex begin, TileIndex end, TileIndex spring, bool ma finder.user_target = &end; finder.user_data = &user_data; - finder.Init(River_Hash, 1 << RIVER_HASH_SIZE); - AyStarNode start; - start.tile = begin; - start.direction = INVALID_TRACKDIR; + start.m_tile = begin; + start.m_td = INVALID_TRACKDIR; finder.AddStartNode(&start, 0); finder.Main(); - finder.Free(); } /** @@ -1559,7 +1542,7 @@ static uint8_t CalculateDesertLine() return CalculateCoverageLine(100 - _settings_game.game_creation.desert_coverage, 4); } -bool GenerateLandscape(byte mode) +bool GenerateLandscape(uint8_t mode) { /** Number of steps of landscape generation */ enum GenLandscapeSteps { diff --git a/src/landscape.h b/src/landscape.h index 249dcc9efa..98221c5019 100644 --- a/src/landscape.h +++ b/src/landscape.h @@ -21,25 +21,25 @@ static const uint SNOW_LINE_DAYS = 32; ///< Number of days in each month in th * @ingroup SnowLineGroup */ struct SnowLine { - byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]; ///< Height of the snow line each day of the year - byte highest_value; ///< Highest snow line of the year - byte lowest_value; ///< Lowest snow line of the year + uint8_t table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]; ///< Height of the snow line each day of the year + uint8_t highest_value; ///< Highest snow line of the year + uint8_t lowest_value; ///< Lowest snow line of the year }; bool IsSnowLineSet(); -void SetSnowLine(byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]); -byte GetSnowLine(); -byte HighestSnowLine(); -byte LowestSnowLine(); +void SetSnowLine(uint8_t table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]); +uint8_t GetSnowLine(); +uint8_t HighestSnowLine(); +uint8_t LowestSnowLine(); void ClearSnowLine(); int GetSlopeZInCorner(Slope tileh, Corner corner); -Slope GetFoundationSlope(TileIndex tile, int *z = nullptr); +std::tuple GetFoundationSlope(TileIndex tile); uint GetPartialPixelZ(int x, int y, Slope corners); int GetSlopePixelZ(int x, int y, bool ground_vehicle = false); int GetSlopePixelZOutsideMap(int x, int y); -void GetSlopePixelZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2); +void GetSlopePixelZOnEdge(Slope tileh, DiagDirection edge, int &z1, int &z2); /** * Determine the Z height of a corner relative to TileZ. @@ -60,15 +60,12 @@ inline int GetSlopePixelZInCorner(Slope tileh, Corner corner) * If a tile does not have a foundation, the function returns the same as GetTilePixelSlope. * * @param tile The tile of interest. - * @param z returns the z of the foundation slope. (Can be nullptr, if not needed) - * @return The slope on top of the foundation. + * @return The slope on top of the foundation and the z of the foundation. */ -inline Slope GetFoundationPixelSlope(TileIndex tile, int *z) +inline std::tuple GetFoundationPixelSlope(TileIndex tile) { - assert(z != nullptr); - Slope s = GetFoundationSlope(tile, z); - *z *= TILE_HEIGHT; - return s; + auto [s, z] = GetFoundationSlope(tile); + return {s, z * TILE_HEIGHT}; } /** @@ -82,8 +79,8 @@ inline Slope GetFoundationPixelSlope(TileIndex tile, int *z) inline Point RemapCoords(int x, int y, int z) { Point pt; - pt.x = (y - x) * 2 * ZOOM_LVL_BASE; - pt.y = (y + x - z) * ZOOM_LVL_BASE; + pt.x = (y - x) * 2 * ZOOM_BASE; + pt.y = (y + x - z) * ZOOM_BASE; return pt; } @@ -111,13 +108,13 @@ inline Point RemapCoords2(int x, int y) */ inline Point InverseRemapCoords(int x, int y) { - Point pt = {(y * 2 - x) >> (2 + ZOOM_LVL_SHIFT), (y * 2 + x) >> (2 + ZOOM_LVL_SHIFT)}; + Point pt = {(y * 2 - x) >> (2 + ZOOM_BASE_SHIFT), (y * 2 + x) >> (2 + ZOOM_BASE_SHIFT)}; return pt; } Point InverseRemapCoords2(int x, int y, bool clamp_to_map = false, bool *clamped = nullptr); -uint ApplyFoundationToSlope(Foundation f, Slope *s); +uint ApplyFoundationToSlope(Foundation f, Slope &s); /** * Applies a foundation to a slope. * @@ -126,7 +123,7 @@ uint ApplyFoundationToSlope(Foundation f, Slope *s); * @param s The #Slope to modify. * @return Increment to the tile Z coordinate. */ -inline uint ApplyPixelFoundationToSlope(Foundation f, Slope *s) +inline uint ApplyPixelFoundationToSlope(Foundation f, Slope &s) { return ApplyFoundationToSlope(f, s) * TILE_HEIGHT; } @@ -139,6 +136,6 @@ void DoClearSquare(TileIndex tile); void RunTileLoop(); void InitializeLandscape(); -bool GenerateLandscape(byte mode); +bool GenerateLandscape(uint8_t mode); #endif /* LANDSCAPE_H */ diff --git a/src/landscape_type.h b/src/landscape_type.h index 80b541bea4..81bed326e2 100644 --- a/src/landscape_type.h +++ b/src/landscape_type.h @@ -10,7 +10,7 @@ #ifndef LANDSCAPE_TYPE_H #define LANDSCAPE_TYPE_H -typedef byte LandscapeID; ///< Landscape type. @see LandscapeType +typedef uint8_t LandscapeID; ///< Landscape type. @see LandscapeType /** Landscape types */ enum LandscapeType { diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index a20d244ba9..d77af7790a 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -273,7 +273,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Deur hie STR_BUTTON_DEFAULT :{BLACK}Gewone STR_BUTTON_CANCEL :{BLACK}Kanselleer STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Waarskuwing: bedieneradministrateurs kan moontlik die teks wat hier ingevoer is, lees. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -388,6 +387,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Verlaat redigee STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Verlaat + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Spel opsies @@ -869,7 +869,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Geldeenh STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Geld eendheid keuse -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Britse Pond STR_GAME_OPTIONS_CURRENCY_USD :Amerikaanse Dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -953,6 +953,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Addision + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Kon nie 'n lys van beskikbare skermresolusies bepaal nie STR_ERROR_FULLSCREEN_FAILED :{WHITE}Volskerm metode gedop @@ -964,6 +965,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Verlaag STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Verhoog die hoeveelheid van jou koers vir een Pond (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Stel die wissel koers vir jou koers vir een Pond (£) + STR_CURRENCY_PREFIX :{LTBLUE}Voorvoegsel: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Stel die voorvoegsel teks vir jou koers STR_CURRENCY_SUFFIX :{LTBLUE}Agtervoegsel: {ORANGE}{STRING} @@ -1304,6 +1306,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Waarsku as 'n v ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :As dit geaktiveer is, word daar 'n nuus boodskap gestuur wanneer, in 'n kalenderjaar, 'n voertuig nie wins gemaak het nie. + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Voertuie verval nooit nie: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :As dit geaktiveer is, sal voertuig modelle altyd beskikbaar bly, na die bekendstelling daarvan @@ -1589,7 +1592,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standaard diens STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Kies die standaard diensskedule vir nuwe vliegtuie as geen diensskedule aangedui is nie STR_CONFIG_SETTING_SERVINT_SHIPS :Standaard diens interval vir bote: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Kies die standaard diensskedule vir nuwe skepe as geen diensskedule aangedui is nie -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}da{P g e}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Gedeaktiveer @@ -1854,17 +1858,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Vragverspreidin STR_CONFIG_SETTING_AI :Mededingers STR_CONFIG_SETTING_AI_NPC :Rekenaar spelers -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Padvinder vir treine: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pad speurder om vir teine te gebruik -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Padvinder vir pad voertuie: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pad speurder om vir pad vervoer te gebruik -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Padvinder vir skepe: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Pad speurder om vir skepe te gebruik STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Outomatiese rigting verandering op seine: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Laat treine toe om agteruit te gaan by signale, as hulle daar lank gewag het -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Aanbevole) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Verander stel waarde @@ -2134,7 +2129,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Maatskap STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Loskoppel STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Verskaffer is beskerm. Voer wagwoord in -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Maatskappy is beskerm. Voer wagwoord in # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Klient Lys @@ -2150,19 +2144,9 @@ STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Klient Lys STR_NETWORK_SPECTATORS :Aanskouers -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Moenie die ingesleutelde wagwoord bewaar nie -STR_COMPANY_PASSWORD_OK :{BLACK}Gee die maatskappy die nuwe wagwoord -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Maatskappy wagwoord -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Voorbepaalde maatskappy wagwoord -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Gebruik die maatskapy wagwoord as die standaard vir nuwe maatskappye - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Bind STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Bind en speel as maatskapy -STR_COMPANY_VIEW_PASSWORD :{BLACK}Wagwoord -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Beskerm maatskappy met wagwoord om te verhoed dat ongemagtigde spelers toegang verkry -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Stel maatskappy wagwoord # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Stuur @@ -2202,7 +2186,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Jou reke STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Moontlike verbinding verlore STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Die laaste {NUM} seconde{P "" s} geen data het van die bediener gekom nie -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :algemeen fout STR_NETWORK_ERROR_CLIENT_DESYNC :desync fout STR_NETWORK_ERROR_CLIENT_SAVEGAME :kan nie kaart laai nie @@ -2400,7 +2384,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Kies spo # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Roetebaken -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Kies tipe roetebaken # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Spoor Stasie Keuse @@ -2413,8 +2396,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Kies tre STR_STATION_BUILD_DRAG_DROP :{BLACK}Sleep & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bou 'n stasie gebruikend sleep & drop -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Kies 'n stasie klas om te vertoon -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Kies die stasie tipe om te bou + + + STR_STATION_CLASS_DFLT :Verstek stasie STR_STATION_CLASS_WAYP :Roetebakens @@ -2549,8 +2533,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Koop gro # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Voorwerp Keuse -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selekteer voorwerp om te bou. Shift skakel gebou/wys koste beraaming -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Kies klas van die voorwerp te bou STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Voorskou van 'n voorwerp STR_OBJECT_BUILD_SIZE :{BLACK}Grootte: {GOLD}{NUM} x {NUM} teels @@ -2650,7 +2632,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tremweg STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Spoorweg eienaar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Plaaslike raad: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Geen -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koördinate: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Gebou: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasie klas: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasie tiepe: {LTBLUE}{STRING} @@ -2912,9 +2893,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% k STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Wêreld generasie STR_GENERATION_RIVER_GENERATION :{BLACK}Rivier generasie -STR_GENERATION_TREE_GENERATION :{BLACK}Boom generasie -STR_GENERATION_OBJECT_GENERATION :{BLACK}Onbeweegbaar generasie STR_GENERATION_CLEARING_TILES :{BLACK}Ru en rotserig area generasie +STR_GENERATION_OBJECT_GENERATION :{BLACK}Onbeweegbaar generasie +STR_GENERATION_TREE_GENERATION :{BLACK}Boom generasie STR_GENERATION_SETTINGUP_GAME :{BLACK}Stel speletjie op STR_GENERATION_PREPARING_TILELOOP :{BLACK}Hardloop teël-herhaling STR_GENERATION_PREPARING_SCRIPT :{BLACK}Lopende skrif @@ -3002,7 +2983,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Spoor tipe STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF veranderlike 60+x parameter (heksadesimaal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Belyn sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Volgende sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Gaan na die volgende "sprite", Ignoreer enige pseudo/her-kleur/font "sprites" en spring terug na die begin STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gaan na sprite @@ -3110,7 +3090,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gaan na STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Tik 'n naam vir die teken in # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Dorpe STR_TOWN_DIRECTORY_NONE :{ORANGE}- Geen - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Stad){BLACK} ({COMMA}) @@ -3394,7 +3373,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stasiete STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lughawens # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Nywerhede STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Geen - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% vervoer){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4258,9 +4236,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Beraamde STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Stoor van speletjie is nog besig,{}wag asb tot dit klaar is! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Outostoor het misluk STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan nie skyf lees nie -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Speletjie Spaar Misluk{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan nie lêer uitvee nie -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Speletjie Laai Misluk{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne fout: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gebreekte gespaarde spel - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spaarspeletjie is gemaak met nuwer uitgawe @@ -4627,6 +4603,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Verander STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Geen voertuie is op die oomblik beskikbaar nie STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Begin na {DATE_SHORT} of gebruik 'n NewGRF wat voertuie vroeër beskikbaar stel + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan nie trein forseer om sein te vermy op gevaar... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan nie rigting van trein verander nie... @@ -5138,6 +5115,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 4a544f8057..1f6dda0dee 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -408,6 +408,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :خروج من STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :انهاء + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :إعدادات اللعبه @@ -884,7 +885,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}اختي STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :جنية STR_GAME_OPTIONS_CURRENCY_USD :دولار STR_GAME_OPTIONS_CURRENCY_EUR :يورو @@ -965,7 +966,6 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}اختر -STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GRAPHICS :{BLACK}الرسومات @@ -991,6 +991,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}معلو + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}فشل في استرداد قائمة الدقة المدعومة STR_ERROR_FULLSCREEN_FAILED :{WHITE}فشل تشغيل نمط الشاشة الكاملة @@ -1002,6 +1003,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK} £ قل STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK} £ زد قيمة عملتك لكل جنية استرليني STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK} حدد قيمة الصرف لعملتك مقابل الجنية الاسترليني (£) + STR_CURRENCY_PREFIX :{LTBLUE} علامة العملة السابقة: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK} حدد الرمز الاستهلالي لعملتك STR_CURRENCY_SUFFIX :{LTBLUE} علامة العملة الاخيرة: {ORANGE}{STRING} @@ -1275,6 +1277,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :حذر عندم ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :عند التمكين ، يتم إرسال رسالة إخبارية عندما لا تحقق السيارة أي ربح خلال سنة تقويمية واحدة + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :المركبات لا تنتهي صلاحيتها ابدا : {STRING} ###length 2 @@ -1512,6 +1515,8 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :فترات ال STR_CONFIG_SETTING_SERVINT_AIRCRAFT :مدة فحص الإفتراضي للطائرة: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS :مدة فحص الإفتراضي للسفن: {STRING} +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :غير مفعل @@ -1710,15 +1715,7 @@ STR_CONFIG_SETTING_AI :المتناف STR_CONFIG_SETTING_AI_NPC : لاعبين الحاسوب STR_CONFIG_SETTING_NETWORK :شبكة الاتصال -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :موجد الطريق- قصاص الطريق - للقطارات:{STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :موجد الطريق (قصاص الأثر) للعربات: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :مكتشف المسار لاستخدامه لعربات الطرق -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :موجد طريق العبور للسفن: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :مكتشف المسار لاستخدامه للسفن STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :العكس عند الإشارات: {STRING} -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(مفضل) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}عدل قيمة التغيير @@ -1987,7 +1984,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}جلب STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}فصل STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}الخادم محمى. من فضلك ادخل كلمه المرور -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}الشركه محميه. من فضلك ادخل كلمه المرور # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :اللاعبون عبر الإنترنت @@ -2011,26 +2007,15 @@ STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :منع STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}هل أنت متأكد أنك تريد طرد اللاعب '{STRING}'؟ STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}هل أنت متأكد أنك تريد حظر اللاعب '{STRING}'؟ STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}هل أنت متأكد أنك تريد حذف شركة '{COMPANY}'؟ -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}هل أنت متأكد أنك تريد محو كلمة السر الخاصة بالشركة '{COMPANY}'? STR_NETWORK_ASK_RELAY_NO :{BLACK}لا STR_NETWORK_SPECTATORS :المشاهدين -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}لا تحفظ كلمة المرور المدخلة -STR_COMPANY_PASSWORD_OK :{BLACK}اعط الشركة كلمة المرور الجديدة -STR_COMPANY_PASSWORD_CAPTION :{WHITE}كلمة مرور الشركة -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}كلمة مرور الشركة القياسية -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}استخدم كلمة مرور هذه الشركة كافتراضية للشركات الجديدة - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK} انضم STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK} انضم و العب بهذه الشركة -STR_COMPANY_VIEW_PASSWORD :{BLACK}كلمة المرور -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}احمي شركتك بكلمة مرور خاصة لمنع الوصول الغير مسموح من اللاعبين الآخرين. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}ادخل كلمة المرور # Network chat STR_NETWORK_CHAT_SEND :{BLACK}ارسل @@ -2069,7 +2054,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}اسم STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}احتمال فقد الاتصال STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}اخر {NUM} ثواني لم تصل بيانات من السيرفر -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :خطاء عام STR_NETWORK_ERROR_CLIENT_DESYNC :خطأ في DESYNC STR_NETWORK_ERROR_CLIENT_SAVEGAME :لايمكن تحميل الخريطة @@ -2266,7 +2251,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}اختر # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}نقطة عبور -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK} اختر نوع نقطة العبور # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}اختر محطة القطار @@ -2279,8 +2263,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}اختر STR_STATION_BUILD_DRAG_DROP :{BLACK}أسحب وأفلت STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}بناء محطة بطريقة السحب والإفلات -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK} اختر فئة المحطات لعرضها -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}أختر نوع المحطة لبنائها + + + STR_STATION_CLASS_DFLT :المحطة القياسية STR_STATION_CLASS_WAYP :نقطة عبور @@ -2415,8 +2400,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}شراء # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}اختيار الاجسام -STR_OBJECT_BUILD_TOOLTIP :{BLACK}اختر جسم لبنائة -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}اختر صنف الكائن للبناء STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}عرض الجسم STR_OBJECT_BUILD_SIZE :{BLACK}حجم: {GOLD}{NUM} x {NUM} مربع @@ -2525,7 +2508,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالك STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}مالك سكة الحديد: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}السلطة المحلية: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :فارغ -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}الأحداثيات: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}بني: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK} فئة المحطة: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}نوع المحطة: {LTBLUE}{STRING} @@ -2773,9 +2755,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK} مولد الخريطة STR_GENERATION_RIVER_GENERATION :{BLACK}مولد الانهار -STR_GENERATION_TREE_GENERATION :{BLACK} مولد الشجر -STR_GENERATION_OBJECT_GENERATION :{BLACK}صانع الخامات STR_GENERATION_CLEARING_TILES :{BLACK}مولد المناطق الخشنة والصخرية +STR_GENERATION_OBJECT_GENERATION :{BLACK}صانع الخامات +STR_GENERATION_TREE_GENERATION :{BLACK} مولد الشجر STR_GENERATION_SETTINGUP_GAME :{BLACK}تجهيز لعبة STR_GENERATION_PREPARING_TILELOOP :{BLACK} تشغيل المتكررة STR_GENERATION_PREPARING_GAME :{BLACK}يُجَهِز اللعبه @@ -2859,7 +2841,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :نوع سكة STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}متغير الاضافات الجديدة +60 * نمط (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}موائمة صورة العفريتة {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}العفريتة التالية STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}نابع للعفريتة الطبيعية التالية، تجاوز اي عفريتة موقوفة/ مصبوغة/مخطوطة و انهي المتاعة في النهاية. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}اذهب الى العفريتة @@ -2959,7 +2940,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}توجة STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}ادخل اسم العلامة # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}مدن/ بلدات STR_TOWN_DIRECTORY_NONE :{ORANGE}-بدون- STR_TOWN_DIRECTORY_TOWN :{ORANGE}{RLE}{TOWN}{BLACK} {RLM}({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{RLE}{TOWN}{YELLOW} (مدينة){BLACK} {RLM}({COMMA}) @@ -3225,7 +3205,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}مربع STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}المطارات # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}صناعات STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}-بدون- STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING} @@ -4058,9 +4037,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}الدخ STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}الحفظ مازال جاريا الآن{}الرجاء الأنتظار حتر ينتهي STR_ERROR_AUTOSAVE_FAILED :{WHITE}فشل الحفظ التلقائي STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}لا يمكن قرائة القرص -STR_ERROR_GAME_SAVE_FAILED :{WHITE}فشل حفظ اللعبة{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}لا يمكن حذف الملف -STR_ERROR_GAME_LOAD_FAILED :{WHITE}فشل فتح اللعبة{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :خطأ داخلي: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :لعبه محفوظه غير صالحه - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :اللعبة حفظت بنسخة أحدث @@ -4421,6 +4398,7 @@ STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}... لي STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}لن تتوافر اى وسائل نقل على اﻹطلاق STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}لا تتوافر اى آليه نقل بعد + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}لا يمكن السماح للقطار بالعبور من الاشارة في وضع الخطر STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}لا يمكن عكس اتجاة القطار... @@ -4933,6 +4911,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 1d7afb8268..f78e8dd9df 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -93,7 +93,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Edari Burbuilat # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}bidaiari{P "" ak} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}bidaiari STR_QUANTITY_COAL :{WEIGHT_LONG} ikatz STR_QUANTITY_MAIL :{COMMA}{NBSP}posta zaku STR_QUANTITY_OIL :{VOLUME_LONG} petroleo @@ -162,23 +162,23 @@ STR_ABBREV_FIZZY_DRINKS :EB STR_ABBREV_ALL :DEN # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA}{NBSP}bidaiari{P "" ak} -STR_BAGS :{COMMA}{NBSP}zaku{P "" ak} -STR_TONS :{COMMA}{NBSP}tona{P "" k} -STR_LITERS :{COMMA}{NBSP}litro{P "" ak} -STR_ITEMS :{COMMA}{NBSP}objektu{P "" ak} -STR_CRATES :{COMMA}{NBSP}kaxa{P "" k} +STR_PASSENGERS :{COMMA}{NBSP}bidaiari +STR_BAGS :{COMMA}{NBSP}zaku +STR_TONS :{COMMA}{NBSP}tona +STR_LITERS :{COMMA}{NBSP}litro +STR_ITEMS :{COMMA}{NBSP}objektu +STR_CRATES :{COMMA}{NBSP}kaxa STR_COLOUR_DEFAULT :Lehenetsia ###length 17 -STR_COLOUR_DARK_BLUE :Urdin Iluna -STR_COLOUR_PALE_GREEN :Berde Zurbila +STR_COLOUR_DARK_BLUE :Urdin iluna +STR_COLOUR_PALE_GREEN :Berde zurbila STR_COLOUR_PINK :Larrosa STR_COLOUR_YELLOW :Horia STR_COLOUR_RED :Gorria -STR_COLOUR_LIGHT_BLUE :Urdin Argia +STR_COLOUR_LIGHT_BLUE :Urdin argia STR_COLOUR_GREEN :Berdea -STR_COLOUR_DARK_GREEN :Berde Iluna +STR_COLOUR_DARK_GREEN :Berde iluna STR_COLOUR_BLUE :Urdina STR_COLOUR_CREAM :Krema STR_COLOUR_MAUVE :Malba @@ -205,16 +205,16 @@ STR_UNITS_WEIGHT_SHORT_IMPERIAL :{DECIMAL}{NBSP} STR_UNITS_WEIGHT_SHORT_METRIC :{DECIMAL}{NBSP}t STR_UNITS_WEIGHT_SHORT_SI :{DECIMAL}{NBSP}kg -STR_UNITS_WEIGHT_LONG_IMPERIAL :{DECIMAL}{NBSP}tona{P "" k} -STR_UNITS_WEIGHT_LONG_METRIC :{DECIMAL}{NBSP}tona{P "" k} +STR_UNITS_WEIGHT_LONG_IMPERIAL :{DECIMAL}{NBSP}tona +STR_UNITS_WEIGHT_LONG_METRIC :{DECIMAL}{NBSP}tona STR_UNITS_WEIGHT_LONG_SI :{DECIMAL}{NBSP}kg STR_UNITS_VOLUME_SHORT_IMPERIAL :{DECIMAL}{NBSP}gal STR_UNITS_VOLUME_SHORT_METRIC :{DECIMAL}{NBSP}l STR_UNITS_VOLUME_SHORT_SI :{DECIMAL}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{DECIMAL}{NBSP}galoi{P "" ak} -STR_UNITS_VOLUME_LONG_METRIC :{DECIMAL}{NBSP}litro{P "" ak} +STR_UNITS_VOLUME_LONG_IMPERIAL :{DECIMAL}{NBSP}galoi +STR_UNITS_VOLUME_LONG_METRIC :{DECIMAL}{NBSP}litro STR_UNITS_VOLUME_LONG_SI :{DECIMAL}{NBSP}m³ STR_UNITS_FORCE_IMPERIAL :{DECIMAL}{NBSP}lbf @@ -230,9 +230,9 @@ STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP} # Common window strings -STR_LIST_FILTER_TITLE :{BLACK}Lokarri iragazkia: -STR_LIST_FILTER_OSKTITLE :{BLACK}Sartu lokarri iragazkia -STR_LIST_FILTER_TOOLTIP :{BLACK}Sartu hitz bat iragazkian zerrendan aurkitzeko +STR_LIST_FILTER_TITLE :{BLACK}Iragazi: +STR_LIST_FILTER_OSKTITLE :{BLACK}Idatzi hitzen bat zerrenda iragazteko +STR_LIST_FILTER_TOOLTIP :{BLACK}Idatzi hitzen bat zerrenda iragazteko STR_TOOLTIP_GROUP_ORDER :{BLACK}Aukeratu taldekatzeko ordena STR_TOOLTIP_SORT_ORDER :{BLACK}Hautatu agertze ordena (deszendientea/aszendientea) @@ -240,7 +240,7 @@ STR_TOOLTIP_SORT_CRITERIA :{BLACK}Aukeratu STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Aukeratu iragazki irizpideak STR_BUTTON_SORT_BY :{BLACK}Ordenatu -STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Lehioa itxi +STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Itxi leihoa STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Leiho izena - Arrastatu hau leihoa mugitzeko STR_TOOLTIP_SHADE :{BLACK}Itzal leihoa - titulu barra bakarrik ikusten da STR_TOOLTIP_DEBUG :{BLACK}NewGRF garbiketa informazioa ikusi @@ -253,14 +253,14 @@ STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Eraikina # Show engines button ###length VEHICLE_TYPES -STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Ezkutuak erakutsi -STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Ezkutuak erakutsi -STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Ezkutuak erakutsi -STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Ezkutuak erakutsi +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Erakutsi ezkutukoak +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Erakutsi ezkutukoak +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Erakutsi ezkutukoak +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Erakutsi ezkutukoak ###length VEHICLE_TYPES -STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Botoi hau gaituz, ezkutuak dauden trenak erakusten dira -STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Botoi hau gaituz, ezkutuko itsasontziak ere erakusten dira +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Botoi hau sakatuz, ezkutuko trenak erakusten dira +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Botoi hau sakatuz, ezkutuko itsasontziak ere erakusten dira # Query window STR_BUTTON_DEFAULT :{BLACK}Lehenetsia @@ -275,7 +275,7 @@ STR_OSK_KEYBOARD_LAYOUT_CAPS :ª!"·$%&/()=? STR_MEASURE_LENGTH :{BLACK}Luzera: {NUM} STR_MEASURE_AREA :{BLACK}Area: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Luzera: {NUM}{}Garaiera diferentzia: {HEIGHT} -STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {NUM} x {NUM}{}Goratasun diferentzia: {HEIGHT} +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {NUM} x {NUM}{}Garaiera diferentzia: {HEIGHT} # These are used in buttons @@ -321,11 +321,11 @@ STR_SORT_BY_RATING :Balorazioa # Tooltips for the main toolbar ###length 31 -STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Jokoa pausatu -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Jokoa bizkortu +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausatu jokoa +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Bizkortu jokoa STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Ezarpenak -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Jokoa gorde, joko honetatik irten, jokotik irten -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Erakutsi mapa, ikuspegi extra edo kartelen zerrenda +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Gorde, kargatu edo utzi jokoa, irten programatik +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Mapa, ikuspegi gehigarria, zama-mugimenduak edo kartelen zerrenda ikusi STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Erakutsi herri zerrenda STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Subsidioak erakutsi STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Erakutsi konpainien geltokien zerrenda @@ -377,6 +377,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Eszenario edito STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Irten + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Jokoaren aukerak @@ -395,7 +396,7 @@ STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Geltoki errotul # File menu STR_FILE_MENU_SAVE_GAME :Jokoa gorde -STR_FILE_MENU_LOAD_GAME :Jokoa kargatu +STR_FILE_MENU_LOAD_GAME :Kargatu joko bat STR_FILE_MENU_QUIT_GAME :Jokoa utzi STR_FILE_MENU_EXIT :Irten @@ -845,7 +846,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Diru uni STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Diru unitatearen aukeraketa -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Libra STR_GAME_OPTIONS_CURRENCY_USD :Dolar Amerikarrak STR_GAME_OPTIONS_CURRENCY_EUR :Euroa @@ -924,6 +925,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Musika p + STR_ERROR_FULLSCREEN_FAILED :{WHITE}Pantaila osoko moduak huts egin du # Custom currency window @@ -934,6 +936,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zure dib STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zure dibisaren balioa libra (£) bat igo STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Zure dibisaren balioa trukatzerakoan libra (£) batetan jarri + STR_CURRENCY_PREFIX :{LTBLUE}Aurrizkia: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Zure dibisaren sinboloa finkatu STR_CURRENCY_SUFFIX :{LTBLUE}Atzizkia: {ORANGE}{STRING} @@ -1260,6 +1263,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Ohartarazi ibil ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Gaitua dagoenean, mezu bidez urte oso batean irabazirik lortu ez dituzten ibilgailuez ohartaraziko da + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Ibilgailuei inoiz ez zaie epea amaitzen: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Gaitua dagoenean, ibilgailu modelo ezberdinak betirako egongo dira erabilgarri @@ -1521,7 +1525,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Hegazkinen mant STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Ezarri hegazkin berrientzako lehenetsiko diren mantenimendu denbora tarteak, ez bada ezartzen denbora tarte esplizituak ezarriko dira STR_CONFIG_SETTING_SERVINT_SHIPS :Itsaontzien mantenimendurako lehenetsitako denbora tarteak: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Ezarri itsasontzi berrientzako lehenetsiko diren mantenimendu denbora tarteak, ez bada ezartzen denbora tarte esplizituak ezarriko dira -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}egun{P 0 "" ak}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Desgaitua @@ -1744,17 +1749,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Zama banaketa STR_CONFIG_SETTING_AI :Lehiakideak STR_CONFIG_SETTING_AI_NPC :Ordenagailu jokalariak -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Trenen ibilbide bilatzailea: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Trenek erabiliko duten ibilbide bilatzailea -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Errepide ibilgailuen ibilbide bilatzailea: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Errepide ibilgailuek erabiliko duten ibilbide bilatzailea -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Itsasontzien ibilbide bilatzailea: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Itsasontziek erabiliko duten ibilbide bilatzailea STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Seinaletan automatikoki buelta ematea: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Trenak seinaleetan buelta ematea baimendu, denbora luzez itxaroten ari badira -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Gomendatua) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Ezarpenaren balioa aldatu @@ -1782,8 +1778,8 @@ STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memoriaz # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} -STR_INTRO_NEW_GAME :{BLACK}Joko Berria -STR_INTRO_LOAD_GAME :{BLACK}Jokoa Kargatu +STR_INTRO_NEW_GAME :{BLACK}Joko berria +STR_INTRO_LOAD_GAME :{BLACK}Kargatu joko bat STR_INTRO_PLAY_SCENARIO :{BLACK}Eszenarioa Jokatu STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Garaiera mapa jokatu STR_INTRO_SCENARIO_EDITOR :{BLACK}Eszenario Editorea @@ -1794,6 +1790,7 @@ STR_INTRO_HIGHSCORE :{BLACK}Puntuazi STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Ezarpenak STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-ren Ezarpenak STR_INTRO_ONLINE_CONTENT :{BLACK}Edukiak Online Kontsultatu +STR_INTRO_AI_SETTINGS :{BLACK}AAren ezarpenak STR_INTRO_QUIT :{BLACK}Irten STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Joko berria hasi. Krtl+klik mapa konfigurazioa desgaitzen du @@ -2020,7 +2017,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Konpaini STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Deskonektatua STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Zerbitzaria babestua dago. Pasahitza sartu -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Konpainia babestua dago. Pasahitza sartu # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Bezero zerrenda @@ -2036,19 +2032,9 @@ STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Bezero zerrenda STR_NETWORK_SPECTATORS :Ikusleak -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ez gorde sartutako pasahitza -STR_COMPANY_PASSWORD_OK :{BLACK}Konpainiari pasahitz berria ezarri -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Konpainiaren pasahitza -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Konpainiaren pasahitz lehenetsia -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Konpainia pasahitz hau kopainia berrientzako lehenetsi - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Sartu STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Sartu eta konpainia honekin jokatu -STR_COMPANY_VIEW_PASSWORD :{BLACK}Pasahitza -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Pasahitzak zure konpainia babestuko du ez baimendutako bezeroetaz -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Konpainia pasahitza ezarri # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Bidali @@ -2087,7 +2073,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Zure ord STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Konexio galera posiblea STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Azkeneko {NUM} segunduetan ez da zerbitzaritik daturik jaso -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :Akats orokorra STR_NETWORK_ERROR_CLIENT_DESYNC :Sinkronizazio akatsa STR_NETWORK_ERROR_CLIENT_SAVEGAME :Ezin izan da mapa kargatu @@ -2278,7 +2264,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Tren gor # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Bidepuntua -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Bidepuntu mota aukeratu # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Tren geltokiak aukeratu @@ -2291,8 +2276,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Geltokia STR_STATION_BUILD_DRAG_DROP :{BLACK}Arrastratzerakoan eraiki STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Geltokia eraiki arrastratzerakoan -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Eraikiko den geltoki mota -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Eraikiko den geltoki mota + + + STR_STATION_CLASS_DFLT :Geltoki lehenetsia STR_STATION_CLASS_WAYP :Bidepuntuak @@ -2423,8 +2409,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Lur sail # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektu hautaketa -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Aukeratu objektua eraikitzeko. Mayus eraikinaren kostuen estimazioa aktibatzen du -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Hautatu objektu klase bat eraikitzeko STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objektua aurreikusi STR_OBJECT_BUILD_SIZE :{BLACK}Tamainua: {GOLD}{NUM} x {NUM} karratu @@ -2524,7 +2508,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tranbia STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Trenbidearen jabea: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Udaletxea {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ezer ez -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordenadak: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Eraikia: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Geltoki mota: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Geltoki mota: {LTBLUE}{STRING} @@ -2751,9 +2734,9 @@ STR_GENERATION_PROGRESS :{WHITE} %{NUM} STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Mundua sortu STR_GENERATION_RIVER_GENERATION :{BLACK}Erreka sorkuntza -STR_GENERATION_TREE_GENERATION :{BLACK} Zuhaitzak sortu -STR_GENERATION_OBJECT_GENERATION :{BLACK}Objektu sorkuntza STR_GENERATION_CLEARING_TILES :{BLACK}Eremu zakarra eta haitzez beteta sortu +STR_GENERATION_OBJECT_GENERATION :{BLACK}Objektu sorkuntza +STR_GENERATION_TREE_GENERATION :{BLACK} Zuhaitzak sortu STR_GENERATION_SETTINGUP_GAME :{BLACK}Jokoaren ezarpenak STR_GENERATION_PREPARING_TILELOOP :{BLACK}Lauki buelta abiarazten STR_GENERATION_PREPARING_SCRIPT :{BLACK}Scripta abiarazten @@ -2830,7 +2813,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Trenbide mota STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF aldagaia 60+x parametroetan (hexadecimala) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}"Sprit"-a lerrokatu {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Urrengo "sprit"-a STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Hurrengo grafiko arrunta erabili, pseudo/birkoloretu/grafiko tipoak desgaituz STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Joan "sprit"-era @@ -2937,7 +2919,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Joan aur STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Seinalearen izena sartu # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Herriak STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ezer ez - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Herri izenak - Klikatu izenean lehio nagusia bertan zentratzeko. Ktrl+Klik ikuspegi lehio berria irekiko du @@ -3212,7 +3193,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Geltoki STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aireportuak # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Idustriak STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ezer ez - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industria izenak - Klikatu izenean ikuspegi nagusia industrian kokatzeko. Ktrl+Klik ikuspegi lehio berri bat irekitzen du industriaren kokapenarekin @@ -3293,6 +3273,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Ibilgailu guzti STR_GROUP_RENAME_CAPTION :{BLACK}Taldea berrizendatu +STR_GROUP_PROFIT_THIS_YEAR :Aurtengo irabaziak: # Build vehicle window ###length 4 @@ -3910,7 +3891,7 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Urtea au STR_AI_DEBUG :{WHITE}IA/Joko Script Garbitzailea STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Script-aren izena -STR_AI_DEBUG_SETTINGS :{BLACK}IA-ren Ezarpenak +STR_AI_DEBUG_SETTINGS :{BLACK}AAren ezarpenak STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}IA-ren hautaketak aldatu STR_AI_DEBUG_RELOAD :{BLACK}IA birkargatu STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}IA kendu, script-a birkargatu, eta IA berrabiarazi @@ -4014,9 +3995,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Gutxi go STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Oraindik artxiboa gordetzen,{}mesedez itxaron amaitu arte! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Gordetze automatikoak huts egin du STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ezin izan da driverra irakurri -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Jokoa gordetzeak huts egin du{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ezin izan da artxiboa ezabatu -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Jokoa kargatzeak huts egin du{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Barne akatsa: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gordetako jokoa hautsia dago - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Gordetako jokoa bertsio berriago batekin egin da @@ -4372,6 +4351,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ez da ib STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Aldatu zure NewGRF konfigurazioa STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ez dago ibilgailu erabilgarririk oraindik + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ezin da trena seinalea pasatzera behartu, istripu arriskua... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ezin da trenaren norabidea aldatu... @@ -4878,6 +4858,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index bda848aa30..5079a67297 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -581,8 +581,8 @@ STR_UNITS_PERIODS :{NUM}{NBSP}цы # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Фільтар: -STR_LIST_FILTER_OSKTITLE :{BLACK}Увядзіце радок фільтра -STR_LIST_FILTER_TOOLTIP :{BLACK}Увядзіце ключавое слова для фільтрацыі сьпісу +STR_LIST_FILTER_OSKTITLE :{BLACK}Увядзіце ключавыя словы для фільтраваньня сьпісу +STR_LIST_FILTER_TOOLTIP :{BLACK}Увядзіце ключавыя словы для фільтраваньня сьпісу STR_TOOLTIP_GROUP_ORDER :{BLACK}Выбар парадку групоўкі STR_TOOLTIP_SORT_ORDER :{BLACK}Зьмена напрамку сартаваньня (зьмяньшэньне / ўзрастаньне) @@ -621,7 +621,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Калі STR_BUTTON_DEFAULT :{BLACK}Па змоўчаньнi STR_BUTTON_CANCEL :{BLACK}Скасаваць STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Увага: адміністратары сервера могуць убачыць ваш пароль. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -751,6 +750,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Выйсьці STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Выхад + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Наладкі гульні @@ -922,7 +922,7 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Ґраф STR_GRAPH_INCOME_CAPTION :{WHITE}Ґрафік даходу STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Колькасьць перавезеных грузаў STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Рэйтынґ кампаніі (макс. = 1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Вартасьць кампаніі +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Ґрафік змены вартасьці кампаніі STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Апошнія 72 хвіліны @@ -1270,18 +1270,13 @@ STR_GAME_OPTIONS_VOLUME :Гучнасц STR_GAME_OPTIONS_SFX_VOLUME :Гукавыя эфекты STR_GAME_OPTIONS_MUSIC_VOLUME :Музыка -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Валюта STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Выбар валюты STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Брытанскі фунт STR_GAME_OPTIONS_CURRENCY_USD :Даляр ЗША STR_GAME_OPTIONS_CURRENCY_EUR :Эўра @@ -1371,11 +1366,6 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Паст STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Згладжваньне шрыфтоў STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Пастаўце адзнаку, каб уключыць згладжваньне маштабуемых шрыфтоў -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Аўтаматычны збор дадзеных STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Дазволіць збор і адпраўку дадзеных @@ -1404,6 +1394,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}База STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Выберыце базавы музычны набор для выкарыстаньня STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Дадатковая інфармацыя аб базавым музычным наборы + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(модулі ўзаемадзеяньня з сацыяльнымі платформамі не ўсталяваны) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1431,6 +1422,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Падв STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Зьнізіць курс вашае валюты ў адносінах да фунта (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Усталяваць курс вашае валюты ў адносінах да фунта (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Падзельнік: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Усталяваць падзельнік для вашае валюты + STR_CURRENCY_PREFIX :{LTBLUE}Прэфікс: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Усталяваць прэфікс для вашае валюты STR_CURRENCY_SUFFIX :{LTBLUE}Суфікс: {ORANGE}{STRING} @@ -1618,7 +1612,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Выдаткі STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Усталюйце ўзровень выдаткаў на будаўніцтва й набыцьцё STR_CONFIG_SETTING_RECESSIONS :Спады: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Калі ўключана, спад можа наставаць раз у некалькі гадоў. Падчас спаду ўвесь аб'ём вытворчасьці значна ніжэй (ён вяртаецца да ранейшага ўзроўня, калі спад сканчаецца) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Калі ўключана, у гульні часам адбываюцца эканамічныя крызісы. Падчас крызісу аб'ёмы вытворчасьці значна змяншаюцца (і вяртаюцца да ранейшага ўзроўня, калі крызіс сканчаецца). STR_CONFIG_SETTING_TRAIN_REVERSING :Забараніць разварот цягнікоў на станцыях: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Калі ўключана, цягнікі ня будуць разварочвацца на прахадных станцыях, нават калі гэта дазволіць скараціць шлях да наступнага пункта прызначэньня. @@ -1801,11 +1795,12 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Папярэд STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Калі ўключана, вы атрымаеце паведамленьне аб транспартным сродку, які аніразу не атрымаў прыбытак на працягу году. STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Калі ўключана, вы атрымаеце паведамленьне аб транспартным сродку, які аніразу не атрымаў прыбытак на працягу цыклу. + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Транспарт ніколі не выходзіць з ужытку: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Калі ўключана, усе мадэлі транспартных сродкаў пасьля з'яўленьня застануцца даступнымі назаўжды. STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Гульнёвы час: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Выбар сістэмы адліку часу, выкарыстанай у гульні. Пасля старту змяніць яе немагчыма.{}{}Каляндар - гэта класічная сістэма, першапачаткова ўжытая ў OpenTTD: год складаецца з 12 месяцаў, у кожным з якіх 28-31{NBSP}дзень.{}{}У рэжыме рэальнага часу разлікі вытворчасці, рухі транспарта і фінансавых паказчыкаў заснаваны на інтэрвалах працягласцю ў 1{NBSP}хвіліну, што прыкладна адпавядае 30{NBSP}дням у рэжыме календара. Гэтыя інтэрвалы групуюцца ў 12-хвілінныя цыклы, якія адпавядаюць 1{NBSP}году ў класічным рэжыме.{}{}У любым выпадку, з'яўленьне новых транспартных сродкаў, будынкаў і інфраструктуры будзе суправаджацца календаром са зразумелымі датамі. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Выбар сістэмы адліку часу, выкарыстанай у гульні. Пасля старту змяніць яе немагчыма.{}{}Каляндар - гэта класічная сістэма, першапачаткова ўжытая ў OpenTTD: год складаецца з 12 месяцаў, у кожным з якіх 28-31{NBSP}дзень.{}{}У рэжыме рэальнага часу разлікі вытворчасці й фінансавых паказчыкаў заснаваны на інтэрвалах працягласцю ў 1{NBSP}хвіліну, што прыкладна адпавядае 30{NBSP}дням у рэжыме календара. Гэтыя інтэрвалы групуюцца ў 12-хвілінныя цыклы, якія адпавядаюць 1{NBSP}году ў класічным рэжыме.{}{}У любым выпадку, з'яўленьне новых транспартных сродкаў, будынкаў і інфраструктуры будзе суправаджацца календаром са зразумелымі датамі. ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Каляндар STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Рэальны час @@ -1865,7 +1860,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Арыґіна STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TERRAIN_TYPE :Тып ландшафту: {STRING} -STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Толькі для TerraGenesis){}Узгоркаватасць ландшафту +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Азначце вышыню гор і ўзгоркаў на мапе STR_CONFIG_SETTING_INDUSTRY_DENSITY :Колькасць прадпрыемстваў: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Выберыце, колькі прадпрыемстваў ствараць напачатку і на якім узроўні падтрымліваць іх колькасць падчас гульні. @@ -1893,7 +1888,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Грубы STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Вельмі грубы STR_CONFIG_SETTING_VARIETY :Разнастайнасць ландшафту: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Толькі для TerraGenesis){}Вызначае наяўнасць на карце як горных, так і раўнінных абласцей. Паколькі дадзеная наладка ўплывае толькі на згладжванне карты, астатнія наладкі павінны быць выстаўлены ў горны ландшафт. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Вызначае наяўнасць на карце як горных, так і раўнінных абласцей. Чым вышэй разнастайнасць, тым вышэй розніца ў вышыні паміж гэтымі зонамі. STR_CONFIG_SETTING_RIVER_AMOUNT :Колькасць рэк: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Выберыце колькасць рэк на мапе @@ -1948,7 +1943,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :шэры і ч STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :адценьні шэрага STR_CONFIG_SETTING_SCROLLMODE :Перамяшчэнне агляду: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Спосаб перамяшчэння па гульнёваму полю +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Спосаб перамяшчэньня па гульнёваму полю. Варыянты з зафіксаваным курсорам не працуюць на некаторых сістэмах, напрыклад, у браўзарах, на сэнсарных экранах, на Linux з Wayland і г. д. ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Перамяшчаць з дапамогай ПКМ, зафіксаваўшы курсор STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Перамяшчаць з дапамогай ПКМ, зафіксаваўшы курсор @@ -2142,7 +2137,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Iнтэрвал STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Усталяваць міжсэрвісны інтэрвал для новых паветраных суднаў, калі пэўны інтэрвал ня вызначаны для канкрэтнага судна. STR_CONFIG_SETTING_SERVINT_SHIPS :Iнтэрвал абслугоўваньня для караблёў: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Усталяваць міжсэрвісны інтэрвал для новых караблёў, калі пэўны інтэрвал ня вызначаны для канкрэтнага судна. -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P зень днi дзён}/хвілін{P а ы ""}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :адключана @@ -2442,17 +2438,8 @@ STR_CONFIG_SETTING_AI :Канкурэ STR_CONFIG_SETTING_AI_NPC :Кампутарныя гульцы STR_CONFIG_SETTING_NETWORK :Сетка -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Альґарытм пошуку шляху для цягнікоў: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Мэханізм пошуку шляху для цягнікоў. -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Альґарытм пошуку шляху для аўтатранспарту: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Мэханізм пошуку шляху для аўтатранспарту. -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Альґарытм пошуку шляху для караблёў: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Мэханізм пошуку шляху для караблёў. STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Аўтаматычны разварот перад сыґналамi: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Дазволіць цягнікам разварочвацца перад сыґналамі, калі яны чакаюць доўгі час. -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(рэкамэндуецца) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Зьмяніць значэньне @@ -2513,11 +2500,11 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Выбр STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Выбраць ляндшафт субтрапічнага клімату STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Выбраць цацачны сьвет -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Паказаць наладкі гульні +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Адкрыць акно з асноўнымі наладкамі гульні STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Паказаць табліцу рэкордаў STR_INTRO_TOOLTIP_HELP :{BLACK}Спасылкі на дакументацыю і інтэрнэт-рэсурсы STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Адкрыць наладкі -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Паказаць наладкі NewGRF +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Адкрыць наладкі NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Праверыць новы й абноўлены кантэнт, каб спампаваць STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Адкрыць наладкі ШІ STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Адкрыць наладкі гульнёвых скрыптоў @@ -2771,7 +2758,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Здаб STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Адлучыцца STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Сэрвэр абаронены. Увядзіце пароль -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Кампанія абароненая. Увядзіце пароль # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Сьпіс гульцоў @@ -2820,13 +2806,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Праз STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Адключыць STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Заблакаваць STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Выдаліць -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Скінуць пароль STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Пацверджаньне дзеяньня STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Адключыць гульца «{STRING}»? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Заблакаваць гульца «{STRING}»? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Выдаліць кампанію «{COMPANY}»? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Скінуць пароль у кампаніі «{COMPANY}»? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Выкарыстоўваць транслятар? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Не атрымалася ўсталяваць злучэнне з серверам «{STRING}».{}Перанакіраваць злучэнне праз «{STRING}»? @@ -2843,19 +2827,9 @@ STR_NETWORK_ASK_SURVEY_YES :Так STR_NETWORK_SPECTATORS :Гледачы -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не захоўваць уведзены пароль -STR_COMPANY_PASSWORD_OK :{BLACK}Даць кампаніі новы пароль -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Пароль кампаніі -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Пароль кампаніі па змоўчаньні -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Выкарыстоўваць пароль гэтай кампаніі як пароль па змоўчаньні для новых кампаніяў - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Далучыцца STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Далучыцца й гуляць за гэтую кампанію -STR_COMPANY_VIEW_PASSWORD :{BLACK}Пароль -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Абараніць вашу кампанію паролем, каб неаўтарызаваныя карыстальнікі не маглі далучыцца -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Усталяваць пароль кампаніі # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Адправіць @@ -2899,7 +2873,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Ваша STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Злучэньне згублена STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}На працягу {NUM} сэкунд{P ы аў аў} не атрымана ніякіх дадзеных з боку сэрвэра -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :агульная памылка STR_NETWORK_ERROR_CLIENT_DESYNC :памылка сынхранізацыі STR_NETWORK_ERROR_CLIENT_SAVEGAME :не ўдалося загрузіць мапу @@ -2975,7 +2949,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Выні STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Вы пакідаеце OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Умовы загрузкі змесціва зь іншых сайтаў могуць адрозьнівацца.{}За інструкцыямі па ўсталёўцы кампанэнтаў OpenTTD вам трэба зьвярнуцца на адпаведныя сайты.{}Вы жадаеце працягнуць? STR_CONTENT_FILTER_TITLE :{BLACK}Фільтар па бірках/назвах: -STR_CONTENT_OPEN_URL :{BLACK}Наведаць вэб-старонку +STR_CONTENT_OPEN_URL :{BLACK}Вэб-сайт STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Наведаць вэб-старонку для гэтага кантэнту STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Запампаваць STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Запусьціць запампоўку выбранага кантэнту @@ -3132,7 +3106,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Выбе # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Маршрутны пункт -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Выберыце тып маршрутнага пункта # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Выбар чыгуначнай станцыі @@ -3145,8 +3118,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Выбе STR_STATION_BUILD_DRAG_DROP :{BLACK}Участак STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Пабудаваць станцыю на выбраным участку зямлі -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Выберыце клясу станцыі для паказу -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Выберыце тып станцыі для пабудовы + + + STR_STATION_CLASS_DFLT :Стандартная станцыя STR_STATION_CLASS_DFLT_STATION :Стандартная чыг. станцыя @@ -3241,7 +3215,7 @@ STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Буда STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Будаўніцтва шлюзаў. Пры націснутым Shift — ацэнка кошту будаўніцтва. STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Будаўніцтва докаў (для набыцця і абслугоўваньня караблёў). Пры націснутым Shift — ацэнка кошту будаўніцтва. STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Будаўніцтва прыстаняў. Націснуты Ctrl дазваляе аб'ядноўваць прыстані. Пры націснутым Shift — ацэнка кошту будаўніцтва. -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Разьмясьціць буй, які можа быць выкарыстаны як пункт шляху. Пры націснутым Shift — ацэнка кошту будаўніцтва. +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Разьмясьціць буй, які можа быць выкарыстаны як маршрутны пункт. Пры націснутым Shift — ацэнка кошту будаўніцтва. STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Будаўніцтва аквэдукаў Пры націснутым Shift — ацэнка кошту будаўніцтва. STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Пабудаваць канал. Ctrl+пстрычка па клетцы на ўзроўні мора — запоўніць яго вадой. STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Стварэньне рэк на мапе. Пры націснутым Ctrl яны ствараюцца па дыяганалі. @@ -3255,7 +3229,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Док # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Aэрапорты -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Будаўніцтва аэрапортаў. Націск Ctrl дазваляе аб'ядноўваць станцыі. Пры націснутым Shift — ацэнка кошту будаўніцтва. +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Будаўніцтва аэрапортаў. Націснуты Ctrl дазваляе аб'ядноўваць аэрапорты. Пры націснутым Shift — ацэнка кошту будаўніцтва. # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Выбар аэрапорта @@ -3287,14 +3261,12 @@ STR_STATION_BUILD_NOISE :{BLACK}Узро # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Земляныя работы STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Апусціць кут зямлі. Пстрычка+перацягваньне апускае абраны кут і прамавугольную вобласць на новую глыбіню. Ctrl+пстрычка+перацягваньне — выбар вобласьці па дыяганалі. Пры націснутым Shift — ацэнка кошту будаўніцтва. -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Падняць кут зямлі. Перацягваньне падымае першы абраны кут і выраўноўвае выбраную вобласьць да новай вышыні кута. Ctrl выбірае вобласьць па дыяганалі. Пры націснутым Shift — ацэнка кошту будаўніцтва. +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Падняць кут зямлі. Пстрычка+перацягваньне паднімае абраны кут і прамавугольную вобласць на новую вышыню. Ctrl+пстрычка+перацягваньне — выбар вобласці па дыяганалі. Пры націснутым Shift — ацэнка кошту будаўніцтва. STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Выраўнаваць прамавугольны ўчастак зямлі да вышыні першага абранага кута. Ctrl+пстрычка+перацягваньне — выбар вобласці па дыяганалі. Пры націснутым Shift — ацэнка кошту выраўноўваньня. -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Набыцьцё зямлі. Пры націснутым Shift — ацэнка кошту набыцьця. +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Набыцьцё зямлі для будучага выкарыстаньня. Ctrl+пстрычка+перацягваньне — выбар вобласці па дыяганалі. Пры націснутым Shift — ацэнка кошту набыцьця. # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Выбар аб'екта -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Абярыце ствараны аб'ект. Пры націснутым Shift — ацэнка кошту пабудовы. -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Абярыце клясу аб'екта для будаўніцтва STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Прагляд аб'екта STR_OBJECT_BUILD_SIZE :{BLACK}Памер: {GOLD}{NUM} x {NUM} клетак @@ -3305,7 +3277,7 @@ STR_OBJECT_CLASS_TRNS :Перадат STR_PLANT_TREE_CAPTION :{WHITE}Дрэвы STR_PLANT_TREE_TOOLTIP :{BLACK}Выберыце тып дрэваў для пасадкі. Калі на ўчастку ўжо ёсьць дрэвы, будуць дададзены некалькі дрэваў рознага тыпу, незалежна ад выбранага. STR_TREES_RANDOM_TYPE :{BLACK}Дрэвы розных відаў -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Высадка дрэў выпадковага тыпу. Пры націснутым Shift — ацэнка кошту высадкі. +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Высадка дрэў выпадковага тыпу. Ctrl+пстрычка+перацягваньне — выбар вобласці па дыяганалі. Пры націснутым Shift — ацэнка кошту высадкі. STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Расставіць па мапе STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Пасадзіць дрэвы розных выпадковых відаў па усёй мапе STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Дрэва @@ -3318,7 +3290,7 @@ STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Ства # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Стварэньне ляндшафту STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Разьмясьціць камяні па мапе -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Разьмясьціць пустэльню.{}Націсьніце Ctrl, каб выдаліць яе. +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Разьмясьціць пустэльню.{}Ctrl+пстрычка — выдаліць яе. STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Павялічыць плошчу зьмяненьня рэльефу STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Паменшыць плошчу зьмяненьня рэльефу STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Стварыць выпадковую мапу @@ -3364,7 +3336,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Крат STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Выпадковая # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Стварыць новае прадпрыемства +STR_FUND_INDUSTRY_CAPTION :{WHITE}Стварэньне прадпрыемстваў STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Выберыце тып вытворчасьці са сьпісу STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Шмат выпадковых прадпрыемстваў STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Выпадкова разьмясьціць прадпрыемствы на мапе @@ -3387,7 +3359,7 @@ STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Спаж STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Гарадзкія будынкі STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Пстрычка па прадпрыемстве пакажа ягоных пастаўшчыкоў і спажыўцоў STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Пстрычка па тыпе грузу пакажа ягоных пастаўшчыкоў і спажыўцоў -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Паказаць ланцужок +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Вытворчы ланцужок STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Паказаць вытворцаў сыравіны й спажыўцоў прадукцыі гэтага прадпрыемства STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Лiнк да мiнiмапы STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Выберыце паказаныя прадпрыемствы таксама й на мiнiмапе @@ -3409,7 +3381,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Улад STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Уладальнiк чыгункi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Мясцовая адміністрацыя: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Няма -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Каардынаты: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Пабудавана/абноўлена: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Кляса станцыі: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тып станцыi: {LTBLUE}{STRING} @@ -3721,9 +3692,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Стварэньне сусьвету STR_GENERATION_RIVER_GENERATION :{BLACK}Стварэньне рэк -STR_GENERATION_TREE_GENERATION :{BLACK}Высаджваньне лясоў -STR_GENERATION_OBJECT_GENERATION :{BLACK}Ґенэрацыя нерухомасьці STR_GENERATION_CLEARING_TILES :{BLACK}Расстаноўка дэкарацыяў і камянёў +STR_GENERATION_OBJECT_GENERATION :{BLACK}Ґенэрацыя нерухомасьці +STR_GENERATION_TREE_GENERATION :{BLACK}Высаджваньне лясоў STR_GENERATION_SETTINGUP_GAME :{BLACK}Наладка гульні STR_GENERATION_PREPARING_TILELOOP :{BLACK}Падрыхтоўка да запуску... STR_GENERATION_PREPARING_SCRIPT :{BLACK}Выконваецца скрыпт @@ -3815,7 +3786,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Тып даро STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Парамэтр зьменнай NewGRF 60+x (шаснаццаткавы) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Выраўноўваньне спрайта {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Наступны спрайт STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Перайсьці да наступнага звычайнага спрайта, прапускаючы змяняючыя колер, шрыфтавыя, псэўдаспрайты. Пераход з канца сьпісу да першага спрайта. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Перайсьці да спрайта @@ -3849,7 +3819,7 @@ STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}У мо STR_NEWGRF_ERROR_POPUP :{WHITE}У модулі NewGRF «{STRING}» адбылася памылка:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} ня будзе працаваць з вэрсіяй TTDPatch, паведламленай OpenTTD. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Файл {1:STRING} патрабуе TTD вэрсіі {2:STRING} -STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} зроблены для выкарыстаньня сумесна з {STRING} +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} зроблены для выкарыстаньня сумесна з {2:STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Няправільны парамэтр {1:STRING}: парамэтр {2:STRING} ({3:NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} павінен быць загружаны перад {2:STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} павінен быць загружаны пасьля {2:STRING}. @@ -3932,11 +3902,10 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Да п STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Увядзіце назву таблічкi # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Гарады STR_TOWN_DIRECTORY_NONE :{ORANGE}- Няма - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Мегаполіс){BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Сьпіс гарадоў: клiк па назьве паказвае горад у асноўным вакне. Ctrl+клiк паказвае ў дадатковым вакне. +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Сьпіс гарадоў: пстрычка па назьве паказвае горад у асноўным вакне. Ctrl+пстрычка — у дадатковым вакне. STR_TOWN_POPULATION :{BLACK}Насельніцтва: {COMMA} # Town view window @@ -3989,7 +3958,7 @@ STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Купіць э STR_LOCAL_AUTHORITY_ACTION_BRIBE :Даць хабар мясцовай адміністрацыі ###next-name-looks-similar -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Правесьці малую рэклямную кампанію для павелічэньня груза-і пасажырапатоку на вашых станцыях.{}Кошт: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Правесці малую рэклямную кампанію для павелічэння груза- і пасажырапатоку на вашых станцыях.{}Яна часова павялічыць рэйтынг вашых станцый, пабудаваных побач з цэнтрам горада.{}{POP_COLOUR}Кошт: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Правесьці сярэднюю рэклямную кампанію для павелічэньня груза-і пасажырапатоку на вашых станцыях.{}Яна часова павялічыць рэйтынг вашых станцый, змешчаных ня вельмі далёка ад цэнтра горада.{}{POP_COLOUR}Кошт: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Правесьці вялікую рэклямную кампанію для павелічэньня груза-і пасажырапатоку на вашых станцыях.{}Яна часова павялічыць рэйтынг вашых станцый на значнай плошчы ў горадзе і наваколлях.{}{POP_COLOUR}Кошт: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Прафінансаваць рэканструкцыю гарадской дарожнай сеткі.{}Працы, працягласцю да 6 месяцаў, прыводзяць да значных дарожных затораў.{}{POP_COLOUR}Кошт: {CURRENCY_LONG} @@ -4068,7 +4037,7 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Наст STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Няправільная спасылка на дасягненьне # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Сьпіс станцыяў: пстрычка па назьве паказвае станцыю ў асноўным вакне. Ctrl+клiк паказвае ў дадатковым вакне. +STR_STATION_LIST_TOOLTIP :{BLACK}Сьпіс станцыяў: пстрычка па назьве паказвае станцыю ў асноўным вакне. Ctrl+пстрычка — у дадатковым вакне. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Можна выбраць некалькі варыянтаў, пстрыкаючы па іх з заціснутым Ctrl STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} — {COMMA} станцы{P я i яў} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} @@ -4151,7 +4120,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Прад STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Паказаць маршрутны пункт у асноўным вакне. Ctrl+клік — паказаць у дадатковым вакне. STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Перайменаваць маршрутны пункт -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Паказаць буй у асноўным вакне. Ctrl+клік — паказаць у дадатковым вакне. +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Паказаць буй у асноўным вакне. Ctrl+пстрычка — паказаць у дадатковым вакне. STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Зьмяніць назву буя STR_EDIT_WAYPOINT_NAME :{WHITE}Назва маршрутнага пункта @@ -4227,7 +4196,7 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Пабу STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Агледзець штаб STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Агледзець штаб-кватэру кампаніі STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Перамясьціць -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Перамясьціць штаб-кватэру кампаніі ў іншае месца за 1% ацэнкавага кошту капіталу кампаніі. Shift+пстрычка — ацэнка кошту пераносу. +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Перамясьціць штаб-кватэру кампаніі ў іншае месца за 1% ацэнкавага кошту капіталу кампаніі. Пры націснутым Shift — ацэнка кошту пераносу. STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Дэталi STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Паказаць дэталёвыя iнфраструктурныя падлiкi STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Перадаць грошы @@ -4266,7 +4235,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/перыяд # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Прамысловасьць STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Няма - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% перавезена){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4360,7 +4328,7 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}Ства STR_GROUP_DELETE_TOOLTIP :{BLACK}Выдаліць выбраную групу STR_GROUP_RENAME_TOOLTIP :{BLACK}Перайменаваць выбраную групу STR_GROUP_LIVERY_TOOLTIP :{BLACK}Змяніць колер абранае групы -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Абарона транспарту ў групе ад глабальнай аўтазамены +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Абарона транспарта ў групе ад глабальнай аўтазамены. Ctrl+пстрычка — абарона таксама і ўкладзеных груп. STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Выдаліць ґрупу STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Вы ўпэўнены, што жадаеце выдаліць гэту ґрупу з усімі вытворнымі? @@ -4429,9 +4397,9 @@ STR_CARGO_TYPE_FILTER_NONE :Няма ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Сьпіс лакаматываў і вагонаў - пстрыкніце для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа ТС. -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Сьпіс аўтатранспарту - пстрыкніце для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа выбраны аўтамабіль. -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Сьпіс караблёў - пстрыкніце для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа выбраны карабель. -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Сьпіс паветраных судоў: пстрыкніце для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа ТС. +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Сьпіс даступных мадэляў аўтатранспарта. Абярыце адну з іх для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа абраную мадэль. +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Сьпіс даступных мадэляў караблёў. Абярыце адну з іх для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа абраную мадэль. +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Сьпіс даступных мадэляў паветраных судоў. Абярыце адну з іх для атрыманьня інфармацыі. Ctrl+пстрычка схавае/пакажа абраную мадэль. ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Купіць @@ -4447,15 +4415,15 @@ STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Купі ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Набыць абраны лякаматыў/ваґон. Shift+пстрычка — ацэнка кошту набыцьця. -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Набыць абраны аўтамабіль. Shift+пстрычка — ацэнка кошту набыцьця. -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Набыць абраны карабель. Shift+пстрычка — ацэнка кошту набыцьця. -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Набыць абраны авіятранспарт. Shift+пстрычка — ацэнка кошту набыцьця. +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Набыць абраны аўтамабіль. Пры націснутым Shift — ацэнка кошту набыцьця. +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Набыць абраны карабель. Пры націснутым Shift — ацэнка кошту набыцьця. +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Набыць абраны авіятранспарт. Пры націснутым Shift — ацэнка кошту набыцьця. ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Набыць і пераабсталяваць абраны лякаматыў/ваґон. Пры націснутым Shift — ацэнка кошту набыцця. -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Набыць і пераабсталяваць абраны аўтамабіль. Shift+пстрычка пакажа арыентыровачны кошт куплі. +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Набыць і пераабсталяваць абраны аўтамабіль. Пры націснутым Shift — ацэнка кошту набыцьця. STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Набыць і пераабсталяваць абраны карабель. Пры націснутым Shift — ацэнка кошту набыцця. -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Набыць і пераабсталяваць абранае паветранае судна. Пры націснутым Shift — ацэнка кошту куплі. +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Набыць і пераабсталяваць абранае паветранае судна. Пры націснутым Shift — ацэнка кошту набыцьця. ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Перайменаваць @@ -4505,7 +4473,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} а STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Цягнікі. Выкарыстоўвайце перацягваньне для зьмены складу цягніка; націсьніце ПКМ для атрыманьня інфармацыі. Утрымлівайце Ctrl для перацягваньня ваґона разам з усімі наступнымі за ім. +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Цягнікі ў дэпо. Фармуйце саставы з дапамогай перацягваньня лакаматываў і вагонаў. Націсніце ПКМ для атрыманьня інфармацыі. Пры націснутым Ctrl абедзве функцыі працуюць ад абранага вагона да канца саставу. STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Аўтамабiлi: правы клік для атрыманьня інфармацыі STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Караблi: правы клік для атрыманьня інфармацыі STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Авiятранспарт: правы клік для атрыманьня інфармацыі @@ -4547,16 +4515,16 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Капі STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Капіяваць авіятранспарт ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Стварыць копію састава. Націсьніце на кнопку, а затым на цягнік усярэдзіне ці знадворку дэпо. Ctrl+пстрычка створыць цягнік з агульным маршрутам. Shift+пстрычка - ацэнка кошту куплі. -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Стварыць копію аўтамабіля. Націсьніце на кнопку, а затым на машыну ўнутры ці звонку гаража. Ctrl+пстрычка створыць аўтамабіль з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Стварыць копію карабля. Націсьніце на кнопку, а затым на карабель унутры ці звонку дока. Ctrl+пстрычка створыць карабель з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Набыць копію састава. Націсьніце на кнопку, а затым на цягнік усярэдзіне ці знадворку дэпо. Ctrl+пстрычка створыць цягнік з агульным маршрутам. Shift+пстрычка — ацэнка кошту набыцьця. +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Набыць копію аўтамабіля. Націсьніце на кнопку, а затым на машыну ўнутры ці звонку гаража. Ctrl+пстрычка створыць аўтамабіль з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Набыць копію карабля. Націсьніце на кнопку, а затым на карабель унутры ці звонку дока. Ctrl+пстрычка створыць карабель з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Набыць копію паветр. судна. Націсьніце на кнопку, а потым на паветр. судна ўнутры ці звонку анґара. Ctrl+пстрычка створыць копію з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Паказаць дэпо ў асноўным вакне. Ctrl+клік — паказаць у дадатковым вакне. -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Паказаць гараж у асноўным вакне. Ctrl+клік — паказаць у дадатковым вакне. -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Паказаць док у асноўным вакне. Ctrl+клік — паказаць у дадатковым вакне. -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Паказаць анґар у асноўным вакне. Ctrl+клік — паказаць у дадатковым вакне. +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Паказаць дэпо ў асноўным вакне. Ctrl+пстрычка — паказаць у дадатковым вакне. +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Паказаць гараж у асноўным вакне. Ctrl+пстрычка — паказаць у дадатковым вакне. +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Паказаць док у асноўным вакне. Ctrl+пстрычка — паказаць у дадатковым вакне. +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Паказаць анґар у асноўным вакне. Ctrl+пстрычка — паказаць у дадатковым вакне. ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Атрымаць сьпіс цягнiкоў, якія маюць у заданьнях гэтае дэпо @@ -4696,10 +4664,10 @@ STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Пасл STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Паслаць паветр. судна ў анґар. Ctrl+клік — толькі для абслугоўваньня. ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Стварыць копію састава. Ctrl+пстрычка створыць цягнік з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Стварыць копію аўтамабіля. Ctrl+пстрычка створыць аўтамабіль з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Стварыць копію карабля. Ctrl+пстрычка створыць карабель з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Стварыць копію паветр. судна. Ctrl+пстрычка створыць копію з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Набыць копію састава. Ctrl+пстрычка створыць цягнік з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Набыць копію аўтамабіля. Ctrl+пстрычка створыць аўтамабіль з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Набыць копію карабля. Ctrl+пстрычка створыць карабель з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Набыць копію паветр. судна. Ctrl+пстрычка створыць копію з агульнымі заданьнямі. Shift+пстрычка — ацэнка кошту набыцьця. STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Прымусіць цягнік праехаць чырвоны сыґнал святлафора STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Завярнуць цягнiк у адваротны бок @@ -5079,7 +5047,7 @@ STR_TIMETABLE_START_TOOLTIP :{BLACK}Выбе STR_TIMETABLE_START_SECONDS_QUERY :Секунд да запуску графіка STR_TIMETABLE_CHANGE_TIME :{BLACK}Зьмяніць час -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Зьмяніць час для вылучанага заданьня +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Зьмяніць час, выдаткаваны на выкананьне вылучанага заданьня. Ctrl+пстрычка ўсталёўвае час для ўсіх заданьняў. STR_TIMETABLE_CLEAR_TIME :{BLACK}Ськінуць час STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Скінуць час у вылучаным заданьні. Ctrl+пстрычка — скінуць час ва ўсіх заданьнях. @@ -5196,8 +5164,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :гульнёв STR_AI_SETTINGS_CLOSE :{BLACK}Закрыць STR_AI_SETTINGS_RESET :{BLACK}Ськід STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -5250,9 +5216,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Мерк STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ідзе захаваньне,{}калі ласка, дачакайцеся завяршэньня! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Памылка аўтазахаваньня STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не атрымалася прачытаць дыск -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Немагчыма захаваць гульню{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Немагчыма выдаліць файл -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Немагчыма загрузіць гульню{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Унутраная памылка: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл пашкоджаны — {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Захаваньне зроблена ў больш новай вэрсіі @@ -5634,6 +5598,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Зьмя STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Няма даступных транспартных сродкаў STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Пачніце гульню пасьля {DATE_SHORT} або падключыце NewGRF з транспартам адпаведных часоў. + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Немагчыма іґнараваць сыґнал. Небясьпечна... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Не атрымалася завярнуць цягнік... @@ -6283,6 +6248,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}тыс +STR_CURRENCY_SHORT_MEGA :{NBSP}млн +STR_CURRENCY_SHORT_GIGA :{NBSP}млрд +STR_CURRENCY_SHORT_TERA :{NBSP}трлн + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index e211f4c444..c6de691177 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -28,7 +28,7 @@ STR_JUST_NOTHING :Nada STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Passageiros STR_CARGO_PLURAL_COAL :Carvão -STR_CARGO_PLURAL_MAIL :Correspondências +STR_CARGO_PLURAL_MAIL :Correio STR_CARGO_PLURAL_OIL :Petróleo STR_CARGO_PLURAL_LIVESTOCK :Gado STR_CARGO_PLURAL_GOODS :Bens @@ -50,7 +50,7 @@ STR_CARGO_PLURAL_RUBBER :Borracha STR_CARGO_PLURAL_SUGAR :Açúcar STR_CARGO_PLURAL_TOYS :Brinquedos STR_CARGO_PLURAL_SWEETS :Doces -STR_CARGO_PLURAL_COLA :Bebida de cola +STR_CARGO_PLURAL_COLA :Xarope de Cola STR_CARGO_PLURAL_CANDYFLOSS :Algodão Doce STR_CARGO_PLURAL_BUBBLES :Bolhas STR_CARGO_PLURAL_TOFFEE :Caramelo @@ -62,7 +62,7 @@ STR_CARGO_PLURAL_FIZZY_DRINKS :Refrigerantes STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Passageiro STR_CARGO_SINGULAR_COAL :Carvão -STR_CARGO_SINGULAR_MAIL :Correspondência +STR_CARGO_SINGULAR_MAIL :Correio STR_CARGO_SINGULAR_OIL :Petróleo STR_CARGO_SINGULAR_LIVESTOCK :Gado STR_CARGO_SINGULAR_GOODS :Bens @@ -84,7 +84,7 @@ STR_CARGO_SINGULAR_RUBBER :Borracha STR_CARGO_SINGULAR_SUGAR :Açúcar STR_CARGO_SINGULAR_TOY :Brinquedo STR_CARGO_SINGULAR_SWEETS :Doce -STR_CARGO_SINGULAR_COLA :Bebida de cola +STR_CARGO_SINGULAR_COLA :Xarope de Cola STR_CARGO_SINGULAR_CANDYFLOSS :Algodão Doce STR_CARGO_SINGULAR_BUBBLE :Bolha STR_CARGO_SINGULAR_TOFFEE :Caramelo @@ -96,7 +96,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Refrigerante STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passageiro{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} de carvão -STR_QUANTITY_MAIL :{COMMA}{NBSP}saco{P "" s} de correspondência +STR_QUANTITY_MAIL :{COMMA}{NBSP}saco{P "" s} de correio STR_QUANTITY_OIL :{VOLUME_LONG} de petróleo STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}cabeça{P "" s} de gado STR_QUANTITY_GOODS :{COMMA}{NBSP}caixa{P "" s} de bens @@ -107,7 +107,7 @@ STR_QUANTITY_STEEL :{WEIGHT_LONG} d STR_QUANTITY_VALUABLES :{COMMA}{NBSP}saco{P "" s} de objetos de valor STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de minério de cobre STR_QUANTITY_MAIZE :{WEIGHT_LONG} de milho -STR_QUANTITY_FRUIT :{WEIGHT_LONG} de fruta +STR_QUANTITY_FRUIT :{WEIGHT_LONG} de frutas STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}saco{P "" s} de diamantes STR_QUANTITY_FOOD :{WEIGHT_LONG} de alimentos STR_QUANTITY_PAPER :{WEIGHT_LONG} de papel @@ -118,7 +118,7 @@ STR_QUANTITY_RUBBER :{VOLUME_LONG} d STR_QUANTITY_SUGAR :{WEIGHT_LONG} de açúcar STR_QUANTITY_TOYS :{COMMA}{NBSP}brinquedo{P "" s} STR_QUANTITY_SWEETS :{COMMA}{NBSP}saco{P "" s} de doces -STR_QUANTITY_COLA :{VOLUME_LONG} de bebida de cola +STR_QUANTITY_COLA :{VOLUME_LONG} de xarope de Cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de algodão doce STR_QUANTITY_BUBBLES :{COMMA} bolha{P "" s} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de caramelo @@ -129,37 +129,37 @@ STR_QUANTITY_N_A :N/D # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : -STR_ABBREV_PASSENGERS :PA +STR_ABBREV_PASSENGERS :PS STR_ABBREV_COAL :CV -STR_ABBREV_MAIL :CO -STR_ABBREV_OIL :PE -STR_ABBREV_LIVESTOCK :GA +STR_ABBREV_MAIL :CR +STR_ABBREV_OIL :PT +STR_ABBREV_LIVESTOCK :GD STR_ABBREV_GOODS :BN -STR_ABBREV_GRAIN :CE -STR_ABBREV_WOOD :MA +STR_ABBREV_GRAIN :CS +STR_ABBREV_WOOD :MD STR_ABBREV_IRON_ORE :MF STR_ABBREV_STEEL :AÇ -STR_ABBREV_VALUABLES :OV +STR_ABBREV_VALUABLES :VL STR_ABBREV_COPPER_ORE :MC -STR_ABBREV_MAIZE :MI +STR_ABBREV_MAIZE :ML STR_ABBREV_FRUIT :FT STR_ABBREV_DIAMONDS :DM STR_ABBREV_FOOD :AL STR_ABBREV_PAPER :PP STR_ABBREV_GOLD :OU STR_ABBREV_WATER :AG -STR_ABBREV_WHEAT :TG -STR_ABBREV_RUBBER :BO -STR_ABBREV_SUGAR :AÇ -STR_ABBREV_TOYS :BR -STR_ABBREV_SWEETS :DO -STR_ABBREV_COLA :CO +STR_ABBREV_WHEAT :TR +STR_ABBREV_RUBBER :BR +STR_ABBREV_SUGAR :AR +STR_ABBREV_TOYS :BQ +STR_ABBREV_SWEETS :DC +STR_ABBREV_COLA :CL STR_ABBREV_CANDYFLOSS :AD STR_ABBREV_BUBBLES :BO -STR_ABBREV_TOFFEE :CL +STR_ABBREV_TOFFEE :CM STR_ABBREV_BATTERIES :PI STR_ABBREV_PLASTIC :PL -STR_ABBREV_FIZZY_DRINKS :RE +STR_ABBREV_FIZZY_DRINKS :RF STR_ABBREV_ALL :TUDO # 'Mode' of transport for cargoes @@ -188,7 +188,7 @@ STR_COLOUR_ORANGE :Laranja STR_COLOUR_BROWN :Marrom STR_COLOUR_GREY :Cinza STR_COLOUR_WHITE :Branco -STR_COLOUR_RANDOM :Aleatório +STR_COLOUR_RANDOM :Aleatória ###length 17 STR_COLOUR_SECONDARY_DARK_BLUE :Azul Escuro @@ -215,7 +215,7 @@ STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP} STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}km/h STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}m/s STR_UNITS_VELOCITY_GAMEUNITS_DAY :{DECIMAL}{NBSP}quadrados/dia -STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}quadrados/segundo +STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}quadrados/s STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}nós STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}hp @@ -227,7 +227,7 @@ STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_METRIC :{DECIMAL}{NBSP} STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_SI :{DECIMAL}{NBSP}hp/t STR_UNITS_POWER_METRIC_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}hp/t STR_UNITS_POWER_METRIC_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}hp/t -STR_UNITS_POWER_METRIC_TO_WEIGHT_SI :{DECIMAL}{NBSP}hp/kg +STR_UNITS_POWER_METRIC_TO_WEIGHT_SI :{DECIMAL}{NBSP}hp/t STR_UNITS_POWER_SI_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}kW/t STR_UNITS_POWER_SI_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}kW/t STR_UNITS_POWER_SI_TO_WEIGHT_SI :{DECIMAL}{NBSP}W/kg @@ -241,7 +241,7 @@ STR_UNITS_WEIGHT_LONG_METRIC :{DECIMAL}{NBSP} STR_UNITS_WEIGHT_LONG_SI :{DECIMAL}{NBSP}kg STR_UNITS_VOLUME_SHORT_IMPERIAL :{DECIMAL}{NBSP}gal -STR_UNITS_VOLUME_SHORT_METRIC :{DECIMAL}{NBSP}l +STR_UNITS_VOLUME_SHORT_METRIC :{DECIMAL}{NBSP}L STR_UNITS_VOLUME_SHORT_SI :{DECIMAL}{NBSP}m³ STR_UNITS_VOLUME_LONG_IMPERIAL :{DECIMAL}{NBSP}gal{P ão ões} @@ -252,13 +252,13 @@ STR_UNITS_FORCE_IMPERIAL :{DECIMAL}{NBSP} STR_UNITS_FORCE_METRIC :{DECIMAL}{NBSP}kgf STR_UNITS_FORCE_SI :{DECIMAL}{NBSP}kN -STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}pé{P "" s} +STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}ft STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m # Time units used in string control characters STR_UNITS_DAYS :{COMMA}{NBSP}dia{P "" s} -STR_UNITS_SECONDS :{COMMA}{NBSP}sedundo{P "" s} +STR_UNITS_SECONDS :{COMMA}{NBSP}segundo{P "" s} STR_UNITS_TICKS :{COMMA}{NBSP}tique{P "" s} STR_UNITS_MONTHS :{NUM}{NBSP}m{P ês eses} @@ -269,28 +269,28 @@ STR_UNITS_PERIODS :{NUM}{NBSP}per # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtro: -STR_LIST_FILTER_OSKTITLE :{BLACK}Introduzir uma ou mais palavras-chave para procurar na lista +STR_LIST_FILTER_OSKTITLE :{BLACK}Introduza uma palavra-chave para filtrar a lista STR_LIST_FILTER_TOOLTIP :{BLACK}Introduzir uma ou mais palavras-chave para procurar na lista -STR_TOOLTIP_GROUP_ORDER :{BLACK}Selecionar ordem de agrupamento -STR_TOOLTIP_SORT_ORDER :{BLACK}Selecionar ordenação (descendente/ascendente) -STR_TOOLTIP_SORT_CRITERIA :{BLACK}Selecionar critério de ordenação -STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Selecionar critério de busca +STR_TOOLTIP_GROUP_ORDER :{BLACK}Escolher a ordem de agrupamento +STR_TOOLTIP_SORT_ORDER :{BLACK}Escolher a ordenação (descendente/ascendente) +STR_TOOLTIP_SORT_CRITERIA :{BLACK}Escolher o critério de ordenação +STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Escolher o critério de seleção STR_BUTTON_SORT_BY :{BLACK}Ordenar por STR_BUTTON_CATCHMENT :{BLACK}Cobertura -STR_TOOLTIP_CATCHMENT :{BLACK}Mostrar/ocultar a área de cobertura +STR_TOOLTIP_CATCHMENT :{BLACK}Mostrar área de cobertura STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fechar janela STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da janela - arraste isto para mover a janela STR_TOOLTIP_SHADE :{BLACK}Encolher janela - mostrar apenas a barra de título -STR_TOOLTIP_DEBUG :{BLACK}Mostrar informações de depuração de NewGRF +STR_TOOLTIP_DEBUG :{BLACK}Mostrar informação de depuração de NewGRF STR_TOOLTIP_DEFSIZE :{BLACK}Redimensionar a janela para o tamanho padrão. Ctrl+Clique para salvar o tamanho atual como padrão -STR_TOOLTIP_STICKY :{BLACK}Marcar esta janela para não ser fechada pela tecla 'Fechar Todas as Janelas'. Ctrl+Clique para salvar o estado como padrão +STR_TOOLTIP_STICKY :{BLACK}Fixar esta janela para ela não ser fechada pela tecla 'Fechar Todas as Janelas'. Ctrl+Clique para salvar o estado como padrão STR_TOOLTIP_RESIZE :{BLACK}Clique e arraste para redimensionar esta janela STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Alternar entre janela grande/pequena -STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de rolagem - rola a lista acima/abaixo -STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de rolagem - rola a lista para esquerda/direita -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolir construções etc. em um quadrado do terreno. Ctrl+Clique+Arrastar seleciona a área diagonalmente. Ctrl+Shift+Clique+Arrastar mostra o custo estimado +STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de rolagem - desloca a lista para cima/baixo +STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de rolagem - desloca a lista para a esquerda/direita +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolir construções, etc., num quadrado do terreno. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Pressione também Shift para só mostrar o custo estimado # Show engines button ###length VEHICLE_TYPES @@ -302,23 +302,22 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Mostrar ###length VEHICLE_TYPES STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Ativando este botão, os veículos ferroviários ocultos também serão mostrados STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Ativando este botão, os veículos rodoviários ocultos também serão mostrados -STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ativando esse botão, as embarcações ocultas também serão mostradas -STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ativando esse botão, as aeronaves ocultas também serão mostradas +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ativando este botão, as embarcações ocultas também serão mostradas +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ativando este botão, as aeronaves ocultas também serão mostradas # Query window STR_BUTTON_DEFAULT :{BLACK}Padrão STR_BUTTON_CANCEL :{BLACK}Cancelar STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Aviso: os administradores do servidor podem ler qualquer texto inserido aqui. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Comprimento: {NUM} STR_MEASURE_AREA :{BLACK}Área: {NUM} x {NUM} -STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Comprimento: {NUM}{}Diferença de Altura: {HEIGHT} +STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Comprimento: {NUM}{}Diferença de altura: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Área: {NUM} x {NUM}{}Diferença de altura: {HEIGHT} @@ -331,7 +330,7 @@ STR_SORT_BY_PRODUCTION :Produção STR_SORT_BY_TYPE :Tipo STR_SORT_BY_TRANSPORTED :Transportado STR_SORT_BY_NUMBER :Número -STR_SORT_BY_PROFIT_LAST_YEAR :Lucro no ano passado +STR_SORT_BY_PROFIT_LAST_YEAR :Lucro no último ano STR_SORT_BY_PROFIT_LAST_PERIOD :Lucro no último período STR_SORT_BY_PROFIT_THIS_YEAR :Lucro neste ano STR_SORT_BY_PROFIT_THIS_PERIOD :Lucro neste período @@ -347,25 +346,25 @@ STR_SORT_BY_TIMETABLE_DELAY :Atraso de horá STR_SORT_BY_FACILITY :Tipo de estação STR_SORT_BY_WAITING_TOTAL :Carga total aguardando STR_SORT_BY_WAITING_AVAILABLE :Carga disponível aguardando -STR_SORT_BY_RATING_MAX :Maior índice de carga -STR_SORT_BY_RATING_MIN :Menor índice de carga -STR_SORT_BY_ENGINE_ID :ID da Locomotiva (ordem clássica) +STR_SORT_BY_RATING_MAX :Maior classificação de carga +STR_SORT_BY_RATING_MIN :Menor classificação de carga +STR_SORT_BY_ENGINE_ID :Motor ID (ordem clássica) STR_SORT_BY_COST :Custo STR_SORT_BY_POWER :Potência STR_SORT_BY_TRACTIVE_EFFORT :Força de tração STR_SORT_BY_INTRO_DATE :Data de introdução -STR_SORT_BY_RUNNING_COST :Custo de operação -STR_SORT_BY_POWER_VS_RUNNING_COST :Potência/Custo de operação +STR_SORT_BY_RUNNING_COST :Custo operacional +STR_SORT_BY_POWER_VS_RUNNING_COST :Potência/Custo operacional STR_SORT_BY_CARGO_CAPACITY :Capacidade de carga STR_SORT_BY_RANGE :Autonomia STR_SORT_BY_POPULATION :População STR_SORT_BY_RATING :Classificação STR_SORT_BY_NUM_VEHICLES :Número de veículos -STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Lucro total no ano passado +STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Lucro total no último ano STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Lucro total no último período STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Lucro total neste ano STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Lucro total neste período -STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Lucro médio no ano passado +STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Lucro médio no último ano STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Lucro médio no último período STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Lucro médio neste ano STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Lucro médio neste período @@ -380,11 +379,11 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Abrir a # Tooltips for the main toolbar ###length 31 -STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausar jogo -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Acelerar o jogo -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opções e definições -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvar, abrir ou abandonar jogo, sair do OpenTTD -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Abrir mapa, nova visualização, fluxo de cargas ou lista de sinais +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausar o jogo +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Avanço rápido do jogo +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opções e configurações +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvar, abrir ou abandonar o jogo, sair do programa +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Abrir mapa, visualização extra, fluxo de carga ou lista de placas STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Abrir lista de localidades ou encontrar localidade STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Abrir lista de subsídios STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Abrir lista de estações da empresa @@ -392,25 +391,25 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Abrir in STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Abrir informações gerais da empresa STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Abrir livro de história STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Abrir lista de objetivos -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Abrir gráficos da empresa e receitas por carga +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Abrir gráficos da empresa e tarifas por carga STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Abrir tabela de classificação das empresas -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Abrir catálogo de indústrias, cadeia industrial ou financiar a construção de uma nova indústria -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Abrir lista de trens da empresa. Ctrl+Clique para mostrar ou ocultar os grupos de veículos, em oposição à configuração escolhida -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Abrir lista de veículos da empresa. Ctrl+Clique para mostrar ou ocultar os grupos de veículos, em oposição à configuração escolhida -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Abrir lista de embarcações da empresa. Ctrl+Clique para mostrar ou ocultar os grupos de veículos, em oposição à configuração escolhida -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Abrir lista de aeronaves da empresa. Ctrl+Clique para mostrar ou ocultar os grupos de veículos, em oposição à configuração escolhida -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Aproximar a visão -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Afastar a visão +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Abrir lista de indústrias, cadeia industrial ou financiar a construção de uma nova indústria +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Abrir lista de trens da empresa. Ctrl+Clique para mostrar ou ocultar grupos de veículos, oposto da configuração escolhida +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Abrir lista de veículos da empresa. Ctrl+Clique para mostrar ou ocultar grupos de veículos, oposto da configuração escolhida +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Abrir lista de embarcações da empresa. Ctrl+Clique para mostrar ou ocultar grupos de veículos, oposto da configuração escolhida +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Abrir lista de aeronaves da empresa. Ctrl+Clique para mostrar ou ocultar grupos de veículos, oposto da configuração escolhida +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Ampliar +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Reduzir STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construir infraestrutura ferroviária STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construir infraestrutura rodoviária STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Construir infraestrutura para bondes -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construir infraestrutura de hidrovias -STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construir aeroportos -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Abrir menu de paisagismo, menu de árvores ou colocar um sinal +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construir infraestrutura hidroviária +STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construir aeroporto +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Abrir menu de paisagismo, menu de árvores ou colocar uma placa STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Abrir janela de som/música -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Abrir última mensagem/notícia, histórico de mensagens ou remover todas as mensagens -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Abrir menu informações do terreno, captura de tela, sobre o OpenTTD e ferramentas de desenvolvedor -STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Trocar a barra de ferramentas +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Abrir última mensagem/notícia, histórico de mensagens ou apagar todas as mensagens +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Abrir informações do terreno, menu de captura de tela, créditos do OpenTTD ou ferramentas de desenvolvedor +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Trocar barra de ferramentas # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Salvar cenário, abrir cenário, abandonar editor de cenário, sair @@ -418,41 +417,44 @@ STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor de Cenário STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Mover a data inicial 1 ano para trás STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Mover a data inicial 1 ano para frente -STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Clique para informar o ano de início -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Abrir mapa, visualização extra, lista de sinais, lista de localidades ou de indústrias +STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Clique para alterar o ano de início +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Abrir mapa, visualização extra, lista de placas, de localidades ou de indústrias STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Abrir menu de paisagismo ou gerar um novo mundo STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Construir ou gerar localidades STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Construir ou gerar indústrias STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Construir infraestrutura rodoviária -STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Construir infraestrutura de bondes -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantar árvores. Ctrl+Clique+Arrastar seleciona a área diagonalmente. Ctrl+Shift+Clique+Arrastar mostra o custo estimado +STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Construir infraestrutura para bondes +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantar árvores. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Pressione também Shift para só mostrar o custo estimado STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Colocar placa -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar objeto. Ctrl+Clique+Arrastar seleciona a área diagonalmente. Ctrl+Shift+Clique+Arrastar mostra o custo estimado +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar objeto. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Pressione também Shift para só mostrar o custo estimado # Scenario editor file menu ###length 7 STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Salvar cenário -STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Carregar cenário -STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Salvar mapa topográfico -STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Carregar mapa topográfico +STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Abrir cenário +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Salvar mapa de altitudes +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Abrir mapa de altitudes STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Sair do editor de cenários STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Sair +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Gerar localidades +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Colocar casas + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Opções do jogo STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Configurações STR_SETTINGS_MENU_AI_SETTINGS :Configurações de IA -STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :Configurações de script de jogo +STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :Configurações de Script de Jogo STR_SETTINGS_MENU_NEWGRF_SETTINGS :Configurações de NewGRF -STR_SETTINGS_MENU_SANDBOX_OPTIONS :Opções da "sandbox" +STR_SETTINGS_MENU_SANDBOX_OPTIONS :Opções da sandbox STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opções de transparência STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Mostrar nomes de localidades STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Mostrar nomes de estações STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Mostrar nomes dos pontos de controle -STR_SETTINGS_MENU_SIGNS_DISPLAYED :Mostrar sinais -STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Mostrar placas e nomes dos concorrentes +STR_SETTINGS_MENU_SIGNS_DISPLAYED :Mostrar placas +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Mostrar placas/nomes dos concorrentes STR_SETTINGS_MENU_FULL_ANIMATION :Animação completa STR_SETTINGS_MENU_FULL_DETAIL :Máximo de detalhes STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Edifícios transparentes @@ -466,47 +468,47 @@ STR_FILE_MENU_EXIT :Sair # Map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa do mundo -STR_MAP_MENU_EXTRA_VIEWPORT :Janela de visualização extra +STR_MAP_MENU_EXTRA_VIEWPORT :Visualização extra STR_MAP_MENU_LINGRAPH_LEGEND :Legenda do fluxo de carga STR_MAP_MENU_SIGN_LIST :Lista de placas # Town menu STR_TOWN_MENU_TOWN_DIRECTORY :Lista de localidades -STR_TOWN_MENU_FOUND_TOWN :Fundar localidade +STR_TOWN_MENU_FOUND_TOWN :Fundar uma localidade # Subsidies menu STR_SUBSIDIES_MENU_SUBSIDIES :Subsídios # Graph menu STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Gráfico do lucro operacional -STR_GRAPH_MENU_INCOME_GRAPH :Gráfico das receitas -STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Gráfico das cargas entregues +STR_GRAPH_MENU_INCOME_GRAPH :Gráfico de rendimentos +STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Gráfico da carga entregada STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Gráfico do histórico de desempenho -STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Gráfico do valor da empresa -STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Receitas por carga +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Gráfico de valor da empresa +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Tarifas por carga # Company league menu STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabela de classificação das empresas -STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Classificação detalhada de desempenho -STR_GRAPH_MENU_HIGHSCORE :Tabela de classificações +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Avaliação detalhada de desempenho +STR_GRAPH_MENU_HIGHSCORE :Painel de classificação # Industry menu -STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Catálogo de indústrias +STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Lista de indústrias STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Cadeias industriais STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fundar nova indústria # URailway construction menu STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Construção de ferrovia -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Construção de ferrovia elétrificada +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Construção de ferrovia eletrificada STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Construção de monotrilho STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Construção de Maglev # Road construction menu -STR_ROAD_MENU_ROAD_CONSTRUCTION :Construção de estradas -STR_ROAD_MENU_TRAM_CONSTRUCTION :Construção de linhas de bonde +STR_ROAD_MENU_ROAD_CONSTRUCTION :Construção de estrada +STR_ROAD_MENU_TRAM_CONSTRUCTION :Construção de linha de bonde # Waterways construction menu -STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Construção de hidrovias +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Construção de hidrovia # Aairport construction menu STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Construção de aeroporto @@ -527,15 +529,15 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Apagar todas as # About menu STR_ABOUT_MENU_LAND_BLOCK_INFO :Informações do terreno STR_ABOUT_MENU_HELP :Ajuda & manuais -STR_ABOUT_MENU_TOGGLE_CONSOLE :Mostrar/ocultar console +STR_ABOUT_MENU_TOGGLE_CONSOLE :Mostrar/Ocultar console STR_ABOUT_MENU_AI_DEBUG :Depuração de IA/Script de jogo STR_ABOUT_MENU_SCREENSHOT :Captura de tela STR_ABOUT_MENU_SHOW_FRAMERATE :Mostrar taxa de quadros -STR_ABOUT_MENU_ABOUT_OPENTTD :Sobre 'OpenTTD' +STR_ABOUT_MENU_ABOUT_OPENTTD :Sobre o 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Alinhador de sprites -STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Mostrar/ocultar as bordas delimitadoras -STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Ativar/desativar a colorização dos blocos sujos -STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Mostrar/ocultar os contornos do elemento +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Mostrar/Ocultar caixas delimitadoras +STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Ativar coloração dos blocos sujos +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Mostrar/Ocultar contornos dos widgets ###length 31 STR_DAY_NUMBER_1ST :1 @@ -606,30 +608,30 @@ STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STR STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} -STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Gráfico de Lucro Operacional -STR_GRAPH_INCOME_CAPTION :{WHITE}Gráfico de Receitas -STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unidades de carga entregues -STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Classificações do desempenho da empresa (máximo=1000) +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Gráfico do Lucro Operacional +STR_GRAPH_INCOME_CAPTION :{WHITE}Gráfico de Rendimentos +STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unidades de carga entregada +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Classificação do desempenho das empresas (máximo=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Gráfico de Valor da Empresa STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Últimos 72 minutos -STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Receitas por carga +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Tarifas por Carga STR_GRAPH_CARGO_PAYMENT_RATES_DAYS :{TINY_FONT}{BLACK}Dias em trânsito STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLACK}Segundos em trânsito -STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pagamento por entregar 10 unidades (ou 10 mil litros) de carga em uma distância de 20 quadrados -STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Habilitar tudo -STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Desabilitar tudo -STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Mostrar todas as cargas no gráfico de receitas por carga -STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Não mostrar cargas no gráfico de receitas por carga -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Mostrar/ocultar gráfico para o tipo de carga +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pagamento por entregar 10 unidades (ou 10 mil litros) de carga numa distância de 20 quadrados +STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Ativar tudo +STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Desativar tudo +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Mostrar todas as cargas no gráfico de tarifas por carga +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Não mostrar cargas no gráfico de tarifas por carga +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Mostrar/Ocultar gráfico para este tipo de carga STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Mostrar avaliações detalhadas de desempenho # Graph key window -STR_GRAPH_KEY_CAPTION :{WHITE}Chave para gráficos da empresa -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Clique aqui para mostrar/ocultar empresa no gráfico +STR_GRAPH_KEY_CAPTION :{WHITE}Chave dos gráficos da empresa +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Mostrar/Ocultar esta empresa no gráfico # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tabela de Classificação das Empresas @@ -646,20 +648,20 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Presidente STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnata # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}Classificação Detalhada de Desempenho +STR_PERFORMANCE_DETAIL :{WHITE}Avaliação Detalhada de Desempenho STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalhes STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% -STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Ver detalhes desta empresa +STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Ver detalhes sobre esta empresa ###length 10 STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Veículos: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Estações: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Lucro mín.: -STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Receita mín.: -STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Receita máx.: -STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Entregue: +STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Renda mín.: +STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Renda máx.: +STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Entregado: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Carga: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Dinheiro: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Empréstimo: @@ -668,19 +670,19 @@ STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total: STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Número de veículos que geraram lucro no último ano. Isso inclui veículos rodoviários, trens, embarcações e aeronaves STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Número de veículos que geraram lucro no último período. Isso inclui veículos rodoviários, trens, embarcações e aeronaves -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Número de estações recentemente atendidas. Estações de trem, paradas de ônibus, aeroportos, etc. são contados individualmente, mesmo que pertençam à mesma estação -STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Lucro do veículo com a menor receita (somente veículos com mais de dois anos são considerados) -STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Lucro do veículo com a menor receita (somente veículos com mais de dois períodos são considerados) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Quantia de dinheiro obtido no trimestre com o menor lucro dos últimos 12 trimestres -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Quantia de dinheiro obtido no trimestre com o maior lucro dos últimos 12 trimestres -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unidades de carga entregue nos últimos quatro trimestres -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Número de tipos de carga entregues no último trimestre +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Número de estações atendidas recentemente. Estações de trem, paradas de ônibus, aeroportos, etc., são contados separadamente, mesmo que pertençam à mesma estação +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Lucro do veículo com o menor rendimento (apenas veículos com mais de dois anos são considerados) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Lucro do veículo com o menor rendimento (apenas veículos com mais de dois períodos são considerados) +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Quantia de dinheiro obtida no trimestre com o menor lucro dos últimos 12 trimestres +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Quantia de dinheiro obtida no trimestre com o maior lucro dos últimos 12 trimestres +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unidades de carga entregada nos últimos quatro trimestres +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Número de tipos de carga entregada no último trimestre STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Quantia de dinheiro que esta empresa tem no banco -STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}A quantia de dinheiro que esta empresa tomou por empréstimo +STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}O montante que esta empresa tomou por empréstimo STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total de pontos de pontos possíveis # Music window -STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jukebox de Jazz +STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jukebox de Música STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Todos STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Antigo STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Moderno @@ -698,18 +700,18 @@ STR_MUSIC_TRACK :{TINY_FONT}{BLA STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Título STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Aleatório STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programa -STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Passar para a faixa anterior na seleção -STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Passar para a próxima faixa na seleção +STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Passar para a faixa anterior da seleção +STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Passar para a próxima faixa da seleção STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Parar a reprodução de música STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Iniciar a reprodução de música -STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Arrastar os controles deslizantes para definir o volume de músicas e efeitos sonoros -STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Selecionar programa 'Todas as faixas' -STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selecionar músicas 'Estilo Antigo' -STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selecionar músicas 'Estilo Moderno' -STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selecionar músicas 'Estilo Ezy Street' -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecionar músicas 'Personalizado 1' (definido pelo usuário) -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecionar músicas 'Personalizado 2' (definido pelo usuário) -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Ligar/Desligar reprodução aleatória +STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Arraste os controles deslizantes para definir o volume de músicas e efeitos sonoros +STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Selecionar programa 'todas as faixas' +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selecionar programa com músicas 'estilo antigo' +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selecionar programa com músicas 'estilo moderno' +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selecionar programa com músicas 'estilo Ezy Street' +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecionar programa 'Personalizado 1' (definido pelo usuário) +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecionar programa 'Personalizado 2' (definido pelo usuário) +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Ligar/Desligar programa aleatório STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostrar janela de seleção de faixas de música # Playlist window @@ -717,11 +719,11 @@ STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Programa STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} '{STRING}' STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índice de faixas STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{STRING}' -STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Limpar +STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Apagar STR_PLAYLIST_CHANGE_SET :{BLACK}Mudar conjunto STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Apagar o programa atual (apenas Personalizado 1 ou Personalizado 2) STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Mudar a seleção musical para outro conjunto instalado -STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clique na faixa de música para a adicionar ao programa atual (apenas Personalizado 1 ou Personalizado 2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clique na faixa de música para adicionar ao programa atual (apenas Personalizado 1 ou Personalizado 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Clique na faixa de música para remover do programa atual (apenas Personalizado 1 ou Personalizado 2) # Highscore window @@ -732,7 +734,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Empreendedor STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrial STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnata -STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mandachuva +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Grande magnata STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnata do Século STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) @@ -754,13 +756,13 @@ STR_SMALLMAP_TYPE_OWNERS :Proprietários STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Mostrar contornos do terreno no mapa STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Mostrar veículos no mapa STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Mostrar indústrias no mapa -STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Mostrar fluxo de cargas no mapa +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Mostrar fluxo de carga no mapa STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Mostrar rotas de transporte no mapa STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Mostrar vegetação no mapa STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Mostrar proprietários dos terrenos no mapa -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Clique em um tipo de indústria para mostrar/ocultar a indústria. Ctrl+Clique desabilita todos os tipos exceto a selecionada. Ctrl+Clique nela novamente para habilitar todos os tipos de indústrias -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Clique em uma empresa para mostrar/ocultar suas propriedades. Ctrl+Clique desabilita todas as companias exceto a selecionada. Ctrl+Clique nela novamente para habilitar todas as empresas -STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Clique em uma carga para mostrar/ocultar suas propriedades. Ctrl+Clique desabilita todas as cargas exceto a selecionada. Ctrl+Clique novamente para habilitar todas as cargas +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Clique num tipo de indústria para mostrar/ocultar a indústria. Ctrl+Clique para desativar todos os tipos, exceto o selecionado. Ctrl+Clique novamente para ativar todos os tipos de indústria +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Clique numa empresa para mostrar/ocultar suas propriedades. Ctrl+Clique para desativar todas as empresas, exceto a selecionada. Ctrl+Clique novamente para ativar todas as empresas +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Clique numa carga para mostrar/ocultar sua propriedade. Ctrl+Clique para desativar todas as cargas, exceto a selecionada. Ctrl+Clique novamente para ativar todas as cargas STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Estradas STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Ferrovias @@ -792,18 +794,20 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Deserto STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Neve -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Mostrar/ocultar nomes das localidades no mapa +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Mostrar nomes das localidades STR_SMALLMAP_CENTER :{BLACK}Centralizar o minimapa na localização atual STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} -STR_SMALLMAP_DISABLE_ALL :{BLACK}Desabilitar tudo -STR_SMALLMAP_ENABLE_ALL :{BLACK}Habilitar tudo -STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostrar altura +STR_SMALLMAP_DISABLE_ALL :{BLACK}Desativar tudo +STR_SMALLMAP_ENABLE_ALL :{BLACK}Ativar tudo +STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostrar altitudes +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Mostrar nomes de indústrias STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Não mostrar indústrias no mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostrar todas as indústrias no mapa -STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Mostrar/ocultar mapa topográfico +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Mostrar mapa de altitudes +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Mostrar nomes de indústrias STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Mostrar no mapa as propriedades que não pertencem às empresas STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Mostrar no mapa as propriedades de todas as empresas STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Não mostrar as cargas no mapa @@ -814,15 +818,15 @@ STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostrar STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSADO * * STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * PAUSADO (aguardando atualização da rede de conexões) * * -STR_STATUSBAR_AUTOSAVE :{RED}Salvo Automaticamente +STR_STATUSBAR_AUTOSAVE :{RED}SALVAR AUTOMÁTICO STR_STATUSBAR_SAVING_GAME :{RED}* * SALVANDO JOGO * * STR_STATUSBAR_SPECTATOR :{WHITE}(espectador) -STR_STATUSBAR_INFINITE_MONEY :{WHITE}(dinheiro ilimitado) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(dinheiro infinito) # News message history STR_MESSAGE_HISTORY :{WHITE}Histórico de Mensagens -STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Uma lista das mensagens de notícias recentes +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Uma lista das mensagens e notícias recentes STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Mensagem @@ -833,30 +837,30 @@ STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLAC STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Cidadãos celebram . . .{}Primeiro caminhão chega em {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Cidadãos celebram . . .{}Primeiro bonde de passageiros chega em {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Cidadãos celebram . . .{}Primeiro bonde de carga chega em {STATION}! -STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Cidadãos celebram . . .{}Primeira embarcação chega nas {STATION}! -STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Cidadãos celebram . . .{}Primeira aeronave chega no {STATION}! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Cidadãos celebram . . .{}Primeira embarcação chega em {STATION}! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Cidadãos celebram . . .{}Primeira aeronave chega em {STATION}! -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Acidente de Trem!{}{COMMA} morrem em explosão após colisão -STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Acidente Rodoviário!{}Condutor morre em explosão após colisão com um trem -STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Acidente Rodoviário!{}{COMMA} morrem em explosão após colisão com um trem -STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Acidente Aéreo!{}{COMMA} morrem em explosão na {STATION} -STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Acidente Aéreo!{}Aeronave ficou sem combustível, {COMMA} morrem em explosão +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Acidente de Trem!{}{COMMA} morre{P "" m} na explosão após a colisão +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Acidente Rodoviário!{}Condutor morre na explosão após a colisão com um trem +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Acidente Rodoviário!{}{COMMA} morre{P "" m} na explosão após a colisão com um trem +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Acidente Aéreo!{}{COMMA} morre{P "" m} na explosão em {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Acidente Aéreo!{}Aeronave ficou sem combustível, {COMMA} morre{P "" m} na explosão -STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Desastre de Zepelin em {STATION}! +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Desastre de Zepelim em {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Veículo rodoviário destruído em colisão com OVNI! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Explosão em refinaria de petróleo perto de {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fábrica destruída em circunstâncias suspeitas perto de {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}OVNI pousa em {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Afundamento da mina de carvão deixa rastro de destruição perto de {TOWN}! -STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Inundações!{}Pelo menos {COMMA} desaparecidos, supostamente mortos após inundações significativas! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Inundações!{}Pelo menos {COMMA} desaparecidos, considerados como mortos após terríveis inundações! -STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Empresa de transporte em apuros! -STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} será vendida ou declarada falida a menos que aumente o desempenho em breve! +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Empresa de transporte em dificuldades! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} será vendida ou declarada falida se não aumentar o desempenho em breve! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Fusão de empresas de transportes! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} foi vendida para {STRING} por {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Falência! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} foi fechada pelos credores e todos os seus bens foram vendidos! -STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nova empresa de transportes foi lançada! +STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nova empresa de transportes! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} inicia construção perto de {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} foi comprada por {STRING} por um valor não revelado! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Gerente) @@ -864,25 +868,25 @@ STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDE STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} financiou a construção da nova localidade de {TOWN}! STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Uma nova localidade chamada {TOWN} foi fundada! -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nov{G o a} {STRING} under construction near {TOWN}! +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nov{G o a} {STRING} em construção perto de {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nov{G o a} {STRING} sendo plantada perto de {TOWN}! -STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} anuncia o encerramento iminente! -STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Problemas de abastecimento levam {STRING} a anunciar o encerramento iminente! -STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Falta de árvores nas proximidades faz {STRING} anunciar o encerramento iminente! +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} anuncia o fechamento iminente! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Problemas de abastecimento fazem {STRING} anunciar o fechamento iminente! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Falta de árvores nas proximidades faz {STRING} anunciar o fechamento iminente! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}União Monetária Europeia!{}{}O Euro é introduzido como moeda única para as operações diárias em seu país! -STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Recessão Mundial!{}{}Especialistas financeiros temem o pior enquanto a economia afunda! +STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Recessão Mundial!{}{}Especialistas financeiros temem o pior com a economia em queda! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Fim da recessão!{}{}Melhoras no comércio inspiram confiança nas indústrias à medida que a economia se fortalece! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} aumenta a produção! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nova camada de carvão encontrada na {INDUSTRY}!{}A produção deverá duplicar! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Novas reservas de petróleo encontradas {G nos na} {INDUSTRY}!{}A produção deverá duplicar! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Novas reservas de petróleo encontradas n{G o a} {INDUSTRY}!{}A produção deverá duplicar! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Métodos agrícolas aperfeiçoados na {INDUSTRY} deverão duplicar a produção! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}A produção de {STRING} {G nos na} {INDUSTRY} aumentou em {COMMA}%! -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}A produção de {INDUSTRY} foi reduzida em 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Infestação de insetos causa destruição {G no na} {INDUSTRY}!{}A produção caiu em 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}A produção de {STRING} {G nos na} {INDUSTRY} diminui {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Produção de {STRING} n{G o a} {INDUSTRY} aumenta {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} diminui a produção em 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Infestação de insetos causa destruição n{G o a} {INDUSTRY}!{}Produção diminui 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Produção de {STRING} n{G o a} {INDUSTRY} diminui {COMMA}%! ###length VEHICLE_TYPES STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} está aguardando no depósito @@ -892,7 +896,7 @@ STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE ###next-name-looks-similar # Order review system / warnings -STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} tem muito poucas ordens no horário +STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} tem muito poucas ordens na programação STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} tem uma ordem nula STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} tem ordens duplicadas STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} tem uma estação inválida em suas ordens @@ -900,77 +904,73 @@ STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} está ficando velho STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} está ficando muito velho -STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} está ficando muito velho e necessita urgentemente de substituição +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} está ficando muito velho e precisa urgentemente ser substituído STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} não consegue encontrar um caminho para continuar STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} está perdido STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :{WHITE}{VEHICLE} gerou um lucro de {CURRENCY_LONG} no último ano STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}{VEHICLE} gerou um lucro de {CURRENCY_LONG} no último período -STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} não pode chegar no próximo destino porque ele está fora da autonomia +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} não consegue chegar no próximo destino porque está fora de alcance STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} parou porque uma ordem de adaptação falhou STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Renovação automática falhou para {VEHICLE}{}{STRING} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Novo {STRING} já disponível! +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nov{G o a} {STRING} disponível! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novo {STRING} já disponível! - {ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G o a} {STRING} disponível! - {ENGINE} STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Abrir a janela de grupos focada no grupo do veículo STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} não aceita mais: {CARGO_LIST} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} agora aceita: {CARGO_LIST} -STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta do subsídio expirou:{}{}{STRING} de {STRING} para {STRING} agora não será subsidiado -STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsídio retirado:{}{}Transportar {STRING} de {STRING} para {STRING} não é mais subsidiado -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsídio de serviço oferecido:{}{}Primeiro transporte de {STRING} de {STRING} para {STRING} irá receber {UNITS_YEARS_OR_MINUTES} de subsídio da autoridade local! +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta de subsídio expirou:{}{}Transporte de {STRING} d{G e a} {STRING} para {STRING} agora não será subsidiado +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsídio retirado:{}{}Transporte de {STRING} d{G e a} {STRING} para {STRING} não é mais subsidiado +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsídio de serviço oferecido:{}{}Primeiro transporte de {STRING} d{G e a} {STRING} para {STRING} receberá subsídio da autoridade local durante {UNITS_YEARS_OR_MINUTES}! ###length 4 -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsídio de serviço concedido a {STRING}!{}{}{STRING} de {STRING} para {STRING} será pago a 150% pelos próximos {UNITS_YEARS_OR_MINUTES}! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subsídio de serviço concedido a {STRING}!{}{}{STRING} de {STRING} para {STRING} será pago a 200% pelos próximos {UNITS_YEARS_OR_MINUTES}! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsídio de serviço concedido a {STRING}!{}{}{STRING} de {STRING} para {STRING} será pago a 300% pelos próximos {UNITS_YEARS_OR_MINUTES}! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsídio de serviço concedido a {STRING}!{}{}{STRING} de {STRING} para {STRING} será pago a 400% pelos próximos {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsídio concedido a {STRING}!{}{}Transporte de {STRING} d{G e a} {STRING} para {STRING} receberá um adicional de 50% durante {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subsídio concedido a {STRING}!{}{}Transporte de {STRING} d{G e a} {STRING} para {STRING} receberá o dobro da tarifa durante {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsídio concedido a {STRING}!{}{}Transporte de {STRING} d{G e a} {STRING} para {STRING} receberá o triplo da tarifa durante {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsídio concedido a {STRING}!{}{}Transporte de {STRING} d{G e a} {STRING} para {STRING} receberá o quádruplo da tarifa durante {UNITS_YEARS_OR_MINUTES}! STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Tráfego caótico em {TOWN}!{}{}Programa de reconstrução de estradas financiado por {STRING} provoca 6 meses de sofrimento aos motoristas! STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Tráfego caótico em {TOWN}!{}{}Programa de reconstrução de estradas financiado por {STRING} provoca 6 minutos de sofrimento aos motoristas! -STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopólio dos transportes! -STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}A autoridade local de {TOWN} assinou um contrato com {STRING} por 12 meses de direitos exclusivos de transporte! -STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}A autoridade local de {TOWN} assinou um contrato com {STRING} por 12 minutos de direitos exclusivos de transporte! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopólio de transporte! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}A autoridade local de {TOWN} assinou um contrato com {STRING} concedendo 12 meses de direitos exclusivos de transporte! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}A autoridade local de {TOWN} assinou um contrato com {STRING} concedendo 12 minutos de direitos exclusivos de transporte! # Extra view window -STR_EXTRA_VIEWPORT_TITLE :{WHITE}Janela de visualização {COMMA} -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Trocar de visualização +STR_EXTRA_VIEWPORT_TITLE :{WHITE}Visualização {COMMA} +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Mudar a visualização STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copiar a localização da visualização principal para esta visualização -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Colar da visualização principal -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Colar a localização desta janela de visualização para a visualização principal +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Mudar a visualização principal +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copiar a localização desta visualização para a visualização principal # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Opções do Jogo STR_GAME_OPTIONS_TAB_GENERAL :Geral -STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Escolher as configurações gerais +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Escolher as definições gerais STR_GAME_OPTIONS_TAB_GRAPHICS :Gráficos -STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Escolher as configurações gráficas +STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Escolher as definições gráficas STR_GAME_OPTIONS_TAB_SOUND :Som -STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Escolher as configurações de sons e música +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Escolher as definições de sons e música STR_GAME_OPTIONS_TAB_SOCIAL :Social -STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Escolher as configurações de integração social +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Escolher as definições de integração social STR_GAME_OPTIONS_VOLUME :Volume STR_GAME_OPTIONS_SFX_VOLUME :Efeitos sonoros STR_GAME_OPTIONS_MUSIC_VOLUME :Música -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades monetárias STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Seleção de unidades monetárias STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 -STR_GAME_OPTIONS_CURRENCY_GBP :Libras Britânicas -STR_GAME_OPTIONS_CURRENCY_USD :Dólares Norte Americanos +###length 44 +STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britânica +STR_GAME_OPTIONS_CURRENCY_USD :Dólar Norte Americano STR_GAME_OPTIONS_CURRENCY_EUR :Euro STR_GAME_OPTIONS_CURRENCY_JPY :Iene Japonês STR_GAME_OPTIONS_CURRENCY_ATS :Xelim Austríaco @@ -986,22 +986,22 @@ STR_GAME_OPTIONS_CURRENCY_GRD :Dracma Grego STR_GAME_OPTIONS_CURRENCY_HUF :Forint Húngaro STR_GAME_OPTIONS_CURRENCY_ISK :Coroa Islandesa STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italiana -STR_GAME_OPTIONS_CURRENCY_NLG :Guilda Holandesa +STR_GAME_OPTIONS_CURRENCY_NLG :Florim Holandês STR_GAME_OPTIONS_CURRENCY_NOK :Coroa Norueguesa -STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Polonês -STR_GAME_OPTIONS_CURRENCY_RON :Lei Romeno +STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Polonês +STR_GAME_OPTIONS_CURRENCY_RON :Leu Romeno STR_GAME_OPTIONS_CURRENCY_RUR :Rublo Russo -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Eslovênio +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Esloveno STR_GAME_OPTIONS_CURRENCY_SEK :Coroa Sueca STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turca STR_GAME_OPTIONS_CURRENCY_SKK :Coroa Eslovaca STR_GAME_OPTIONS_CURRENCY_BRL :Real Brasileiro STR_GAME_OPTIONS_CURRENCY_EEK :Coroa Estoniana STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lituano -STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul-Coreano -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul-Africano -STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizado... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Georgia +STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul Coreano +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul Africano +STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizada... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Geórgia STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano STR_GAME_OPTIONS_CURRENCY_RUB :Novo Rublo Russo STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexicano @@ -1009,12 +1009,13 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Novo Dólar Tai STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Chinês STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong STR_GAME_OPTIONS_CURRENCY_INR :Rúpia Indiana -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonésia -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaio +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia da Indonésia +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit da Malásia STR_GAME_OPTIONS_CURRENCY_LVL :Lats da Letônia +STR_GAME_OPTIONS_CURRENCY_PTE :Escudo Português STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvar automaticamente -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecionar o intervalo entre jogos salvos automaticamente +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Escolher o intervalo entre jogos salvos automaticamente # Autosave dropdown ###length 5 @@ -1025,89 +1026,88 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :A cada 60 minut STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :A cada 120 minutos STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma -STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecionar o idioma da interface do jogo +STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Escolher o idioma da interface do jogo STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% concluído) STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Tela cheia STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marque esta caixa para jogar o OpenTTD em modo de tela cheia STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolução da tela -STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecionar a resolução da tela que será usada +STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecione uma resolução de tela para usar STR_GAME_OPTIONS_RESOLUTION_OTHER :outra STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM} -STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Aceleração de hardware -STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Marque esta caixa para permitir que o OpenTTD tente usar a aceleração de hardware. Qualquer mudança nesta configuração será aplicada somente após reiniciar o jogo -STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}A configuração terá efeito somente após reiniciar o jogo +STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Aceleração por hardware +STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Marque esta caixa para permitir que o OpenTTD tente usar aceleração por hardware. Se modificada, esta configuração só terá efeito após reiniciar o jogo +STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}A configuração só terá efeito após reiniciar o jogo STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync -STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Marque esta caixa para habilitar o v-sync na tela. Qualquer mudança nesta configuração será aplicada somente após reiniciar o jogo. Só funciona com a aceleração de hardware habilitada +STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Marque esta caixa para ativar v-sync na tela. Se modificada, esta configuração só terá efeito após reiniciar o jogo. Funciona somente com aceleração por hardware ativada -STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Driver de vídeo atual: {STRING} +STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Controlador atual: {STRING} STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Tamanho da interface -STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Arraste o controle deslizante para definir o tamanho da interface. Ctrl+Arrastar para fazer um ajuste contínuo -STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Detetar automaticamente o tamanho -STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marque esta caixa para detetar automaticamente o tamanho da interface +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Arraste o controle deslizante para definir o tamanho da interface. Ctrl+Arraste para um ajuste contínuo +STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Detectar automaticamente o tamanho +STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marque esta caixa para detectar automaticamente o tamanho da interface -STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar chanfros -STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marque esta caixa para dimensionar os chanfros pelo tamanho de interface +STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar bordas +STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marque esta caixa para dimensionar as bordas pelo tamanho de interface -STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Usar a fonte sprite tradicional -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marque esta caixa se preferir usar o tipo de fonte tradicional de tamanho fixo. -STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Fontes com bordas suaves -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marque esta caixa para fontes redimensionáveis com bordas suaves. +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Usar a fonte fixa tradicional +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marque esta caixa se preferir usar o tipo de fonte tradicional de tamanho fixo +STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Fontes com contornos suaves +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marque esta caixa para usar fontes redimensionáveis com contornos suaves -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Pesquisa automatizada -STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participar de pesquisa automatizada -STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Quando ativado, o OpenTTD transmitirá uma pesquisa ao sair de um jogo +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participar da pesquisa automatizada +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Quando ativado, o OpenTTD enviará uma pesquisa ao sair de um jogo STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Sobre pesquisa e privacidade -STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Isso abre um navegador com mais informações sobre a pesquisa automatizada +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Abrir um navegador com mais informações sobre a pesquisa automatizada STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Pré-visualizar resultado da pesquisa STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Mostrar o resultado da pesquisa do jogo atual em execução STR_GAME_OPTIONS_GRAPHICS :{BLACK}Gráficos STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Taxa de atualização da tela -STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}Selecionar qual taxa de atualização da tela usar +STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}Selecione uma taxa de atualização de tela para usar STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz -STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Taxas de atualização superiores a 60Hz podem afetar o desempenho. +STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Taxas de atualização superiores a 60Hz podem interferir no desempenho. -STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecionar qual conjunto de gráficos base usar (não pode ser alterado no jogo, só a partir do menu principal) -STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informações adicionais sobre o conjunto de gráficos base +STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos básicos +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecione um conjunto de gráficos básicos para usar (não pode ser alterado no jogo, só a partir do menu principal) +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre sobre o conjunto de gráficos básicos -STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunto de sons base -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selecionar qual conjunto de sons base usar (não pode ser alterado no jogo, só a partir do menu principal) -STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informações sobre o conjunto de sons base +STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunto de sons básicos +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selecione um conjunto de sons básicos para usar (não pode ser alterado no jogo, só a partir do menu principal) +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre sobre o conjunto de sons básicos -STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunto de músicas base -STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecionar qual conjunto de músicas base usar -STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de músicas base +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunto de músicas básicas +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecione um conjunto de músicas básicas para usar +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de músicas básicas -STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(não exitem plugins para integrar com as plataformas sociais instaladas) +STR_GAME_OPTIONS_ONLINE_CONTENT :Obter Conteúdo +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Verificar por conteúdo novo e atualizado para download + +STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(não existem plugins instalados para integrar com as plataformas sociais) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Plataforma: STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Estado do plugin: -STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Executando -STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Falha na inicialização -STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} não executando -STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Descarregado +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Executando (ativo) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Falha ao inicializar +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} está parado (inativo) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Não carregado STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Plugin duplicado STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}Versão não suportada STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Assinatura inválida -STR_BASESET_STATUS :{STRING} {RED}({NUM} arquivo{P "" s} em falta/corrompido{P "" s}) +STR_BASESET_STATUS :{STRING} {RED}({NUM} arquivo{P "" s} faltando/corrompido{P "" s}) -STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Falha ao obter a lista de resoluções suportadas +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Falha ao obter uma lista de resoluções suportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modo de tela cheia falhou # Custom currency window @@ -1118,6 +1118,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Diminuir STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Aumentar o valor da sua moeda para uma Libra(£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Definir a taxa de câmbio de sua moeda por uma Libra(£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Separador: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Definir o separador para a sua moeda + STR_CURRENCY_PREFIX :{LTBLUE}Prefixo: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Definir o prefixo para a sua moeda STR_CURRENCY_SUFFIX :{LTBLUE}Sufixo: {ORANGE}{STRING} @@ -1131,10 +1134,10 @@ STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Mudar pa STR_CURRENCY_PREVIEW :{LTBLUE}Pré-visualização: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Libras (£) na sua moeda -STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Alterar o parâmetro de moeda personalizada +STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Modificar o parâmetro de moeda personalizada STR_NONE :Nenhum -STR_FUNDING_ONLY :Apenas financiamento +STR_FUNDING_ONLY :Somente financiamento STR_MINIMAL :Mínimo STR_NUM_VERY_LOW :Muito baixo STR_NUM_LOW :Baixo @@ -1143,19 +1146,19 @@ STR_NUM_HIGH :Alto STR_NUM_CUSTOM :Personalizado STR_NUM_CUSTOM_NUMBER :Personalizado ({NUM}) -STR_VARIETY_NONE :Nenhum -STR_VARIETY_VERY_LOW :Muito Baixo -STR_VARIETY_LOW :Baixo -STR_VARIETY_MEDIUM :Médio -STR_VARIETY_HIGH :Alto -STR_VARIETY_VERY_HIGH :Muito Alto +STR_VARIETY_NONE :Nenhuma +STR_VARIETY_VERY_LOW :Muito Baixa +STR_VARIETY_LOW :Baixa +STR_VARIETY_MEDIUM :Média +STR_VARIETY_HIGH :Alta +STR_VARIETY_VERY_HIGH :Muito Alta ###length 5 -STR_AI_SPEED_VERY_SLOW :Muito Lento -STR_AI_SPEED_SLOW :Lento -STR_AI_SPEED_MEDIUM :Médio -STR_AI_SPEED_FAST :Rápido -STR_AI_SPEED_VERY_FAST :Muito Rápido +STR_AI_SPEED_VERY_SLOW :Muito Lenta +STR_AI_SPEED_SLOW :Lenta +STR_AI_SPEED_MEDIUM :Média +STR_AI_SPEED_FAST :Rápida +STR_AI_SPEED_VERY_FAST :Muito Rápida ###length 6 STR_SEA_LEVEL_VERY_LOW :Muito Baixo @@ -1172,8 +1175,8 @@ STR_RIVERS_MODERATE :Alguns STR_RIVERS_LOT :Muitos ###length 3 -STR_DISASTER_NONE :Nenhum -STR_DISASTER_REDUCED :Reduzido +STR_DISASTER_NONE :Nenhuma +STR_DISASTER_REDUCED :Reduzida STR_DISASTER_NORMAL :Normal ###length 4 @@ -1184,9 +1187,9 @@ STR_SUBSIDY_X4 :x4 ###length 4 STR_CLIMATE_TEMPERATE_LANDSCAPE :Clima temperado -STR_CLIMATE_SUB_ARCTIC_LANDSCAPE :Clima subárctico +STR_CLIMATE_SUB_ARCTIC_LANDSCAPE :Clima subártico STR_CLIMATE_SUB_TROPICAL_LANDSCAPE :Clima subtropical -STR_CLIMATE_TOYLAND_LANDSCAPE :Clima Terra dos Brinquedos +STR_CLIMATE_TOYLAND_LANDSCAPE :Terra dos Brinquedos ###length 7 STR_TERRAIN_TYPE_VERY_FLAT :Muito Plano @@ -1198,47 +1201,47 @@ STR_TERRAIN_TYPE_CUSTOM :Altura personal STR_TERRAIN_TYPE_CUSTOM_VALUE :Altura personalizada ({NUM}) ###length 4 -STR_CITY_APPROVAL_LENIENT :Brando +STR_CITY_APPROVAL_LENIENT :Leniente STR_CITY_APPROVAL_TOLERANT :Tolerante STR_CITY_APPROVAL_HOSTILE :Hostil -STR_CITY_APPROVAL_PERMISSIVE :Permissivo (sem efeito nas ações da empresa) +STR_CITY_APPROVAL_PERMISSIVE :Permissiva (sem efeito nas ações da empresa) -STR_WARNING_NO_SUITABLE_AI :{WHITE}Não existem IA's disponíveis...{}Você pode obter várias IA's usando o sistema de 'Conteúdo Online' +STR_WARNING_NO_SUITABLE_AI :{WHITE}Não existem IAs disponíveis...{}Você pode obter várias IAs usando o sistema de 'Conteúdo Online' # Settings tree window STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Configurações STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtro: -STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expandir todas -STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Colapsar todas +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expandir tudo +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Colapsar tudo STR_CONFIG_SETTING_RESET_ALL :{BLACK}Restaurar todos os valores STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(sem explicação disponível) STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR} STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Valor padrão: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Tipo de configuração: {ORANGE}{STRING} -STR_CONFIG_SETTING_TYPE_CLIENT :Configuração de cliente (não guardado no savegame; afeta todos os jogos) -STR_CONFIG_SETTING_TYPE_GAME_MENU :Configuração do jogo (guardado no savegame; afeta apenas novos jogos) -STR_CONFIG_SETTING_TYPE_GAME_INGAME :Configuração do jogo (guardado no savegame; afeta apenas o jogo atual) -STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Configurações da empresa (guardado no savegame; afeta apenas novos jogos) -STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Configurações da empresa (guardado no savegame; afeta apenas a empresa atual) +STR_CONFIG_SETTING_TYPE_CLIENT :Configuração do cliente (não é armazenada no jogo salvo; afeta todos os jogos) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Configuração do jogo (armazenada no jogo salvo; só afeta novos jogos) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Configuração do jogo (armazenada no jogo salvo; só afeta o jogo atual) +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Configuração da empresa (armazenada no jogo salvo; só afeta novos jogos) +STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Configuração da empresa (armazenada no jogo salvo; só afeta a empresa atual) STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_CAPTION :{WHITE}Cuidado! -STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_TEXT :{WHITE}Essa ação irá restaurar todas as configurações para os valores padrão.{}Tem certeza que deseja continuar? +STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_TEXT :{WHITE}Esta ação irá restaurar todas as configurações do jogo para os seus valores padrão.{}Você quer mesmo fazer a restauração? STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categoria: STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipo: -STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo usando filtros pré-definidos -STR_CONFIG_SETTING_RESTRICT_BASIC :Básico (mostrar apenas as configurações importantes) -STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avançado (mostra a maioria das definições) -STR_CONFIG_SETTING_RESTRICT_ALL :Expert (mostrar todas as definições, incluindo as estranhas) +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restringir a lista abaixo usando filtros pré-definidos +STR_CONFIG_SETTING_RESTRICT_BASIC :Básico (mostrar somente as configurações importantes) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avançado (mostrar a maioria das configurações) +STR_CONFIG_SETTING_RESTRICT_ALL :Especialista (mostrar todas as configurações, incluindo as estranhas) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Configurações com um valor diferente do padrão STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Configurações com um valor diferente das preferências para novos jogos -STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo a determinados tipos +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restringir a lista abaixo a certos tipos de configuração STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Todos os tipos de configuração -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Configuração do cliente (não é guardado no savegame; afeta todos os jogos) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Configurações do jogo (guardado no savegame; afeta apenas novos jogos) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Configurações do jogo (guardado no savegame; afeta apenas o jogo atual) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Configurações da empresa (guardado no savegame; afeta apenas novos jogos) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Configurações da empresa (guardado no savegame; afeta apenas a empresa atual) +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Configuração do cliente (não é armazenada no jogo salvo; afeta todos os jogos) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Configurações do jogo (armazenadas no jogo salvo; só afeta novos jogos) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Configurações do jogo (armazenadas no jogo salvo; só afeta o jogo atual) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Configurações da empresa (armazenadas no jogo salvo; só afeta novos jogos) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Configurações da empresa (armazenadas no jogo salvo; só afeta a empresa atual) STR_CONFIG_SETTINGS_NONE :{WHITE}- Nenhum - ###length 3 @@ -1247,19 +1250,19 @@ STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Mostrar STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Mostrar todos os resultados da pesquisa por configuração{}{SILVER}Categoria {BLACK}para {WHITE}{STRING} {BLACK}e {SILVER}Tipo {BLACK}para {WHITE}Todos os tipos de configuração ###length 3 -STR_CONFIG_SETTING_OFF :Desligado -STR_CONFIG_SETTING_ON :Ligado +STR_CONFIG_SETTING_OFF :Não +STR_CONFIG_SETTING_ON :Sim STR_CONFIG_SETTING_DISABLED :Desativado ###length 3 -STR_CONFIG_SETTING_COMPANIES_OFF :Desligado +STR_CONFIG_SETTING_COMPANIES_OFF :Desativado STR_CONFIG_SETTING_COMPANIES_OWN :Própria empresa STR_CONFIG_SETTING_COMPANIES_ALL :Todas as empresas ###length 3 STR_CONFIG_SETTING_NONE :Nenhum STR_CONFIG_SETTING_ORIGINAL :Original -STR_CONFIG_SETTING_REALISTIC :Realístico +STR_CONFIG_SETTING_REALISTIC :Realista ###length 3 STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Esquerda @@ -1269,84 +1272,84 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Direita STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}segundo{P 0 "" s} STR_CONFIG_SETTING_INFINITE_MONEY :Dinheiro infinito: {STRING} -STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Permite gastos ilimitados e desabilita a falência de empresas +STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Permitir gastos ilimitados e desativar a falência de empresas STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Valor máximo do empréstimo inicial: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Valor máximo que uma empresa pode emprestar (sem considerar a inflação). Se definido como "Sem empréstimo", não haverá dinheiro disponível a menos que seja fornecido por um Script de Jogo ou pela definição "Dinheiro ilimitado". +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Valor máximo que uma empresa pode emprestar (sem considerar a inflação). Se definido como "Sem empréstimo", não haverá dinheiro disponível a menos que seja fornecido por um Script de Jogo ou pela configuração "Dinheiro infinito" STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Sem empréstimo -STR_CONFIG_SETTING_INTEREST_RATE :Taxa de Juros: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE :Taxa de juros: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Taxa de juros do empréstimo; também controla a inflação, se ativado -STR_CONFIG_SETTING_RUNNING_COSTS :Custos de Operação: {STRING} -STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Configurar nível de manutenção e custos operacionais de veículos e infraestrutura +STR_CONFIG_SETTING_RUNNING_COSTS :Custos operacionais: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Definir o nível dos custos de manutenção e operacionais de veículos e da infraestrutura STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocidade de construção: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limitar a quantidade ações de construção para IAs STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Quebra de veículos: {STRING} -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controla a frequência com a qual veículos com manutenção inadequada podem quebrar +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controlar com que frequência veículos sem manutenção adequada podem quebrar STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicador de subsídios: {STRING} -STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Define quando é pago por conexões subsidiadas +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Definir quanto é pago para conexões subsidiadas STR_CONFIG_SETTING_SUBSIDY_DURATION :Duração do subsídio: {STRING} ###length 2 -STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Define por quantos anos um subsídio é concedido -STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Define por quantos períodos um subsídio é concedido +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Definir por quantos anos um subsídio é concedido +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Definir por quantos períodos um subsídio é concedido STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR_PERIODS} ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Sem subsídios STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Custos de construção: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Define o nível de construção e custos de aquisição +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Definir o nível dos custos de construção e de aquisição STR_CONFIG_SETTING_RECESSIONS :Recessões: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Se ativado, recessões podem ocorrer periodicamente. Durante uma recessão toda a produção é significativamente menor (ela retorna ao nível anterior quando a recessão termina) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Se ativado, recessões podem ocorrer periodicamente. Durante uma recessão, toda a produção é significativamente menor (ela retorna ao nível anterior quando a recessão termina) -STR_CONFIG_SETTING_TRAIN_REVERSING :Desabilitar reversão de trens nas estações: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING :Desativar a reversão de trens nas estações: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Se ativado, os trens não podem inverter a direção em estações não-terminais, mesmo se existir um caminho mais curto para o próximo destino com a inversão STR_CONFIG_SETTING_DISASTERS :Desastres: {STRING} -STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ativa desastres que podem, ocasionalmente, bloquear ou destruir veículos ou infraestrutura +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ativar desastres que podem, ocasionalmente, bloquear ou destruir veículos ou infraestrutura STR_CONFIG_SETTING_CITY_APPROVAL :Atitude da autoridade local: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Define de que forma o ruído sonoro e os danos ambientais causados pelas empresas afetam a sua classificação na localidade e as futuras ações de construção na localidade +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Escolher de que modo o ruído sonoro e os danos ambientais, causados pelas empresas, afetam a classificação delas na localidade e as ações futuras de construção na localidade -STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Limite de altura do mapa: {STRING} -STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Define a altura máxima do terreno do mapa. Com "(auto)" um bom valor será escolhido após a geração do terreno +STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Limite de altitude do mapa: {STRING} +STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Definir a altitude máxima do terreno do mapa. Com "(automático)" um valor adequado será escolhido após a geração do terreno STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(automático) -STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Você não pode definir o limite de altura do mapa para este valor. Pelo menos uma montanha no mapa é mais alta +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Você não pode definir o limite de altitude do mapa para este valor. Pelo menos uma montanha no mapa é mais alta STR_CONFIG_SETTING_AUTOSLOPE :Permitir paisagismo sob edifícios, vias, etc.: {STRING} -STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite paisagismo sob edifícios e vias sem precisar removê-lo(a)s +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permitir paisagismo sob edifícios e vias sem precisar removê-lo(a)s -STR_CONFIG_SETTING_CATCHMENT :Permitir áreas de abrangência com dimensões mais realistas: {STRING} -STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Usa área de abrangência de tamanhos diferentes para diferentes tipos de estações e aeroportos +STR_CONFIG_SETTING_CATCHMENT :Permitir áreas de cobertura com dimensões mais realistas: {STRING} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Usar áreas de cobertura de tamanhos diferentes para diferentes tipos de estações e aeroportos -STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Estações de empresas podem servir indústrias com estações neutras anexadas: {STRING} -STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Se ativado, indústrias com estações incluídas (como as Petrolíferas) podem ser servidas por estações da empresa que estão nas redondezas. Quando desativado, essas indústrias só podem ser servidas pela sua própria estação. Qualquer estação da empresa nas redondezas não poderá servir as indústrias e a estação incluída não poderá servir outra entidade senão a própria indústria +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Estações de empresas podem servir indústrias com estações neutras próprias: {STRING} +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Quando ativado, indústrias com estações próprias (como as Petrolíferas) podem ser servidas por estações da empresa construídas nas proximidades. Quando desativado, essas indústrias só podem ser servidas pela sua própria estação. Qualquer estação da empresa nas redondezas não poderá servir a indústria e a estação própria não poderá atender outra senão a própria indústria -STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir a remoção de mais estradas, pontes e túneis das cidades: {STRING} -STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Torna mais fácil remover edifícios e infraestruturas das localidades +STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir a remoção de mais estradas, pontes e túneis das localidades: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Facilitar a remoção de edifícios e infraestruturas das localidades STR_CONFIG_SETTING_TRAIN_LENGTH :Comprimento máximo de trens: {STRING} -STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Define o tamanho máximo dos trens +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Definir o comprimento máximo dos trens STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} quadrado{P 0 "" s} STR_CONFIG_SETTING_SMOKE_AMOUNT :Quantidade de fumaça/fagulhas das locomotivas: {STRING} -STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Define a quantidade de fumaça ou fagulhas emitidas pelos veículos +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Definir a quantidade de fumaça ou quantas fagulhas são emitidas pelos veículos STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Modelo de aceleração dos trens: {STRING} -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Selecionar o modelo físico para a aceleração dos trens. O modelo "original" penaliza as inclinações igualmente para todos os veículos. O modelo "realista" penaliza as inclinações e curvas considerando várias propriedades do trem, tais como comprimeno e força de tração +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Escolher o modelo físico para a aceleração dos trens. O modelo "original" penaliza as inclinações igualmente para todos os veículos. O modelo "realista" penaliza as inclinações e curvas considerando várias propriedades do trem, tais como comprimento e força de tração STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modelo de aceleração dos veículos: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Selecionar o modelo físico para a aceleração dos veículos rodoviários. O modelo "original" penaliza as inclinações igualmente para todos os veículos. O modelo "realista" penaliza as inclinações e curvas cpnsiderando várias propriedades do veículo, por exemplo a força de tração +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Escolher o modelo físico para a aceleração dos veículos rodoviários. O modelo "original" penaliza as inclinações igualmente para todos os veículos. O modelo "realista" penaliza as inclinações e curvas considerando várias propriedades do veículo como, por exemplo, a força de tração STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Inclinação do terreno para trens: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Inclinação de um quadrado inclinado para um trem. Valores grandes tornam mais difícil para um trem subir uma colina @@ -1356,35 +1359,35 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Inclinação do STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Inclinação de um quadrado inclinado para um veículo rodoviário. Valores grandes tornam mais difícil para um veículo subir uma colina STR_CONFIG_SETTING_FORBID_90_DEG :Proibir trens de fazer curvas de 90 graus: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Curvas em 90 graus ocorrem quando uma via horizontal é seguida imediatamente por outra vertical em um quadrado adjacente, fazendo com que o trem vire 90 graus quando passa de um quadrado para o próximo, ao invés dos habituais 45 graus para as outras combinações de vias. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Curvas de 90 graus ocorrem quando uma linha horizontal é seguida diretamente por outra vertical num quadrado adjacente, fazendo com que o trem vire 90 graus quando passa de um quadrado para o próximo, ao invés dos habituais 45 graus para outras combinações de linhas STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permitir a união de estações não adjacentes: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite adicionar partes a uma estação sem tocar diretamente nas partes já existentes usando Ctrl+Clique quando for adicionar partes novas +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permitir acrescentar partes a uma estação sem tocar diretamente nas partes já existentes, usando Ctrl+Clique enquanto coloca as novas partes STR_CONFIG_SETTING_INFLATION :Inflação: {STRING} -STR_CONFIG_SETTING_INFLATION_HELPTEXT :Permitir inflação na economia, na qual os custos aumentam ligeiramente mais depressa do que os recebimentos +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Permitir inflação na economia, na qual os custos aumentam ligeiramente mais rápido do que os pagamentos STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Comprimento máximo de pontes: {STRING} -STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Comprimento máximo para construção de pontes +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Comprimento máximo para a construção de pontes STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altura máxima de pontes: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altura máxima para a construção de pontes STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Comprimento máximo de túneis: {STRING} -STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Comprimento máximo para construção de túneis +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Comprimento máximo para a construção de túneis -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método manual de constução de indústria primária: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Método de fundar uma indústria primária. 'Nenhum' significa que não é possível fundar nenhuma; 'Prospecção' significa que é possível fundar, mas a construção ocorre em um local aleatório do mapa e pode até falhar; 'Como as outras indústrias' significa que novas indústrias podem ser construídas em qualquer local escolhido pelas empresas, como se fossem indústrias de processamento +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método manual de construção de indústria primária: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Método de fundar uma indústria primária. 'Nenhum' significa que não é possível fundar nenhuma; 'Prospecção' significa que é possível fundar, mas a construção ocorre num local aleatório do mapa e pode até falhar; 'Como as outras indústrias' significa que novas indústrias podem ser construídas em qualquer local escolhido pelas empresas, como se fossem indústrias de processamento ###length 3 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nenhum STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Como as outras indústrias STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospecção -STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Área plana ao redor de indústrias: {STRING} -STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Quantidade de terreno plano à volta de uma indústria. Isto garante que um espaço vazio permanecerá disponível em torno da indústria para a construção de linhas, etc. +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Área plana em torno de indústrias: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Quantidade de terreno plano em volta de uma indústria. Isto garante que um espaço vazio permanecerá disponível em torno da indústria para a construção de linhas, etc. STR_CONFIG_SETTING_MULTIPINDTOWN :Permitir várias indústrias semelhantes por localidade: {STRING} -STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalmente, localidades não aceitam mais de uma indústria de cada tipo. Se ativado, permite várias indústrias do mesmo tipo na mesma localidade +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalmente, uma localidade não aceita mais de uma indústria de cada tipo. Esta configuração permitirá várias indústrias, do mesmo tipo, na mesma localidade STR_CONFIG_SETTING_SIGNALSIDE :Mostrar sinais: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Escolher em que lado da via colocar sinais @@ -1398,21 +1401,21 @@ STR_CONFIG_SETTING_SHOWFINANCES :Mostrar janela STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :Mostrar janela de finanças no fim do período: {STRING} ###length 2 -STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Se ativado, a janela de finanças é aberta ao final de cada ano para permitir uma inspeção fácil do estado financeiro da empresa -STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :Se ativado, a janela de finanças é aberta no final de cada período permitindo uma inspeção fácil do estado financeiro da empresa +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Se ativado, a janela de finanças será exibida no fim de cada ano, permitindo uma inspeção fácil da situação financeira da empresa +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :Se ativado, a janela de finanças será exibida no fim de cada período, permitindo uma inspeção fácil da situação financeira da empresa -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Novas ordens são 'sem parar' por padrão: {STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalmente, um veículo irá parar em cada estação por onde passa. Ativando esta configuração, o veículo passará por todas as estações na sua rota, sem parar, até o destino final. Esta opção define somente um modo padrão para novas ordens. Ordens individuais podem ser definidas explicitamente para qualquer um dos dois comportamentos +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Novas ordens são 'sem parar', por padrão: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalmente, um veículo irá parar em cada estação por onde passa. Ativando esta configuração, o veículo passará por todas as estações na sua rota, sem parar, até o destino final. Esta opção só define um modo padrão para novas ordens. Ordens individuais podem ser definidas explicitamente para qualquer um dos dois comportamentos -STR_CONFIG_SETTING_STOP_LOCATION :Novas ordens de trem param por padrão no {STRING} da plataforma -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Local padrão onde um trem irá parar na plataforma. No 'início' significa próximo à entrada, 'meio' significa no meio da plataforma e 'fim' significa parar na saída da plataforma. Esta opção apenas define um padrão para as novas ordens. Ordens individuais podem ter o local de parada definido clicando no texto da ordem +STR_CONFIG_SETTING_STOP_LOCATION :Novas ordens de trem, por padrão, têm parada no {STRING} da plataforma +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Local padrão onde um trem irá parar na plataforma. No 'início' significa perto da entrada, 'meio' significa no meio da plataforma e 'final' significa na saída da plataforma. Esta opção só define um padrão para as novas ordens. Ordens individuais podem ter o local de parada definido clicando no texto da ordem ###length 3 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :início STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :meio -STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :fim +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :final STR_CONFIG_SETTING_AUTOSCROLL :Mover a janela quando o cursor está na borda do mapa: {STRING} -STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Quando ativado, a visualização irá se mover quando o mouse se aproximar das bordas da janela +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Quando ativado, as visualizações começarão a se mover quando o mouse se aproximar das bordas da janela ###length 4 STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desativado STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Visualização principal, apenas em tela cheia @@ -1421,45 +1424,45 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Todas as visual STR_CONFIG_SETTING_BRIBE :Permitir o suborno da autoridade local: {STRING} ###length 2 -STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permite que as empresas tentem subornar a autoridade local. Se o suborno for descoberto por um inspetor, a empresa não poderá atuar nessa localidade durante seis meses -STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Permite que as empresas tentem subornar a autoridade local. Se o suborno for descoberto por um inspetor, a empresa não poderá atuar nessa localidade durante seis minutos +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permitir que as empresas tentem subornar a autoridade local. Se o suborno for descoberto por um inspetor, a empresa não poderá atuar nessa localidade durante seis meses +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Permitir que as empresas tentem subornar a autoridade local. Se o suborno for descoberto por um inspetor, a empresa não poderá atuar nessa localidade durante seis minutos STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permitir comprar direitos exclusivos de transporte: {STRING} ###length 2 STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Se uma empresa comprar direitos exclusivos de transporte para uma localidade, as estações dos concorrentes (passageiros e carga) não receberão carga durante doze meses STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :Se uma empresa comprar direitos exclusivos de transporte para uma localidade, as estações dos concorrentes (passageiros e carga) não receberão carga durante doze minutos -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Permitir financiar edifícios: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permite que empresas doem dinheiro às localidades para custear novas casas +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Permitir financiar construções: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permitir que empresas doem dinheiro às localidades para financiar novas casas STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permitir financiar a reconstrução de estradas locais:{STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permitir que empresas doem dinheiro para localidades reconstruirem estradas para sabotar os serviços rodoviários na localidade +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permitir que empresas doem dinheiro às localidades para reconstrução de estradas e, com isso, sabotar os serviços rodoviários na localidade STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permitir enviar dinheiro para outras empresas: {STRING} -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permite a transferências de dinheiro entre empresas em modo multijogador +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permitir a transferências de dinheiro entre empresas em modo multijogador -STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de peso para cargas para simular trens pesados: {STRING} -STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Define o impacto do transporte de carga nos trens. Um valor grande torna o transporte de carga mais difícil para os trens, especialmente em inclinações +STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de peso da carga para simular trens pesados: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Definir o impacto do transporte de carga nos trens. Um valor grande torna o transporte de carga mais difícil para os trens, especialmente em terreno inclinado STR_CONFIG_SETTING_PLANE_SPEED :Fator de velocidade de aviões: {STRING} -STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Define a velocidade relativa dos aviões em comparação com outros tipos de veículos, para reduzir o valor da receita do transporte por aeronave +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Definir a velocidade relativa dos aviões, em comparação com outros tipos de veículos, para diminuir o valor da receita do transporte por aeronave STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Número de acidentes de aeronaves: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Definir a probabilidade de ocorrer um acidente aéreo.{}* Aeronaves grandes sempre estão sujeitas a acidentes quando pousam em aeroportos pequenos +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Definir a ocorrência aleatória de acidentes aéreos.{}* Aeronaves grandes sempre estão sujeitas a acidentes quando pousam em aeroportos pequenos ###length 3 -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Nenhum +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Nenhum* STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduzido STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal -STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Permitir passagens de nível nas estradas ou trilhos de outras empresas: {STRING} -STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Permitir a construção de passagens de nível nas estradas ou trilhos de outras empresas +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Permitir passagens de nível em estradas ou trilhos dos concorrentes: {STRING} +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Permitir a construção de passagens de nível nas estradas ou trilhos que pertencem aos concorrentes STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir estações de passagem nas estradas das localidades: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permitir a construção de estações de passagem nas estradas que pertencem às localidades STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permitir estações de passagem nas estradas dos concorrentes: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permitir a construção de estações de passagem nas estradas que pertencem a outras empresas -STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Não é possível alterar essa configuração quando já existem veículos +STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Não é possível alterar esta configuração quando já existem veículos STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Manutenção de infraestrutura: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Quando ativado, a infraestrutura gera custos de manutenção. O custo aumenta proporcionalmente com o tamanho da rede de transportes, afetando mais as empresas maiores do que as menores @@ -1468,66 +1471,69 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Cor inicial da STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Escolher a cor inicial para a empresa STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Cor inicial secundária da empresa: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Escolher a cor inicial secundária para a empresa, se um NewGRF precisar usá-la. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Escolher a cor inicial secundária para a empresa, se estiver usando um NewGRF que permite isso STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeroportos nunca expiram: {STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Se ativado, cada tipo de aeroporto ficará disponível para sempre após a sua introdução +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Ativando esta configuração, cada tipo de aeroporto ficará disponível para sempre após a sua introdução STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avisar se o veículo está perdido: {STRING} -STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Mostrar mensagens sobre veículos que não conseguem encontrar um caminho para o destino ordenado +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Mostrar mensagens sobre veículos que não conseguem encontrar um caminho para o destino programado STR_CONFIG_SETTING_ORDER_REVIEW :Revisar as ordens dos veículos: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Quando ativado, as ordens dos veículos são periodicamente verificadas e, quando detetados, alguns problemas óbvios são relatados com mensagens +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Quando ativado, as ordens dos veículos são periodicamente verificadas e alguns problemas obvios, quando detetados, são relatados por meio de uma mensagem ###length 3 STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Não STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Sim, mas excluir veículos parados STR_CONFIG_SETTING_ORDER_REVIEW_ON :De todos os veículos -STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisar se a receita de um veículo é negativa: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisar se o rendimento de um veículo está negativo: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Quando ativado, uma mensagem é enviada quando um veículo não gerou lucro durante um ano -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Quando ativado, uma mensagem é enviada quando um veículo não gerou qualquer lucro durante um período +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Quando ativado, uma mensagem será exibida quando um veículo não gerou lucro durante um ano +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Quando ativado, uma mensagem será exibida quando um veículo não gerou qualquer lucro durante um período + +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Avisar se um veículo está ficando velho: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Quando ativado, uma mensagem será exibida quando um veículo está ficando velho STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Veículos nunca saem de linha: {STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Quanto ativado, todos os modelos de veículos permanecerão disponíveis para sempre após a sua introdução +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Quando ativado, todos os modelos de veículos permanecerão disponíveis para sempre após a sua introdução STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Unidades de tempo: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Selecionar as unidades de tempo do jogo. Isso não pode ser alterado posteriormente.{}{}O modo clássico de tempo do OpenTTD é baseado em um calendário, com um ano composto de 12 meses e cada mês com 28-31 dias.{}{}No tempo baseado em relógio de parede, a movimentação de veículos, a produção de carga e as finanças são baseadas em incrementos de um minuto, que tem aproximadamente a mesma duração que um mês de 30 dias no modo baseado em calendário. Esses incrementos são agrupados em períodos de 12 minutos, equivalentes a um ano no modo baseado em calendário.{}{}Nos dois modos, há sempre um calendário clássico, que é usado para datas de introdução de veículos, casas e outras infraestruturas. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Escolher as unidades de tempo para o jogo. Isto não pode ser alterado posteriormente.{}{}O modo clássico no OpenTTD é baseado em um calendário, em que um ano é composto de 12 meses e cada mês tem 28-31 dias.{}{}No tempo baseado em relógio de parede, a produção de carga e as finanças são baseadas em incrementos de um minuto, que tem aproximadamente a mesma duração de um mês de 30 dias no modo baseado em calendário. Esses incrementos são agrupados em períodos de 12 minutos, equivalentes a um ano no modo baseado em calendário.{}{}Nos dois modos, há sempre um calendário clássico, que é usado para datas de introdução de veículos, casas e outras infraestruturas ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Calendário STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Relógio de parede STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minutos por ano: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Escolher o número de minutos para o ano do calendário. O padrão é 12 minutos. Defina como 0 para o tempo do calendário não mudar. Essa configuração não afeta a simulação econômica do jogo e só está disponível quando o tempo é baseado no relógio de parede. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Escolher o número de minutos em um ano do calendário. O padrão é 12 minutos. Defina como 0 para o tempo do calendário não mudar. Aumentar a duração do ano do calendário torna mais lenta a introdução de veículos, casas e outras infraestruturas. Isso não afeta a velocidade dos veículos nem a simulação econômica, exceto a inflação. Essa configuração só está disponível quando o tempo é baseado em relógio de parede STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (tempo de calendário congelado) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Escalar a produção de carga da localidade: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Escalar a produção de carga das localidades nesta porcentagem. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Ajustar a produção de carga das localidades nesta porcentagem STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Escalar a produção de carga da indústria: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Escalar a produção de carga das indústrias nesta porcentagem. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Ajustar a produção de carga das indústrias nesta porcentagem STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Renovar automaticamente um veículo quando ele ficar velho: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Quando ativado, um veículo próximo do fim da vida útil é automaticamente substituído quando as condições de renovação são satisfeitas STR_CONFIG_SETTING_AUTORENEW_MONTHS :Renovar automaticamente o veículo {STRING} da idade máxima -STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Idade relativa em que um veículo deve ser considerado para renovação automática +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Idade relativa na qual um veículo deve ser considerado para renovação automática ###length 2 STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} m{P 0 ês eses} antes STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} m{P 0 ês eses} depois -STR_CONFIG_SETTING_AUTORENEW_MONEY :Quantia mínima de dinheiro necessária para fazer renovação automática: {STRING} -STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Quantia mínima de dinheiro que deve existir na conta bancária para a renovação automática de veículos ser considerada +STR_CONFIG_SETTING_AUTORENEW_MONEY :Dinheiro mínimo necessário para fazer renovação automática: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Quantia mínima de dinheiro que deve permanecer no banco antes de considerar a renovação automática de veículos STR_CONFIG_SETTING_ERRMSG_DURATION :Duração da mensagem de erro: {STRING} -STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duração da visualização de mensagens de erro em uma janela vermelha. Algumas mensagens de erro (crítico) não são fechadas automaticamante após este tempo, mas precisam ser fechadas manualmente +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tempo de exibição de mensagens de erro numa janela vermelha. Algumas mensagens de erro (crítico) não são fechadas automaticamente após este tempo e precisam ser fechadas manualmente STR_CONFIG_SETTING_HOVER_DELAY :Mostrar textos de ajuda: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Atraso após o qual os textos de ajuda são mostrados quando o cursor ficar sobre algum elemento da interface. Alternativamente, os textos de ajuda podem ser mostrados com o botão direito do mouse quando este valor está definido como 0 -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Manter o cursor por {COMMA} milisegundo{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Tempo que o ponteiro do mouse deve ficar sobre algum elemento da interface para que os textos de ajuda sejam mostrados. Outro modo de exibir os textos de ajuda é fixar este valor em 0 e clicar com o botão direito do mouse +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Manter o ponteiro por {COMMA} milissegundo{P 0 "" s} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Botão direito @@ -1538,41 +1544,41 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Espessura das l STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Espessura da linha nos gráficos. Linhas finas são mais precisas, enquanto linhas grossas são mais fáceis de distinguir STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Mostrar o nome do NewGRF na janela de comprar veículos: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Adiciona uma linha à janela de aquisição de veículos, mostrando a qual NewGRF pertence o veículo selecionado. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Mostrar as cargas que os veículos podem transportar nas janelas de listagem {STRING} -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Se ativado, a carga transportável do veículo aparecerá acima dele nas listas de veículos +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Adicionar uma linha na janela de aquisição de veículos, mostrando a qual NewGRF pertence o veículo selecionado +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Mostrar as cargas que os veículos podem transportar nas janelas de listagem: {STRING} +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Se ativado, a carga que o veículo pode transportar aparecerá acima dele nas listas de veículos -STR_CONFIG_SETTING_LANDSCAPE :Clima: {STRING} -STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Os climas definem a jogabilidade básica com diferentes cargas e requerimentos para o crescimento das localidades. NewGRF's e Scripts de Jogo permitem um controle mais fino +STR_CONFIG_SETTING_LANDSCAPE :Paisagem: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Os climas definem os cenários básicos de jogo, com diferentes cargas e requisitos de crescimento das localidades. NewGRFs e Scripts de Jogo permitem um controle mais preciso sobre isso STR_CONFIG_SETTING_LAND_GENERATOR :Gerador de Terreno: {STRING} -STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :O gerador original depende do conjunto gráfico base e produz formas de terreno pré-definidas. TerraGenesis é um gerador baseado no algoritmo de ruído de Perlin com definições mais refinadas +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :O gerador 'Original' depende do conjunto de gráficos básicos e produz formas de terreno pré-definidas. 'TerraGenesis' é um gerador baseado no algoritmo de ruído de Perlin, que permite configurações mais refinadas ###length 2 STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TERRAIN_TYPE :Tipo de terreno: {STRING} -STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Apenas TerraGenesis) Relevo do terreno +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Escolher a altura das colinas e montanhas da paisagem STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densidade de indústrias: {STRING} -STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Define quantas indústrias devem ser geradas e que nível deve ser mantido durante o jogo +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Definir quantas indústrias devem ser geradas e que nível deve ser mantido durante o jogo -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distância máxima entre a borda do mapa para Refinarias de Petróleo: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limite de distância entre a borda do mapa e o local de construção de refinarias e plataformas de petróleo. Em mapas de ilhas isso garante que elas fiquem perto da costa. Em mapas com mais de 256 quadrados esse valor é aumentado. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distância máxima entre Refinarias de Petróleo e a borda do mapa: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limite de distância entre a borda do mapa e o local de construção de refinarias e plataformas de petróleo. Em mapas de ilhas isso garante que elas fiquem perto da costa. Em mapas com mais de 256 quadrados esse valor é aumentado STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altura da linha de neve: {STRING} -STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Escolher a que altura a neve começa na paisagem subártica. A neve também afeta a geração de indústrias e os requisitos de crescimento das localidades. Só pode ser modificado no Editor de Cenário ou então é calculado usando a "cobertura de neve" +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Escolher em que latitude a neve começa na paisagem subártica. A neve também afeta a geração de indústrias e os requisitos para crescimento das localidades. Só pode ser modificado no Editor de Cenário ou então é calculado usando a "cobertura de neve" STR_CONFIG_SETTING_SNOW_COVERAGE :Cobertura de neve: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Escolher a quantidade aproximada de neve na paisagem subártica. A neve também afeta a geração das indústrias e os requisitos para crescimento das localidades. Usado apenas durante a geração do mapa. O nível do mar e as suas encostas nunca têm neve. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Escolher a quantidade aproximada de neve na paisagem subártica. A neve também afeta a geração de indústrias e os requisitos para crescimento das localidades. Usado somente durante a geração do mapa. O nível do mar e as suas encostas nunca têm neve STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% -STR_CONFIG_SETTING_DESERT_COVERAGE :Cobertura do deserto: {STRING} -STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Escolher a quantidade aproximada de deserto na paisagem tropical. O deserto também afeta a geração das indústrias. Usado apenas durante a geração do mapa +STR_CONFIG_SETTING_DESERT_COVERAGE :Cobertura de deserto: {STRING} +STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Escolher a quantidade aproximada de deserto na paisagem tropical. O deserto também afeta a geração de indústrias e os requisitos para crescimento das localidades. Usado somente durante a geração do mapa STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Irregularidade do terreno: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Escolher a forma e o número de colinas. As paisagens suaves têm poucas colinas largas, enquanto as paisagens acidentadas possuem mais colinas pequenas. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Escolher a forma e o número de colinas. As paisagens suaves têm poucas colinas largas, enquanto as paisagens acidentadas possuem mais colinas pequenas ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Muito Regular STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Regular @@ -1580,7 +1586,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Irregular STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Muito Irregular STR_CONFIG_SETTING_VARIETY :Distribuição de variedade: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Escolher se o mapa conterá tanto áreas montanhosas como áreas planas. Quanto maior a variedade, maiores as diferenças de altura entre as áreas montnahosas e as planas. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Escolher se o mapa conterá tanto áreas montanhosas como áreas planas. Quanto maior a variedade, maiores as diferenças de altura entre as áreas montanhosas e as áreas planas STR_CONFIG_SETTING_RIVER_AMOUNT :Quantidade de rios: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Escolher quantos rios serão gerados @@ -1599,25 +1605,25 @@ STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Escolher o lado STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Conduzir pela esquerda STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Conduzir pela direita -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotação do mapa topográfico: {STRING} -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Escolher em que sentido a imagem do mapa topográfico será girada para caber no mundo do jogo +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotação do mapa de altitudes: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Escolher em que sentido a imagem do mapa de altitudes será girada para caber no mundo do jogo ###length 2 -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Sentido Anti-Horário +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Sentido Anti-horário STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Sentido Horário -STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Altura de um mapa de cenário plano: {STRING} +STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Altitude para um mapa de cenário plano: {STRING} ###length 2 -STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Um ou mais quadrados no canto norte não estão vazios -STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Um ou mais quadrados em um dos cantos não é água +STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Um ou mais quadrados na borda norte não estão vazios +STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Um ou mais quadrados num dos cantos não é água -STR_CONFIG_SETTING_STATION_SPREAD :Tamanho máximo de estação {STRING} +STR_CONFIG_SETTING_STATION_SPREAD :Tamanho máximo de estação: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Área máxima que as partes de uma estação simples podem ocupar. Valores grandes tornam o jogo lento STR_CONFIG_SETTING_SERVICEATHELIPAD :Manutenção automática de helicópteros em heliportos: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Efetuar manutenção de helicópteros após cada pouso, mesmo se não existir um depósito no aeroporto -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ligar ferramentas de paisagismo com ferramentas de trilhos/estradas/água/aeroportos: {STRING} -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Quando abrir uma barra de feramentas para um tipo de transporte, abrir também a barra de terraplanagem +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ligar ferramentas de paisagismo com construção de trilhos/estrada/aeroporto: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Ao abrir a barra de ferramentas de construção para um tipo de transporte, abrir também a barra de ferramentas de paisagismo STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Cor do solo usada no minimapa: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Cor do terreno no minimapa @@ -1627,49 +1633,49 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde escuro STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Cores de sobreposição do fluxo de carga: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Define o esquema de cores usado na sobreposição do fluxo de carga. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Definir o esquema de cores usado na sobreposição do fluxo de carga ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Verde para vermelho (original) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Verde para azul STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Cinza para vermelho STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Escala de cinza -STR_CONFIG_SETTING_SCROLLMODE :Comportamento de rolamento da janela: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamento ao mover o mapa. A opção "posição do mouse travada" não funciona em todos os sistemas, tais como versões baseadas na web, telas sensíveis ao toque, Linux com Wayland e outros +STR_CONFIG_SETTING_SCROLLMODE :Comportamento de rolagem da visualização: {STRING} +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamento de movimentação do mapa. A opção "posição do mouse travada" não funciona em todos os sistemas, tais como versões baseadas na web, telas sensíveis ao toque, Linux com Wayland e outros ###length 4 -STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Mover visualização com Botão Direito Mouse, posição do mouse travada -STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Mover mapa com Botão Direito Mouse, posição do mouse travada -STR_CONFIG_SETTING_SCROLLMODE_RMB :Mover mapa com Botão Direito Mouse -STR_CONFIG_SETTING_SCROLLMODE_LMB :Move mapa com Botão Esquerdo Mouse +STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Mover visualização com o Botão Direito, posição do mouse travada +STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Mover mapa com Botão Direito, posição do mouse travada +STR_CONFIG_SETTING_SCROLLMODE_RMB :Mover mapa com Botão Direito do Mouse +STR_CONFIG_SETTING_SCROLLMODE_LMB :Mover mapa com Botão Esquerdo do Mouse -STR_CONFIG_SETTING_SMOOTH_SCROLLING :Suavizar rolamento da visualização: {STRING} -STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla como a visualização principal se move para uma localização específica ao clicar no minimapa ou ao dar um comando para ir a um objeto específico no mapa. Se ativado, a visualização principal se move suavemente, se desativado a visualização salta diretamente para o ponto escolhido +STR_CONFIG_SETTING_SMOOTH_SCROLLING :Suavizar deslocamento da visualização: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controlar como a visualização principal se move para uma localização específica ao clicar no minimapa ou quando é dado um comando para ir até um objeto específico no mapa. Se ativado, a visualização se move suavemente. Se desativado, a visualização salta diretamente para o destino escolhido STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas quando usar as ferramentas de construção: {STRING} -STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Mostrar as distâncias em quadrados e diferenças de altura quando Clicar+Arrastar nas ações de construção +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Mostrar distâncias em quadrados e diferenças de altura quando Clicar+Arrastar nas ações de construção -STR_CONFIG_SETTING_LIVERIES :Mostrar pinturas específicas do tipo de veículo: {STRING} -STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Controla a utilização de pinturas específicas por tipo de veículo (em vez de pinturas por empresa) +STR_CONFIG_SETTING_LIVERIES :Mostrar cores específicas do tipo de veículo: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Controlar a utilização de cores específicas, por tipo de veículo, para os veículos (em vez de cores por empresa) ###length 3 -STR_CONFIG_SETTING_LIVERIES_NONE :Nenhum -STR_CONFIG_SETTING_LIVERIES_OWN :Minha empresa +STR_CONFIG_SETTING_LIVERIES_NONE :Nenhuma +STR_CONFIG_SETTING_LIVERIES_OWN :Própria empresa STR_CONFIG_SETTING_LIVERIES_ALL :Todas as empresas -STR_CONFIG_SETTING_PREFER_TEAMCHAT :Preferir chat de equipe com : {STRING} -STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Troca o mapeamento entre o chat interno da empresa e o chat público para e respectivamente +STR_CONFIG_SETTING_PREFER_TEAMCHAT :Preferência de chat em equipe com : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Trocar o mapeamento entre o chat interno da empresa e o chat público para e , respectivamente -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Velocidade da roda do mouse no mapa: {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Controla a sensibilidade da roda do moude na rolagem +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Velocidade de rolagem do mapa com a roda do mouse: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Controlar a sensibilidade do deslocamento do mapa com a roda do mouse STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Função da roda do mouse: {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Ativa o rolamento com rodas de mouse bidimensionais +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Permitir o deslocamento com rodas de mouse bidimensionais ###length 3 -STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Ampliar mapa +STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Ampliar o mapa STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Mover o mapa -STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Desligado +STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Desativado STR_CONFIG_SETTING_OSK_ACTIVATION :Teclado virtual: {STRING} -STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Selecionar o método para mostrar o teclado virtual para inserir texto em caixas de diálogo usando o cursor. Isto é útil para dispositivos pequenos que não possuem teclados +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Escolher o método para mostrar o teclado virtual para inserir texto em caixas de diálogo usando apenas o cursor. Isto é útil para dispositivos pequenos que não possuem teclados ###length 4 STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Desativado STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Clique duplo @@ -1677,52 +1683,52 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Clique simples STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Clique simples (imediatamente) STR_CONFIG_SETTING_USE_RELAY_SERVICE :Usar serviço de retransmissão: {STRING} -STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Se durante a criação da conexão o servidor falhar, pode-se usar um serviço de retransmissão para criar a conexão. "Nunca" não permite isso, "perguntar" irá perguntar antes, "permitir" vai permitir sem perguntar +STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Se a criação de uma conexão com o servidor falhar, pode-se usar um serviço de retransmissão para criar a conexão. "Nunca" não permite isso, "Perguntar" irá perguntar antes, "Permitir" vai permitir sem perguntar ###length 3 STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER :Nunca STR_CONFIG_SETTING_USE_RELAY_SERVICE_ASK :Perguntar STR_CONFIG_SETTING_USE_RELAY_SERVICE_ALLOW :Permitir -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Simulação de clique com botão direito: {STRING} -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Selecionar o método para simular os cliques do botão direito do mouse +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulação de clique com botão direito: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Escolher o método para emular os cliques do botão direito do mouse ###length 3 STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Clique STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Clique -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desligado +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desativado STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fechar janela com botão direito do mouse: {STRING} -STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fecha uma janela ao clicar com o botão direito do mouse nela. Desativa os textos de ajuda (dicas) com o botão direito! +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fechar uma janela ao clicar com o botão direito do mouse sobre ela. Desativa os textos de ajuda (dicas) com o botão direito! ###length 3 STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Não STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Sim -STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Sim, exceto as aderidas +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Sim, exceto fixadas -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Usar o formato de data {STRING} ao salvar os arquivos de jogos +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Usar o formato de data {STRING} nos nomes ao salvar jogos STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formato da data nos nomes dos jogos salvos ###length 3 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :longo (31 Dez 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :curto (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pausar automaticamente ao inicar um novo jogo: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pausar automaticamente ao iniciar um novo jogo: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quando ativado, o jogo irá pausar automaticamente quando um novo jogo começar, permitindo o estudo detalhado do mapa STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Durante uma pausa permitir: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Selecionar quais ações podem ser executadas com o jogo pausado ###length 4 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nenhuma ação -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Todas as ações exceto construção -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Todas as ações exceto modificações de terreno +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Todas as ações, exceto construção +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Todas as ações, exceto modificações de terreno STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Todas as ações STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar grupos na lista de veículos: {STRING} -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ativar a utilização de listas de veículos avançada para agrupamento de veículos +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ativar a utilização de listas avançadas de veículos para o agrupamento de veículos STR_CONFIG_SETTING_LOADING_INDICATORS :Usar indicadores de carga: {STRING} -STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Selecionar se os indicadores de carga são mostrados acima dos veículos (des)carregando +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Escolher se os indicadores de carga são mostrados acima dos veículos enquanto carregam ou descarregam STR_CONFIG_SETTING_TIMETABLE_MODE :Unidades de tempo para horários: {STRING} -STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Selecionar as unidades de tempo usadas nos horários dos veículos +STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Escolher as unidades de tempo usadas nos horários dos veículos ###length 3 STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Dias STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Segundos @@ -1732,46 +1738,46 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Mostrar chegada STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostrar os horários previstos de chegada e de partida nos quadros de horários STR_CONFIG_SETTING_QUICKGOTO :Criação rápida de ordens de veículos: {STRING} -STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pré-selecionar o cursor 'Ir Para' ao abrir a janela de ordens +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pré-selecionar o 'cursor Ir para' ao abrir a janela de ordens -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipo padrão de ferrovia (ao criar ou abrir jogo): {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de trilhos a ser selecionado ao carregar/iniciar um jogo. 'Primeiro disponível' seleciona o tipo de trilho mais antigo. 'Último disponível' seleciona o tipo mais novo de trilho e 'Mais utilizado' seleciona o tipo que é mais usado atualmente +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipo de trilho padrão (ao iniciar novo/abrir jogo): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de trilho a ser selecionado ao iniciar novo/abrir um jogo. 'Primeiro disponível' seleciona o tipo de trilho mais antigo. 'Último disponível' seleciona o tipo mais novo de trilho e 'Mais utilizado' seleciona o tipo que é mais usado atualmente ###length 3 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Primeiro disponível STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Último disponível STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mais utilizado STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostrar caminhos reservados para trajetos: {STRING} -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Dar aos trajetos reservados uma cor diferente para ajudar em problemas com trens que se recusam a passar por seções controlados por sinais de caminho +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Usar uma cor diferente nos trajetos reservados para auxiliar na solução de problemas com trens que se recusam a entrar em seções controlados por sinais de caminho STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Manter as ferramentas de construção ativas após o uso: {STRING} -STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Manter ativas as ferramentas de construção para pontes, túneis, etc. após o uso +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Manter as ferramentas de construção de pontes, túneis, etc., abertas após o uso STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Remover automaticamente os sinais durante a construção de ferrovias: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Remover automaticamente os sinais durante a construção de ferrovias se os sinais estiverem no caminho. Isso pode potencialmente causar acidentes de trens. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Remover automaticamente os sinais durante a construção de ferrovias se os sinais estiverem no caminho. Isso pode, potencialmente, causar acidentes de trens STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Limite de velocidade do avanço rápido: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limite da velocidade do jogo quando o avanço rápido está ativado. 0 = sem limite (tão rápido quanto o seu computador permitir). Valores abaixo de 100% tornam o jogo mais lento. O limite superior depende das especificações do seu computador e pode variar dependendo do jogo. -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% a velocidade normal do jogo +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limitar a velocidade do jogo quando o avanço rápido está ativado. 0 = sem limite (tão rápido quanto o seu computador permitir). Valores abaixo de 100% tornam o jogo mais lento. O limite superior depende das especificações do seu computador e pode variar dependendo do jogo +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% da velocidade normal do jogo ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Sem limite (o máximo que o seu computador suporta) -STR_CONFIG_SETTING_SOUND_TICKER :Notícias: {STRING} -STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reproduzir efeito sonoro para mensagens com notícias resumidas +STR_CONFIG_SETTING_SOUND_TICKER :Painel de notícias: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reproduzir som para mensagens e notícias resumidas STR_CONFIG_SETTING_SOUND_NEWS :Jornal: {STRING} -STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Reproduzir efeito sonoro ao mostrar um jornal +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Reproduzir som ao mostrar um jornal ###length 2 -STR_CONFIG_SETTING_SOUND_NEW_YEAR :Fim de ano: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Fim do ano: {STRING} STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Fim do período: {STRING} ###length 2 -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reproduzir um som no final do ano, resumindo o desempenho da empresa nesse ano em comparação com o desempenho no ano anterior -STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Reproduzir um som no final do período, resumindo o desempenho da empresa nesse período em comparação com o desempenho no período anterior +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reproduzir som no fim do ano e mostrar um resumo do desempenho da empresa neste ano, comparado com o desempenho no ano anterior +STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Reproduzir som no fim do período e mostrar um resumo do desempenho da empresa neste período, comparado com o desempenho no período anterior STR_CONFIG_SETTING_SOUND_CONFIRM :Construção: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reproduzir efeito sonoro para construções ou outras ações bem sucedidas +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reproduzir som para construções ou outras ações bem sucedidas STR_CONFIG_SETTING_SOUND_CLICK :Cliques de botões: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Reproduzir um bip quando botões são clicados @@ -1798,66 +1804,70 @@ STR_CONFIG_SETTING_MAX_SHIPS :Número máximo STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Número máximo de embarcações que uma empresa pode ter STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Desativar trens para o computador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Se ativado, não permite que jogadores controlados pelo computador construam trens +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Ativando esta configuração, um competidor controlado por IA não poderá construir trens -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Desativar veículos rodoviários para o computador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Se ativado, não permite a construção de veículos rodoviários por um jogador controlado pelo computador +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Desativar veículos para o computador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Ativando esta configuração, um competidor controlado por IA não poderá construir veículos rodoviários STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Desativar aeronaves para o computador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Se ativado, não permite a construção de aeronaves por um jogador controlado pelo computador +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Ativando esta configuração, um competidor controlado por IA não poderá construir aeronaves -STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desativar embarcação para o computador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Se ativado, não permite que jogadores controlados pelo computador construam embarcações +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desativar embarcações para o computador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Ativando esta configuração, um competidor controlado por IA não poderá construir embarcações -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IA em multiplayer: {STRING} -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite que jogadores controlados pelo computador participem de jogos multijogador +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IAs em multijogador: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permitir que competidores controlados por IA participem de jogos multijogador STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antes de scripts serem suspensos: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Número máximo de passos computacionais que um script pode executar em um turno STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Utilização máxima de memória por script: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Quantidade de memória que um script pode usar antes de ser automaticamente concluído. Pode ser necessário aumentar este valor para mapas maiores. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Quantidade de memória que um script pode usar antes de ser terminado automaticamente. Para mapas maiores pode ser necessário aumentar este valor STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervalos de manutenção são em porcentagem: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Quando ativado, os veículos tentam fazer a manutenção quando sua confiabilidade atingir uma determinada porcentagem da confiabilidade máxima.{}{}Por exemplo, se a confiabilidade máxima de um veículo for 90% e o intervalo de manutenção for 20%, o veículo tentará fazer a manutenção quando atingir 72% de confiabilidade. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Quando ativado, os veículos tentam fazer a manutenção quando sua confiabilidade atinge uma determinada porcentagem da confiabilidade máxima.{}{}Por exemplo, se a confiabilidade máxima de um veículo for 90% e o intervalo de manutenção for 20%, o veículo tentará fazer a manutenção quando atingir 72% de confiabilidade STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalo padrão de manutenção para trens: {STRING} -STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Define o intervalo padrão de manutenção para novos veículos ferroviários, se não for configurado um intervalo de manutenção explícito para o veículo +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Definir o intervalo padrão de manutenção para novos veículos ferroviários, se um intervalo de manutenção não for explicitamente configurado para o veículo STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervalo padrão de manutenção para veículos: {STRING} -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Define o intervalo padrão de manutenção para novos veículos rodoviários, se não for configurado um intervalo de manutenção explícito para o veículo +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Definir o intervalo padrão de manutenção para novos veículos rodoviários, se um intervalo de manutenção não for explicitamente configurado para o veículo STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo padrão de manutenção para aeronaves: {STRING} -STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Define o intervalo padrão de manutenção para novas aeronaves, se não for configurado um intervalo de manutenção explícito para o veículo +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Definir o intervalo padrão de manutenção para novas aeronaves, se um intervalo de manutenção não for explicitamente configurado para o veículo STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo padrão de manutenção para embarcações: {STRING} -STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Define o intervalo padrão de manutenção para novas embarcações, se não for configurado um intervalo de manutenção explícito para o veículo -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dia{P 0 "" s}/Minuto{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definir o intervalo padrão de manutenção para novas embarcações, se um intervalo de manutenção não for explicitamente configurado para o veículo +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Dia{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minuto{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Desativado STR_CONFIG_SETTING_NOSERVICE :Desativar manutenção quando as quebras estão desativadas: {STRING} -STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Quando ativado, veículos não recebem manutenção se não puderem quebrar +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Quando ativado, veículos não recebem manutenção se não podem quebrar -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Penalidade de velocidade de carregamento para trens que são mais longos que a estação: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Quando ativado, os trens que são muito compridos para a estação são carregados mais lentamente do que os trens que caibem na estação. Esta definição não afeta a geração de rotas. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Penalizar velocidade de carregamento para trens mais longos que a estação: {STRING} +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Quando ativado, os trens que são muito compridos para a estação são carregados mais lentamente do que um trem que cabe na estação. Esta configuração não afeta a geração de rotas -STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ativar limites de velocidade para vagões: {STRING} -STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Quando ativado, aplica os limites de velocidade dos vagões para definir a velocidade máxima de um trem +STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ativar limite de velocidade para vagões: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Quando ativado, usa o limite de velocidade dos vagões para definir a velocidade máxima de um trem STR_CONFIG_SETTING_DISABLE_ELRAILS :Desativar ferrovias elétricas: {STRING} -STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Se ativado, essa opção desativa a necessidade de eletrificar os trilhos para que locomotivas elétricas possam utilizá-los +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Ativando esta configuração, não será necessário eletrificar os trilhos para que locomotivas elétricas possam utilizá-los -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Chegada do primeiro veículo à estação do jogador: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Chegada do primeiro veículo na estação do jogador: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Mostrar um jornal quando o primeiro veículo chegar a uma estação nova do jogador -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Chegada do primeiro veículo na estação concorrente: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Chegada do primeiro veículo na estação de um concorrente: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Mostrar um jornal quando o primeiro veículo chegar a uma estação nova de um concorrente STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Acidentes / desastres: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Mostrar um jornal quando ocorrem acidentes ou desastres STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER :Acidentes de veículos dos concorrentes: {STRING} -STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER_HELPTEXT :Mostrar um jornal para os concorrentes sobre veículos acidentados +STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER_HELPTEXT :Mostrar um jornal sobre veículos acidentados dos concorrentes -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informações da empresa: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informações sobre empresas: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Mostrar um jornal quando uma nova empresa é criada ou quando empresas estão à beira da falência STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Abertura de indústrias: {STRING} @@ -1867,75 +1877,75 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Fechamento de i STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Mostrar um jornal quando uma indústria fechar STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Mudanças econômicas: {STRING} -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Mostrar um jornal quando ocorrem mudanças globais na economia +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Mostrar um jornal quando ocorrem alterações globais na economia STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Mudanças na produção das indústrias servidas pela empresa: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Mostrar um jornal quando mudar o nível de produção das indústrias que são atendidas pela empresa +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Mostrar um jornal quando ocorre alteração no nível de produção das indústrias que são atendidas pela empresa STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Mudanças na produção das indústrias servidas pelo(s) concorrente(s): {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Mostrar um jornal quando mudar o nível de produção das indústrias que são atendidas pelos concorrentes +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Mostrar um jornal quando ocorre alteração no nível de produção das indústrias que são atendidas pelos concorrentes -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Outras mudanças de produção das indústrias: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Mostrar um jornal quando mudar o nível de produção das indústrias que não são atendidas pela empresa ou por concorrentes +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Mudanças na produção de outras indústrias: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Mostrar um jornal quando ocorre alteração no nível de produção das indústrias que não são atendidas pela empresa ou por concorrentes STR_CONFIG_SETTING_NEWS_ADVICE :Avisos / informações sobre os veículos da empresa: {STRING} -STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Mostrar mensagens sobre veículos que requerem atenção +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Mostrar mensagens sobre veículos que precisam de atenção STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Novos veículos: {STRING} -STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Mostrar um jornal quando é disponibilizado um novo tipo de veículo +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Mostrar um jornal quando um novo tipo de veículo é disponibilizado -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Alterações de aceitação de carga: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Exibir mensagens quando estações alterarem a aceitação de algumas cargas +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Mudanças na aceitação de carga: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Mostrar mensagens quando estações alterarem a aceitação de algumas cargas STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsídios: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Mostrar um jornal sobre eventos relacionados a subsídios STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informações gerais: {STRING} -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Mostrar um jornal sobre eventos gerais, como a compra de direitos de exclusividade ou financimento para a reconstrução de estradas +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Mostrar um jornal sobre eventos gerais, como a compra de direitos de exclusividade ou financiamento para a reconstrução de estradas ###length 3 -STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Desligado +STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Desativado STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Resumo STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Completo -STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Noticias coloridas aparecem em: {STRING} -STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Ano em que os jornais serão mostrados em cores. Antes deste ano, serão mostrados em preto e branco. +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Notícias em cores aparecem em: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Ano em que os jornais serão mostrados em cores. Antes deste ano, serão mostrados em preto e branco STR_CONFIG_SETTING_STARTING_YEAR :Data de início: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Pontuação no fim do ano: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Ano em que o jogo termina para fins de pontuação. No final desse ano, a pontuação da empresa é registrada e a tela de pontuação máxima é exibida, mas os jogadores podem continuar jogando depois disso.{}Se isso for antes do ano de início, a tela de pontuação máxima nunca é exibida. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Ano em que o jogo termina para fins de pontuação. No fim desse ano, a pontuação da empresa é registrada e a tela de pontuação máxima é exibida, mas os jogadores podem continuar jogando depois disso.{}Se isso for antes do ano de início, a tela de pontuação máxima nunca será exibida STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nunca STR_CONFIG_SETTING_ECONOMY_TYPE :Tipo de economia: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :A economia 'Suave' faz mudanças de produção com mais frequência e em etapas menores. Economia 'Congelada' não permite mudanças de produção e fechamentos de indústrias. Esta configuração pode não ter efeito se os tipos de indústria forem fornecidos por um NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Economia 'Suave' faz alterações de produção com mais frequência e em etapas menores. Economia 'Congelada' não permite alterações de produção e fechamentos de indústrias. Esta configuração pode não ter efeito se os tipos de indústria forem fornecidos por um NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Suave STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Congelada -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Porcentagem do lucro da etapa a pagar em sistemas de transbordo: {STRING} -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Porcentagem da receita dada a trajetos intermediários em sistemas de transbordo, dando mais controle sobre a receita +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Porcentagem da renda da etapa a ser paga em sistemas de transbordo: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Porcentagem da receita dada às etapas intermediárias em sistemas de transbordo, proporcionando maior controle sobre a receita STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Quando arrastar, colocar sinais a cada: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Define a distância na qual os sinais serão construídos em uma linha até o próximo obstáculo (sinal, junção), quando colocar sinais arrastando +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Definir a distância na qual os sinais serão construídos numa linha até o próximo obstáculo (sinal, junção), quando colocar sinais arrastando STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} quadrado{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Quando arrastar, manter distância fixa entre os sinais: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecionar o comportamento da colocação de sinais ao usar Ctrl+Arrastar. Se desativado, sinais são colocados ao redor de túneis ou pontes para evitar seções longas sem sinais. Se ativado, sinais são colocados a cada N quadrados, facilitando o alinhamento de sinais em linhas paralelas +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Escolher o comportamento da colocação de sinais ao usar Ctrl+Arrastar. Se desativado, sinais são colocados ao redor de túneis ou pontes para evitar seções longas sem sinais. Se ativado, sinais são colocados a cada N quadrados, facilitando o alinhamento de sinais em linhas paralelas STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Usar automaticamente semáforos antes de: {STRING} -STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Definir o ano em que os sinais elétricos serão usados nas linhas. Antes deste ano, sinais não-elétricos serão usados (eles possuem a mesma funcionalidade, mas aspecto diferente) +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Definir o ano em que os sinais elétricos serão usados nas ferrovias. Antes deste ano, sinais não-elétricos serão usados (eles têm a mesma funcionalidade, mas aparência diferente) STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Alternar entre tipos de sinais: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selecionar os tipos de sinal a serem alternados quando usar Ctrl+Clique em um sinal existente com a ferramenta de sinais +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selecionar quais os tipos de sinais serão alternados quando usar Ctrl+Clique num sinal construído com a ferramenta de sinais ###length 2 -STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Apenas grupo atual +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Somente grupo atual STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todos visíveis STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Mostrar tipos de sinais: {STRING} -STR_CONFIG_SETTING_SIGNAL_GUI_MODE_HELPTEXT :Escolher quais tipos de sinais são mostrados na barra de ferramentas de sinais +STR_CONFIG_SETTING_SIGNAL_GUI_MODE_HELPTEXT :Selecionar quais tipos de sinais são mostrados na barra de ferramentas de sinais ###length 2 -STR_CONFIG_SETTING_SIGNAL_GUI_MODE_PATH :Apenas sinais de caminho +STR_CONFIG_SETTING_SIGNAL_GUI_MODE_PATH :Somente sinais de caminho STR_CONFIG_SETTING_SIGNAL_GUI_MODE_ALL_CYCLE_PATH :Todos os sinais STR_CONFIG_SETTING_TOWN_LAYOUT :Disposição de estradas para novas localidades: {STRING} @@ -1945,56 +1955,56 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Padrão STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Estradas melhores STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :Grade 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :Grade 3x3 -STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatório +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatória STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Localidades podem construir estradas: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permitir que localidades construam estradas para crescimento. Desative para prevenir a construção de estradas pelas autoridades locais STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Localidades podem construir passagens de nível: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Se ativado, permite que as localidades construam ruas que atravessam ferrovias +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ativando esta configuração, as localidades poderão construir passagens de nível -STR_CONFIG_SETTING_NOISE_LEVEL :Limitar a localização do aeroporto em função do nível de ruído: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Permitir que as localidades impeçam a construção de aeroportos em função da aceitação do nível de ruído, que é baseado no total de habitantes da localidade e no tamanho e distância do aeroporto. Se esta definição estiver desativada, as localidades permitirão apenas dois aeroportos, a menos que a atitude da autoridade local esteja definida como "Permissiva" +STR_CONFIG_SETTING_NOISE_LEVEL :Limitar a colocação de aeroportos com base no nível de ruído: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Permitir que as localidades impeçam a construção de aeroportos em função do nível de aceitação de ruído, que é baseado no total de habitantes da localidade e no tamanho e distância do aeroporto. Se esta configuração estiver desativada, as localidades permitirão somente dois aeroportos, a menos que a atitude da autoridade local esteja definida como "Permissiva" STR_CONFIG_SETTING_TOWN_FOUNDING :Fundar localidades no jogo: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Se ativado, permite aos jogadores fundar novas localidades no jogo +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ativando esta configuração, os jogadores poderão fundar novas localidades no jogo ###length 3 STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Proibido STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permitido, estrutura personalizada da localidade STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Geração de carga da localidade: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Quanta carga é produzida pelas casas nas localidades, em relação à população geral da localidade.{}Crescimento quadrático: uma localidade com o dobro do tamanho gera quatro vezes mais passageiros.{}Crescimento linear: uma localidade com o dobro do tamanho gera o dobro da quantidade de passageiros. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Quanta carga é produzida pelas casas nas localidades, em relação à população total da localidade.{}Crescimento quadrático: uma localidade com o dobro do tamanho gera quatro vezes mais passageiros.{}Crescimento linear: uma localidade com o dobro do tamanho gera o dobro da quantidade de passageiros ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Quadrático (original) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linear STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Surgimento de árvores no decorrer do jogo: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla o aparecimento aleatório de árvores durante o jogo. Isto poderá afetar indústrias que dependem do crescimento de árvores, como as madeireiras +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controlar o aparecimento aleatório de árvores durante o jogo. Isto poderá afetar indústrias que dependem do crescimento de árvores, como as madeireiras ###length 4 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Crescer sem espalhar {RED}(afeta madeireiras) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Crescer mas espalhar apenas em florestas tropicais +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Crescer, mas espalhar somente em florestas tropicais STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Crescer e espalhar em todos os lugares STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Não crescer e não espalhar {RED}(afeta madeireiras) STR_CONFIG_SETTING_TOOLBAR_POS :Posição da barra de ferramentas principal: {STRING} -STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posição horizontal da barra de ferramentas principal na parte superior da tela -STR_CONFIG_SETTING_STATUSBAR_POS :Posição da barra de status: {STRING} -STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Posição horizontal da barra de status na parte inferior da tela -STR_CONFIG_SETTING_SNAP_RADIUS :Distância mínima para adesão automática entre as janelas: {STRING} -STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Distância entre janelas antes que a janela que está a ser movida seja automaticamente alinhada com as janelas mais próximas +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posição horizontal, na parte superior da tela, da barra de ferramentas principal +STR_CONFIG_SETTING_STATUSBAR_POS :Posição da barra de estado: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Posição horizontal, na parte inferior da tela, da barra de informações atuais sobre o jogo +STR_CONFIG_SETTING_SNAP_RADIUS :Distância para alinhamento de janelas: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Distância mínima entre janelas para que a janela que está sendo movida se alinhe automaticamente às janelas mais próximas STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s} ###setting-zero-is-special STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Desativado -STR_CONFIG_SETTING_SOFT_LIMIT :Número máximo de janelas livres: {STRING} -STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Número de janelas abertas não aderidas antes que as janelas antigas sejam automaticamente fechadas, liberando espaço para novas janelas +STR_CONFIG_SETTING_SOFT_LIMIT :Número máximo de janelas não fixadas: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Número de janelas abertas, que não estão fixadas, antes que as janelas antigas sejam automaticamente fechadas para liberar espaço para novas janelas STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} ###setting-zero-is-special STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :desativado STR_CONFIG_SETTING_ZOOM_MIN :Nível máximo de ampliação: {STRING} -STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Nível máximo de ampliação para visualizações. Níveis de ampliação muito grandes aumentam os requisitos de memória -STR_CONFIG_SETTING_ZOOM_MAX :Nível máximo de redução da visualização: {STRING} -STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Nível máximo de redução para visualizações. Níveis de redução muito grandes podem causar atrasos quando utilizados +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Limite de ampliação para visualizações. Níveis de ampliação muito grandes aumentam o uso de memória +STR_CONFIG_SETTING_ZOOM_MAX :Nível máximo de redução: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Limite de redução para visualizações. Níveis de redução muito grandes podem causar atrasos quando utilizados ###length 6 STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x @@ -2004,13 +2014,13 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Resolução máxima de sprites: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limita a resolução máxima a ser usada para sprites. Limitar a resolução de sprites evitará o uso de gráficos de alta resolução, mesmo quando estiverem disponíveis. Isso pode ajudar a manter a aparência uniforme do jogo quando estiver usando uma mistura de arquivos GRF com e sem gráficos de alta resolução. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limite de resolução máxima a ser usada para sprites. Limitar a resolução de sprites evitará o uso de gráficos de alta resolução, mesmo quando estiverem disponíveis. Isso pode ajudar a manter o jogo com uma aparência unificada quando usar uma mistura de arquivos GRF com e sem gráficos de alta resolução ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_NORMAL :1x -STR_CONFIG_SETTING_TOWN_GROWTH :Ritmo de crescimento de localidades: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH :Ritmo de crescimento das localidades: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Velocidade de crescimento das localidades ###length 5 STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Nenhum @@ -2020,82 +2030,82 @@ STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rápido STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Muito rápido STR_CONFIG_SETTING_LARGER_TOWNS :Proporção de localidades que se tornarão cidades: {STRING} -STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Quantidade de localidades que se tornarão cidades, desse modo uma localidade que começa maior crescerá mais rápido +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Quantidade de localidades que se tornarão cidades. Assim, uma localidade que começa maior crescerá mais rápido STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 a cada {COMMA} ###setting-zero-is-special -STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nenhum -STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador do tamanho inicial da cidade: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nenhuma +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador de tamanho inicial da cidade: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Tamanho médio das cidades em relação às localidades normais no início do jogo STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Atualizar a distribuição a cada {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tempo entre recálculos subsequentes da rede de conexões. Cada recálculo atualiza os planos para um componente da rede. Isso significa que um valor X para esta configuração não significa que toda a rede será atualizada a cada X segundos. Apenas algum componente será atualizado. Quanto menor o tempo definido, mais tempo de CPU será necessário para calculá-lo. Quanto maior o valor definido, mais tempo será necessário até que a distribuição de carga inicie nas novas rotas. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tempo entre recálculos subsequentes da rede de conexões. Cada recálculo atualiza os planos para um componente da rede. Isso significa que um valor X para esta configuração não significa que toda a rede será atualizada a cada X segundos. Apenas algum componente será atualizado. Quanto menor este valor, mais tempo de CPU será necessário para calcular as atualizações. Quanto maior este valor, mais tempo será necessário até que a distribuição de carga inicie nas rotas novas STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Usar {STRING} para recalcular a distribuição -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tempo gasto para cada recálculo de um componente da rede de conexões. Quando um recálculo é iniciado, uma tarefa é gerada e pode ser executada por esse número de segundos. Quanto menor for esse valor, maior a chance de que a tarefa não seja concluída quando deveria. Então o jogo para até que ela seja completada, causando um atraso. Quanto maior for esse valor, mais tempo será necessário para a distribuição ser atualizada quando as rotas mudam. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tempo gasto em cada recálculo de um componente da rede de conexões. Quando um recálculo é iniciado, uma tarefa é gerada e pode ser executada durante esse número de segundos. Quanto menor este valor, maior a chance de que a tarefa não seja concluída quando deveria. Neste caso, o jogo para até que ela seja completada, causando um atraso. Quanto maior este valor, mais tempo será necessário para a distribuição ser atualizada quando as rotas mudam STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modo de distribuição para passageiros: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simétrico" significa que aproximadamente o mesmo número de passageiros irá de uma estação A para uma estação B assim como de B para A. "Assimétrico" significa que um número arbitrário de passageiros pode ir em qualquer direção. "Manual" significa que não haverá distribuição automática para os passageiros. -STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modo de distribuição para correspondências: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simétrico" significa que aproximadamente a mesma quantidade de correspondência será enviada de uma estação A para uma estação B assim como de B para A. "Assimétrica" significa que quantidades arbitrárias de correspondência podem ser enviadas em qualquer direção. "Manual" significa que nenhuma distribuição automática ocorrerá por correio. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simétrico" significa que aproximadamente o mesmo número de passageiros irá de uma estação A para uma estação B, assim como de B para A. "Assimétrico" significa que um número arbitrário de passageiros pode ir em qualquer direção. "Manual" significa que não haverá distribuição automática dos passageiros +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modo de distribuição para correio: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simétrico" significa que aproximadamente a mesma quantidade de correio será enviada de uma estação A para uma estação B, assim como de B para A. "Assimétrica" significa que quantidades arbitrárias de correio podem ser enviadas em qualquer direção. "Manual" significa que não haverá distribuição automática para correio STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modo de distribuição para a classe de carga BLINDADA: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A classe de carga BLINDADA contém objetos de valor em clima temperado, diamantes em clima subtropical ou ouro em clima subártico. NewGRFs podem mudar isso. "Simétrica" significa que aproximadamente a mesma quantidade dessa carga será enviada de uma estação A para uma estação B assim como de B para A. "Assimétrica" significa que quantidades arbitrárias dessa carga podem ser enviadas em qualquer direção. "Manual" significa que não haverá distribuição automática para aquela carga. Recomenda-se definir isso como assimétrico ou manual ao jogar subártico ou subtropical, pois os bancos só recebem carga nesses climas. Para temperado, você também pode escolher simétrico, pois os bancos enviarão objetos de valor de volta ao banco de origem. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A classe de carga BLINDADA contém objetos de valor no clima temperado, diamantes no clima subtropical e ouro no clima subártico. NewGRFs podem modificar isso. "Simétrico" significa que aproximadamente a mesma quantidade dessa carga será enviada de uma estação A para uma estação B, assim como de B para A. "Assimétrico" significa que quantidades arbitrárias dessa carga podem ser enviadas em qualquer direção. "Manual" significa que não haverá distribuição automática para aquela carga. Recomenda-se definir isso como assimétrico ou manual ao jogar subártico ou subtropical, pois os bancos só recebem carga nesses climas. Para temperado, você também pode escolher simétrico, pois os bancos enviarão objetos de valor de volta ao banco de origem STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modo de distribuição para outras classes de carga: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Assimétrico" significa que quantidades arbitrárias de carga podem ser enviadas em qualquer direção. "Manual" significa que não haverá distribuição automática dessas cargas. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Assimétrico" significa que quantidades arbitrárias de carga podem ser enviadas em qualquer direção. "Manual" significa que não haverá distribuição automática dessas cargas ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :assimétrico STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simétrico STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisão da distribuição: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Quanto maior for esse valor, mais tempo de CPU será necessário para calcular a rede de conexões. Se levar muito tempo muito você poderá notar atrasos. Entretanto, se o valor for muito pequeno, a distribuição será imprecisa e você irá perceber que cargas não estão sendo enviadas para os locais esperados. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Quanto maior este valor, mais tempo de CPU será necessário para calcular a rede de conexões. Se demorar muito, você poderá notar um atraso. Entretanto, se o valor for muito pequeno, a distribuição será imprecisa e você irá perceber que cargas não estão sendo enviadas para os locais esperados STR_CONFIG_SETTING_DEMAND_DISTANCE :Efeito da distância na demanda: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se for definido um valor maior que 0, a distância entre a estação de origem A de alguma carga e um possível destino B terá um efeito na quantidade de carga transportada de A até B. Quanto mais distante B estiver de A, menos carga será enviada. Quanto maior o valor definido, menos carga será transportada para estações distantes e mais carga será enviada para estações mais próximas. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se este valor for maior que 0, a distância entre a estação de origem A (de alguma carga) e um possível destino B terá um efeito na quantidade de carga enviada de A até B. Quanto mais distante B estiver de A, menos carga será enviada. Quanto maior o valor escolhido, menos carga será transportada para estações distantes e mais carga será enviada para estações mais próximas STR_CONFIG_SETTING_DEMAND_SIZE :Quantidade de carga retornada no modo simétrico: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Definindo isto para menos de 100% faz com que a distribuição simétrica comporte-se mais como a assimétrica. Menos carga será devolvida à força se uma certa quantidade for enviada a uma estação. Se você definir para 0% a distribuição simétrica se comportará exatamente como a assimétrica. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Definir isto para menos de 100% faz com que a distribuição simétrica comporte-se mais como a assimétrica. Menos carga será forçadamente devolvida se uma certa quantidade for enviada a uma estação. Se você definir em 0% a distribuição simétrica se comportará exatamente como a assimétrica STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturação de rotas curtas antes de usar rotas de grande capacidade: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequentemente há diversas rotas entre duas estações. Cargodist irá saturar a rota mais curta primeiro, depois usar a segunda rota mais curta até saturá-la, e assim por diante. A saturação é determinada por uma estimativa da capacidade e do uso planejado. Ao saturar todas as rotas, se ainda houver demanda não atendida, irá sobrecarregar todas as rotas, dando preferência àquelas de maior capacidade. Entretanto, na maioria das vezes o algoritmo não irá estimar corretamente a capacidade. Essa configuração permite definir até que porcentagem uma rota mais curta deverá ser saturada na primeira passada antes do algoritmo selecionar a próxima rota mais longa. Defina-o para menos de 100% para evitar estações sobrecarregadas no caso de capacidade superestimada. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequentemente há diversas rotas entre duas estações. Cargodist irá saturar a rota mais curta primeiro, depois usar a segunda rota mais curta até saturá-la, e assim por diante. A saturação é determinada por uma estimativa da capacidade e da utilização prevista. Ao saturar todas as rotas, se ainda existir demanda não atendida, Cargodist irá sobrecarregar todas as rotas, dando preferência àquelas de maior capacidade. Entretanto, na maioria das vezes o algoritmo não irá estimar corretamente a capacidade. Esta configuração permite definir até que porcentagem uma rota mais curta deverá ser saturada na primeira passada, antes do algoritmo selecionar a próxima rota mais longa. Defina para menos de 100% para evitar estações sobrecarregadas no caso de capacidade superestimada STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unidades de velocidade (terrestre): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Unidades de velocidade (náutica): {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Sempre que uma velocidade for exibida na interface do usuário, mostrar na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Sempre que uma velocidade for exibida na interface do usuário, mostrar nessas unidades STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Métrico (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Unidades do jogo (quadrados/dia) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Unidades do jogo (quadrados/seg) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Unidades do jogo (quadrados/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Nós -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unidade de potência veicular: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Sempre que a potência de um veículo for exibida na interface de usuário, mostrar na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unidades de potência de veículos: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Sempre que a potência de um veículo for exibida na interface de usuário, mostrar nessas unidades ###length 3 STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Métrico (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unidades de peso: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Sempre que um peso for exibido na interface de usuário, mostrar na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Sempre que um peso for exibido na interface de usuário, mostrar nessas unidades ###length 3 STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (t/ton curta) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Métrico (t/tonelada) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unidades volumétricas: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Sempre que um volume for exibido na interface de usuário, mostrar na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unidades de volume: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Sempre que um volume for exibido na interface de usuário, mostrar nessas unidades ###length 3 STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Métrico (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Métrico (L) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unidade de força de tração: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Sempre que o esforço de tração (ou força de tração) for exibido na interface de usuário, mostrar na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unidades de força de tração: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Sempre que o esforço de tração (ou força de tração) for exibido na interface de usuário, mostrar nessas unidades ###length 3 STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Métrico (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unidades de altura: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Sempre que uma altura for exibida na interface do usuário, mostrar na unidade selecionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Sempre que uma altura for exibida na interface do usuário, mostrar nessas unidades ###length 3 STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) @@ -2108,7 +2118,7 @@ STR_CONFIG_SETTING_INTERFACE :Interface STR_CONFIG_SETTING_INTERFACE_GENERAL :Geral STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Visualizações STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construção -STR_CONFIG_SETTING_ADVISORS :Notícias / Conselheiros +STR_CONFIG_SETTING_ADVISORS :Notícias / Avisos STR_CONFIG_SETTING_COMPANY :Empresa STR_CONFIG_SETTING_ACCOUNTING :Contabilidade STR_CONFIG_SETTING_VEHICLES :Veículos @@ -2118,7 +2128,7 @@ STR_CONFIG_SETTING_VEHICLES_ORDERS :Ordens STR_CONFIG_SETTING_LIMITATIONS :Limitações STR_CONFIG_SETTING_ACCIDENTS :Desastres / Acidentes STR_CONFIG_SETTING_GENWORLD :Geração de Mundo -STR_CONFIG_SETTING_ENVIRONMENT :Meio Ambiente +STR_CONFIG_SETTING_ENVIRONMENT :Ambiente STR_CONFIG_SETTING_ENVIRONMENT_TIME :Tempo STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoridades STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Localidades @@ -2126,30 +2136,21 @@ STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Indústrias STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribuição de Carga STR_CONFIG_SETTING_ENVIRONMENT_TREES :Árvores STR_CONFIG_SETTING_AI :Competidores -STR_CONFIG_SETTING_AI_NPC :Jogadores IA +STR_CONFIG_SETTING_AI_NPC :Competidores IA STR_CONFIG_SETTING_NETWORK :Rede -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Gerador de rotas para os trens: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Gerador de rotas usado para os trens -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Gerador de rotas para os veículos: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Gerador de rotas usado para os veículos rodoviários -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Gerador de rotas para as embarcações: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Gerador de rotas usado para as embarcações STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Reversão automática em sinais: {STRING} -STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permitir que os trens invertam a direção em um sinal, se eles esperaram ali por muito tempo -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recomendado) +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permitir que os trens invertam a direção num sinal, se eles tiverem esperado lá muito tempo -STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Alterar valor +STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Modificar o valor # Config errors STR_CONFIG_ERROR :{WHITE}Erro no arquivo de configuração... STR_CONFIG_ERROR_ARRAY :{WHITE}... erro no array '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... valor inválido '{STRING}' para '{STRING}' -STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... caracteres extras no fim da definição '{STRING}' -STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorando NewGRF '{STRING}': ID do GRF é idêntico a '{STRING}' -STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignorando NewGRF inválido '{STRING}': {STRING} +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... caracteres extras no final de '{STRING}' +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorando NewGRF '{STRING}': GRF ID é igual ao de '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignorando NewGRF '{STRING}' inválido: {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :não encontrado STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :inseguro para uso estático STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF do sistema @@ -2157,16 +2158,16 @@ STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :incompatível c STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :desconhecido STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... nível de compressão '{STRING}' não é válido STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... jogo salvo no formato '{STRING}' está indisponível. Revertendo para '{STRING}' -STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorando conjunto de Gráficos Base '{STRING}': não encontrado -STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorando conjunto de Sons Base '{STRING}': não encontrado -STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorando conjunto de Músicas Base '{STRING}': não encontrado +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorando conjunto de Gráficos Básicos '{STRING}': não encontrado +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorando conjunto de Sons Básicos '{STRING}': não encontrado +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorando conjunto de Músicas Básicas '{STRING}': não encontrado STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memória insuficiente -STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Falha ao alocar {BYTES} de spritecache. A spritecache foi reduzida para {BYTES}. Isto irá reduzir o desempenho do OpenTTD. Para diminuir os requisitos de memória você pode desabilitar gráficos de 32bpp e/ou os niveis de zoom +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Falha ao alocar {BYTES} de memória para sprites. A memória reservada para sprites foi reduzida para {BYTES}. Isto irá reduzir o desempenho do OpenTTD. Para diminuir o uso de memória você pode desabilitar gráficos de 32bpp e/ou diminuir os níveis de ampliação das visualizações # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Erro nas configurações de vídeo... -STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... nenhuma GPU compatível encontrada. Aceleração de hardware desativada -STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... O driver gráfico (GPU) interrompeu o jogo. Aceleração por hardware desativada +STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... nenhuma GPU compatível encontrada. Aceleração por hardware desativada +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... controlador gráfico travou o jogo. Aceleração por hardware desativada # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2174,23 +2175,23 @@ STR_INTRO_CAPTION :{WHITE}OpenTTD STR_INTRO_NEW_GAME :{BLACK}Novo Jogo STR_INTRO_LOAD_GAME :{BLACK}Abrir Jogo STR_INTRO_PLAY_SCENARIO :{BLACK}Jogar Cenário -STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Jogar Mapa Topográfico +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Jogar Mapa de Altitudes STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor de Cenário STR_INTRO_MULTIPLAYER :{BLACK}Multijogador STR_INTRO_GAME_OPTIONS :{BLACK}Opções de Jogo -STR_INTRO_HIGHSCORE :{BLACK}Tabela de Classificações +STR_INTRO_HIGHSCORE :{BLACK}Painel de Classificação STR_INTRO_HELP :{BLACK}Ajuda & Manuais STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Configurações STR_INTRO_NEWGRF_SETTINGS :{BLACK}Configurações de NewGRF -STR_INTRO_ONLINE_CONTENT :{BLACK}Checar conteúdo online +STR_INTRO_ONLINE_CONTENT :{BLACK}Verificar Conteúdo Online STR_INTRO_AI_SETTINGS :{BLACK}Configurações de IA STR_INTRO_GAMESCRIPT_SETTINGS :{BLACK}Configurações de Script de Jogo -STR_INTRO_QUIT :{BLACK}Sair +STR_INTRO_QUIT :{BLACK}Sair do OpenTTD -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Iniciar um novo jogo. Ctrl+Clique salta a configuração do mapa +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Iniciar um novo jogo. Ctrl+Clique para saltar a configuração do mapa STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Abrir um jogo salvo -STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Iniciar um novo jogo, usando um mapa topográfico como terreno +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Iniciar um novo jogo, usando um mapa de altitudes como terreno STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Iniciar um novo jogo, usando um cenário personalizado STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Criar um mundo/cenário de jogo personalizado STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Iniciar um jogo multijogador @@ -2201,7 +2202,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Selecion STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Selecionar paisagem 'Terra dos brinquedos' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Abrir opções de jogo -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Abrir tabela de classificações +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostrar classificação das melhores empresas STR_INTRO_TOOLTIP_HELP :{BLACK}Acessar a documentação e recursos online STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Abrir configurações STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Abrir configurações de NewGRF @@ -2210,26 +2211,26 @@ STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Abrir co STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Abrir configurações de Script de Jogo STR_INTRO_TOOLTIP_QUIT :{BLACK}Sair do 'OpenTTD' -STR_INTRO_BASESET :{BLACK}Faltam {NUM} sprite{P "" s} no conjunto de gráficos base selecionado. Por favor, verifique se existem atualizações para o conjunto. +STR_INTRO_BASESET :{BLACK}Faltam {NUM} sprite{P "" s} no conjunto de gráficos básicos selecionado. Por favor, verifique se existem atualizações para o conjunto. STR_INTRO_TRANSLATION :{BLACK}Faltam {NUM} string{P "" s} nesta tradução. Por favor, ajude a melhorar o OpenTTD inscrevendo-se como tradutor. Veja o arquivo readme.txt para mais detalhes. # Quit window STR_QUIT_CAPTION :{WHITE}Sair -STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Você tem certeza que deseja sair do OpenTTD? +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Você quer mesmo sair do OpenTTD? STR_QUIT_YES :{BLACK}Sim STR_QUIT_NO :{BLACK}Não # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Abandonar jogo -STR_ABANDON_GAME_QUERY :{YELLOW}Você tem certeza que deseja abandonar este jogo? -STR_ABANDON_SCENARIO_QUERY :{YELLOW}Você tem certeza que deseja abandonar este cenário? +STR_ABANDON_GAME_QUERY :{YELLOW}Você quer mesmo abandonar este jogo? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}Você quer mesmo abandonar este cenário? # Help window STR_HELP_WINDOW_CAPTION :{WHITE}Ajuda & Manuais -STR_HELP_WINDOW_WEBSITES :{BLACK}Sites na Web +STR_HELP_WINDOW_WEBSITES :{BLACK}Páginas na Internet STR_HELP_WINDOW_DOCUMENTS :{BLACK}Documentos STR_HELP_WINDOW_README :{BLACK}Leia-me -STR_HELP_WINDOW_CHANGELOG :{BLACK}Registo de modificações +STR_HELP_WINDOW_CHANGELOG :{BLACK}Registro de modificações STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Erros conhecidos STR_HELP_WINDOW_LICENSE :{BLACK}Licença STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD @@ -2244,12 +2245,12 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jogando STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Escavadeira mágica (remove indústrias, objetos estáticos): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Os túneis podem se cruzar: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Aeronaves a jato não irão se acidentar (frequentemente) em aeroportos pequenos: {ORANGE}{STRING} -STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Editar a altura máxima do mapa: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Editar a altitude máxima do mapa: {ORANGE}{NUM} STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Editar a altura máxima das montanhas no mapa STR_CHEAT_CHANGE_DATE :{LTBLUE}Alterar data: {ORANGE}{DATE_SHORT} -STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Alterar ano atual -STR_CHEAT_SETUP_PROD :{LTBLUE}Ativar modificação de valores de produção: {ORANGE}{STRING} -STR_CHEAT_STATION_RATING :{LTBLUE}Fixar classificações da estação em 100%: {ORANGE}{STRING} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Mudar o ano atual +STR_CHEAT_SETUP_PROD :{LTBLUE}Permitir modificar os valores de produção: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Fixar classificação das estações em 100%: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Esquema de cores @@ -2265,15 +2266,15 @@ STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Mostrar STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Mostrar cores dos grupos de aeronaves STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Escolher a cor principal para o esquema selecionado. Ctrl+Clique para definir esta cor para todos os esquemas STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Escolher a cor secundária para o esquema selecionado. Ctrl+Clique para definir esta cor para todos os esquemas -STR_LIVERY_PANEL_TOOLTIP :{BLACK}Selecionar o esquema de cores a alterar ou esquemas múltiplos utilizando Ctrl+Clique. Clique na opção para usar o esquema de cores +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Selecionar um esquema de cores para alterar ou vários esquemas com Ctrl+Clique. Clique na caixa para usar o esquema de cores STR_LIVERY_TRAIN_GROUP_EMPTY :Não há grupos de trens configurados STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :Não há grupos de veículos configurados STR_LIVERY_SHIP_GROUP_EMPTY :Não há grupos de embarcações configurados STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Não há grupos de aeronaves configurados ###length 23 -STR_LIVERY_DEFAULT :Pintura Padrão -STR_LIVERY_STEAM :Máquina a Vapor +STR_LIVERY_DEFAULT :Cor Padrão +STR_LIVERY_STEAM :Locomotiva a Vapor STR_LIVERY_DIESEL :Locomotiva Diesel STR_LIVERY_ELECTRIC :Locomotiva Elétrica STR_LIVERY_MONORAIL :Locomotiva Monotrilho @@ -2314,17 +2315,17 @@ STR_FACE_SIMPLE :{BLACK}Simples STR_FACE_SIMPLE_TOOLTIP :{BLACK}Seleção simples de face STR_FACE_LOAD :{BLACK}Carregar STR_FACE_LOAD_TOOLTIP :{BLACK}Carregar face favorita -STR_FACE_LOAD_DONE :{WHITE}Sau face favorita foi carregada do arquivo de configuração do OpenTTD +STR_FACE_LOAD_DONE :{WHITE}Sua face favorita foi carregada do arquivo de configuração do OpenTTD STR_FACE_FACECODE :{BLACK}Número da face do jogador STR_FACE_FACECODE_TOOLTIP :{BLACK}Ver e/ou definir o número de face do presidente da empresa STR_FACE_FACECODE_CAPTION :{WHITE}Ver e/ou definir número de face do presidente -STR_FACE_FACECODE_SET :{WHITE}Um novo código numérico de face foi definido -STR_FACE_FACECODE_ERR :{WHITE}Não foi possível alterar o número de face do presidente - deve ser um número entre 0 e 4,294,967,295! +STR_FACE_FACECODE_SET :{WHITE}Novo código de número de face foi definido +STR_FACE_FACECODE_ERR :{WHITE}Não foi possível definir o número de face do presidente - deve ser um número entre 0 e 4,294,967,295! STR_FACE_SAVE :{BLACK}Salvar STR_FACE_SAVE_TOOLTIP :{BLACK}Salvar face favorita -STR_FACE_SAVE_DONE :{WHITE}Esta face será salva como sua favorita no arquivo de configuração do OpenTTD +STR_FACE_SAVE_DONE :{WHITE}Esta face será armazenada como sua favorita no arquivo de configuração do OpenTTD STR_FACE_EUROPEAN :{BLACK}Europeu -STR_FACE_SELECT_EUROPEAN :{BLACK}Selecionar faces Européias +STR_FACE_SELECT_EUROPEAN :{BLACK}Selecionar faces Europeias STR_FACE_AFRICAN :{BLACK}Africano STR_FACE_SELECT_AFRICAN :{BLACK}Selecionar faces Africanas STR_FACE_YES :Sim @@ -2332,8 +2333,8 @@ STR_FACE_NO :Não STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Ativar bigode ou brinco STR_FACE_HAIR :Cabelo: STR_FACE_HAIR_TOOLTIP :{BLACK}Alterar cabelo -STR_FACE_EYEBROWS :Sombrancelhas: -STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Alterar sombrancelhas +STR_FACE_EYEBROWS :Sobrancelhas: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Alterar sobrancelhas STR_FACE_EYECOLOUR :Cor do olho: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Alterar cor do olho STR_FACE_GLASSES :Óculos: @@ -2358,7 +2359,7 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Alterar ###length 3 STR_NETWORK_SERVER_VISIBILITY_LOCAL :Local STR_NETWORK_SERVER_VISIBILITY_PUBLIC :Público -STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY :Apenas por convite +STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY :Somente por convite # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multijogador @@ -2369,7 +2370,7 @@ STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nome STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Nome do jogo STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Clientes -STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clientes conectados / máx. clientes{}Empresas conectadas / máx. empresas +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clientes conectados / máx. clientes{}Empresas ativas / máx. empresas STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Tamanho do mapa STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Tamanho do mapa do jogo{}Clique para ordenar por área @@ -2377,12 +2378,12 @@ STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Data STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Data atual STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}h {NUM}min STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Tempo de jogo -STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Tempo jogando enquanto{}o jogo não estava pausado +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Tempo de jogo enquanto{}o jogo não estava pausado STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Idioma, versão do servidor, etc. -STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Clique em um jogo da lista para selecioná-lo +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Clique num jogo da lista para selecioná-lo STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Servidor no qual você entrou na última vez: -STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Clique para selecionar o servidor no qual você jogou da última vez +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Clique para selecionar o servidor no qual você jogou na última vez STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}INFORMAÇÃO DO JOGO STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Clientes: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} @@ -2404,7 +2405,7 @@ STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERSÃO STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF INCOMPATÍVEL STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Entrar no jogo -STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Atualizar informações +STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Atualizar servidor STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Atualizar as informações do servidor STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Procurar na internet @@ -2412,12 +2413,12 @@ STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Procurar STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Procurar na LAN STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Procurar por servidores na rede local STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Adicionar servidor -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Adicionar um servidor à lista. Pode ser um endereço de servidor ou um código de convite +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Adicionar um servidor na lista. Pode ser um endereço de servidor ou um código de convite STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Iniciar servidor STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Iniciar um servidor próprio STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Introduza o seu nome -STR_NETWORK_SERVER_LIST_ENTER_SERVER_ADDRESS :{BLACK}Introduza o endereço de servidor ou código de convite +STR_NETWORK_SERVER_LIST_ENTER_SERVER_ADDRESS :{BLACK}Endereço do servidor ou código de convite # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Iniciar novo jogo multijogador @@ -2425,7 +2426,7 @@ STR_NETWORK_START_SERVER_CAPTION :{WHITE}Iniciar STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nome do jogo: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}O nome do jogo será mostrado aos outros jogadores no menu de seleção de jogos multijogador STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Definir senha -STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Proteja o jogo com uma senha se não desejar que seja publicamente acessível +STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Proteja o jogo com uma senha se você não quiser que ele seja publicamente acessível STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Visibilidade STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Se outras pessoas podem ver seu servidor na lista pública @@ -2434,9 +2435,9 @@ STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Número STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Escolher o número máximo de clientes. Não é necessário que todos os disponíveis sejam ocupados STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} empresa{P "" s} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Número máximo de empresas: -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limita o servidor para uma certa quantia de empresas +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limitar o servidor a um certo número de empresas -STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Coloque o nome para o jogo em rede +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Introduza um nome para o jogo em rede # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Conectando... @@ -2448,7 +2449,7 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} ###length 8 STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Conectando... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorizando... -STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Esperando... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Aguardando... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Obtendo mapa... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Processando dados... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrando... @@ -2457,15 +2458,14 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Obtendo STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconectar -STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor está protegido. Digite a senha -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa está protegida. Digite a senha +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Digite a senha # Network company list added strings -STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Jogadores online +STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Jogadores conectados STR_NETWORK_COMPANY_LIST_SPECTATE :Assistir # Network client list -STR_NETWORK_CLIENT_LIST_CAPTION :{WHITE}Jogadores Online +STR_NETWORK_CLIENT_LIST_CAPTION :{WHITE}Jogadores Conectados STR_NETWORK_CLIENT_LIST_SERVER :{BLACK}Servidor STR_NETWORK_CLIENT_LIST_SERVER_NAME :{BLACK}Nome STR_NETWORK_CLIENT_LIST_SERVER_NAME_TOOLTIP :{BLACK}Nome do servidor no qual você está jogando @@ -2474,26 +2474,27 @@ STR_NETWORK_CLIENT_LIST_SERVER_NAME_QUERY_CAPTION :Nome do servido STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY :{BLACK}Visibilidade STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY_TOOLTIP :{BLACK}Se outras pessoas podem ver seu servidor na lista pública STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE :{BLACK}Código de convite -STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE_TOOLTIP :{BLACK}Código de convite que outros jogadores podem usar para se juntar a esse servidor +STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE_TOOLTIP :{BLACK}Código de convite que outros jogadores podem usar para acessar este servidor STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE :{BLACK}Tipo de conexão -STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP :{BLACK}Se e como seu servidor pode ser acessado por outros +STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP :{BLACK}Como o seu servidor pode ser acessado por outras pessoas STR_NETWORK_CLIENT_LIST_PLAYER :{BLACK}Jogador STR_NETWORK_CLIENT_LIST_PLAYER_NAME :{BLACK}Nome STR_NETWORK_CLIENT_LIST_PLAYER_NAME_TOOLTIP :{BLACK}Seu nome de jogador STR_NETWORK_CLIENT_LIST_PLAYER_NAME_EDIT_TOOLTIP :{BLACK}Editar o seu nome de jogador STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Seu nome de jogador -STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Ações administrattivas a serem executadas para este cliente -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Ações administrativas a serem executadas para esta empresa -STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Juntar-se a esta empresa +STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Ações administrativas para aplicar neste cliente +STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Ações administrativas para aplicar nesta empresa +STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Participar desta empresa +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Autorizar este cliente a participar da sua empresa STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Enviar uma mensagem a este jogador STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Enviar uma mensagem a todos os jogadores desta empresa STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Enviar uma mensagem a todos os espectadores STR_NETWORK_CLIENT_LIST_SPECTATORS :Espectadores STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(Nova empresa) -STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Criar uma nova empresa e juntar-se a ela +STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Criar uma nova empresa e participar dela STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}Esse é você -STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Esse é o hospedeiro do jogo -STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} cliente{P "" s} - {NUM}/{NUM} empres{P a as} +STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Este é o hospedeiro do jogo +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} cliente{P "" s} - {NUM}/{NUM} empresa{P "" s} STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}Número de clientes atualmente conectados, número de empresas e número máximo de empresas permitido pelo administrador do servidor # Matches ConnectionType @@ -2507,22 +2508,20 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via retr STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Expulsar STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Banir STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Excluir -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Desbloqueio com senha STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Ação administrativa -STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Você tem certeza que deseja expulsar o jogador '{STRING}'? -STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Você tem certeza que deseja banir o jogador '{STRING}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Você tem certeza que deseja excluir a empresa '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Você tem certeza que deseja restaurar a senha da empresa '{COMPANY}'? +STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Você quer mesmo expulsar o jogador '{STRING}'? +STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Você quer mesmo banir o jogador '{STRING}'? +STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Você quer mesmo excluir a empresa '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Usar retransmissão? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Erro ao estabelecer uma conexão entre você e o servidor.'{STRING}'Você gostaria de retransmitir essa sessão via '{STRING}'? STR_NETWORK_ASK_RELAY_NO :{BLACK}Não -STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Sim, apenas dessa vez +STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Sim, desta vez STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Sim, não perguntar novamente -STR_NETWORK_ASK_SURVEY_CAPTION :Participar de pesquisa automatizada? -STR_NETWORK_ASK_SURVEY_TEXT :Você gostaria de participar da pesquisa automatizada?{}O OpenTTD transmitirá uma pesquisa ao sair do jogo.{}Você pode alterar isso a qualquer momento em "Opções do jogo". +STR_NETWORK_ASK_SURVEY_CAPTION :Participar da pesquisa automatizada? +STR_NETWORK_ASK_SURVEY_TEXT :Você gostaria de participar da pesquisa automatizada?{}O OpenTTD enviará uma pesquisa quando sair de um jogo.{}Você pode alterar isso a qualquer momento em "Opções do Jogo". STR_NETWORK_ASK_SURVEY_PREVIEW :Pré-visualizar resultado da pesquisa STR_NETWORK_ASK_SURVEY_LINK :Sobre pesquisa e privacidade STR_NETWORK_ASK_SURVEY_NO :Não @@ -2530,19 +2529,9 @@ STR_NETWORK_ASK_SURVEY_YES :Sim STR_NETWORK_SPECTATORS :Espectadores -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Não salvar a senha digitada -STR_COMPANY_PASSWORD_OK :{BLACK}Dar à empresa uma nova senha -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Senha da empresa -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Senha padrão da empresa -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Usar esta senha de empresa como padrão para novas empresas - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Participar STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Participar e jogar por esta empresa -STR_COMPANY_VIEW_PASSWORD :{BLACK}Senha -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Protege a sua empresa com uma senha para prevenir a entrada de usuários não autorizados -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Definir senha para empresa # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Enviar @@ -2567,16 +2556,17 @@ STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}A conex STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Não foi possível abrir o jogo STR_NETWORK_ERROR_SERVER_START :{WHITE}Não foi possível iniciar o servidor STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Ocorreu um erro de protocolo e a conexão foi encerrada -STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Seu nome de jogador não foi definido. O nome pode ser definido no topo da janela de Multijogador -STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Seu nome de servidor não foi definido. O nome pode ser definido no topo da janela de Multijogador +STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Seu nome de jogador não foi definido. O nome pode ser definido na parte superior da janela de Multijogador +STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}O nome do seu servidor não foi definido. O nome pode ser definido na parte superior da janela de Multijogador STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}A versão deste cliente é incompatível com a versão do servidor STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Senha incorreta +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Você não está na lista de clientes permitidos STR_NETWORK_ERROR_SERVER_FULL :{WHITE}O servidor está cheio STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Você foi banido deste servidor STR_NETWORK_ERROR_KICKED :{WHITE}Você foi expulso do jogo STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Motivo: {STRING} STR_NETWORK_ERROR_CHEATER :{WHITE}Não é permitido trapacear neste servidor -STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Você enviou muitos comandos ao servidor +STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Você estava enviando comandos demais ao servidor STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Você demorou muito para digitar a senha STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Seu computador é muito lento para acompanhar o servidor STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Seu computador demorou muito para transferir o mapa @@ -2586,9 +2576,9 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Seu nome STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Possível perda de conexão STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Nos últimos {NUM} segundo{P "" s} nenhum dado chegou do servidor -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :erro geral -STR_NETWORK_ERROR_CLIENT_DESYNC :erro de dessincronização +STR_NETWORK_ERROR_CLIENT_DESYNC :erro de sincronização STR_NETWORK_ERROR_CLIENT_SAVEGAME :não foi possível carregar o mapa STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :conexão perdida STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :erro de protocolo @@ -2598,11 +2588,12 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :um pacote invá STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :versão incorreta STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nome já está em uso STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :senha incorreta +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :não está na lista de permissões STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :empresa errada em DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :expulso pelo servidor STR_NETWORK_ERROR_CLIENT_CHEATER :estava tentando trapacear STR_NETWORK_ERROR_CLIENT_SERVER_FULL :servidor cheio -STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :estava enviando muitos comandos +STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :estava enviando comandos demais STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :a senha não foi recebida a tempo STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :limite de tempo atingido STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :demorou muito para transferir o mapa @@ -2633,114 +2624,114 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {0:STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} entrou como espectador STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {0:STRING} iniciou uma nova empresa (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {0:STRING} saiu do jogo ({2:STRING}) -STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} mudou seu nome para {STRING} +STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} mudou o nome para {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {0:STRING} deu {2:CURRENCY_LONG} para {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}O servidor fechou a sessão STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}O servidor está reiniciando...{}Aguarde... STR_NETWORK_MESSAGE_KICKED :*** {STRING} foi expulso. Motivo: ({STRING}) STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}Falha ao registrar o servidor -STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}Outro servidor com o mesmo código de convite foi registrado. Mudando para o tipo de jogo "local". -STR_NETWORK_ERROR_COORDINATOR_ISOLATED :{WHITE}Seu servidor não permite conexões remotas +STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}Outro servidor com o mesmo código de convite foi registrado. Mudando o jogo para o tipo "local". +STR_NETWORK_ERROR_COORDINATOR_ISOLATED :{WHITE}O seu servidor não permite conexões remotas STR_NETWORK_ERROR_COORDINATOR_ISOLATED_DETAIL :{WHITE}Outros jogadores não poderão se conectar ao seu servidor # Content downloading window STR_CONTENT_TITLE :{WHITE}Download de conteúdo STR_CONTENT_TYPE_CAPTION :{BLACK}Tipo -STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipo do conteúdo +STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipo de conteúdo STR_CONTENT_NAME_CAPTION :{BLACK}Nome STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Nome do conteúdo -STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Clique em uma linha para ver os detalhes{}Clique na caixa de seleção para marcar e fazer o download +STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Clique numa linha para ver os detalhes{}Clique na caixa de seleção para marcar e fazer o download STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Selecionar tudo -STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marcar todo o conteúdo para ser baixado -STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Selecionar upgrades -STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marcar para baixar todo o conteúdo que seja atualização para o conteúdo existente +STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marcar todo o conteúdo para download +STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Selecionar atualizações +STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marcar para download todo conteúdo que seja atualização para um conteúdo existente STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Desmarcar tudo -STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marcar todo o conteúdo para não ser baixado +STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Desmarcar todo o conteúdo selecionado STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Procurar em sites externos -STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Conteúdo procurado não está disponível no servidor de conteúdo do OpenTTD se hospedado em websites não relacionados ao OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Procurar conteúdo, que não está disponível no servidor de conteúdo do OpenTTD, em sites não associados ao OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Você está saindo do OpenTTD! -STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Os termos e condições ao baixar conteúdo de fontes externas pode variar.{}Você deverá consultar as fontes para obter instruções de como instalar o conteúdo no OpenTTD.{}Você deseja continuar? +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Os termos e condições para download de conteúdo de fontes externas pode variar.{}Você deverá consultar as fontes para obter instruções de como instalar o conteúdo no OpenTTD.{}Você deseja continuar? STR_CONTENT_FILTER_TITLE :{BLACK}Filtrar por etiqueta/nome: -STR_CONTENT_OPEN_URL :{BLACK}Visitar a página web -STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visitar o site desse conteúdo -STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Download +STR_CONTENT_OPEN_URL :{BLACK}Página da internet +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visitar a página web deste conteúdo +STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Fazer download STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Iniciar o download do conteúdo selecionado STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Tamanho total do download: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INFORMAÇÕES DO CONTEÚDO ###length 5 -STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Você não selecionou isto para ser baixado -STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Você selecionou isto para ser baixado -STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Esta dependência foi selecionada para ser baixada +STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Você não selecionou isto para download +STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Você selecionou isto para download +STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Esta dependência foi selecionada para download STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Você já tem isto -STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Esse conteúdo é desconhecido e não pode ser baixado pelo OpenTTD +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Esse conteúdo é desconhecido e o OpenTTD não pode fazer o download -STR_CONTENT_DETAIL_UPDATE :{SILVER}Isto é uma substituição para um {STRING} existente +STR_CONTENT_DETAIL_UPDATE :{SILVER}Isto é uma atualização para {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Nome: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Versão: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Descrição: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Tipo: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Tamanho: {WHITE}{BYTES} -STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Selecionado devido a: {WHITE}{STRING} +STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Selecionado para: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependências: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Etiquetas: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD foi feito sem suporte a "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... não é possível fazer o download do conteúdo! # Order of these is important! -STR_CONTENT_TYPE_BASE_GRAPHICS :Gráficos padrão +STR_CONTENT_TYPE_BASE_GRAPHICS :Gráficos básicos STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :IA -STR_CONTENT_TYPE_AI_LIBRARY :Biblioteca de IA's +STR_CONTENT_TYPE_AI_LIBRARY :Biblioteca de IA STR_CONTENT_TYPE_SCENARIO :Cenário -STR_CONTENT_TYPE_HEIGHTMAP :Mapa topográfico -STR_CONTENT_TYPE_BASE_SOUNDS :Sons base -STR_CONTENT_TYPE_BASE_MUSIC :Músicas base +STR_CONTENT_TYPE_HEIGHTMAP :Mapa de altitudes +STR_CONTENT_TYPE_BASE_SOUNDS :Sons básicos +STR_CONTENT_TYPE_BASE_MUSIC :Músicas básicas STR_CONTENT_TYPE_GAME_SCRIPT :Script de jogo -STR_CONTENT_TYPE_GS_LIBRARY :Biblioteca de GS's +STR_CONTENT_TYPE_GS_LIBRARY :Biblioteca de SJ # Content downloading progress window -STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Baixando conteúdo... +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Fazendo download de conteúdo... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Requisitando arquivos... -STR_CONTENT_DOWNLOAD_FILE :{WHITE}Baixando {STRING} ({NUM} de {NUM}) +STR_CONTENT_DOWNLOAD_FILE :{WHITE}Fazendo download de {STRING} ({NUM} de {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Concluído -STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} de {BYTES} foram baixados ({NUM} %) +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} de {BYTES} foram transferidos ({NUM} %) # Content downloading error messages -STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Não foi possível conectar ao servidor... +STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Não foi possível conectar ao servidor de conteúdo... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}O download falhou... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... arquivo não pode ser gravado STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Falha na descompactação do arquivo -STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Gráficos ausentes -STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD precisa de gráficos para funcionar, mas nenhum foi encontrado. Você permite ao OpenTTD fazer o download e instalar esses gráficos? -STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Sim, obter os gráficos pela rede +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Gráficos não instalados +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD precisa de gráficos para funcionar, mas nenhum foi encontrado. Você permite que o OpenTTD faça o download e instale esses gráficos? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Sim, fazer o download dos gráficos STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Não, sair do OpenTTD STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}O download falhou -STR_MISSING_GRAPHICS_ERROR :{BLACK}O download de gráficos falhou.{}Por favor, baixe os gráficos manualmente. +STR_MISSING_GRAPHICS_ERROR :{BLACK}O download dos gráficos falhou.{}Por favor, faça o download dos gráficos manualmente. STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Sair do OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Opções de Transparência -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Ativar transparência dos sinais. Ctrl+Clique para travar -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Ativar transparência das árvores. Ctrl+Clique para travar -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Ativar transparência das casas. Ctrl+Clique para travar -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Ativar transparência das indústrias. Ctrl+Clique para travar -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Ativar transparência das construções como estações, depósitos e pontos de controle. Ctrl+Clique para travar -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Ativar transparência das pontes. Ctrl+Clique para travar +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Ativar transparência para placas. Ctrl+Clique para travar +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Ativar transparência para árvores. Ctrl+Clique para travar +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Ativar transparência para casas. Ctrl+Clique para travar +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Ativar transparência para indústrias. Ctrl+Clique para travar +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Ativar transparência para construções como estações, depósitos e pontos de controle. Ctrl+Clique para travar +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Ativar transparência para pontes. Ctrl+Clique para travar STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Ativar transparência para estruturas como faróis e antenas. Ctrl+Clique para travar STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Ativar transparência para catenária. Ctrl+Clique para travar -STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Ativar transparência do texto de carregamento e custo/receita. Ctrl+Clique para travar +STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Ativar transparência para textos de carregamento e custo/receita. Ctrl+Clique para travar STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Definir objetos como invisíveis ao invés de transparentes # Linkgraph legend window STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda do Fluxo de Carga STR_LINKGRAPH_LEGEND_ALL :{BLACK}Todas STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nenhuma -STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecionar as empresas a serem mostradas +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecione as empresas a serem mostradas STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY} # Linkgraph legend window and linkgraph legend in smallmap @@ -2749,13 +2740,13 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}sobrecarregado # Linkgraph tooltip -STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}{CARGO_LONG} para ser transportado por mês de {STATION} para {STATION} ({COMMA}% da capacidade){STRING} -STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG} para ser transportado por minuto de {STATION} para {STATION} ({COMMA}% da capacidade){STRING} -STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} para ser transportado de volta ({COMMA}% da capacidade) +STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}{CARGO_LONG} para se transportar, por mês, de {STATION} para {STATION} ({COMMA}% da capacidade){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG} para se transportar, por minuto, de {STATION} para {STATION} ({COMMA}% da capacidade){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} para se transportar de volta ({COMMA}% da capacidade) STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Tempo médio de viagem: {UNITS_DAYS_OR_SECONDS} # Base for station construction window(s) -STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Mostrar área de cobertura +STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Exibir área de cobertura STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Desativado STR_STATION_BUILD_COVERAGE_ON :{BLACK}Ativado STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Não mostrar área de cobertura do local proposto @@ -2773,24 +2764,24 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Unir pon STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construir um ponto de controle separado # Generic toolbar -STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Desativado pois não existem atualmente veículos disponíveis para esta infraestrutura +STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Desativado porque atualmente não existem veículos disponíveis para esta infraestrutura # Rail construction toolbar -STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construção de Ferrovias -STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construção de Ferrovias (elétricas) -STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Construção de Ferrovias (monotrilho) -STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Construção de Ferrovias Maglev +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construção de Ferrovia +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construção de Ferrovia Eletrificada +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Construção de Monotrilho +STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Construção de Maglev -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construir ferrovia. Ctrl+Clique remove a ferrovia. Ctrl+Shift+Clique mostra o custo estimado -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construir ferrovia usando o modo Autotrilho. Ctrl+Clique remove seção da ferrovia. Ctrl+Shift+Clique mostra o custo estimado -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construir depósito de trem (para compra e manutenção de trens). Shift+Clique mostra o custo estimado -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Construir ponto de controle na ferrovia. Ctrl+Clique para selecionar outro ponto de controle e unir com este. Ctrl+Shift+Clique mostra o custo estimado -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construir estação ferroviária. Ctrl+Clique para selecionar outra estação e unir com esta. Ctrl+Shift+Clique mostra o custo estimado -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir sinal na ferrovia. Ctrl+Clique para construir o sinal com estilo diferente{}Clique+Arraste para preencher a seção selecionada da ferrovia com os sinais no espaçamento escolhido. Ctrl+Clique+Arraste para colocar sinais até a próxima junção, estação ou sinal. Ctrl+Shift+Clique+Arrastar mostra o custo estimado -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construir ponte ferroviária. Presionar Shift mostra o custo estimado -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construir túnel ferroviário. Shift+Clique mostra o custo estimado -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Construir/remover ferrovia, sinais, pontos de controle e estações. Ctrl+Clique para também remover os trilhos de pontos de controle e das estações -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Converter/Atualizar tipo de trilho. Shift+Clique mostra o custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construir ferrovia. Ctrl+Clique para remover a ferrovia. Pressione também Shift para só mostrar o custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construir ferrovia usando o modo Autotrilho. Ctrl+Clique para remover seção da ferrovia. Pressione também Shift para só mostrar o custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construir depósito ferroviário (para compra e manutenção de trens). Pressione também Shift para só mostrar o custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Construir ponto de controle na ferrovia. Ctrl+Clique para selecionar outro ponto de controle e unir com este. Pressione também Shift para só mostrar o custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construir estação ferroviária. Ctrl+Clique para selecionar outra estação e unir com esta. Pressione também Shift para só mostrar o custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir sinal na ferrovia. Ctrl+Clique para construir o sinal com estilo diferente{}Clique+Arraste para preencher a seção selecionada da ferrovia com os sinais no espaçamento escolhido. Ctrl+Clique+Arraste para colocar sinais até a próxima junção, estação ou sinal. Pressione também Shift para só mostrar o custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construir ponte ferroviária. Pressione também Shift para só mostrar o custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construir túnel ferroviário. Pressione também Shift para só mostrar o custo estimado +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Construir/Remover ferrovia, sinais, pontos de controle e estações. Ctrl+Clique para também remover os trilhos de pontos de controle e das estações +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Converter/Atualizar tipo de trilho. Pressione também Shift para só mostrar o custo estimado STR_RAIL_NAME_RAILROAD :Ferrovia STR_RAIL_NAME_ELRAIL :Ferrovia eletrificada @@ -2799,25 +2790,49 @@ STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Orientação do Depósito Ferroviário -STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Selecionar a orientação do depósito ferroviário +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Escolher a orientação do depósito ferroviário # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Ponto de controle -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Selecionar tipo de ponto de controle # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Seleção de Estação Ferroviária STR_STATION_BUILD_ORIENTATION :{BLACK}Orientação -STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Selecionar orientação da estação ferroviária +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Escolher a orientação da estação ferroviária STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Número de linhas -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Selecionar o número de plataformas da estação ferroviária +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Escolher o número de plataformas da estação ferroviária STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Comprimento da plataforma -STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Selecionar o comprimento da estação ferroviária +STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Escolher o comprimento da estação ferroviária STR_STATION_BUILD_DRAG_DROP :{BLACK}Arrastar & Soltar -STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construir estação usando arrastar & soltar +STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construir estação usando arrastar e soltar -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Selecionar uma classe de estação para mostrar -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Selecionar o tipo de estação para construir +STR_PICKER_MODE_ALL :Todos +STR_PICKER_MODE_ALL_TOOLTIP :Mostrar itens de todas as classes +STR_PICKER_MODE_USED :Usados +STR_PICKER_MODE_USED_TOOLTIP :Mostrar somente itens existentes +STR_PICKER_MODE_SAVED :Salvos +STR_PICKER_MODE_SAVED_TOOLTIP :Mostrar somente itens salvos + +STR_PICKER_STATION_CLASS_TOOLTIP :Selecionar uma classe de estação para mostrar +STR_PICKER_STATION_TYPE_TOOLTIP :Escolher um tipo de estação para construir. Ctrl+Clique para adicionar ou remover nos itens salvos +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Selecionar uma classe de ponto de controle para mostrar +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Escolher um ponto de controle para construir. Ctrl+Clique para adicionar ou remover nos itens salvos +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Selecionar uma classe de estação de ônibus para mostrar +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Escolher um tipo de estação de ônibus para construir. Ctrl+Clique para adicionar ou remover nos itens salvos +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Selecionar uma classe de estação de caminhões para mostrar +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Escolher um tipo de estação de caminhões para construir. Ctrl+Clique para adicionar ou remover nos itens salvos +STR_PICKER_OBJECT_CLASS_TOOLTIP :Selecionar uma classe de objeto para mostrar +STR_PICKER_OBJECT_TYPE_TOOLTIP :Escolher um tipo de objeto para construir. Ctrl+Clique para adicionar ou remover nos itens salvos. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Pressione também Shift para só mostrar o custo estimado +STR_PICKER_HOUSE_CLASS_TOOLTIP :Selecionar uma zona urbana para mostrar +STR_PICKER_HOUSE_TYPE_TOOLTIP :Selecionar um tipo de casa para construir. Ctrl+Clique para adicionar ou remover nos itens salvos + +STR_HOUSE_PICKER_CAPTION :Seleção de Casas + +STR_HOUSE_PICKER_CLASS_ZONE1 :Borda +STR_HOUSE_PICKER_CLASS_ZONE2 :Subúrbio +STR_HOUSE_PICKER_CLASS_ZONE3 :Periferia Distante +STR_HOUSE_PICKER_CLASS_ZONE4 :Periferia Próxima +STR_HOUSE_PICKER_CLASS_ZONE5 :Centro da cidade STR_STATION_CLASS_DFLT :Padrão STR_STATION_CLASS_DFLT_STATION :Estação padrão @@ -2827,20 +2842,20 @@ STR_STATION_CLASS_WAYP_WAYPOINT :Ponto de contro # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Seleção de Sinais -STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Mostar/ocultar os tipos de sinais avançados -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinal de Bloqueio (semáforo){}Este é o tipo mais básico de sinal, permitindo apenas um trem passar no mesmo bloco de linha ao mesmo tempo -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (semáforo){}Permanece verde enquanto houver um ou mais sinais de saída verdes na seção da linha. Caso contrário, ficará vermelho -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de Saída (semáforo){}Funciona da mesma forma que o sinal de bloqueio, mas é necessário para ativar a cor correta nos pré-sinais de entrada e combinado. +STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Mostrar/Ocultar tipos de sinais avançados +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinal de Bloqueio (semáforo){}Este é o tipo mais básico de sinal e permite que apenas um trem esteja na mesma seção ao mesmo tempo +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (semáforo){}Permanece verde enquanto existir um ou mais sinais de saída verdes na seção seguinte da linha. Caso contrário, ficará vermelho +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de Saída (semáforo){}Funciona do mesmo modo que o sinal de bloqueio, mas é necessário para ativar a cor correta nos pré-sinais de entrada e combinado. STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sinal Combinado (semáforo){}O sinal combinado funciona simultaneamente como um sinal de entrada e de saída. Isto permite a construção de ramificações complexas de pré-sinais. -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal de Caminho (semáforo){}Um sinal de caminho que permite mais de um trem passar por um sinal de bloqueio ao mesmo tempo, se o trem puder reservar um caminho para um ponto de parada seguro. Sinais de caminho padrões podem ser passados no sentido contrário -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal de Sentido Único(semáforo){}Um sinal de caminho que permite mais de um trem passar por um sinal de bloqueio ao mesmo tempo, se o trem puder reservar um caminho para um ponto de parada seguro. Os sinais de sentido único não podem ser passados no sentido contrário -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal de Bloqueio (elétrico){}Este é o tipo mais básico de sinal, permitindo apenas um trem passar no mesmo bloco de linha ao mesmo tempo -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (elétrico){}Permanece verde enquanto houver um ou mais sinais de saída verdes na seção da linha. Caso contrário, ficará vermelho. -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de Saída (elétrico){}Funciona da mesma forma que o sinal de bloqueio, mas é necessário para ativar a cor correta nos pré-sinais de entrada e combinado. +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal de Caminho (semáforo){}Um sinal de caminho que permite mais de um trem entrar numa seção sinalizada ao mesmo tempo, se o trem puder reservar um caminho para um ponto de parada seguro. Sinais de caminho padrões podem ser passados no sentido contrário +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal de Sentido Único(semáforo){}Um sinal de caminho que permite mais de um trem entrar numa seção sinalizada ao mesmo tempo, se o trem puder reservar um caminho para um ponto de parada seguro. Os sinais de sentido único não podem ser passados no sentido contrário +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal de Bloqueio (elétrico){}Este é o tipo mais básico de sinal e permite que apenas um trem esteja na mesma seção ao mesmo tempo +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (elétrico){}Permanece verde enquanto existir um ou mais sinais de saída verdes na seção seguinte da linha. Caso contrário, ficará vermelho. +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de Saída (elétrico){}Funciona do mesmo modo que o sinal de bloqueio, mas é necessário para ativar a cor correta nos pré-sinais de entrada e combinado. STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal Combinado (elétrico){}O sinal combinado funciona simultaneamente como um sinal de entrada e de saída. Isto permite construir ramificações complexas de pré-sinais. -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal de Caminho (elétrico){}Um sinal de caminho que permite mais de um trem passar por um sinal de bloqueio ao mesmo tempo, se o trem puder reservar um caminho para um ponto de parada seguro. Sinais de caminho padrões podem ser passados no sentido contrário -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal de Sentido Único (elétrico){}Um sinal de caminho que permite mais de um trem passar por um sinal de bloqueio ao mesmo tempo, se o trem puder reservar um caminho para um ponto de parada seguro. Os sinais de sentido único não podem ser passados no sentido contrário -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Converter sinal{}Clique em um sinal existente para convertê-lo para o tipo e variante de sinal selecionado. Ctrl+Clique muda a variante existente. Shift+Clique mostra o custo estimado da conversão +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal de Caminho (elétrico){}Um sinal de caminho que permite mais de um trem entrar numa seção sinalizada ao mesmo tempo, se o trem puder reservar um caminho para um ponto de parada seguro. Sinais de caminho padrões podem ser passados no sentido contrário +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal de Sentido Único (elétrico){}Um sinal de caminho que permite mais de um trem entrar numa seção sinalizada ao mesmo tempo, se o trem puder reservar um caminho para um ponto de parada seguro. Os sinais de sentido único não podem ser passados no sentido contrário +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Converter sinal{}Clique num sinal existente para convertê-lo para o tipo e variante de sinal selecionado. Ctrl+Clique para mudar a variante existente. Shift+Clique para só mostrar o custo estimado de conversão STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Distância entre os sinais quando arrastar STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Diminuir a distância entre os sinais quando arrastar STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Aumentar a distância entre os sinais quando arrastar @@ -2848,7 +2863,7 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Aumentar # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selecionar Ponte Ferroviária STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selecionar Ponte Rodoviária -STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Seleção de ponte - Clique na ponte desejada para construir +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Seleção de ponte - clique na ponte de sua preferência para construí-la STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING} STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY} STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG} @@ -2857,80 +2872,82 @@ STR_BRIDGE_NAME_SUSPENSION_STEEL :Suspensa, Aço STR_BRIDGE_NAME_GIRDER_STEEL :Vigas, Aço STR_BRIDGE_NAME_CANTILEVER_STEEL :Cantilever, Aço STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Suspensa, Concreto -STR_BRIDGE_NAME_WOODEN :De madeira +STR_BRIDGE_NAME_WOODEN :Madeira STR_BRIDGE_NAME_CONCRETE :Concreto STR_BRIDGE_NAME_TUBULAR_STEEL :Tubular, Aço STR_BRIDGE_TUBULAR_SILICON :Tubular, Silício # Road construction toolbar -STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Construção de estradas -STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Construção de Linhas de Bonde -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Construir seção de estrada. Ctrl+Clique remove seção da estrada. Ctrl+Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Construir linha de bonde. Ctrl+Clique remove seção da linha. Ctrl+Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Construir estrada usando o modo Autoestrada. Ctrl+Clique remove seção da estrada. Ctrl+Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Construir linha de bonde usando o modo Autotrilho. Ctrl+Clique remove uma seção da linha. Ctrl+Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construir depósito para veículos rodoviários (para compra e manutenção de veículos). Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construir depósito de bonde (para compra e manutenção de bondes). Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Construir estação de ônibus. Ctrl+Clique para selecionar outra estação e unir com esta. Ctrl+Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construir estação de bonde de passageiros. Ctrl+Clique para selecionar outra estação e unir com esta. Ctrl+Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construir estação de caminhões. Ctrl+Clique para selecionar outra estação e unir com esta. Ctrl+Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Construir estação de bonde de carga. Ctrl+Clique para selecionar outra estação e unir com esta. Ctrl+Shift+Clique mostra o custo estimado +STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Construção de Estrada +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Construção de Linha de Bonde +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Construir seção de estrada. Ctrl+Clique para remover seção da estrada. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Construir seção de linha de bonde. Ctrl+Clique para remover seção da linha. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Construir estrada usando o modo Autoestrada. Ctrl+Clique para remover seção da estrada. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Construir linha de bonde usando o modo Autotrilho. Ctrl+Clique para remover seção da linha. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construir depósito rodoviário (para compra e manutenção de veículos). Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construir depósito de bondes (para compra e manutenção de bondes). Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Construir ponto de controle na rodovia. Ctrl+Clique para selecionar outro ponto de controle e unir com este. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Construir ponto de controle na linha de bonde. Ctrl+Clique para selecionar outro ponto de controle e unir com este. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Construir estação de ônibus. Ctrl+Clique para selecionar outra estação e unir com esta. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construir estação de bondes de passageiros. Ctrl+Clique para selecionar outra estação e unir com esta. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construir estação de caminhões. Ctrl+Clique para selecionar outra estação e unir com esta. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Construir estação de bondes de carga. Ctrl+Clique para selecionar outra estação e unir com esta. Pressione também Shift para só mostrar o custo estimado STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Ativar/Desativar estradas de sentido único -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Construir ponte rodoviária. Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Construir ponte para bondes. Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Construir túnel rodoviário. Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Construir túnel para bondes. Shift+Clique mostra o custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Construir/remover estradas -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Construir/remover linhas de bonde -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Converter/Atualizar o tipo de estrada. Shift+Clique mostra custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Converter/Atualizar o tipo de bonde. Shift+Clique mostra o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Construir ponte rodoviária. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Construir ponte para bondes. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Construir túnel rodoviário. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Construir túnel para bondes. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Construir/Remover estrada +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Construir/Remover linha de bonde +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Converter/Atualizar o tipo de estrada. Pressione também Shift para só mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Converter/Atualizar o tipo de bonde. Pressione também Shift para só mostrar o custo estimado STR_ROAD_NAME_ROAD :Estrada STR_ROAD_NAME_TRAM :Bonde # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Orientação do Depósito Rodoviário -STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Selecionar a orientação do depósito rodoviário +STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Escolher a orientação do depósito rodoviário STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Orientação do Depósito de Bondes -STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Selecionar a orientação do depósito de bondes +STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Escolher a orientação do depósito de bondes # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Orientação da Estação de Ônibus -STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Selecionar a orientação da estação de ônibus +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Escolher a orientação da estação de ônibus STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Orientação da Estação de Caminhões -STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Selecionar orientação da estação de caminhões -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientação da Estação de Bonde de Passageiros -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Selecionar orientação da estação de bonde de passageiros -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orientação da Estação de Bonde de Carga -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Selecionar orientação da estação de bonde de carga +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Escolher a orientação da estação de caminhões +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientação da Estação de Bondes de Passageiros +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Escolher a orientação da estação de bondes de passageiros +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orientação da Estação de Bondes de Carga +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Escolher a orientação da estação de bondes de carga # Waterways toolbar (last two for SE only) -STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Construção de Hidrovias -STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Hidrovias -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Construir canais. Shift+Clique mostra o custo estimado -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Construir eclusas. Shift+Clique mostra o custo estimado -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Construir depósito de embarcações (para compra e manutenção de embarcações). Shift+Clique mostra o custo estimado -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Construir doca naval. Ctrl+Clique para selecionar outra estação e unir com esta. Ctrl+Shift+Clique mostra o custo estimado -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Colocar uma bóia que pode ser usada como ponto de controle. Shift+Clique mostra o custo estimado -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Construir aqueduto. Shift+Clique mostra o custo estimado -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Construir canal. Usar Ctrl+Clique no nível do mar para inundar com água do mar +STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Construção de Hidrovia +STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Hidrovia +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Construir canais. Pressione também Shift para só mostrar o custo estimado +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Construir eclusas. Pressione também Shift para só mostrar o custo estimado +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Construir depósito de embarcações (para compra e manutenção de embarcações). Pressione também Shift para só mostrar o custo estimado +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Construir doca naval. Ctrl+Clique para selecionar outra estação e unir com esta. Pressione também Shift para só mostrar o custo estimado +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Colocar uma boia que pode ser usada como ponto de controle. Pressione também Shift para só mostrar o custo estimado +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Construir aqueduto. Pressione também Shift para só mostrar o custo estimado +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Construir canal. Ctrl+Clique no nível do mar para inundar com água do mar STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Colocar rios. Ctrl+Clique para selecionar diagonalmente # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Orientação do Depósito de Embarcações -STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Selecionar orientação do depósito de embarcações +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Escolher a orientação do depósito de embarcações # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Doca # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Aeroportos -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Construir aeroporto. Ctrl+Clique para selecionar outro aeroporto e unir com este. Ctrl+Shift+Clique mostra o custo estimado +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Construir aeroporto. Ctrl+Clique para selecionar outro aeroporto e unir com este. Pressione também Shift para só mostrar o custo estimado # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Seleção de Aeroporto -STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Selecionar tamanho/tipo de aeroporto +STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Escolher tamanho/tipo de aeroporto STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Classe do aeroporto STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Disposição {NUM} @@ -2938,7 +2955,7 @@ STR_AIRPORT_SMALL :Pequeno STR_AIRPORT_CITY :Cidade STR_AIRPORT_METRO :Metropolitano STR_AIRPORT_INTERNATIONAL :Internacional -STR_AIRPORT_COMMUTER :Transbordo +STR_AIRPORT_COMMUTER :Regional STR_AIRPORT_INTERCONTINENTAL :Intercontinental STR_AIRPORT_HELIPORT :Heliporto STR_AIRPORT_HELIDEPOT :Hangar para Helicópteros @@ -2953,15 +2970,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Ruído g # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Paisagismo -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Abaixar um canto do terreno. Clique+Arraste para abaixar o primeiro canto selecionado e nivelar a área selecionada à nova altura do canto. Ctrl+Clique+Arrastar seleciona a área diagonalmente. Ctrl+Shift+Clique+Arrastar mostra o custo estimado -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar um canto do terreno. Clique+Arraste para elevar o primeiro canto selecionado e nivelar a área selecionada à nova altura do canto. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Ctrl+Shift+Clique+Arrastar mostra o custo estimado -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivelar uma área do terreno à altura do primeiro canto selecionado. Ctrl+Clique+Arrastar seleciona a área diagonalmente. Ctrl+Shift+Clique+Arrastar mostra o custo estimado -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreno para uso futuro. Ctrl+Clique+Arrastar seleciona a área diagonalmente. Ctrl+Shift+Clique+Arrastar mostra o custo estimado +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Abaixar um canto do terreno. Clique+Arraste para abaixar o primeiro canto selecionado e nivelar a área selecionada à nova altura do canto. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Pressione também Shift para só mostrar o custo estimado +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar um canto do terreno. Clique+Arraste para elevar o primeiro canto selecionado e nivelar a área selecionada à nova altura do canto. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Pressione também Shift para só mostrar o custo estimado +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivelar uma área do terreno à altura do primeiro canto selecionado. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Pressione também Shift para só mostrar o custo estimado +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreno para uso futuro. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Pressione também Shift para só mostrar o custo estimado # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Seleção de Objeto -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selecionar objeto para construir. Ctrl+Clique+Arrastar seleciona a área diagonalmente. Ctrl+Shift+Clique+Arrastar mostra o custo estimado -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Selecionar classe do objeto para construir STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Pré-visualização do objeto STR_OBJECT_BUILD_SIZE :{BLACK}Tamanho: {GOLD}{NUM} x {NUM} quadrados @@ -2970,73 +2985,73 @@ STR_OBJECT_CLASS_TRNS :Transmissores # Tree planting window (last eight for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Árvores -STR_PLANT_TREE_TOOLTIP :{BLACK}Escolher tipo de árvore para plantar. Se no quadrado já existir uma árvore, serão adicionadas mais árvores de diferentes tipos indepentendemente do tipo selecionado +STR_PLANT_TREE_TOOLTIP :{BLACK}Escolher um tipo de árvore para plantar. Se no quadrado já existir uma árvore, serão adicionadas mais árvores de diferentes tipos, ignorando o tipo selecionado STR_TREES_RANDOM_TYPE :{BLACK}Árvores de tipo aleatório -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plantar árvores de tipo aleatório. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Ctrl+Shift+Clique+Arrastar mostra o custo estimado +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plantar árvores de tipo aleatório. Ctrl+Clique+Arraste para selecionar a área diagonalmente. Pressione também Shift para só mostrar o custo estimado STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Plantar Aleatoriamente STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantar árvores aleatoriamente no terreno STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plantar árvores isoladas usando Clicar+Arrastar sobre o terreno. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plantar árvores isoladas ao arrastar o ponteiro sobre o terreno STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Bosque -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantar pequenas florestas usando Clicar+Arrastar sobre o terreno. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantar florestas pequenas ao arrastar o ponteiro sobre o terreno STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Floresta -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantar florestas grandes usando Clicar+Arrastar sobre o terreno. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantar florestas grandes ao arrastar o ponteiro sobre o terreno # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Geração de Terreno -STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Colocar áreas rochosas no terreno -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definir área de deserto.{}Ctrl+Clique remove a área de deserto +STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Colocar áreas rochosas na paisagem +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definir área de deserto.{}Ctrl+Clique para remover a área de deserto STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Aumentar área do terreno para abaixar/levantar STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Diminuir área do terreno para abaixar/levantar STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Gerar terreno aleatório STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Criar novo cenário -STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Redefinir paisagem -STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Remover todas as propriedades das empresas do mapa +STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Restaurar paisagem +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Remover do mapa todas as propriedades das empresas -STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Redefinir Paisagem -STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Você tem certeza que deseja remover todas as propriedades da empresa? +STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Restaurar Paisagem +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Você quer mesmo remover todas as propriedades das empresas? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Geração de Localidades STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nova Localidade -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fundar nova localidade. Shift+Clique mostra o custo estimado +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fundar nova localidade. Pressione também Shift para só mostrar o custo estimado STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Localidade Aleatória -STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Fundar localidade em um local aleatório +STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Fundar localidade num local aleatório STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Várias localidades aleatórias STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Cobrir o mapa com localidades colocadas aleatoriamente STR_FOUND_TOWN_EXPAND_ALL_TOWNS :{BLACK}Expandir todas as localidades -STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}Fazer todas as localidades crescerem ligeiramente +STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}Fazer com que todas as localidades cresçam ligeiramente STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nome da localidade: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Introduza o nome da localidade -STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Clique para introduzir o nome da localidade +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Clique para editar o nome da localidade STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Nome aleatório STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Gerar novo nome aleatório STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Tamanho da localidade: -STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Pequena -STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Média +STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Pequeno +STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Médio STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Grande STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Aleatório -STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Selecionar o tamanho da localidade +STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Escolher o tamanho da localidade STR_FOUND_TOWN_CITY :{BLACK}Cidade -STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Cidades crescem mais depressa do que as localidades normais{}Dependendo das configuraçãos, elas são maiores quando fundadas +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Cidades crescem mais depressa do que as localidades normais{}Dependendo das configurações, elas são maiores quando fundadas -STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Disposição de estradas na localidade: -STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Selecionar disposição das estradas utilizada para esta localidade +STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Disposição das estradas na localidade: +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Selecionar disposição das estradas utilizada nesta localidade STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original -STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Melhorado +STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Estradas melhores STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Grade 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Grade 3x3 -STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Aleatório +STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Aleatória # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Fundação de Indústrias STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Escolher a indústria apropriada desta lista STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Criar indústrias aleatórias -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Preencher o mapa com indústrias colocadas aleatoriamente STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Criar indústrias aleatórias -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Você tem certeza que deseja criar muitas indústrias aleatoriamente? +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Você quer mesmo criar muitas indústrias aleatórias? STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Custo: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospectar STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Construir @@ -3044,7 +3059,7 @@ STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Fundar STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Remover todas as indústrias STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Remover todas as indústrias que existem atualmente no mapa STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Remover todas as indústrias -STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Você tem certeza que deseja remover todas as indústrias? +STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Você quer mesmo remover todas as indústrias? # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Cadeia Industrial - {STRING} @@ -3057,15 +3072,15 @@ STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING} STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Cadeia Industrial STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Mostrar indústrias que fornecem e aceitam carga STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Ligar ao minimapa -STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selecionar também as indústrias mostradas no minimapa +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selecionar no minimapa as indústrias mostradas STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Selecionar carga -STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Selecionar a carga que você deseja mostrar +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Escolher a carga que você deseja mostrar STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Selecionar indústria -STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Selecionar a indústria que você deseja mostrar +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Escolher a indústria que você deseja mostrar # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informações do Terreno -STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centralizar visualização na localização do quadrado. Ctrl+Clique abre uma nova visualização nesse local. +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centralizar visualização principal na localização do quadrado. Ctrl+Clique para abrir uma nova visualização na localização do quadrado. STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Custo para limpar: {LTBLUE}N/D STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Custo para limpar: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Receita após limpar: {LTBLUE}{CURRENCY_LONG} @@ -3076,12 +3091,13 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Proprietário da ferrovia: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoridade local: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nenhum -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Índice do quadrado: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construído/renovado: {LTBLUE}{DATE_LONG} -STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe de estação: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe da estação: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estação: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Classe de aeroporto: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nome do aeroporto: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Classe do aeroporto: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Tipo de aeroporto: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nome do quadrado do aeroporto: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceita: {LTBLUE} @@ -3089,7 +3105,7 @@ STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STR STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tipo de ferrovia: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}Tipo de estrada: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}Tipo de bonde: {LTBLUE}{STRING} -STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limite de velocidade da linha: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limite de velocidade da ferrovia {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Limite de velocidade da estrada: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Limite de velocidade dos bondes: {LTBLUE}{VELOCITY} @@ -3099,7 +3115,7 @@ STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Terreno irregul STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Terreno descoberto STR_LAI_CLEAR_DESCRIPTION_GRASS :Gramado STR_LAI_CLEAR_DESCRIPTION_FIELDS :Campos -STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Coberto de neve +STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Terreno coberto de neve STR_LAI_CLEAR_DESCRIPTION_DESERT :Deserto STR_LAI_RAIL_DESCRIPTION_TRACK :Ferrovia @@ -3110,17 +3126,17 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Ferrovia com si STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Ferrovia com sinais de caminho STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Ferrovia com sinais de sentido único STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Ferrovia com sinais de bloqueio e pré-sinais -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Ferrovia com sinais de bloqueio e de saida +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Ferrovia com sinais de bloqueio e de saída STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Ferrovia com sinais de bloqueio e combinados STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Ferrovia com sinais de bloqueio e de caminho STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Ferrovia com sinais de bloqueio e de sentido único -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Ferrovia com pré-sinais e sinais de saida +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Ferrovia com pré-sinais e sinais de saída STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Ferrovia com pré-sinais e sinais combinados STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Ferrovia com pré-sinais e sinais de caminho STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Ferrovia com pré-sinais e sinais de sentido único -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Ferrovia com sinais de saida e combinados +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Ferrovia com sinais de saída e combinados STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Ferrovia com sinais de saída e de caminho -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Ferrovia com sinais de saida e de sentido único +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Ferrovia com sinais de saída e de sentido único STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Ferrovia com sinais combinados e de caminho STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Ferrovia com sinais combinados e de sentido único STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Ferrovia com sinais de caminho e de sentido único @@ -3129,32 +3145,32 @@ STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depósito ferro STR_LAI_ROAD_DESCRIPTION_ROAD :Estrada STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Estrada iluminada STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Estrada arborizada -STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Depósito para veículos rodoviários -STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Passagem de nível em estrada/linha +STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Depósito rodoviário +STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Passagem de nível em estrada/trilho STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Linha de bonde # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (em construção) STR_LAI_TREE_NAME_TREES :Árvores -STR_LAI_TREE_NAME_RAINFOREST :Floresta Tropical -STR_LAI_TREE_NAME_CACTUS_PLANTS :Cactos +STR_LAI_TREE_NAME_RAINFOREST :Floresta tropical +STR_LAI_TREE_NAME_CACTUS_PLANTS :Plantas de cactos STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Estação ferroviária -STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Hangar +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Hangar para aeronaves STR_LAI_STATION_DESCRIPTION_AIRPORT :Aeroporto STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Estação de caminhões STR_LAI_STATION_DESCRIPTION_BUS_STATION :Estação de ônibus STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Doca naval -STR_LAI_STATION_DESCRIPTION_BUOY :Bóia +STR_LAI_STATION_DESCRIPTION_BUOY :Boia STR_LAI_STATION_DESCRIPTION_WAYPOINT :Ponto de controle STR_LAI_WATER_DESCRIPTION_WATER :Água STR_LAI_WATER_DESCRIPTION_CANAL :Canal STR_LAI_WATER_DESCRIPTION_LOCK :Eclusa STR_LAI_WATER_DESCRIPTION_RIVER :Rio -STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Costa ou margem -STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Estaleiro naval +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Litoral ou margem +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Depósito de embarcações # Industries come directly from their industry names @@ -3170,7 +3186,7 @@ STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Ponte ferroviá STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Ponte ferroviária tubular STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Ponte rodoviária suspensa em aço -STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ponte rodoviária com vigas em aço +STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ponte rodoviária com vigas de aço STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ponte rodoviária cantilever em aço STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Ponte rodoviária suspensa de concreto reforçado STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Ponte rodoviária de madeira @@ -3182,11 +3198,11 @@ STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Aqueduto STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Transmissor STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Farol STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Sede de Empresa -STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno propriedade de uma empresa +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno que pertence a uma empresa # About OpenTTD window -STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD... -STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados +STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD +STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Direitos autorais originais {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-{STRING} A equipe do OpenTTD @@ -3196,9 +3212,9 @@ STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Taxa de simulação: {STRING} STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Número de tiques simulados por segundo STR_FRAMERATE_RATE_BLITTER :{BLACK}Taxa de quadros gráficos: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Número de quadros de vídeo renderizados por segundo. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Número de quadros de vídeo renderizados por segundo STR_FRAMERATE_SPEED_FACTOR :{BLACK}Fator de velocidade atual do jogo: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Quão rápido o jogo está sendo executado, comparado com a velocidade esperada na taxa de simulação normal. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Quão rápido o jogo está sendo executado, comparado com a velocidade esperada na taxa de simulação normal STR_FRAMERATE_CURRENT :{WHITE}Atual STR_FRAMERATE_AVERAGE :{WHITE}Média STR_FRAMERATE_MEMORYUSE :{WHITE}Memória @@ -3214,16 +3230,16 @@ STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COM STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s ###length 15 -STR_FRAMERATE_GAMELOOP :{BLACK}Total no Loop do jogo: +STR_FRAMERATE_GAMELOOP :{BLACK}Total no ciclo de jogo: STR_FRAMERATE_GL_ECONOMY :{BLACK} Movimentação de carga: STR_FRAMERATE_GL_TRAINS :{BLACK} Tiques de trem: -STR_FRAMERATE_GL_ROADVEHS :{BLACK} Tiques de veículo rodoviário: +STR_FRAMERATE_GL_ROADVEHS :{BLACK} Tiques de veículo: STR_FRAMERATE_GL_SHIPS :{BLACK} Tiques de embarcação: STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Tiques de aeronave: STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Tiques do mundo: STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Atraso na rede de conexões: -STR_FRAMERATE_DRAWING :{BLACK}Renderização de gráficos: -STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Visualizadores do mundo: +STR_FRAMERATE_DRAWING :{BLACK}Renderização gráfica: +STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Visualizações de mundo: STR_FRAMERATE_VIDEO :{BLACK}Saída de video: STR_FRAMERATE_SOUND :{BLACK}Mixagem de áudio: STR_FRAMERATE_ALLSCRIPTS :{BLACK} SJ/IA total: @@ -3231,7 +3247,7 @@ STR_FRAMERATE_GAMESCRIPT :{BLACK} Scrip STR_FRAMERATE_AI :{BLACK} IA {NUM} {STRING} ###length 15 -STR_FRAMETIME_CAPTION_GAMELOOP :Loop do jogo +STR_FRAMETIME_CAPTION_GAMELOOP :Ciclo de jogo STR_FRAMETIME_CAPTION_GL_ECONOMY :Movimentação de carga STR_FRAMETIME_CAPTION_GL_TRAINS :Tiques de trem STR_FRAMETIME_CAPTION_GL_ROADVEHS :Tiques de veículo @@ -3239,8 +3255,8 @@ STR_FRAMETIME_CAPTION_GL_SHIPS :Tiques de embar STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Tiques de aeronave STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Tiques do mundo STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Atraso na rede de conexões -STR_FRAMETIME_CAPTION_DRAWING :Renderizações de gráficos -STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Renderização de visualizações do mundo +STR_FRAMETIME_CAPTION_DRAWING :Renderização gráfica +STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Renderização de visualizações STR_FRAMETIME_CAPTION_VIDEO :Saída de vídeo STR_FRAMETIME_CAPTION_SOUND :Mixagem de áudio STR_FRAMETIME_CAPTION_ALLSCRIPTS :Total de scripts SJ/IA @@ -3253,59 +3269,59 @@ STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar J STR_SAVELOAD_LOAD_CAPTION :{WHITE}Abrir Jogo STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Salvar Cenário STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Abrir Cenário -STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Abrir mapa topográfico -STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Salvar mapa topográfico -STR_SAVELOAD_HOME_BUTTON :{BLACK}Clique aqui para acessar o diretório padrão atual onde salvar/carregar jogos +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Abrir mapa de altitudes +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Salvar mapa de altitudes +STR_SAVELOAD_HOME_BUTTON :{BLACK}Clique aqui para acessar o diretório padrão para salvar/abrir um jogo STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} livres -STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lista de unidades, diretórios e arquivos de jogos gravados +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lista de unidades, diretórios e arquivos de jogos salvos STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nome selecionado para salvar o jogo -STR_SAVELOAD_DELETE_BUTTON :{BLACK}Remover -STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Remover o jogo selecionado +STR_SAVELOAD_DELETE_BUTTON :{BLACK}Apagar +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Excluir o jogo salvo selecionado STR_SAVELOAD_SAVE_BUTTON :{BLACK}Salvar -STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Salvar o jogo atual, usando o nome escolhido +STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Salvar o jogo atual usando o nome escolhido STR_SAVELOAD_LOAD_BUTTON :{BLACK}Abrir STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Carregar o jogo selecionado -STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Carregar o mapa topográfico selecionado +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Carregar o mapa de altitudes selecionado STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalhes do Jogo STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nenhuma informação disponível STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtro: STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Substituir Arquivo -STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Você tem certeza que deseja substituir o arquivo existente? +STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Você quer mesmo substituir o arquivo existente? STR_SAVELOAD_DIRECTORY :{STRING} (Diretório) STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Diretório raiz) -STR_SAVELOAD_OSKTITLE :{BLACK}Introduza um nome para salvar o jogo +STR_SAVELOAD_OSKTITLE :{BLACK}Introduza um nome para o jogo que será gravado # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Geração de Mapas STR_MAPGEN_MAPSIZE :{BLACK}Dimensões do mapa: -STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Selecionar o tamanho do mapa em quadrados. O número de quadrados disponíveis será um pouco menor +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Escolher o tamanho do mapa, em quadrados. O número de quadrados disponíveis será um pouco menor STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Núm. de localidades: -STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Selecionar a densidade de localidades ou um número personalizado +STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Escolher a densidade de localidades ou um número de localidades STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Nomes das localidades: -STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Selecionar o estilo dos nomes das localidades +STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Escolher o estilo dos nomes das localidades STR_MAPGEN_DATE :{BLACK}Data: -STR_MAPGEN_DATE_TOOLTIP :{BLACK}Selecionar a data inicial +STR_MAPGEN_DATE_TOOLTIP :{BLACK}Escolher a data inicial STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Núm. de indústrias: -STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Selecionar a densidade de indústrias ou um número personalizado +STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Escolher a densidade de indústrias ou um número de indústrias STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Pico mais alto: STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Escolher o pico mais alto que o jogo tentará criar, medido em elevação acima do nível do mar STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Aumentar de uma unidade a altura máxima do pico mais alto no mapa STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Diminuir de uma unidade a altura máxima do pico mais alto no mapa STR_MAPGEN_SNOW_COVERAGE :{BLACK}Cobertura de neve: -STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Aumentar em dez porcento a cobertura de neve -STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Reduzir em dez porcento a cobertura de neve +STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Aumentar a cobertura de neve em dez por cento +STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Diminuir a cobertura de neve em dez por cento STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}% -STR_MAPGEN_DESERT_COVERAGE :{BLACK}Cobertura do deserto: -STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Aumentar a cobertura do deserto em dez porcento -STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Diminuir a cobertura do deserto em dez por cento +STR_MAPGEN_DESERT_COVERAGE :{BLACK}Cobertura de deserto: +STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Aumentar a cobertura de deserto em dez por cento +STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Diminuir a cobertura de deserto em dez por cento STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo de terreno: STR_MAPGEN_SEA_LEVEL :{BLACK}Nível do mar: -STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Selecionar o nível do mar +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Escolher o nível do mar STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rios: STR_MAPGEN_SMOOTHNESS :{BLACK}Regularidade: STR_MAPGEN_VARIETY :{BLACK}Distribuição de variedade: @@ -3335,7 +3351,7 @@ STR_MAPGEN_TOWN_NAME_HUNGARIAN :Húngaro STR_MAPGEN_TOWN_NAME_AUSTRIAN :Austríaco STR_MAPGEN_TOWN_NAME_ROMANIAN :Romeno STR_MAPGEN_TOWN_NAME_CZECH :Checo -STR_MAPGEN_TOWN_NAME_SWISS :Suiço +STR_MAPGEN_TOWN_NAME_SWISS :Suíço STR_MAPGEN_TOWN_NAME_DANISH :Dinamarquês STR_MAPGEN_TOWN_NAME_TURKISH :Turco STR_MAPGEN_TOWN_NAME_ITALIAN :Italiano @@ -3343,29 +3359,29 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Catalão # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Bordas do mapa: -STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Escolher as bordas do mapa do jogo +STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Escolher as bordas do mundo do jogo STR_MAPGEN_NORTHWEST :{BLACK}Noroeste STR_MAPGEN_NORTHEAST :{BLACK}Nordeste STR_MAPGEN_SOUTHEAST :{BLACK}Sudeste STR_MAPGEN_SOUTHWEST :{BLACK}Sudoeste -STR_MAPGEN_BORDER_FREEFORM :{BLACK}Livre +STR_MAPGEN_BORDER_FREEFORM :{BLACK}Forma livre STR_MAPGEN_BORDER_WATER :{BLACK}Água STR_MAPGEN_BORDER_RANDOM :{BLACK}Aleatório STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Aleatório STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual -STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotação do mapa topográfico: -STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome do mapa topográfico: -STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}O nome do arquivo de imagem do mapa topográfico +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotação do mapa de altitudes: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome do mapa de altitudes: +STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}O nome do arquivo de imagem do mapa de altitudes STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamanho: -STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}O tamanho da imagem do mapa topográfico original. Para melhores resultados, cada lado deve ser igual a um comprimento de lado de mapa disponível no OpenTTD, como 256, 512, 1024, etc. +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}O tamanho da imagem original do mapa de altitudes. Para obter resultados melhores, cada lado deve corresponder a um comprimento de lado de mapa disponível no OpenTTD, tais como 256, 512, 1024, etc. STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Altura desejada do pico -STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Pico mais elevado -STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Cobertura com neve (em %) -STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Cobertura com deserto (em %) -STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mudar ano de início +STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Altura do pico mais elevado +STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Pico mais alto +STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Cobertura de neve (em %) +STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Cobertura de deserto (em %) +STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Alterar o ano de início # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Tipo de cenário @@ -3377,70 +3393,73 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Escolher STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Mover altura do terreno plano um nível abaixo STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Mover altura do terreno plano um nível acima -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Mudar a altura do terreno plano +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Modificar a altura do terreno plano # Map generation progress STR_GENERATION_WORLD :{WHITE}Gerando Mundo... STR_GENERATION_ABORT :{BLACK}Cancelar STR_GENERATION_ABORT_CAPTION :{WHITE}Cancelar Geração de Mundo -STR_GENERATION_ABORT_MESSAGE :{YELLOW}Você realmente deseja cancelar a geração? +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Você quer mesmo cancelar a geração? STR_GENERATION_PROGRESS :{WHITE}{NUM}% completo STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Geração de mundo +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Geração de paisagem STR_GENERATION_RIVER_GENERATION :{BLACK}Geração de rios -STR_GENERATION_TREE_GENERATION :{BLACK}Geração de árvores +STR_GENERATION_CLEARING_TILES :{BLACK}Geração de áreas irregulares e rochosas +STR_GENERATION_TOWN_GENERATION :{BLACK}Geração de localidades +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Geração de indústrias STR_GENERATION_OBJECT_GENERATION :{BLACK}Geração de objetos -STR_GENERATION_CLEARING_TILES :{BLACK}Geração de area rochosa e irregular +STR_GENERATION_TREE_GENERATION :{BLACK}Geração de árvores STR_GENERATION_SETTINGUP_GAME :{BLACK}Configurando o jogo -STR_GENERATION_PREPARING_TILELOOP :{BLACK}Executando o tile-loop +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Preparando o terreno STR_GENERATION_PREPARING_SCRIPT :{BLACK}Executando o script STR_GENERATION_PREPARING_GAME :{BLACK}Preparando o jogo # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Configurações de NewGRF -STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Informação detalhada de NewGRF +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Informação detalhada do NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Arquivos NewGRF ativos STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Arquivos NewGRF inativos STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Selecionar predefinição: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtro: -STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Carrega a predefinição selecionada +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Carregar a predefinição selecionada STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Salvar predefinição STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Salvar a lista atual como uma predefinição -STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Remover predefinição -STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Remover a predefinição selecionada +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Excluir predefinição +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Excluir a predefinição selecionada STR_NEWGRF_SETTINGS_ADD :{BLACK}Adicionar -STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Adicionar NewGRF selecionado à sua configuração +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Adicionar o arquivo NewGRF selecionado à sua configuração STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Procurar arquivos NewGRF -STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Atualiza a lista de NewGRF disponíveis +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Atualizar a lista de arquivos NewGRF disponíveis STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Remover -STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Remover NewGRF selecionado da lista +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Remover o arquivo NewGRF selecionado da lista STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Para cima -STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Mover NewGRF selecionado para cima na lista +STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Mover o arquivo NewGRF selecionado para cima na lista STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Para baixo -STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mover NewGRF selecionado para baixo na lista +STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mover o arquivo NewGRF selecionado para baixo na lista STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Atualizar STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Atualizar arquivos NewGRF para os quais você tem uma versão mais recente instalada -STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Uma lista de NewGRF que estão instalados +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Uma lista de arquivos NewGRF que estão instalados STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Definir parâmetros STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Mostrar parâmetros -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Alternar paleta -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Ativar/desativar a paleta de NewGRF selecionado.{}Faça isso quando os gráficos deste NewGRF ficarem cor de rosa no jogo -STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Aplicar alterações +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Comutar paleta +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Comutar a paleta do NewGRF selecionado.{}Faça isso quando os gráficos deste NewGRF parecerem cor-de-rosa no jogo +STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Aplicar modificações -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Procurar o conteúdo online +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Procurar conteúdo em falta online STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Verificar se o conteúdo em falta pode ser encontrado online STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Nome do arquivo: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versão: {SILVER}{NUM} -STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Versão mínima compatível: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Versão mín. compatível: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}Soma MD5: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :Padrão (D) STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :Padrão (D) / 32 bpp -STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Legado (W) -STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :Legado (W) / 32 bpp +STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Antiga (W) +STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :Antiga (W) / 32 bpp STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parâmetros: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER_NONE :Nenhum @@ -3451,21 +3470,21 @@ STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatí # NewGRF save preset window STR_SAVE_PRESET_CAPTION :{WHITE}Salvar predefinição -STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de predefinições disponíveis, selecione uma para copiá-la como nome da gravação abaixo -STR_SAVE_PRESET_TITLE :{BLACK}Introduzir um nome para a predefinição -STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nome que está selecionado para a gravação da predefinição +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de predefinições disponíveis, selecione uma para usar o nome na gravação abaixo +STR_SAVE_PRESET_TITLE :{BLACK}Introduza um nome para a predefinição +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nome que está selecionado para salvar a predefinição STR_SAVE_PRESET_CANCEL :{BLACK}Cancelar -STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Não mudar a predefinição +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Não alterar a predefinição STR_SAVE_PRESET_SAVE :{BLACK}Salvar STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Salvar a predefinição com o nome selecionado # NewGRF parameters window -STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Alterar parâmetros dos gráficos base +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Alterar parâmetros dos gráficos básicos STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Alterar parâmetros de NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Fechar -STR_NEWGRF_PARAMETERS_RESET :{BLACK}Redefinir +STR_NEWGRF_PARAMETERS_RESET :{BLACK}Restaurar STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Restaurar todos os parâmetros para os valores padrão -STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parãmetro {NUM} +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parâmetro {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Número de parâmetros: {ORANGE}{NUM} @@ -3479,31 +3498,34 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objeto STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de ferrovia STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de estrada -STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parâmetro da variável 60+x de NewGRF (hexadecimal) +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parâmetro da variável 60+x do NewGRF (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alinhando sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Alinhando sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Alinhando sprite: Ação 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Alinhando sprite: Ação 0x5, tipe {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Próximo sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Ir para o próximo sprite normal, pulando quaisquer sprites falsos, recoloridos ou de fontes e junta tudo do último sprite ao primeiro +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Ir para o próximo sprite normal, pulando quaisquer sprites falsos/recoloridos/tipo de letra, retornando do último sprite para o primeiro STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir para o sprite -STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Ir para o sprite determinado. Se o sprite não é um sprite normal, segue para o próximo sprite normal +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Ir para o sprite selecionado. Se o sprite não for um sprite normal, seguir para o próximo sprite normal STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite anterior -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ir para o sprite normal anterior, pulando quaisquer sprites falsos, recoloridos ou de fontes e junta tudo do primeiro sprite ao último +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ir para o sprite normal anterior, pulando quaisquer sprites falsos/recoloridos/tipo de letra, retornando do primeiro sprite para o último STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representação do sprite atualmente selecionado. O alinhamento é ignorado ao desenhar este sprite -STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move o sprite, alterando os deslocamentos X e Y. Ctrl+Clique move o sprite 8 unidades por vez +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mover o sprite, alterando os deslocamentos X e Y. Ctrl+Clique para mover o sprite 8 unidades por vez +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Deslocamento centralizado STR_SPRITE_ALIGNER_CENTRE_SPRITE :{BLACK}Sprite centralizado -STR_SPRITE_ALIGNER_CROSSHAIR :{BLACK}Mira +STR_SPRITE_ALIGNER_CROSSHAIR :{BLACK}Retículo -STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Redefinir relativo -STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Redefinir os deslocamentos relativos atuais +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Restaurar relativo +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Restaurar os deslocamentos relativos atuais STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Deslocamento X: {NUM}, Deslocamento Y: {NUM} (Absoluto) STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Deslocamento X: {NUM}, Deslocamento Y: {NUM} (Relativo) -STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Escolher sprite -STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Escolher um sprite de qualquer lugar na tela +STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Selecionar sprite +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Selecionar um sprite de qualquer lugar na tela STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Ir para o sprite @@ -3520,54 +3542,54 @@ STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} é d STR_NEWGRF_ERROR_INVALID_PARAMETER :Parâmetro inválido para {1:STRING}: parâmetro {2:STRING} ({3:NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} deve ser carregado antes de {2:STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} deve ser carregado depois de {2:STRING} -STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} requer OpenTTD versão {2:STRING} ou superior -STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :o arquivo GRF foi designado para tradução -STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Existem muitos NewGRFs carregados +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} é para OpenTTD versão {2:STRING} ou superior +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :o arquivo GRF que foi desenvolvido para a tradução +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Foram carregados NewGRFs demais STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Carregar {1:STRING} como NewGRF estático com {2:STRING} pode causar dessincronização STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Sprite inesperado (sprite {3:NUM}) -STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Propriedade de Ação 0 desconhecida {4:HEX} (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Propriedade Action 0 desconhecida {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Tentativa de uso de ID inválido (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contém um sprite corrompido. Todos os sprites corrompidos serão apresentados como um ponto de interrogação (?) vermelho -STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém multiplas entradas de Ação 8 (sprite {3:NUM}) -STR_NEWGRF_ERROR_READ_BOUNDS :Leitura após o final do pseudo-sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém múltiplas entradas Action 8 (sprite {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Leitura depois do final do pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF necessários estão indisponíveis (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desativado por {STRING} -STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de layout de sprite inválido/desconhecido (sprite {3:NUM}) -STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Existem muitos elementos na lista de valores de propriedade (sprite {3:NUM}, property {4:HEX}) -STR_NEWGRF_ERROR_INDPROD_CALLBACK :Retorno de produção da indústria inválido (sprite {3:NUM}, "{2:STRING}") +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de disposição de sprite inválido/desconhecido (sprite {3:NUM}) +STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Há elementos demais na lista de valores de propriedade (sprite {3:NUM}, propriedade {4:HEX}) +STR_NEWGRF_ERROR_INDPROD_CALLBACK :Chamada de produção da indústria inválido (sprite {3:NUM}, "{2:STRING}") # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Cuidado! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Você está prestes a efetuar alterações em um jogo em andamento. Isto pode travar o OpenTTD ou quebrar o estado do jogo. Não envie relatórios de erros sobre esses problemas.{}Você tem certeza que realmente deseja continuar? +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Você está prestes a fazer alterações num jogo em execução. Isso pode travar o OpenTTD ou interromper o estado do jogo. Não envie relatórios de erros sobre estas questões.{}Você quer mesmo fazer as alterações? -STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Não é possível adicionar arquivo: ID do GRF duplicado +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Não é possível adicionar o arquivo: GRF ID duplicado STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Arquivo correspondente não encontrado (GRF compatível carregado) -STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Não é possível adicionar arquivo: Limite de NewGRF's atingido +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Não é possível adicionar o arquivo: limite de NewGRFs atingido -STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) compatíveis foram carregados para os arquivos ausentes -STR_NEWGRF_DISABLED_WARNING :{WHITE}Arquivo(s) GRF ausentes foram desativados -STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Arquivo(s) GRF ausentes -STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Sair da pausa pode travar o OpenTTD. Não envie relatórios de erros sobre travamentos subsequentes.{}Você realmente deseja sair da pausa? +STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRFs compatíveis foram carregados para os arquivos ausentes +STR_NEWGRF_DISABLED_WARNING :{WHITE}Arquivos GRF ausentes foram desativados +STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Arquivos GRF em falta +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Sair da pausa pode travar o OpenTTD. Não envie relatórios de erros sobre travamentos subsequentes.{}Você quer mesmo sair da pausa? # NewGRF status STR_NEWGRF_LIST_NONE :Nenhum ###length 3 STR_NEWGRF_LIST_ALL_FOUND :Todos os arquivos estão presentes STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Foram encontrados arquivos compatíveis -STR_NEWGRF_LIST_MISSING :{RED}Arquivos ausentes +STR_NEWGRF_LIST_MISSING :{RED}Arquivos em falta # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}O comportamento de NewGRF '{0:STRING}' pode causar dessincronizações e/ou travamentos -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}O estado do vagão motorizado mudou para '{1:ENGINE}' quando estiver fora do depósito -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}O comprimento do veículo mudou para '{1:ENGINE}' quando estiver fora do depósito -STR_NEWGRF_BROKEN_CAPACITY :{WHITE}A capacidade do veículo mudou para '{1:ENGINE}' quando estiver fora do depósito ou em adaptação -STR_BROKEN_VEHICLE_LENGTH :{WHITE}O trem '{VEHICLE}' pertencente a '{COMPANY}' tem um comprimento inválido. Possivelmente devido a problemas com NewGRFs. Pode ocorrer desincronização ou travamento +STR_NEWGRF_BROKEN :{WHITE}O comportamento do NewGRF '{0:STRING}' pode causar dessincronização e/ou travamentos +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Ele alterou o estado do vagão motorizado '{1:ENGINE}' quando não estava em um depósito +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ele alterou o comprimento do veículo '{1:ENGINE}' quando não estava em um depósito +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Ele alterou a capacidade do veículo '{1:ENGINE}' quando não estava em um depósito ou em adaptação +STR_BROKEN_VEHICLE_LENGTH :{WHITE}O trem '{VEHICLE}' que pertence a '{COMPANY}' tem um comprimento inválido. Provavelmente isso é devido a problemas com NewGRFs. Pode ocorrer dessincronização ou travamento do jogo -STR_NEWGRF_BUGGY :{WHITE}O NewGRF '{0:STRING}' retorna informação incorreta +STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' produz informação incorreta STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}A informação de carga/adaptação para '{1:ENGINE}' é diferente da lista de compra depois da construção. Isto pode fazer a renovação/substituição automática falhar se adaptar corretamente -STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' causou um loop infinito no retorno de chamada de produção -STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Retorno de chamada {1:HEX} devolveu um resultado desconhecido/inválido {2:HEX} -STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' retornou tipo de carga inválido no retorno de chamada de produção em {2:HEX} +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' causou um loop infinito na chamada de produção +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Chamada {1:HEX} devolveu resultado desconhecido/inválido {2:HEX} +STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' devolveu tipo de carga inválido na chamada de produção em {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : @@ -3580,49 +3602,49 @@ STR_NEWGRF_INVALID_INDUSTRYTYPE : # NewGRF scanning window -STR_NEWGRF_SCAN_CAPTION :{WHITE}Analisando NewGRFs -STR_NEWGRF_SCAN_MESSAGE :{BLACK}Analisando NewGRFs. Dependendo da quantidade isso pode demorar... -STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} analisado{P "" s} de {NUM} NewGRF{P "" s} estimado{P "" s} +STR_NEWGRF_SCAN_CAPTION :{WHITE}Procurando NewGRFs +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Procurando NewGRFs. Dependendo da quantidade, isso pode demorar... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} examinado{P "" s} num total estimado de {NUM} NewGRF{P "" s} STR_NEWGRF_SCAN_ARCHIVES :Procurando por arquivos # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Lista de Placas - {COMMA} Placa{P "" s} STR_SIGN_LIST_MATCH_CASE :{BLACK}Diferenciar maiúsculas/minúsculas -STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Ativar correspondência de maiúsculas/minúsculas na comparação dos nomes com a sequência fornecida +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Considerar correspondência de maiúsculas e minúsculas quando comparar os nomes das placas com a palavra-chave fornecida # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Editar texto da placa -STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centralizar visualização na localização da placa. Ctrl+Clique abre uma nova visualização na localização da placa +STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centralizar visualização principal na localização da placa. Ctrl+Clique para abrir uma nova visualização na localização da placa STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Ir para a próxima placa STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir para a placa anterior STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Introduza um nome para a placa # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Localidades +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Localidades ({COMMA} of {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nenhum - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Cidade){BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nomes das localidades - Clique no nome para centralizar a visualização na cidade. Ctrl+Clique abre uma nova visualização na localização da localidade +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nomes das localidades - clique em um nome para centralizar a visualização principal na cidade. Ctrl+Clique para abrir uma nova visualização na localização da localidade STR_TOWN_POPULATION :{BLACK}População mundial: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Cidade) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}População: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA} -STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} último mês: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA} -STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} último minuto: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA} -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carga necessária para o crescimento da localidade: -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} é necessário -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} é necessário no inverno +STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} no último mês: {ORANGE}{COMMA}{BLACK} máx.: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} no último minuto: {ORANGE}{COMMA}{BLACK} máx.: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Requisitos para o crescimento da localidade: +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} necessário +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} necessário no inverno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} entregue STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (ainda necessário) -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (entregue{P "" s}) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (entregue) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Localidade cresce a cada {ORANGE}{UNITS_DAYS_OR_SECONDS} STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Localidade cresce a cada {ORANGE}{UNITS_DAYS_OR_SECONDS} (financiada) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Localidade {RED}não{BLACK} está crescendo -STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Limite de ruído na localidade: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centralizar visualização na localização da localidade. Ctrl+Clique abre uma nova visualização na localização da localidade +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Limite de ruído na localidade: {ORANGE}{COMMA}{BLACK} máx.: {ORANGE}{COMMA} +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centralizar visualização principal na localização da localidade. Ctrl+Clique para abrir uma nova visualização na localização da localidade STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Autoridade Local STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Mostrar informações sobre a autoridade local STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Alterar o nome da localidade @@ -3638,12 +3660,12 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Renomear Locali STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Autoridade local de {TOWN} STR_LOCAL_AUTHORITY_ZONE :{BLACK}Região STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Mostrar a região dentro dos limites da autoridade local -STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Classificações das empresas de transporte: +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Classificação das empresas de transporte: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Ações disponíveis: -STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de ações disponíveis nesta localidade - Clique no item para mais detalhes -STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Aplicar -STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Realizar a ação selecionada na lista acima +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de ações disponíveis nesta localidade - clique no item para mais detalhes +STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Fazer isto +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Executar a ação selecionada na lista acima ###length 8 STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Campanha publicitária pequena @@ -3651,24 +3673,24 @@ STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Campanha public STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Campanha publicitária grande STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Financiar a reconstrução das estradas locais STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Construir estátua do proprietário da empresa -STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Financiar novos edifícios -STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Comprar direitos exclusivos de transportes +STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Financiar novas construções +STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Comprar direitos exclusivos de transporte STR_LOCAL_AUTHORITY_ACTION_BRIBE :Subornar a autoridade local ###next-name-looks-similar -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Iniciar uma campanha publicitária pequena local, para atrair mais passageiros e cargas para seus serviços de transporte.{}Produz um aumento temporário na avaliação da estação em um raio pequeno ao redor do centro da localidade.{}{POP_COLOUR}Cost: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Iniciar uma campanha publicitária média local, para atrair mais passageiros e cargas para seus serviços de transporte.{}Produz um aumento temporário na avaliação da estação em um raio médio ao redor do centro da cidade.{}{POP_COLOUR}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Iniciar uma campanha publicitária grande local, para atrair mais passageiros e cargas para seus serviços de transporte.{}Produz um aumento temporário na avaliação da estação em um raio grande ao redor do centro da localidade{}{POP_COLOUR}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Financiar a reconstrução da rede urbana de estradas.{}Provoca uma perturbação considerável no tráfego por até 6 meses.{}{POP_COLOUR}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Iniciar uma pequena campanha publicitária local, para atrair mais passageiros e cargas para seus serviços de transporte.{}Produz um aumento temporário na classificação da estação numa distância pequena em torno do centro da localidade.{}{POP_COLOUR}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Iniciar uma média campanha publicitária local, para atrair mais passageiros e cargas para seus serviços de transporte.{}Produz um aumento temporário na classificação da estação numa distância média em torno do centro da cidade.{}{POP_COLOUR}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Iniciar uma grande campanha publicitária local, para atrair mais passageiros e cargas para seus serviços de transporte.{}Produz um aumento temporário na classificação da estação numa distância grande em torno do centro da localidade.{}{POP_COLOUR}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Financiar a reconstrução da rede urbana de estradas.{}Provoca uma perturbação considerável no tráfego por até 6 meses.{}{POP_COLOUR}Custo: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MINUTES :{PUSH_COLOUR}{YELLOW}Financiar a reconstrução da rede urbana de estradas.{}Provoca uma perturbação considerável no tráfego por até 6 minutos.{}{POP_COLOUR}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Construir uma estátua em homenagem à sua empresa.{}Produz um aumento permanente na classificação da estação nesta cidade..{}{POP_COLOUR}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Financiar a construção de novos edifícios na localidade.{}Produz um aumento temporário no crescimento desta localidade.{}{POP_COLOUR}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Construir uma estátua em homenagem à sua empresa.{}Produz um aumento permanente na classificação da estação nesta localidade.{}{POP_COLOUR}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Financiar a construção de novos imóveis na localidade.{}Produz um aumento temporário no crescimento desta localidade.{}{POP_COLOUR}Custo: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Comprar os direitos exclusivos de transporte na localidade por 12 meses.{}A autoridade local não permitirá que passageiros e cargas usem as estações dos concorrentes. Um suborno bem sucedido feito por um concorrente irá cancelar este contrato.{}{POP_COLOUR}Custo: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Comprar os direitos exclusivos de transporte na localidade por 12 minutos.{}A autoridade local não permitirá que passageiros e cargas usem as estações dos concorrentes. Um suborno bem sucedido feito por um concorrente irá cancelar este contrato.{}{POP_COLOUR}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Subornar a autoridade local para aumentar a sua avaliação e anular o direito exclusivo de transporte da concorrência, correndo o risco de uma penalidade severa se for apanhado.{}{POP_COLOUR}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Subornar a autoridade local para aumentar a sua avaliação e anular um direito exclusivo de transporte de um concorrente, correndo o risco de uma penalidade severa se for apanhado.{}{POP_COLOUR}Custo: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}{COMPANY} - Objetivos +STR_GOALS_CAPTION :{WHITE}Objetivos de {COMPANY} STR_GOALS_SPECTATOR_CAPTION :{WHITE}Objetivos globais STR_GOALS_SPECTATOR :Objetivos Globais STR_GOALS_GLOBAL_BUTTON :{BLACK}Globais @@ -3679,7 +3701,7 @@ STR_GOALS_TEXT :{ORANGE}{STRING STR_GOALS_NONE :{ORANGE}- Nenhum - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clique no objetivo para centralizar a visualização principal na indústria/localidade/quadrado. Ctrl+Clique abre uma nova visualização na localização da indústria/localidade/quadrado +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clique no objetivo para centralizar a visualização principal na indústria/localidade/quadrado. Ctrl+Clique para abrir uma nova visualização na localização da indústria/localidade/quadrado # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Pergunta @@ -3696,7 +3718,7 @@ STR_GOAL_QUESTION_BUTTON_YES :Sim STR_GOAL_QUESTION_BUTTON_DECLINE :Recusar STR_GOAL_QUESTION_BUTTON_ACCEPT :Aceitar STR_GOAL_QUESTION_BUTTON_IGNORE :Ignorar -STR_GOAL_QUESTION_BUTTON_RETRY :Tentar novamente +STR_GOAL_QUESTION_BUTTON_RETRY :Repetir STR_GOAL_QUESTION_BUTTON_PREVIOUS :Anterior STR_GOAL_QUESTION_BUTTON_NEXT :Próximo STR_GOAL_QUESTION_BUTTON_STOP :Parar @@ -3710,24 +3732,24 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Fechar # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsídios -STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Oferta de subsídios para execução de serviços: -STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} de {STRING} para {STRING}{YELLOW} ({STRING}) +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subsídios oferecidos para serviços de transporte: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} d{G e a} {STRING} para {STRING}{YELLOW} ({STRING}) STR_SUBSIDIES_NONE :{ORANGE}- Nenhum - -STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Serviços já subsidiados: -STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} de {STRING} para {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clique em um serviço para centralizar a visualização em uma indústria/localidade. Ctrl+Clique abre uma nova visualização na localização da indústria/localidade +STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Serviços de transporte já subsidiados: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} d{G e a} {STRING} para {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clique num serviço para centralizar a visualização principal numa indústria/localidade. Ctrl+Clique para abrir uma nova visualização na localização da indústria/localidade STR_SUBSIDIES_OFFERED_EXPIRY_DATE :até {DATE_SHORT} STR_SUBSIDIES_OFFERED_EXPIRY_TIME :durante {UNITS_MONTHS_OR_MINUTES} STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :até {DATE_SHORT} STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} restante{P "" s} # Story book window -STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} - Livro de História +STR_STORY_BOOK_CAPTION :{WHITE}Livro de História de {COMPANY} STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Livro de Histórias Global STR_STORY_BOOK_SPECTATOR :Livro de Histórias Global STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Página {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Saltar para uma página específica escolhendo-a nesta lista. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Ir para uma página específica escolhendo-a nesta lista STR_STORY_BOOK_PREV_PAGE :{BLACK}Anterior STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ir para a página anterior STR_STORY_BOOK_NEXT_PAGE :{BLACK}Próxima @@ -3735,17 +3757,17 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ir para STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Referência de objetivo inválida # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Nomes das estações - Clique no nome para centralizar a visualização na estação. Ctrl+Clique abre uma nova visualização na localização da estação +STR_STATION_LIST_TOOLTIP :{BLACK}Nomes das estações - clique em um nome para centralizar a visualização principal na estação. Ctrl+Clique para abrir uma nova visualização na localização da estação STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl+Clique para selecionar vários itens -STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Estações +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Estaç{P ão ões} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Nenhum - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Selecionar todas as instalações STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Todos os tipos de carga e sem classificação -STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Diversos tipos de carga +STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Vários tipos de carga STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Sem tipos de carga -STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :Apenas cargas sem classificação +STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :Apenas sem classificação de carga STR_STATION_LIST_CARGO_FILTER_SELECT_ALL :Selecionar tudo e sem classificação STR_STATION_LIST_CARGO_FILTER_NO_RATING :Sem classificação de carga STR_STATION_LIST_CARGO_FILTER_EXPAND :Mostrar mais... @@ -3755,8 +3777,8 @@ STR_STATION_VIEW_CAPTION :{WHITE}{STATION STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservado para carregamento) -STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aceitas -STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar lista de cargas aceitas +STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aceita +STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar lista de cargas que são aceitas STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aceita: {WHITE}{CARGO_LIST} STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estação tem direitos exclusivos de transporte nesta localidade. @@ -3771,12 +3793,12 @@ STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING} STR_STATION_VIEW_GROUP :{BLACK}Agrupar por STR_STATION_VIEW_WAITING_STATION :Estação: Aguardando STR_STATION_VIEW_WAITING_AMOUNT :Quantidade: Aguardando -STR_STATION_VIEW_PLANNED_STATION :Estação: Planejada +STR_STATION_VIEW_PLANNED_STATION :Estação: Planejado STR_STATION_VIEW_PLANNED_AMOUNT :Quantidade: Planejada STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} de {STATION} STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} para {STATION} -STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} de estação desconhecida +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} de qualquer estação STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} para qualquer estação STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via qualquer estação STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} desta estação @@ -3792,7 +3814,7 @@ STR_STATION_VIEW_GROUP_D_S_V :Destino-Origem- STR_STATION_VIEW_GROUP_D_V_S :Destino-Via-Origem ###length 8 -STR_CARGO_RATING_APPALLING :Inexistente +STR_CARGO_RATING_APPALLING :Horrível STR_CARGO_RATING_VERY_POOR :Muito Fraco STR_CARGO_RATING_POOR :Fraco STR_CARGO_RATING_MEDIOCRE :Medíocre @@ -3801,27 +3823,27 @@ STR_CARGO_RATING_VERY_GOOD :Muito Bom STR_CARGO_RATING_EXCELLENT :Excelente STR_CARGO_RATING_OUTSTANDING :Excepcional -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Centralizar visualização na localização da estação. Ctrl+Clique abre uma nova visualização na localização da estação +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Centralizar visualização principal na localização da estação. Ctrl+Clique para abrir uma nova visualização na localização da estação STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Alterar o nome da estação STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Mostrar todos os trens que têm esta estação na sua programação -STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Mostrar todos os veículos rodoviários que têm esta estação na sua programação +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Mostrar todos os veículos que têm esta estação na sua programação STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Mostrar todas as aeronaves que têm esta estação na sua programação STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Mostrar todas as embarcações que têm esta estação na sua programação -STR_STATION_VIEW_RENAME_STATION_CAPTION :Renomear estação/área de carga +STR_STATION_VIEW_RENAME_STATION_CAPTION :Renomear estação/local de carga STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Fechar aeroporto STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Impedir aviões de pousarem nesse aeroporto # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centralizar visualização na localização do ponto de controle. Ctrl+Clique abre uma nova visualização na localização do ponto de controle +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centralizar visualização principal na localização do ponto de controle. Ctrl+Clique para abrir uma nova visualização na localização do ponto de controle STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Alterar o nome do ponto de controle -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centralizar visualização na localização da bóia. Ctrl+Clique abre uma nova visualização na localização da bóia +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centralizar visualização principal na localização da boia. Ctrl+Clique para abrir uma nova visualização na localização da boia STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Alterar o nome da boia -STR_EDIT_WAYPOINT_NAME :{WHITE}Editar nome do ponto de controle +STR_EDIT_WAYPOINT_NAME :{WHITE}Editar o nome do ponto de controle # Finances window STR_FINANCES_CAPTION :{WHITE}Finanças de {COMPANY} {BLACK}{COMPANY_NUM} @@ -3856,45 +3878,45 @@ STR_FINANCES_ZERO_INCOME :{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :+{CURRENCY_LONG} STR_FINANCES_PROFIT :{WHITE}Lucro STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balanço Bancário -STR_FINANCES_OWN_FUNDS_TITLE :{WHITE}Fundos Próprios +STR_FINANCES_OWN_FUNDS_TITLE :{WHITE}Recursos Próprios STR_FINANCES_LOAN_TITLE :{WHITE}Empréstimo STR_FINANCES_INTEREST_RATE :{WHITE}Juros do Empréstimo: {BLACK}{NUM}% STR_FINANCES_MAX_LOAN :{WHITE}Empréstimo Máximo: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BANK_BALANCE :{WHITE}{CURRENCY_LONG} -STR_FINANCES_BORROW_BUTTON :{BLACK}Pedir empréstimo {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Aumentar o empréstimo. Ctrl+Clique solicita o máximo possível -STR_FINANCES_REPAY_BUTTON :{BLACK}Pagar empréstimo {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Pagar parte do empréstimo. Ctrl+Clique paga o máximo possível +STR_FINANCES_BORROW_BUTTON :{BLACK}Emprestar {CURRENCY_LONG} +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Aumentar o valor do empréstimo. Ctrl+Clique para solicitar o máximo possível +STR_FINANCES_REPAY_BUTTON :{BLACK}Pagar {CURRENCY_LONG} +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Pagar parte do empréstimo. Ctrl+Clique para pagar o máximo possível STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infraestrutura # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Presidente) -STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Inaugurado: {WHITE}{NUM} +STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Inaugurada: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Esquema de Cores: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Veículos: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tre{P m ns} -STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} veículo{P "" s} rodoviário{P "" s} +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} veículo{P "" s} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} aeronave{P "" s} -STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} embarca{P ção ções} +STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} embarcaç{P ão ões} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Nenhum STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Valor da empresa: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infraestrutura: -STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} se{P ção ções} de ferrovia -STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} se{P ção ções} de estrada +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} seç{P ão ões} de ferrovia +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} seç{P ão ões} de estrada STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} quadrado{P "" s} com água STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} parte{P "" s} de estação STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} aeroporto{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Nenhum STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Construir sede -STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Construir sede da empresa +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Construir a sede da empresa STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Ver sede -STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Ver sede da empresa +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Mostrar a sede da empresa STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Mover sede -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reconstruir sede da empresa em outro local por 1% do valor da empresa. Shift+Clique mostra o custo estimado +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reconstruir a sede da empresa em outro local por 1% do valor da empresa. Pressione também Shift para só mostrar o custo estimado STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalhes STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Ver contagens detalhadas da infraestrutura STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Dar dinheiro @@ -3903,20 +3925,20 @@ STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Aquisiç STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Fazer a aquisição hostil desta empresa STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nova Face -STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Selecionar nova face para o presidente +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Escolher uma face nova para o presidente STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Esquema de Cores -STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Alterar pintura dos veículos da empresa +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Alterar a cor dos veículos da empresa STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Nome da Empresa -STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Alterar nome da empresa +STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Alterar o nome da empresa STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Nome do Presidente -STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Alterar nome do presidente +STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Alterar o nome do presidente STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nome da Empresa STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nome do Presidente -STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Inserir a quantia de dinheiro que você deseja dar +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Introduza o valor que você quer dar -STR_BUY_COMPANY_MESSAGE :{WHITE}Estamos à procura de uma empresa de transportes para comprar a nossa empresa.{}{}Você deseja comprar {COMPANY} por {CURRENCY_LONG}? -STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Na aquisição hostil de {COMPANY} você irá adquirir todos os ativos, liquidar todos os empréstimos e pagar o valor de 2 anos de lucros.{}{}O total estimado é de {CURRENCY_LONG}.{}{}Você deseja continuar esta aquisição hostil? +STR_BUY_COMPANY_MESSAGE :{WHITE}Estamos procurando uma empresa de transportes para comprar a nossa empresa.{}{}Você deseja comprar {COMPANY} por {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Na aquisição hostil de {COMPANY} você irá adquirir todos os ativos, liquidar todos os empréstimos e pagar dois anos de lucros.{}{}O total estimado é de {CURRENCY_LONG}.{}{}Você deseja continuar esta aquisição hostil? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infraestrutura de {COMPANY} @@ -3933,7 +3955,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/período # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Indústrias +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Indústrias ({COMMA} of {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nenhum - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transportado){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3941,7 +3963,7 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} e mais {NUM} ... -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomes de indústrias - Clique no nome para centralizar a visualização na indústria. Ctrl+Clique abr uma nova visualização na localização da indústria +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomes de indústrias - clique em um nome para centralizar a visualização principal na indústria. Ctrl+Clique para abrir uma nova visualização na localização da indústria STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Carga aceita: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Carga produzida: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Todos os tipos de carga @@ -3949,10 +3971,10 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :Nenhum # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} -STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produção no mês passado: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produção no último mês: STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Produção no último minuto: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportado) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centralizar visualização na localização da indústria. Ctrl+Clique abre uma nova visualização na localização da indústria +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centralizar visualização principal na localização da indústria. Ctrl+Clique para abrir uma nova visualização na localização da indústria STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nível de produção: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}A indústria anunciou fechamento iminente! @@ -3964,21 +3986,21 @@ STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessit STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{0:STRING}{BLACK}{3:STRING} STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} aguardando{STRING} -STR_CONFIG_GAME_PRODUCTION :{WHITE}Alterar produção (múltiplo de 8, até 2040) +STR_CONFIG_GAME_PRODUCTION :{WHITE}Alterar a produção (múltiplo de 8, até 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Alterar o nível de produção (porcentagem, até 800%) # Vehicle lists ###length VEHICLE_TYPES STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tre{P m ns} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Veículo{P "" s} -STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Embarca{P ção ções} +STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Embarcaç{P ão ões} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aeronave{P "" s} ###length VEHICLE_TYPES -STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trens - Clique em um trem para informações -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Veículos rodoviários - Clique em um veículo para informações -STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Embarcações - Clique em uma embarcação para informações -STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aeronaves - Clique em uma aeronave para informações +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trens - clique num trem para informações +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Veículos - clique num veículo para informações +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Embarcações - clique numa embarcação para informações +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aeronaves - clique numa aeronave para informações ###length VEHICLE_TYPES STR_VEHICLE_LIST_AVAILABLE_TRAINS :Trens Disponíveis @@ -4003,7 +4025,7 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Enviar para um STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Clique para parar todos os veículos desta lista STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Clique para iniciar todos os veículos desta lista -STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Ver lista de modelos de locomotivas disponíveis para este tipo de veículo +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Ver lista de modelos disponíveis para esta classe de veículo STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Ordens compartilhadas de {COMMA} Veículo{P "" s} @@ -4022,15 +4044,15 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Aeronaves sem g STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos - Clique em um grupo para listar todos os veículos do grupo. Clique+Arraste para organizar a hierarquia. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos - clique num grupo para listar todos os veículos do grupo. Clique+Arraste para organizar a hierarquia STR_GROUP_CREATE_TOOLTIP :{BLACK}Clique para criar um grupo -STR_GROUP_DELETE_TOOLTIP :{BLACK}Remover o grupo selecionado -STR_GROUP_RENAME_TOOLTIP :{BLACK}Renomear o grupo selecionado -STR_GROUP_LIVERY_TOOLTIP :{BLACK}Alterar a pintura do grupo selecionado -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Clique para excluir esse grupo da substituição automática global. Ctrl+Clique para excluir também os subgrupos. +STR_GROUP_DELETE_TOOLTIP :{BLACK}Excluir o grupo selecionado +STR_GROUP_RENAME_TOOLTIP :{BLACK}Alterar o nome do grupo selecionado +STR_GROUP_LIVERY_TOOLTIP :{BLACK}Alterar a cor do grupo selecionado +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Clique para proteger este grupo da substituição automática global. Ctrl+Clique para também proteger os subgrupos -STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Remover grupo -STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Você tem certeza que deseja remover esse grupo e seus descendentes? +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Excluir grupo +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Você quer mesmo excluir este grupo e seus descendentes? STR_GROUP_ADD_SHARED_VEHICLE :Adicionar veículos compartilhados STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos os veículos @@ -4067,12 +4089,12 @@ STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Velocida STR_PURCHASE_INFO_SPEED :{BLACK}Velocidade: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Velocidade no oceano: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Velocidade em canais/rios: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}Custo de Operação: {GOLD}{CURRENCY_LONG}/ano -STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Custo de Operação: {GOLD}{CURRENCY_LONG}/período +STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}Custo Operacional: {GOLD}{CURRENCY_LONG}/ano +STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Custo Operacional: {GOLD}{CURRENCY_LONG}/período STR_PURCHASE_INFO_CAPACITY :{BLACK}Capacidade: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(adaptável) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Desenvolvido: {GOLD}{NUM}{BLACK} Vida útil: {GOLD}{COMMA} ano{P "" s} -STR_PURCHASE_INFO_RELIABILITY :{BLACK}Confiabilidade Máx.: {GOLD}{COMMA}% +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Confiabilidade máx.: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Custo: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_COST_REFIT :{BLACK}Custo: {GOLD}{CURRENCY_LONG}{BLACK} (Custo de Adaptação: {GOLD}{CURRENCY_LONG}{BLACK}) STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Peso: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) @@ -4082,10 +4104,10 @@ STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacida STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagões motorizados: {GOLD}+{POWER}{BLACK} Peso: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Adaptável para: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Todos os tipos de carga -STR_PURCHASE_INFO_NONE :Nenhum -STR_PURCHASE_INFO_ENGINES_ONLY :Apenas locomotivas -STR_PURCHASE_INFO_ALL_BUT :Todas menos {CARGO_LIST} -STR_PURCHASE_INFO_MAX_TE :{BLACK}Força de Tração Máx. : {GOLD}{FORCE} +STR_PURCHASE_INFO_NONE :Nenhuma +STR_PURCHASE_INFO_ENGINES_ONLY :Somente locomotivas +STR_PURCHASE_INFO_ALL_BUT :Todas, exceto {CARGO_LIST} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Força de Tração máx.: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Autonomia: {GOLD}{COMMA} quadrados STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING} @@ -4095,10 +4117,10 @@ STR_CARGO_TYPE_FILTER_FREIGHT :Carga STR_CARGO_TYPE_FILTER_NONE :Nenhum ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de seleção de trens. Clique em um trem para informações. Cltr+Clique para mostrar/ocultar esse tipo de veículo -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de seleção de veículos rodoviários. Clique em um veículo para informações. Cltr+Clique para mostrar/ocultar esse tipo de veículo -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de seleção de embarcações. Clique em uma embarcação para informações. Ctrl+Clique para mostrar/ocultar esse tipo de embarcação -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de seleção de aeronaves. Clique em uma aeronave para informações. Cltr+Clique para mostrar/ocultar esse tipo de aeronave +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de seleção de veículo ferroviário. Clique num veículo para informações. Ctrl+Clique para mostrar/ocultar este tipo de veículo +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de seleção de veículo rodoviário. Clique num veículo para informações. Ctrl+Clique para mostrar/ocultar este tipo de veículo +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de seleção de embarcação. Clique numa embarcação para informações. Ctrl+Clique para mostrar/ocultar este tipo de embarcação +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de seleção de aeronave. Clique numa aeronave para informações. Ctrl+Clique para mostrar/ocultar este tipo de aeronave ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Comprar Veículo @@ -4110,19 +4132,19 @@ STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Comprar STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Adaptar Veículo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Adaptar Veículo STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Adaptar Embarcação -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Adaptar Aeronaves +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Adaptar Aeronave ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar o veículo ferroviário selecionado. Shift+Clique mostra o custo estimado -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar o veículo rodoviário selecionado. Shift+Clique mostra o custo estimado -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar a embarcação selecionada. Shift+Clique mostra o custo estimado -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar aeronave selecionada. Shift+Clique mostra o custo estimado +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar o veículo ferroviário selecionado. Pressione também Shift para só mostrar o custo estimado +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar o veículo rodoviário selecionado. Pressione também Shift para só mostrar o custo estimado +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar a embarcação selecionada. Pressione também Shift para só mostrar o custo estimado +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar a aeronave selecionada. Pressione também Shift para só mostrar o custo estimado ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar e adaptar o veículo ferroviário selecionado. Shift+Clique mostra o custo estimado -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar e adaptar o veículo rodoviário selecionado. Shift+Clique mostra o custo estimado -STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar e adaptar a embarcação selecionada. Shift+Clique mostra o custo estimado -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar e adaptar a aeronave selecionada. Shift+Clique mostra o custo estimado +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar e adaptar o veículo ferroviário selecionado. Pressione também Shift para só mostrar o custo estimado +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar e adaptar o veículo rodoviário selecionado. Pressione também Shift para só mostrar o custo estimado +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar e adaptar a embarcação selecionada. Pressione também Shift para só mostrar o custo estimado +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar e adaptar a aeronave selecionada. Pressione também Shift para só mostrar o custo estimado ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Renomear @@ -4149,10 +4171,10 @@ STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mostrar/ocultar o tipo de veículo ferroviário -STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mostrar/ocultar o tipo de veículo rodoviário -STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mostrar/ocultar o tipo de embarcação -STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mostrar/ocultar o tipo de aeronave +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mostrar/Ocultar tipo de veículo ferroviário +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mostrar/Ocultar tipo de veículo rodoviário +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mostrar/Ocultar tipo de embarcação +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Mostrar/Ocultar tipo de aeronave ###length VEHICLE_TYPES STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Renomear tipo de veículo ferroviário @@ -4172,10 +4194,10 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} ve STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trens - arraste o veículo com o botão esquerdo do mouse para acrescentar/retirar do trem. Clique com o botão direito para informações. Ctrl+Clique para aplicar ambas as funções à sequência restante -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Veículos - Clique com o botão direito em um veículo para informações -STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Embarcações - Clique com o botão direito em uma embarcação para informações -STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aeronaves - Clique com o botão direito em uma aeronave para informações +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trens - arraste o veículo com o botão esquerdo do mouse para acrescentar/retirar do trem, clique com o botão direito para informações. Ctrl+Clique para aplicar uma das funções à cadeia seguinte +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Veículos - clique com o botão direito num veículo para informações +STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Embarcações - clique com o botão direito numa embarcação para informações +STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aeronaves - clique com o botão direito numa aeronave para informações ###length VEHICLE_TYPES STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Arraste o veículo ferroviário até aqui para vendê-lo @@ -4214,63 +4236,63 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Clonar E STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clonar Aeronave ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Comprar uma cópia de um trem incluindo todos os vagões. Clique nesse botão e depois em um trem que estiver dentro ou fora de um depósito. Ctrl+Clique compartilha as ordens. Ctrl+Shift+Clique mostra o custo estimado -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Comprar uma cópia de um veículo rodoviário. Clique nesse botão e depois em um veículo que estiver dentro ou fora de um depósito. Ctrl+Clique compartilha as ordens. Ctrl+Shift+Clique mostra o custo estimado -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Comprar uma cópia de uma embarcação. Clique nesse botão e depois em uma embarcação que estiver dentro ou fora de um depósito. Ctrl+Clique compartilha as ordens. Ctrl+Shift+Clique mostra o custo estimado -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Comprar uma cópia de uma aeronave. Clique nesse botão e depois em uma aeronave que estiver dentro ou fora de um hangar. Ctrl+Clique compartilha as ordens. Ctrl+Shift+Clique mostra o custo estimado +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Comprar uma cópia de um trem, incluindo todos os vagões. Clique neste botão e depois num trem que está dentro ou fora do depósito. Ctrl+Clique para compartilhar as ordens. Pressione também Shift para só mostrar o custo estimado +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Comprar uma cópia de um veículo rodoviário. Clique neste botão e depois num veículo que está dentro ou fora do depósito. Ctrl+Clique para compartilhar as ordens. Pressione também Shift para só mostrar o custo estimado +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Comprar uma cópia de uma embarcação. Clique neste botão e depois numa embarcação que está dentro ou fora do depósito. Ctrl+Clique para compartilhar as ordens. Pressione também Shift para só mostrar o custo estimado +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Comprar uma cópia de uma aeronave. Clique neste botão e depois numa aeronave que está dentro ou fora do hangar. Ctrl+Clique para compartilhar as ordens. Pressione também Shift para só mostrar o custo estimado ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centralizar visualização na localização do depósito ferroviário. Ctrl+Clique abre uma nova visualização na localização do depósito ferroviário -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centralizar visualização na localização do depósito rodoviário. Ctrl+Clique abre uma nova visualização na localização do depósito de veículos -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centralizar visualização na localização do depósito de embarcações. Ctrl+Clique abre uma nova visualização na localização do depósito -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centralizar visualização na localização do hangar. Ctrl+Clique abre uma nova visualização na localização do hangar +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centralizar visualização principal na localização do depósito ferroviário. Ctrl+Clique para abrir uma nova visualização na localização do depósito ferroviário +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centralizar visualização principal na localização do depósito rodoviário. Ctrl+Clique para abrir uma nova visualização na localização do depósito rodoviário +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centralizar visualização principal na localização do depósito de embarcações. Ctrl+Clique para abrir uma nova visualização na localização do depósito +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centralizar visualização principal na localização do hangar. Ctrl+Clique para abrir uma nova visualização na localização do hangar ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Obter uma lista de todos os trens com este depósito em suas ordens STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Obter uma lista de todos os veículos com este depósito em suas ordens STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Obter uma lista de todas as embarcações com este depósito em suas ordens -STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Obter uma lista de todas as aeronaves com qualquer hangar deste aeoroporto em suas ordens +STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Obter uma lista de todas as aeronaves com qualquer hangar deste aeroporto em suas ordens ###length VEHICLE_TYPES -STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Clique para todos os trens pararem dentro do depósito -STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Clique para todos os veículos pararem dentro do depósito -STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Clique para todos as embarcações pararem dentro do depósito -STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Clique para todas as aeronaves pararem dentro do hangar +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Clique para parar todos os trens dentro do depósito +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Clique para parar todos os veículos dentro do depósito +STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Clique para parar todos as embarcações dentro do depósito +STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Clique para parar todas as aeronaves dentro do hangar ###length VEHICLE_TYPES -STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Clique para todos os trens saírem do depósito -STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Clique para todos os veículos saírem do depósito -STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Clique para todas as embarcações saírem do depósito -STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Clique para todas as aeronaves saírem do hangar +STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Clique para iniciar todos os trens do depósito +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Clique para iniciar todos os veículos do depósito +STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Clique para iniciar todas as embarcações do depósito +STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Clique para iniciar todas as aeronaves do hangar STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Arraste a locomotiva até aqui para vender todo o trem -STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Você está prestes a vender todos os veículos do depósito. Você tem certeza? +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Você está prestes a vender todos os veículos do depósito. Tem certeza? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Mensagem de um fabricante de veículos STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Desenvolvemos um novo modelo de {STRING} - você gostaria de ter um ano de uso exclusivo deste veículo, para que possamos avaliar o desempenho dele antes de ser globalmente disponibilizado? -STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :locomotiva ferroviária -STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :locomotiva ferroviária eletrificada -STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :locomotiva monotrilho -STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotiva maglev +STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}locomotiva ferroviária +STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :{G=f}locomotiva elétrica +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}locomotiva monotrilho +STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}locomotiva maglev -STR_ENGINE_PREVIEW_ROAD_VEHICLE :veículo rodoviário -STR_ENGINE_PREVIEW_TRAM_VEHICLE :bonde +STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=m}veículo +STR_ENGINE_PREVIEW_TRAM_VEHICLE :{G=m}bonde -STR_ENGINE_PREVIEW_AIRCRAFT :aeronave -STR_ENGINE_PREVIEW_SHIP :embarcação +STR_ENGINE_PREVIEW_AIRCRAFT :{G=f}aeronave +STR_ENGINE_PREVIEW_SHIP :{G=f}embarcação STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING} STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING} STR_ENGINE_PREVIEW_COST_WEIGHT :Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT} STR_ENGINE_PREVIEW_COST_MAX_SPEED :Custo: {CURRENCY_LONG} Velocidade máx.: {VELOCITY} STR_ENGINE_PREVIEW_SPEED_POWER :Velocidade: {VELOCITY} Potência: {POWER} -STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Velocidade: {VELOCITY} Potência: {POWER} Força de Tração máx.: {FORCE} -STR_ENGINE_PREVIEW_TYPE :Tipo da aeronave: {STRING} +STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Veloc.: {VELOCITY} Potência: {POWER} Tração máx.: {FORCE} +STR_ENGINE_PREVIEW_TYPE :Tipo de aeronave: {STRING} STR_ENGINE_PREVIEW_TYPE_RANGE :Tipo de aeronave: {STRING} Autonomia: {COMMA} quadrados -STR_ENGINE_PREVIEW_RUNCOST_YEAR :Custo de Operação: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Custo de Operação: {CURRENCY_LONG}/período +STR_ENGINE_PREVIEW_RUNCOST_YEAR :Custo Operacional: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Custo Operacional: {CURRENCY_LONG}/período STR_ENGINE_PREVIEW_CAPACITY :Capacidade: {CARGO_LONG} STR_ENGINE_PREVIEW_CAPACITY_2 :Capacidade: {CARGO_LONG}, {CARGO_LONG} @@ -4284,22 +4306,22 @@ STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Coluna c ###length VEHICLE_TYPES STR_REPLACE_VEHICLE_TRAIN :Trem -STR_REPLACE_VEHICLE_ROAD_VEHICLE :Veículo rodoviário +STR_REPLACE_VEHICLE_ROAD_VEHICLE :Veículo STR_REPLACE_VEHICLE_SHIP :Embarcação STR_REPLACE_VEHICLE_AIRCRAFT :Aeronave -STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selecionar o tipo de locomotiva para substituir -STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selecionar o novo tipo de locomotiva que será usada para substituir a que foi selecionada à esquerda +STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Escolher o tipo de locomotiva para substituir +STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Escolher o novo tipo de locomotiva que irá substituir a que foi selecionada à esquerda STR_REPLACE_VEHICLES_START :{BLACK}Iniciar Substituição de Veículos STR_REPLACE_VEHICLES_NOW :Substituir todos os veículos agora -STR_REPLACE_VEHICLES_WHEN_OLD :Substituir apenas veículos velhos +STR_REPLACE_VEHICLES_WHEN_OLD :Substituir apenas os veículos velhos STR_REPLACE_HELP_START_BUTTON :{BLACK}Pressione para iniciar a substituição do tipo de locomotiva selecionada à esquerda com o tipo de locomotiva selecionada à direita STR_REPLACE_NOT_REPLACING :{BLACK}Não substituindo STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nenhum veículo selecionado STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} quando velho STR_REPLACE_VEHICLES_STOP :{BLACK}Parar Substituição de Veículos -STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pressione para interromper a subsituição do tipo de locomotiva selecionda à esquerda +STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pressione para interromper a substituição do tipo de locomotiva selecionada à esquerda STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Alternar entre a janela de substituição de locomotivas e a de substituição de vagões STR_REPLACE_ENGINES :Locomotivas @@ -4308,60 +4330,60 @@ STR_REPLACE_ALL_RAILTYPE :Todos os veícu STR_REPLACE_ALL_ROADTYPE :Todos os veículos rodoviários ###length 2 -STR_REPLACE_HELP_RAILTYPE :{BLACK}Selecionar o tipo de ferrovia para o qual deseja efetuar a substituição das locomotivas -STR_REPLACE_HELP_ROADTYPE :{BLACK}Selecionar o tipo de estrada para o qual você deseja substituir os veículoss +STR_REPLACE_HELP_RAILTYPE :{BLACK}Escolher o tipo de ferrovia para o qual deseja efetuar a substituição das locomotivas +STR_REPLACE_HELP_ROADTYPE :{BLACK}Escolher o tipo de estrada para o qual você deseja substituir os veículos ###next-name-looks-similar -STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mostrar qual locomotiva que substituirá a que está selecionada à esquerda, se houver selecionada -STR_REPLACE_RAIL_VEHICLES :Trens +STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mostrar qual locomotiva substituirá a que está selecionada à esquerda, se alguma foi selecionada +STR_REPLACE_RAIL_VEHICLES :Veículos Ferroviários STR_REPLACE_ELRAIL_VEHICLES :Locomotivas Elétricas -STR_REPLACE_MONORAIL_VEHICLES :Monotrilho +STR_REPLACE_MONORAIL_VEHICLES :Monotrilhos STR_REPLACE_MAGLEV_VEHICLES :Maglevs -STR_REPLACE_ROAD_VEHICLES :Veículos rodoviários +STR_REPLACE_ROAD_VEHICLES :Veículos Rodoviários STR_REPLACE_TRAM_VEHICLES :Bondes STR_REPLACE_REMOVE_WAGON :{BLACK}Remoção de vagões ({STRING}): {ORANGE}{STRING} -STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}A substituição automática irá manter o trem com o mesmo comprimento removendo vagões (começando pela frente), se a substituição da locomotiva aumentar o comprimento do trem -STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Ctrl+Clique para aplicar também aos subgrupos +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Fazer a substituição automática sem modificar o comprimento do trem, removendo vagões (começando pela frente), se a substituição da locomotiva aumentar o comprimento do trem +STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Ctrl+Clique para também aplicar aos subgrupos # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Centralizar visualização na localização do trem. Clique duplo para seguir o trem na visualização principal. Ctrl+Clique abre uma nova visualização na localização do trem -STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Centralizar visualização na localização do veículo. Clique duplo para seguir o veículo na visualização principal. Ctrl+Clique abre uma nova visualização na localização do veículo -STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Centralizar visualização na localização da embarcação. Clique duplo para seguir a embarcação na visualização principal. Ctrl+Clique abre uma nova visualização na localização da embarcação -STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Centralizar visualização na localização da aeronave. Clique duplo para seguir a aeronave na visualização principal. Ctrl+Clique abre uma nova visualização na localização da aeronave +STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Centralizar visualização principal na localização do trem. Clique duplo para seguir o trem na visualização principal. Ctrl+Clique para abrir uma nova visualização na localização do trem +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Centralizar visualização principal na localização do veículo. Clique duplo para seguir o veículo na visualização principal. Ctrl+Clique para abrir uma nova visualização na localização do veículo +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Centralizar visualização principal na localização da embarcação. Clique duplo para seguir a embarcação na visualização principal. Ctrl+Clique para abrir uma nova visualização na localização da embarcação +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Centralizar visualização principal na localização da aeronave. Clique duplo para seguir a aeronave na visualização principal. Ctrl+Clique para abrir uma nova visualização na localização da aeronave ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar trem para o depósito. Ctrl+Clique fará apenas manutenção -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar veículo para o depósito. Ctrl+Clique fará apenas manutenção -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar embarcação para o depósito. Ctrl+Clique fará apenas manutenção -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar aeronave para o hangar. Ctrl+Clique fará apenas manutenção +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar o trem para o depósito. Ctrl+Clique para fazer apenas manutenção +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar o veículo para o depósito. Ctrl+Clique para fazer apenas manutenção +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar a embarcação para o depósito. Ctrl+Clique para fazer apenas manutenção +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar a aeronave para o hangar. Ctrl+Clique para fazer apenas manutenção ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Comprar uma cópia do trem incluindo todos os vagões. Ctrl+Clique compartilha as ordens. Ctrl+Shift+Clique mostra o custo estimado -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Comprar uma cópia do veículo rodoviário. Ctrl+Clique compartilha as ordens. Ctrl+Shift+Clique mostra o custo estimado -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Comprar uma cópia da embarcação. Ctrl+Clique compartilha as ordens. Ctrl+Shift+Clique mostra o custo estimado -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Comprar uma cópia da aeronave. Ctrl+Clique compartilha as ordens. Ctrl+Shift+Clique mostra o custo estimado +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Comprar uma cópia do trem, incluindo todos os vagões. Ctrl+Clique para compartilhar as ordens. Pressione também Shift para só mostrar o custo estimado +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Comprar uma cópia do veículo. Ctrl+Clique para compartilhar as ordens. Pressione também Shift para só mostrar o custo estimado +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Comprar uma cópia da embarcação. Ctrl+Clique para compartilhar as ordens. Pressione também Shift para só mostrar o custo estimado +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Comprar uma cópia da aeronave. Ctrl+Clique para compartilhar as ordens. Pressione também Shift para só mostrar o custo estimado STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Forçar o trem a prosseguir sem aguardar o sinal de liberação STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Inverter a direção do trem STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Forçar o veículo a dar a volta -STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Centralizar visualização no destino da ordem. Ctrl+Clique abre uma nova visualização na localização do destino da ordem +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Centralizar visualização principal no destino da ordem. Ctrl+Clique para abrir uma nova visualização na localização do destino da ordem ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Adaptar trem para transporatr um tipo de carga diferente +STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Adaptar trem para transportar um tipo de carga diferente STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Adaptar veículo para transportar um tipo de carga diferente -STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Adaptar embarcação para transporatr um tipo de carga diferente +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Adaptar embarcação para transportar um tipo de carga diferente STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Adaptar aeronave para transportar um tipo de carga diferente ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Mostrar ordens do trem. Ctrl+Clique para mostrar a tabela de horários do trem -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Mostrar ordens do veículo. Ctrl+Clique para mostrar a tabela de horários do veículo -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Mostrar ordens da embarcação. Ctrl+Clique para mostrar a tabela de horários da embarcação -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Mostrar ordens da aeronave. Ctrl+Clique para mostrar a tabela de horários da aeronave +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Mostrar as ordens do trem. Ctrl+Clique para mostrar a tabela de horários do trem +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Mostrar as ordens do veículo. Ctrl+Clique para mostrar a tabela de horários do veículo +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Mostrar as ordens da embarcação. Ctrl+Clique para mostrar a tabela de horários da embarcação +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Mostrar as ordens da aeronave. Ctrl+Clique para mostrar a tabela de horários da aeronave ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Mostrar detalhes do trem @@ -4370,19 +4392,19 @@ STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Mostrar STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Mostrar detalhes da aeronave ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Estado atual do trem - Clique para iniciar/parar o trem -STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Estado atual do veículo - Clique para iniciar/parar o veículo -STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Estado atual da embarcação - Clique para iniciar/parar a embarcação -STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Estado atual da aeronave - Clique para iniciar/parar a aeronave +STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Estado atual do trem - clique para iniciar/parar o trem +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Estado atual do veículo - clique para iniciar/parar o veículo +STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Estado atual da embarcação - clique para iniciar/parar a embarcação +STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Estado atual da aeronave - clique para iniciar/parar a aeronave # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Carregando / descarregando -STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Saindo +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Partindo STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Aguardando para desagrupar STR_VEHICLE_STATUS_CRASHED :{RED}Acidentado! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Quebrado STR_VEHICLE_STATUS_STOPPED :{RED}Parado -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Parando, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Parando STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Sem energia STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Aguardando por caminho livre STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Muito distante do próximo destino @@ -4391,13 +4413,13 @@ STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELO STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Sem ordens STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Indo para {0:WAYPOINT} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Indo para {0:DEPOT} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Manutenção em {0:DEPOT} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Desagrupar e manutenção em {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Manutenção no {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Desagrupar e manutenção no {0:DEPOT} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Não é possível chegar em {0:STATION} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Não é possível chegar em {0:WAYPOINT} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Não é possível chegar em {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Não é possível chegar em {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Não é possível chegar no {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Não é possível chegar no {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4419,18 +4441,18 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Renomear STR_VEHICLE_INFO_AGE :{COMMA} ano{P "" s} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ano{P "" s} ({COMMA}) -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de Operação: {LTBLUE}{CURRENCY_LONG}/ano -STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de Operação: {LTBLUE}{CURRENCY_LONG}/período +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo Operacional: {LTBLUE}{CURRENCY_LONG}/ano +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo Operacional: {LTBLUE}{CURRENCY_LONG}/período -STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade máx: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} -STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} {BLACK}Autonomia: {LTBLUE}{COMMA} quadrados -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade máx: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade máx: {LTBLUE}{VELOCITY} {BLACK}Força de Tração máx.: {LTBLUE}{FORCE} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Veloc. máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} {BLACK}Autonomia: {LTBLUE}{COMMA} quadrados +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Veloc. máx.: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Veloc. máx.: {LTBLUE}{VELOCITY} {BLACK}Tração máx.: {LTBLUE}{FORCE} -STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro neste ano: {LTBLUE}{CURRENCY_LONG} (ano passado: {CURRENCY_LONG}) -STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Lucro neste ano: {LTBLUE}{CURRENCY_LONG} (último ano: {CURRENCY_LONG}) {BLACK}Desempenho min.: {LTBLUE}{POWER_TO_WEIGHT} -STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Lucro neste período: {LTBLUE}{CURRENCY_LONG} (útimo período: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro neste ano: {LTBLUE}{CURRENCY_LONG} (último ano: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Lucro neste ano: {LTBLUE}{CURRENCY_LONG} (último ano: {CURRENCY_LONG}) {BLACK}Desempenho mín.: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Lucro neste período: {LTBLUE}{CURRENCY_LONG} (último período: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Lucro neste período: {LTBLUE}{CURRENCY_LONG} (último período: {CURRENCY_LONG}) {BLACK}Desempenho mín.: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA} @@ -4443,16 +4465,16 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacida STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Créditos de Transferência: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de manutenção: {LTBLUE}{COMMA}{NBSP}dias{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Intervalo de manutenção: {LTBLUE}{COMMA}{NBSP}minutos{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Intervalo de manutenção: {LTBLUE}{COMMA}{NBSP}minuto{P "" s}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalo de manutenção: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Última manutenção: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Última manutenção: {LTBLUE}{NUM} minuto{P "" s} atrás -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Aumentar o intervalo de manutenção em 10 dias. Ctrl+Click para aumentar o intervalo de manutenção em 5 dias -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Aumentar o intervalo de manutenção em 5 minutos. Ctrl+Click para aumentar o intervalo de manutenção em 1 minuto -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Aumentar o intervalo de manutenção em 10 porcento. Ctrl+Click para aumentar o intervalo de manutenção em 5 porcento -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Diminuir o intervalo de manutenção em 10 dias. Ctrl+Click para diminuir o intervalo de manutenção em 5 dias -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Diminuir o intervalo de manutenção em 5 minutos. Ctrl+Click para diminuir o intervalo de manutenção em 1 minuto -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Diminuir o intervalo de manutenção em 10 porcento. Ctrl+Click para diminuir o intervalo de manutenção em 5 porcento +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Aumentar o intervalo de manutenção em 10 dias. Ctrl+Clique para aumentar o intervalo de manutenção em 5 dias +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Aumentar o intervalo de manutenção em 5 minutos. Ctrl+Clique para aumentar o intervalo de manutenção em 1 minuto +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Aumentar o intervalo de manutenção em 10 por cento. Ctrl+Clique para aumentar o intervalo de manutenção em 5 por cento +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Diminuir o intervalo de manutenção em 10 dias. Ctrl+Clique para diminuir o intervalo de manutenção em 5 dias +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Diminuir o intervalo de manutenção em 5 minutos. Ctrl+Clique para diminuir o intervalo de manutenção em 1 minuto +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Diminuir o intervalo de manutenção em 10 por cento. Ctrl+Clique para diminuir o intervalo de manutenção em 5 por cento STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Alterar o tipo de intervalo entre manutenções STR_VEHICLE_DETAILS_DEFAULT :Padrão @@ -4470,7 +4492,7 @@ STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Renomear STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Valor: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Capacidade total deste trem: +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Capacidade total de carga deste trem: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) @@ -4490,19 +4512,19 @@ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Mostrar STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Capacidade: {LTBLUE} # Vehicle refit -STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Adaptar) -STR_REFIT_TITLE :{GOLD}Selecionar tipo de carga para transportar: +STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Adaptação) +STR_REFIT_TITLE :{GOLD}Selecionar tipo de carga a ser transportada: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}{}{BLACK}Custo de adaptação: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}{}{BLACK}Receita com a adaptação: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Custo de adaptação: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Receita com a adaptação: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selecionar os veículos para adaptar. Clique+Arraste para selecionar vários veículos. Clique em um espaço vazio para selecionar todo o veículo. Ctrl+Clique para selecionar um veículo e a sequência restante +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selecionar os veículos para adaptar. Clique+Arraste para selecionar vários veículos. Clique num espaço vazio para selecionar todo o veículo. Ctrl+Clique para selecionar um veículo e a cadeia seguinte ###length VEHICLE_TYPES -STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Selecionar tipo de carga para o trem transportar -STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Selecionar tipo de carga para o veículo transportar -STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Selecionar tipo de carga para a embarcação transportar -STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Selecionar tipo de carga para a aeronave transportar +STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Escolher tipo de carga para o trem transportar +STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Escolher tipo de carga para o veículo transportar +STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Escolher tipo de carga para a embarcação transportar +STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Escolher tipo de carga para a aeronave transportar ###length VEHICLE_TYPES STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Adaptar trem @@ -4519,9 +4541,9 @@ STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Adaptar # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Ordens) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Horários -STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Mudar para a visão de horários +STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Mudar para visualização de horários -STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de ordens - Clique em uma ordem para selecioná-la. Ctrl+Clique mostra o destino da ordem +STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de ordens - clique numa ordem para selecioná-la. Ctrl+Clique para mostrar o destino da ordem STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} @@ -4531,9 +4553,9 @@ STR_ORDERS_END_OF_SHARED_ORDERS :- - Fim das Ord # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Sem parar STR_ORDER_GO_TO :Ir para -STR_ORDER_GO_NON_STOP_TO :Ir sem parar para +STR_ORDER_GO_NON_STOP_TO :Ir, sem parar, para STR_ORDER_GO_VIA :Ir via -STR_ORDER_GO_NON_STOP_VIA :Ir sem parar via +STR_ORDER_GO_NON_STOP_VIA :Ir, sem parar, via STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Alterar o modo de parada da ordem selecionada STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Carga completa de qualquer carga @@ -4544,30 +4566,30 @@ STR_ORDER_DROP_NO_LOADING :Não carregar STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Alterar o modo de carregar da ordem selecionada STR_ORDER_TOGGLE_UNLOAD :{BLACK}Descarregar tudo -STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Descarregar se aceito +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Descarregar se aceitado STR_ORDER_DROP_UNLOAD :Descarregar tudo STR_ORDER_DROP_TRANSFER :Transferir STR_ORDER_DROP_NO_UNLOADING :Não descarregar STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Alterar o modo de descarregar da ordem selecionada STR_ORDER_REFIT :{BLACK}Adaptar -STR_ORDER_REFIT_TOOLTIP :{BLACK}Selecionar para qual tipo de carga adaptar nesta ordem. Ctrl+Clique remove a instrução de adaptação +STR_ORDER_REFIT_TOOLTIP :{BLACK}Escolher para qual tipo de carga adaptar nesta ordem. Ctrl+Clique para remover a instrução de adaptação STR_ORDER_REFIT_AUTO :{BLACK}Adaptar na estação -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selecionar para qual tipo de carga adaptar nesta ordem. Ctrl+Clique remove a instrução de adaptação. Adaptações em estações serão executadas somente se o veículo permitir +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Escolher para qual tipo de carga adaptar nesta ordem. Ctrl+Clique para remover a instrução de adaptação. Adaptações em estações serão executadas somente se o veículo permitir STR_ORDER_DROP_REFIT_AUTO :Carga fixa STR_ORDER_DROP_REFIT_AUTO_ANY :Carga disponível STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ir sempre -STR_ORDER_DROP_SERVICE_DEPOT :Manutenção, se necessária +STR_ORDER_DROP_SERVICE_DEPOT :Manutenção, se precisar STR_ORDER_DROP_HALT_DEPOT :Parar STR_ORDER_DROP_UNBUNCH :Desagrupar # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES -STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Selecionar qual ação executar neste depósito -STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Selecionar qual ação executar neste depósito -STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Selecionar qual ação executar nesse depósito -STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Selecionar qual ação executar neste hangar +STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Escolher qual ação executar neste depósito +STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Escolher qual ação executar neste depósito +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Escolher qual ação executar nesse depósito +STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Escolher qual ação executar neste hangar ###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dados do veículo para basear o salto de ordem @@ -4578,21 +4600,21 @@ STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Porcentagem de STR_ORDER_CONDITIONAL_RELIABILITY :Confiabilidade STR_ORDER_CONDITIONAL_MAX_SPEED :Velocidade máxima STR_ORDER_CONDITIONAL_AGE :Idade (anos) -STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Necessita manutenção +STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Precisa de manutenção STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Sempre STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Tempo de vida restante (anos) STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Confiabilidade máxima ###next-name-looks-similar -STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Como comparar os dados do veículo com o valor introduzido -STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :é igual a -STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :é não igual a -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :é menor que -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :é menor ou igual a -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :é maior que -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :é maior ou igual a -STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :é verdadeiro -STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :é falso +STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Como comparar os dados do veículo com o valor que foi passado +STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :for igual a +STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :for diferente de +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :for menor que +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :for menor que ou igual a +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :for maior que +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :for maior que ou igual a +STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :for verdadeiro +STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :for falso STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}O valor para comparar com os dados do veículo STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Introduza um valor para comparar @@ -4611,19 +4633,19 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Ir para o depó STR_ORDER_GO_TO_NEAREST_HANGAR :Ir para o hangar mais próximo STR_ORDER_CONDITIONAL :Saltar ordem condicional STR_ORDER_SHARE :Compartilhar ordens -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Inserir uma nova ordem antes da ordem selecionada ou adicionar no final da lista. Ctrl+Clique em uma estação para 'carga completa de qualquer carga', em um ponto de controle para inverter a definição padrão 'sem parar' ou em um depósito para 'desagrupar'. Clique em outro veículo para copiar suas ordens ou Ctrl+Clique para compartilhar as ordens. Uma ordem de depósito desativa a manutenção automática do veículo +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Inserir uma nova ordem antes da ordem selecionada ou adicionar no final da lista. Ctrl+Clique numa estação para 'carga completa de qualquer carga', num ponto de controle para inverter a configuração padrão 'sem parar' ou num depósito para 'desagrupar'. Clique em outro veículo para copiar suas ordens ou Ctrl+Clique para compartilhar as ordens. Uma ordem de depósito desativa a manutenção automática do veículo -STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Mostrar todos os veículos que compartilham essa programação +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Mostrar todos os veículos que compartilham esta programação # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Ir via {WAYPOINT} -STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ir sem parar via {WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ir, sem parar, via {WAYPOINT} -STR_ORDER_SERVICE_AT :Manutenção em -STR_ORDER_SERVICE_NON_STOP_AT :Manutenção sem parar em +STR_ORDER_SERVICE_AT :Manutenção no +STR_ORDER_SERVICE_NON_STOP_AT :Manutenção, sem parar, no -STR_ORDER_NEAREST_DEPOT :o mais próximo -STR_ORDER_NEAREST_HANGAR :o Hangar mais próximo +STR_ORDER_NEAREST_DEPOT :mais próximo +STR_ORDER_NEAREST_HANGAR :hangar mais próximo ###length 3 STR_ORDER_TRAIN_DEPOT :Depósito Ferroviário STR_ORDER_ROAD_VEHICLE_DEPOT :Depósito Rodoviário @@ -4637,7 +4659,7 @@ STR_ORDER_REFIT_ORDER :(Adaptar para { STR_ORDER_REFIT_STOP_ORDER :(Adaptar para {STRING} e parar) STR_ORDER_STOP_ORDER :(Parar) -STR_ORDER_WAIT_TO_UNBUNCH :(aguardar para desagrupar) +STR_ORDER_WAIT_TO_UNBUNCH :(Aguardar para desagrupar) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Não pode usar a estação){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4656,31 +4678,31 @@ STR_ORDER_TRANSFER_FULL_LOAD :(Transferir e a STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transferir e aguardar por qualquer carga completa) STR_ORDER_TRANSFER_NO_LOAD :(Transferir e partir vazio) STR_ORDER_NO_UNLOAD :(Não descarregar e pegar carga) -STR_ORDER_NO_UNLOAD_FULL_LOAD :(Não descarregar e aquardar por carga completa) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(Não descarregar e aguardar por carga completa) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Não descarregar e aguardar por qualquer carga completa) STR_ORDER_NO_UNLOAD_NO_LOAD :(Não descarregar e não carregar) STR_ORDER_AUTO_REFIT :(Adaptar para {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Carga completa com adaptação para {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Carga completa de qualquer carga com adaptação para {STRING}) -STR_ORDER_UNLOAD_REFIT :(Descarregar e pegar carga com adaptação para {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descarregar e aguardar por carga completa com adaptação para {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descarregar e aguardar por qualquer carga completa com adaptação para {STRING}) -STR_ORDER_TRANSFER_REFIT :(Transferir e pegar carga com adaptação para {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir e aguardar por carga completa com adaptação para {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir e aguardar por qualquer carga completa com adaptação para {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Não descarregar e pegar carga com adaptação para {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Não descarregar e aguardar por carga completa com adaptação para {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Não descarregar e aguardar por qualquer carga completa com adaptação para {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Carga completa, com adaptação para {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Carga completa de qualquer carga, com adaptação para {STRING}) +STR_ORDER_UNLOAD_REFIT :(Descarregar e pegar carga, com adaptação para {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descarregar e aguardar por carga completa, com adaptação para {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descarregar e aguardar por qualquer carga completa, com adaptação para {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transferir e pegar carga, com adaptação para {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir e aguardar por carga completa, com adaptação para {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir e aguardar por qualquer carga completa, com adaptação para {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Não descarregar e pegar carga, com adaptação para {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Não descarregar e aguardar por carga completa, com adaptação para {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Não descarregar e aguardar por qualquer carga completa, com adaptação para {STRING}) STR_ORDER_AUTO_REFIT_ANY :carga disponível ###length 3 STR_ORDER_STOP_LOCATION_NEAR_END :[início] STR_ORDER_STOP_LOCATION_MIDDLE :[meio] -STR_ORDER_STOP_LOCATION_FAR_END :[fim] +STR_ORDER_STOP_LOCATION_FAR_END :[final] -STR_ORDER_OUT_OF_RANGE :{RED} (Próximo destino está fora da autonomia) +STR_ORDER_OUT_OF_RANGE :{RED} (Próximo destino está fora de alcance) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Saltar para a ordem {COMMA} STR_ORDER_CONDITIONAL_NUM :Saltar para a ordem {COMMA} quando {STRING} {STRING} {COMMA} @@ -4693,50 +4715,50 @@ STR_TIMETABLE_TITLE :{WHITE}{VEHICLE STR_TIMETABLE_ORDER_VIEW :{BLACK}Ordens STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Mudar para visualização de ordens -STR_TIMETABLE_TOOLTIP :{BLACK}Horários - Clique em uma ordem para selecioná-la +STR_TIMETABLE_TOOLTIP :{BLACK}Horários - clique numa ordem para selecioná-la STR_TIMETABLE_NO_TRAVEL :Não viajar STR_TIMETABLE_NOT_TIMETABLEABLE :Viajar (automático; programado pela próxima ordem manual) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viajar (não programado) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viajar (não programado) no máximo a {2:VELOCITY} -STR_TIMETABLE_TRAVEL_FOR :Viajar por {STRING} -STR_TIMETABLE_TRAVEL_FOR_SPEED :Viajar por {STRING} no máximo a {VELOCITY} -STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viajar (por {STRING}, não programado) -STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viajar (por {STRING}, não programado) no máximo a {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR :Viajar durante {STRING} +STR_TIMETABLE_TRAVEL_FOR_SPEED :Viajar durante {STRING} no máximo a {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viajar (durante {STRING}, não programado) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viajar (durante {STRING}, não programado) no máximo a {VELOCITY} STR_TIMETABLE_STAY_FOR_ESTIMATED :(ficar por {STRING}, não programado) -STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viajar por {STRING}, não programado) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viajar durante {STRING}, não programado) STR_TIMETABLE_STAY_FOR :e ficar por {STRING} -STR_TIMETABLE_AND_TRAVEL_FOR :e viajar por {STRING} +STR_TIMETABLE_AND_TRAVEL_FOR :e viajar durante {STRING} -STR_TIMETABLE_TOTAL_TIME :{BLACK}Este horário levará {STRING} para completar -STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Este horário levará pelo menos {STRING} para completar (nem tudo está programado) +STR_TIMETABLE_TOTAL_TIME :{BLACK}Este horário levará {STRING} para ser concluído +STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Este horário levará pelo menos {STRING} para ser concluído (nem tudo está programado) -STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Este veículo está atualmente circulando pontualmente -STR_TIMETABLE_STATUS_LATE :{BLACK}Este veículo está atualmente circulando {STRING} atrasado -STR_TIMETABLE_STATUS_EARLY :{BLACK}Este veículo está atualmente circulando {STRING} adiantado +STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Atualmente este veículo está pontual +STR_TIMETABLE_STATUS_LATE :{BLACK}Atualmente este veículo está {STRING} atrasado +STR_TIMETABLE_STATUS_EARLY :{BLACK}Atualmente este veículo está {STRING} adiantado STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Este horário ainda não começou -STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Este horário irá iniciar às {STRING} +STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Este horário irá iniciar em {STRING} STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Este horário irá iniciar em {COMMA} segundos STR_TIMETABLE_START :{BLACK}Iniciar Horário -STR_TIMETABLE_START_TOOLTIP :{BLACK}Selecionar quando este horário começa. Ctrl+Clique distribui igualmente a partida de todos os veículos que compartilham esta ordem com base em suas ordens relativas, se a ordem estiver totalmente programada +STR_TIMETABLE_START_TOOLTIP :{BLACK}Escolher quando este horário começa. Ctrl+Clique para distribuir uniformemente a partida de todos os veículos que compartilham esta ordem com base em suas ordens relativas, se a ordem estiver totalmente programada STR_TIMETABLE_START_SECONDS_QUERY :Segundos até o horário iniciar -STR_TIMETABLE_CHANGE_TIME :{BLACK}Alterar Tempo -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Alterar o período de tempo que a ordem selecionada deve durar. Ctrl+Clique define o tempo para todas as ordens +STR_TIMETABLE_CHANGE_TIME :{BLACK}Modificar Tempo +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Alterar o período de tempo que a ordem selecionada deve durar. Ctrl+Clique para definir o tempo para todas as ordens STR_TIMETABLE_CLEAR_TIME :{BLACK}Apagar Tempo -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Apagar o período de tempo da ordem selecionada. Ctrl+Clique limpa o tempo de todas as ordens +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Apagar o período de tempo da ordem selecionada. Ctrl+Clique para apagar o tempo de todas as ordens -STR_TIMETABLE_CHANGE_SPEED :{BLACK}Alterar limite de velocidade -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Alterar a velocidade máxima de viagem da ordem selecionada. Ctrl+Clique define a velocidade para todas as ordens +STR_TIMETABLE_CHANGE_SPEED :{BLACK}Modificar limite de velocidade +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Alterar a velocidade máxima de viagem da ordem selecionada. Ctrl+Clique para definir a velocidade para todas as ordens STR_TIMETABLE_CLEAR_SPEED :{BLACK}Remover limite de velocidade -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Apagar a velocidade máxima de viagem da ordem selecionada. Ctrl+Clique remove as velocidades para todas as ordens +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Apagar a velocidade máxima de viagem da ordem selecionada. Ctrl+Clique para apagar a velocidade de todas as ordens -STR_TIMETABLE_RESET_LATENESS :{BLACK}Reiniciar o Contador de Atrasos -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reiniciar o contador de atrasos, assim o veículo ficará no horário. Ctrl+Clique para reiniciar todo o grupo, de modo que o último veículo ficará pontual e todos os outros estarão antecipados +STR_TIMETABLE_RESET_LATENESS :{BLACK}Reiniciar Contador de Atrasos +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reiniciar o contador de atrasos para o veículo ficar pontual. Ctrl+Clique para reiniciar todo o grupo e, com isso, fazer o veículo mais atrasado ficar pontual e todos os outros ficarem adiantados STR_TIMETABLE_AUTOFILL :{BLACK}Preencher automaticamente STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Preencher o horário automaticamente com os valores da próxima viagem. Ctrl+Clique para tentar manter os tempos de espera @@ -4747,53 +4769,53 @@ STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alternar STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY} STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY} -STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} seg. -STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} seg. +STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} s +STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} s # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Definir data STR_DATE_SET_DATE :{BLACK}Definir data STR_DATE_SET_DATE_TOOLTIP :{BLACK}Usar a data selecionada como data de início para o horário -STR_DATE_DAY_TOOLTIP :{BLACK}Selecionar dia -STR_DATE_MONTH_TOOLTIP :{BLACK}Selecionar mês -STR_DATE_YEAR_TOOLTIP :{BLACK}Selecionar ano +STR_DATE_DAY_TOOLTIP :{BLACK}Escolher dia +STR_DATE_MONTH_TOOLTIP :{BLACK}Escolher mês +STR_DATE_YEAR_TOOLTIP :{BLACK}Escolher ano # AI debug window STR_AI_DEBUG :{WHITE}Depuração de IA/Script do Jogo STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nome do script -STR_AI_DEBUG_SETTINGS :{BLACK}Definições +STR_AI_DEBUG_SETTINGS :{BLACK}Configurações STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Alterar as configurações do script STR_AI_DEBUG_RELOAD :{BLACK}Recarregar IA STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Interromper a IA, recarregar o script e reiniciar a IA -STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Ativar/desativar pausa quando uma mensagem de registo da IA corresponder à sequência de pausa +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Ativar/Desativar interrupção quando uma mensagem de registro da IA for igual a esta sequência de caracteres STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Parar em: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Parar em -STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Quando uma mensagem de registo da IA for igual a esta sequência, o jogo é pausado +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}O jogo é pausado quando uma mensagem de registro da IA for igual a esta sequência de caracteres STR_AI_DEBUG_MATCH_CASE :{BLACK}Diferenciar maiúsculas/minúsculas -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Ativar correspondência de maiúsculas/minúsculas na comparação das mensagens de resgistro da IA com a sequência de parada +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Considerar correspondência de maiúsculas e minúsculas quando comparar as mensagens de registro da IA com a sequência de caracteres de parada STR_AI_DEBUG_CONTINUE :{BLACK}Continuar STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Sair da pausa e continuar a IA -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Ver saída de depuração desta IA. Ctrl+Clique para abrir em uma nova janela -STR_AI_GAME_SCRIPT :{BLACK}Script de jogo -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Verifique o registo do Script de Jogo. Ctrl+Clique para abrir em uma nova janela +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Mostrar a saída de depuração desta IA. Ctrl+Clique para abrir em uma nova janela +STR_AI_GAME_SCRIPT :{BLACK}Script de Jogo +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Verificar o registro do Script de Jogo. Ctrl+Clique para abrir em uma nova janela -STR_ERROR_AI_NO_AI_FOUND :Não foi encontrada IA adequada para carregar.{}Esta IA é um script vazio e não fará nada.{}Você pode obter várias IA usando o sistema de 'Conteúdo Online' +STR_ERROR_AI_NO_AI_FOUND :Não foi encontrada nenhuma IA adequada para carregar.{}Esta IA é um pacote vazio e não fará nada.{}Você pode obter várias IAs usando o sistema de 'Conteúdo Online' STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Um dos scripts em execução travou. Favor relatar isto ao autor do script com uma captura de tela da Janela de Depuração de IA/Script de Jogo -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}A janela de Depuração de IA/Script de Jogo está disponível somente para o servidor +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}A janela de Depuração de IA/Script de Jogo só está disponível para o servidor # AI configuration window STR_AI_CONFIG_CAPTION_AI :{WHITE}Configurações de IA STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}Configurações de Script de Jogo STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Script de Jogo que será carregado no próximo jogo -STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}IA's que serão carregadas no próximo jogo +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}IAs que serão carregadas no próximo jogo STR_AI_CONFIG_HUMAN_PLAYER :Jogador humano STR_AI_CONFIG_RANDOM_AI :IA aleatória STR_AI_CONFIG_NONE :(nenhum) STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} -STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Número máx. de competidores: {ORANGE}{COMMA} +STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Número máximo de competidores: {ORANGE}{COMMA} STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Intervalo entre o início dos competidores: {ORANGE}{COMMA} minuto{P "" s} STR_AI_CONFIG_MOVE_UP :{BLACK}Mover para cima @@ -4807,14 +4829,14 @@ STR_AI_CONFIG_AI :{SILVER}IAs STR_AI_CONFIG_CHANGE_AI :{BLACK}Selecionar IA STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Selecionar Script de Jogo -STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Carregar outro script. Ctrl+Clique mostra todas as versões disponíveis +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Carregar outro script. Ctrl+Clique para mostrar todas as versões disponíveis STR_AI_CONFIG_CONFIGURE :{BLACK}Configurar STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configurar os parâmetros do Script # Available AIs window -STR_AI_LIST_CAPTION :{WHITE}Disponíveis {STRING} -STR_AI_LIST_CAPTION_AI :IA's -STR_AI_LIST_CAPTION_GAMESCRIPT :Scripts de jogo +STR_AI_LIST_CAPTION :{WHITE}{STRING} Disponíveis +STR_AI_LIST_CAPTION_AI :IAs +STR_AI_LIST_CAPTION_GAMESCRIPT :Scripts de Jogo STR_AI_LIST_TOOLTIP :{BLACK}Clique para selecionar um script STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} @@ -4822,49 +4844,47 @@ STR_AI_LIST_VERSION :{LTBLUE}Versão STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Aceitar -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Aceitar o script selecionado +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Usar o script selecionado STR_AI_LIST_CANCEL :{BLACK}Cancelar STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Não mudar o script STR_SCREENSHOT_CAPTION :{WHITE}Fazer uma captura de tela STR_SCREENSHOT_SCREENSHOT :{BLACK}Captura de tela normal -STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Ampliação máxima para captura de tela -STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Ampliação padrão para captura de tela -STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Captura de tela do mapa todo -STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Captura de tela do mapa topográfico +STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Captura de tela com ampliação máxima +STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Captura de tela com ampliação padrão +STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Captura de tela do mapa completo +STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Captura de tela do mapa de altitudes STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Captura de tela do minimapa # Script Parameters -STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parâmetros -STR_AI_SETTINGS_CAPTION_AI :IA -STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de Jogo +STR_AI_SETTINGS_CAPTION :{WHITE}Parâmetros d{G o a} {STRING} +STR_AI_SETTINGS_CAPTION_AI :{G=f}IA +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :{G=m}Script de Jogo STR_AI_SETTINGS_CLOSE :{BLACK}Fechar STR_AI_SETTINGS_RESET :{BLACK}Restaurar STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window -STR_TEXTFILE_JUMPLIST :{WHITE}Tabela de Conteúdo +STR_TEXTFILE_JUMPLIST :{WHITE}Índice STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Acesso rápido a uma seção do arquivo mostrado nesta lista STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Retornar no histórico de navegação STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Avançar no histórico de navegação -STR_TEXTFILE_WRAP_TEXT :{WHITE}Quebrar linhas do texto -STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ajustar o comprimento das linhas para o texto preencher a janela e, assim, não precisar rolar o conteúdo +STR_TEXTFILE_WRAP_TEXT :{WHITE}Quebrar linhas +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ajustar o comprimento das linhas à largura da janela para facilitar a leitura do texto STR_TEXTFILE_VIEW_README :{BLACK}Leia-me STR_TEXTFILE_VIEW_README_TOOLTIP :Ver o arquivo Leia-me para este conteúdo STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Registro de modificações -STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Ver o registro de modificações para este conteúdo +STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Ver o registro de modificações deste conteúdo STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licença STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Ver a licença para este conteúdo ###length 5 -STR_TEXTFILE_README_CAPTION :{WHITE}Leia-me {STRING} de {STRING} -STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Registro de modificações {STRING} de {STRING} -STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licença {STRING} de {STRING} +STR_TEXTFILE_README_CAPTION :{WHITE}Leia-me de {STRING} de {STRING} +STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Registro de modificações em {STRING} de {STRING} +STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licença de {STRING} de {STRING} STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Pré-visualização do resultado da pesquisa -STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}Documento '{STRING}' OpenTTD +STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}Documento '{STRING}' do OpenTTD # Vehicle loading indicators @@ -4882,58 +4902,58 @@ STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED STR_INCOME_FLOAT_COST :{RED}Custo: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Receita: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Receita: {CURRENCY_LONG} -STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transferir: {CURRENCY_LONG} -STR_FEEDER :{YELLOW}Transferir: {CURRENCY_LONG} -STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transferir: {CURRENCY_LONG}{WHITE} / {GREEN}Receita: {CURRENCY_LONG} -STR_FEEDER_INCOME :{YELLOW}Transferir: {CURRENCY_LONG}{WHITE} / {GREEN}Receita: {CURRENCY_LONG} -STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transferir: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} -STR_FEEDER_COST :{YELLOW}Transferir: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} +STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transferência: {CURRENCY_LONG} +STR_FEEDER :{YELLOW}Transferência: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transferência: {CURRENCY_LONG}{WHITE} / {GREEN}Receita: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transferência: {CURRENCY_LONG}{WHITE} / {GREEN}Receita: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transferência: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transferência: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Custo Estimado: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Receita Estimada: {CURRENCY_LONG} # Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravação ainda sendo executada,{}por favor aguarde até terminar! -STR_ERROR_AUTOSAVE_FAILED :{WHITE}Falha ao salvar automaticamente +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravação ainda sendo executada,{}por favor, aguarde até terminar! +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Salvamento automático falhou STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Não é possível ler a unidade -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Falha ao salvar o jogo{}{STRING} -STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Não é possível excluir o arquivo -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Falha ao abrir o jogo{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Falha ao salvar jogo... +STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Não é possível apagar o arquivo +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Falha ao abrir jogo... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING} -STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Jogo salvo corrompido - {STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Jogo salvo está corrompido - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Jogo salvo foi feito com uma versão mais recente STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Arquivo não legível STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Arquivo não gravável STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Verificação de integridade de dados falhou -STR_GAME_SAVELOAD_ERROR_PATCHPACK :Jogo salvo é feito com uma versão modificada +STR_GAME_SAVELOAD_ERROR_PATCHPACK :Jogo salvo foi feito com uma versão modificada STR_GAME_SAVELOAD_NOT_AVAILABLE : -STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Jogo foi salvo em uma versão sem suporte a bondes. Todos os bondes foram removidos +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Jogo foi salvo numa versão sem suporte a bondes. Todos os bondes foram removidos # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Geração do mapa interrompida...{}... não há locais adequados para localidades STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... não existem localidades neste cenário STR_ERROR_PNGMAP :{WHITE}Não foi possível carregar paisagem de PNG... -STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... arquivo não encontrado -STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... não foi possível converter o tipo de imagem. A imagem deve ser PNG de 8 ou 24-bit +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... arquivo não foi encontrado +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... não foi possível converter o tipo de imagem. A imagem precisa ser PNG de 8 ou 24-bit STR_ERROR_PNGMAP_MISC :{WHITE}... alguma coisa deu errado (provavelmente arquivo corrompido) -STR_ERROR_BMPMAP :{WHITE}Não é possível carregar paisagem de BMP... +STR_ERROR_BMPMAP :{WHITE}Não foi possível carregar paisagem de BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... não foi possível converter o tipo de imagem STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... imagem é muito grande STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Aviso de redimensionamento -STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Redimensionar muito o mapa original não é recomendado. Continuar com a geração? +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Redimensionar demais o mapa original não é recomendado. Continuar com a geração? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Somente um conjunto de sons de reserva foi encontrado. Se você quiser sons, instale um conjunto usando o sistema de 'Conteúdo Online' # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Captura tela enorme -STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A captura de tela terá uma resolução de {COMMA}x{COMMA} pixels. Essa captura pode demorar. Deseja continuar? +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A captura de tela terá uma resolução de {COMMA}x{COMMA} pixels. Fazer essa captura pode demorar. Você deseja continuar? -STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Mapa topográfico gravado como '{STRING}' com sucesso. O pico mais alto tem {NUM} -STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Captura de tela gravada com sucesso como '{STRING}' +STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Mapa de altitudes '{STRING}' gravado com sucesso. O pico mais alto tem {NUM} +STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Captura de tela '{STRING}' gravada com sucesso STR_ERROR_SCREENSHOT_FAILED :{WHITE}A captura de tela falhou! # Error message titles @@ -4941,40 +4961,40 @@ STR_ERROR_MESSAGE_CAPTION :{YELLOW}Mensage STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Mensagem de {STRING} # Generic construction errors -STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Fora dos limites do mapa +STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Fora do mapa STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Muito perto da borda do mapa -STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Não há dinheiro - requer {CURRENCY_LONG} -STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Necessário terreno plano +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Dinheiro insuficiente - é necessário {CURRENCY_LONG} +STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}O terreno precisa ser plano STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreno inclinado na direção errada STR_ERROR_CAN_T_DO_THIS :{WHITE}Não é possível fazer isto... -STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Edifício deve ser demolido primeiro +STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}A construção precisa ser demolida primeiro STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Não é possível limpar esta área... -STR_ERROR_SITE_UNSUITABLE :{WHITE}... local inadequado +STR_ERROR_SITE_UNSUITABLE :{WHITE}... local não adequado STR_ERROR_ALREADY_BUILT :{WHITE}... já construído -STR_ERROR_OWNED_BY :{WHITE}... propriedade de {STRING} -STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... área é propriedade de outra empresa +STR_ERROR_OWNED_BY :{WHITE}... pertence a {STRING} +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... área pertence a outra empresa STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... limite de paisagismo atingido -STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... limite de remoção de quadrado atingido -STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... limite de plantação de árvore atingido +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... limite de limpeza de quadrados atingido +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... limite de plantação de árvores atingido STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Nome deve ser único STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} no caminho -STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Não permitido enquanto pausado +STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Não é permitido com o jogo pausado # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}A autoridade local de {TOWN} recusa-se a permitir isso -STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}A autoridade local de {TOWN} não permite a construção de outro aeroporto nesta localidade -STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}A autoridade local de {TOWN} não autoriza a construção do aeroporto devido à poluição sonora +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}A autoridade local de {TOWN} recusa-se a permitir que outro aeroporto seja construído nesta localidade +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}A autoridade local de {TOWN} não concede permissão para aeroporto devido à poluição sonora STR_ERROR_BRIBE_FAILED :{WHITE}A sua tentativa de suborno foi descoberta por um investigador regional # Levelling errors -STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Não é possível elevar terreno deste local... -STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Não é possível abaixar terreno deste local... -STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Não é possível nivelar o terreno deste local... -STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}A escavação estragaria o túnel +STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Não é possível elevar este terreno... +STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Não é possível abaixar este terreno... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Não é possível nivelar este terreno... +STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}A escavação danificaria o túnel STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... já está ao nível do mar STR_ERROR_TOO_HIGH :{WHITE}... muito alto STR_ERROR_ALREADY_LEVELLED :{WHITE}... já está plano -STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Depois disso, a ponte sobre ela ficaria muito alta. +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Depois disso, a ponte sobre ela ficaria muito alta # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Não é possível alterar o nome da empresa... @@ -4982,7 +5002,7 @@ STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Não é STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... o valor máximo de empréstimo permitido é {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Não é possível pedir mais dinheiro emprestado... -STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... não há empréstimo para pagar +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... não existe empréstimo para pagar STR_ERROR_CURRENCY_REQUIRED :{WHITE}... é necessário {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Não é possível pagar empréstimo... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Não é possível doar dinheiro proveniente de empréstimo bancário... @@ -4991,26 +5011,27 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Não é STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Não é possível construir sede da empresa... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Não é possível construir localidades +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Não é possível construir localidades... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Não é possível renomear a localidade... -STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Não é possível fundar uma localidade neste local... +STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Não é possível fundar uma localidade aqui... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Não é possível expandir a localidade... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... muito perto da borda do mapa STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... muito perto de outra localidade -STR_ERROR_TOO_MANY_TOWNS :{WHITE}... existem muitas localidades -STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... não existe mais espaço no mapa -STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trabalhos na estrada sendo realizados -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Não é possível remover esta localidade...{}Uma estação ou depósito refere-se à localidade ou não é possível remover um quadrado pertencente à mesma +STR_ERROR_TOO_MANY_TOWNS :{WHITE}... há localidades demais +STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... não há mais espaço no mapa +STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trabalhos sendo realizados na estrada +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Não é possível remover esta localidade...{}Uma estação ou depósito refere-se à localidade ou não é possível remover um quadrado que pertence à mesma STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... não há local adequado para uma estátua no centro desta localidade +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Não é possível construir casa... # Industry related errors -STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... existem muitas indústrias +STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... há indústrias demais STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Não é possível gerar indústrias... -STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Não é possível construir {STRING} neste local... -STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Não é possível construir este tipo de indústria neste local... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Não é possível construir {STRING} aqui... +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Não é possível construir este tipo de indústria aqui... STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}Não é possível prospectar indústria... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... muito perto de outra indústria -STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... é necessário fundar uma localidade primeiro +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... precisa fundar uma localidade primeiro STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... só é permitido uma por localidade STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... só pode ser construído em localidades com pelo menos 1200 habitantes STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... só pode ser construído em florestas tropicais @@ -5019,30 +5040,32 @@ STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... só STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... só pode ser construído perto do centro da localidade STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... só pode ser construído em áreas baixas STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... só pode ser colocado perto das bordas do mapa -STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... a floresta só pode ser plantada acima da linha de neve -STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... só pode ser construído acima da linha da neve -STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... só pode ser construído abaixo da linha da neve +STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... floresta só pode ser plantada acima da linha de neve +STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... só pode ser construído acima da linha de neve +STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... só pode ser construído abaixo da linha de neve STR_ERROR_PROSPECTING_WAS_UNLUCKY :{WHITE}O financiamento falhou em prospectar devido ao azar; tente novamente -STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}Não havia locais adequados para prospectar por esta indústria -STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Não havia locais adequados para indústrias de '{STRING}' -STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Alterar os parâmetros de geração do mapa para obter um mapa melhor +STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}Não havia locais adequados para prospectar esta indústria +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Não havia locais adequados para indústrias do tipo '{STRING}' +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Modifique os parâmetros de geração do mapa para obter um mapa melhor # Station construction related errors -STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Não é possível construir estação ferroviária neste local... +STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Não é possível construir estação ferroviária aqui... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Não é possível construir estação de ônibus... -STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Não é possível construir estação de carga para caminhões... -STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Não é possível construir estação de bonde de passageiros... -STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Não é possível construir estação de bonde de carga... -STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Não é possível construir doca neste local... -STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Não é possível construir aeroporto neste local... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Não é possível construir estação de caminhões... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Não é possível construir estação de bondes de passageiros... +STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Não é possível construir estação de bondes de carga... +STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Não é possível construir doca aqui... +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Não é possível construir aeroporto aqui... -STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Unir mais de uma estação/área de carga existente +STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjacente a mais de uma estação/local de carga existente STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... estação muito extensa -STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Muitas estações/locais de carga -STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Muitas partes de estação ferroviária -STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Muitas paradas de ônibus -STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Existem muitas áreas de carga +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... número de linhas não suportado +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... comprimento não suportado +STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Há estações/locais de carga demais +STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Há partes de estação ferroviária demais +STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Há paradas de ônibus demais +STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Há estações de caminhões demais STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Muito perto de outra doca STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Muito perto de outro aeroporto STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Não é possível renomear a estação... @@ -5055,38 +5078,41 @@ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... esta STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Não é possível remover parte da estação... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Precisa remover a estação ferroviária primeiro STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Não é possível remover estação de ônibus... -STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Não é possível remover estação de caminhão... -STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Não é possível remover estação de bonde de passageiros... -STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Não é possível remover estação de bonde de carga... -STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Precisa remover o ponto de parada primeiro -STR_ERROR_THERE_IS_NO_STATION :{WHITE}...não há estação neste local +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Não é possível remover estação de caminhões... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Não é possível remover estação de bondes de passageiros... +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Não é possível remover estação de bondes de carga... +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Precisa remover o ponto de parada rodoviária primeiro +STR_ERROR_THERE_IS_NO_STATION :{WHITE}... não existe uma estação aqui STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Precisa demolir a estação ferroviária primeiro STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Precisa demolir a estação de ônibus primeiro -STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Precisa demolir a estação de caminhão primeiro -STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Precisa demolir a estação de bonde de passageiros primeiro -STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Precisa demolir a estação de bonde primeiro +STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Precisa demolir a estação de caminhões primeiro +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Precisa demolir a estação de bondes de passageiros primeiro +STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Precisa demolir a estação de bondes de carga primeiro STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Precisa demolir a doca primeiro STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Precisa demolir o aeroporto primeiro # Waypoint related errors -STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Unir mais de um ponto de controle existente +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjacente a mais de um ponto de controle existente STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Muito perto de outro ponto de controle -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Não é possível construir ponto de controle de trem neste local... -STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Não é possível colocar bóia neste local... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Não é possível construir ponto de controle ferroviário aqui... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Não é possível construir ponto de controle rodoviário aqui... +STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Não é possível colocar boia aqui... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Não é possível alterar o nome do ponto de controle... -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Não é possível remover ponto de controle de trem deste local... -STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Precisa remover o ponto de controle de trem primeiro -STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... bóia no caminho -STR_ERROR_BUOY_IS_IN_USE :{WHITE}... bóia está em uso por outra empresa! +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Não é possível remover ponto de controle ferroviário aqui... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Não é possível remover ponto de controle rodoviário aqui... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Precisa remover o ponto de controle ferroviário primeiro +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Precisa remover o ponto de controle rodoviário primeiro +STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boia no caminho +STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boia está em uso por outra empresa! # Depot related errors -STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Não é possível construir depósito ferroviário neste local... -STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Não é possível construir depósito de veículos rodoviários neste local... -STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Não é possível construir depósito de bonde neste local... -STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Não é possível construir depósito de embarcações neste local... +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Não é possível construir depósito ferroviário aqui... +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Não é possível construir depósito rodoviário aqui... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Não é possível construir depósito de bondes aqui... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Não é possível construir depósito de embarcações aqui... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Não é possível renomear o depósito... @@ -5095,16 +5121,16 @@ STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... deve STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... deve estar parado em um depósito STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... deve estar parado em um hangar -STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Os trens só podem ser modificados quando parados em um depósito -STR_ERROR_TRAIN_TOO_LONG :{WHITE}Trem muito longo +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Trens só podem ser modificados quando estão parados num depósito +STR_ERROR_TRAIN_TOO_LONG :{WHITE}Trem é muito longo STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Não é possível inverter a direção do veículo... -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... composto por múltiplas unidades -STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Tipo de ferrovia incompatível +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... é composto por várias unidades +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Tipos de trilhos incompatíveis -STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Não é possível mover veículo... +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Não é possível mover o veículo... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}A locomotiva traseira sempre seguirá a sua equivalente dianteira -STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Não é possível encontrar uma rota para depósito local -STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Não é possível encontrar depósito local +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Incapaz de encontrar uma rota para depósito local +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Incapaz de encontrar um depósito local STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tipo de depósito errado @@ -5116,8 +5142,8 @@ STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... não STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... não é possível desagrupar um veículo com uma ordem condicional # Autoreplace related errors -STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} é muito longo depois da substituíção -STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Regras de substituição automática/renovação não foram aplicadas +STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} fica muito longo depois da substituição +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Nenhuma regra de substituição/renovação automática aplicada STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(limite de dinheiro) STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}O novo veículo não pode transportar {STRING} STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}O novo veículo não pode ser adaptado na ordem {NUM} @@ -5128,64 +5154,64 @@ STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Precisa STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ferrovia não adequada STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Precisa remover a ferrovia primeiro STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Estrada de sentido único ou bloqueada -STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Passagens de nível não são permitidas para este tipo de linha -STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Passagens de nível não permitidas para este tipo de estrada -STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Não é possível construir sinais neste local... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Não é possível construir ferrovia neste local... -STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Não é possível remover ferrovia deste local... -STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Não é possível remover sinais deste local... -STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Não é possível converter os sinais deste local... -STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}...não há ferrovia -STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}...não há sinais +STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Passagens de nível não são permitidas para este tipo de trilho +STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Passagens de nível não são permitidas para este tipo de estrada +STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Não é possível construir sinais aqui... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Não é possível construir ferrovia aqui... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Não é possível remover ferrovia aqui... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Não é possível remover sinais aqui... +STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Não é possível converter os sinais aqui... +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... não existe uma ferrovia +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... não existem sinais -STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Não é possível converter o tipo de trilho deste local... +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Não é possível converter o tipo de trilho aqui... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Precisa remover a estrada primeiro STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... estradas de sentido único não podem ter junções -STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Não é possível construir estrada neste local... -STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Não é possível construir linha de bonde neste local... -STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Não é possível remover estrada deste local... -STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Não é possível remover linha de bonde deste local... -STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... não há estrada -STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... não há linha de bonde -STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Não é possível converter o tipo de estrada deste local... -STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Não é possível converter o tipo de linha de bonde deste local... +STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Não é possível construir estrada aqui... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Não é possível construir linha de bonde aqui... +STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Não é possível remover estrada aqui... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Não é possível remover linha de bonde aqui... +STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... não existe uma estrada +STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... não existe uma linha de bonde +STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Não é possível converter o tipo de estrada aqui... +STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Não é possível converter o tipo de linha de bonde aqui... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Estrada não adequada STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Linha de bonde não adequada # Waterway construction errors -STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Não é possível construir canais neste local... -STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Não é possível construir eclusas neste local... -STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Não é possível colocar rios neste local... +STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Não é possível construir canais aqui... +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Não é possível construir eclusas aqui... +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Não é possível colocar rios aqui... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... deve ser construído na água STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... não é possível construir na água STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... não é possível construir em mar aberto STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... não é possível construir em um canal STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... não é possível construir em um rio STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Precisa demolir o canal primeiro -STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Não é possível construir aqueduto neste local... +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Não é possível construir aqueduto aqui... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... árvore já plantada aqui STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... terreno errado para esse tipo de árvore -STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Não é possível plantar árvores neste local... +STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Não é possível plantar árvore aqui... # Bridge related errors -STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Não é possível construir ponte neste local... +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Não é possível construir ponte aqui... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Precisa demolir a ponte primeiro STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Não é possível iniciar e terminar no mesmo ponto -STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Extremidades da ponte não estão no mesmo nível -STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}A ponte é muito baixa para este terreno +STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}As extremidades da ponte não estão no mesmo nível +STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}A ponte é muito baixa para o terreno. STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}A ponte é muito alta para este terreno. -STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Inicio e fim devem estar alinhados +STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Início e final devem estar alinhados STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... os extremos da ponte devem estar sobre a terra STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponte muito longa -STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Ponte terminaria fora do mapa +STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}A ponte terminaria fora do mapa # Tunnel related errors -STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Não é possível construir túnel neste local... -STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}O local é inadequado para a entrada do túnel +STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Não é possível construir túnel aqui... +STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}O local não é adequado para a entrada do túnel STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Precisa demolir o túnel primeiro STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Há outro túnel no caminho STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}O túnel terminaria fora do mapa @@ -5193,7 +5219,7 @@ STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Não é STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... túnel muito longo # Object related errors -STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... existem muitos objetos +STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... há objetos demais STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Não é possível construir objeto... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objeto no caminho STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... sede de empresa no caminho @@ -5203,12 +5229,12 @@ STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}... limi # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Não é possível criar grupo... -STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Não é possível remover grupo... -STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Não é possível renomear grupo... -STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Não é possível definir grupo ascendente... -STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... não são permitidos ciclos na hierarquia de grupos -STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Não é possível remover todos os veículos desse grupo... -STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Não é possível adicionar o veículo a esse grupo... +STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Não é possível excluir este grupo... +STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Não é possível renomear o grupo... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Não é possível definir grupo principal... +STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... ciclos na hierarquia de grupos não são permitidos +STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Não é possível remover todos os veículos deste grupo... +STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Não é possível adicionar o veículo a este grupo... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Não é possível adicionar veículos compartilhados ao grupo... # Generic vehicle errors @@ -5220,26 +5246,26 @@ STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Embarca STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aeronave no caminho ###length VEHICLE_TYPES -STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Trem não está disponível +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Veículo não está disponível STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Veículo não está disponível STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Embarcação não está disponível STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Aeronave não está disponível ###length VEHICLE_TYPES STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Não é possível adaptar o trem... -STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Não é possível adaptar o veículo rodoviário... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Não é possível adaptar o veículo... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Não é possível adaptar a embarcação... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Não é possível adaptar a aeronave... ###length VEHICLE_TYPES STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Não é possível renomear o trem... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Não é possível renomear o veículo rodoviário... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Não é possível renomear o veículo... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Não é possível renomear a embarcação... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Não é possível renomear a aeronave... ###length VEHICLE_TYPES STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Não é possível parar/iniciar trem... -STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Não é possível parar/iniciar veículo rodoviário... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Não é possível parar/iniciar veículo... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Não é possível parar/iniciar embarcação... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Não é possível parar/iniciar aeronave... @@ -5267,18 +5293,23 @@ STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Não é STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Não é possível vender embarcação... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Não é possível vender aeronave... -STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Existem muitos veículos no jogo -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Não é possível alterar o intervalo manutenção... +STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Há veículos demais no jogo +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Não é possível alterar o intervalo de manutenção... -STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... o veículo está destruído +STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... veículo está destruído STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}... nem todos os veículos são idênticos -STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Não haverá veículos disponíveis -STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Mudar a sua configuração NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Nenhum veículo estará disponível +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Modifique a sua configuração de NewGRF STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Não existem veículos disponíveis ainda STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Inicie um novo jogo depois de {DATE_SHORT} ou utilize um NewGRF que forneça veículos iniciais +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Nenhum tipo de estrada urbana está disponível +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Modifique a sua configuração de NewGRF +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Não existem tipos de estrada urbana disponíveis ainda +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Inicie um novo jogo depois de {DATE_SHORT} ou utilize um NewGRF que forneça estradas urbanas iniciais + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Não é possível fazer o trem passar o sinal em perigo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Não é possível inverter a direção do trem... @@ -5289,17 +5320,17 @@ STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Não é STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Aeronave está em voo # Order related errors -STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Não há espaço para mais ordens -STR_ERROR_TOO_MANY_ORDERS :{WHITE}Muitas ordens +STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Não há mais espaço para ordens +STR_ERROR_TOO_MANY_ORDERS :{WHITE}Há ordens demais STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Não é possível inserir nova ordem... -STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Não é possível excluir esta ordem... +STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Não é possível remover esta ordem... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Não é possível modificar esta ordem... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Não é possível mover esta ordem... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Não é possível saltar a ordem atual... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Não é possível saltar a ordem selecionada... -STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... veiculo não pode ir a todas as estações +STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... veiculo não pode ir à todas as estações STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... veiculo não pode ir a essa estação -STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... um veículo compartilhando esta ordem não pode ir à essa estação +STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... um veículo compartilhando esta ordem não pode ir a essa estação STR_ERROR_CAN_T_COPY_ORDER_VEHICLE_LIST :{WHITE}... nem todos os veículos possuem as mesmas ordens STR_ERROR_CAN_T_SHARE_ORDER_VEHICLE_LIST :{WHITE}... nem todos os veículos estão compartilhando ordens @@ -5315,24 +5346,25 @@ STR_ERROR_NO_BUS_STATION :{WHITE}Não exi STR_ERROR_NO_TRUCK_STATION :{WHITE}Não existe uma estação de caminhões STR_ERROR_NO_DOCK :{WHITE}Não existe uma doca STR_ERROR_NO_AIRPORT :{WHITE}Não existe um aeroporto/heliporto -STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Não existem paradas com tipo de estrada compatível -STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Não existem paradas com tipo de bonde compatível -STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Não existem paradas adequadas para veículos rodoviários articulados.{}Os veículos rodoviários articulados precisam parar em estações de passagem ("drive-through") e não em estações padrão +STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Não existem paradas com um tipo de estrada compatível +STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Não existem paradas com um tipo de bonde compatível +STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Não existem paradas adequadas para veículos rodoviários articulados.{}Veículos rodoviários articulados só podem parar em estações de passagem, não em estações padrão STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Este avião não pode pousar neste heliporto STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Este helicóptero não pode pousar neste aeroporto STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Não existe um ponto de controle ferroviário +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Não existe um ponto de controle na rodovia STR_ERROR_NO_BUOY :{WHITE}Não existe uma boia # Timetable related errors -STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Não é possível programar veículo... -STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Veículos podem aguardar somente em estações +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Não é possível programar o veículo... +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Veículos só podem aguardar em estações STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este veículo não para nesta estação -STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... horário incompleto -STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... o horário ainda não começou +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... horário está incompleto +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... horário ainda não começou # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... há placas demais -STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Não é possível colocar placa neste local... +STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Não é possível colocar placa aqui... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Não é possível alterar o nome da placa... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Não é possível remover a placa... @@ -5342,16 +5374,16 @@ STR_DESKTOP_SHORTCUT_COMMENT :Um jogo de simu # Translatable descriptions in media/baseset/*.ob* files ###external 10 -STR_BASEGRAPHICS_DOS_DESCRIPTION :Gráficos Originais do Transport Tycoon Deluxe, edição DOS. -STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Gráficos Originais do Transport Tycoon Deluxe, edição (alemã) DOS. -STR_BASEGRAPHICS_WIN_DESCRIPTION :Gráficos Originais do Transport Tycoon, edição Windows. -STR_BASESOUNDS_DOS_DESCRIPTION :Sons Originais do Transport Tycoon Deluxe, edição DOS. -STR_BASESOUNDS_WIN_DESCRIPTION :Sons Originais do Transport Tycoon Deluxe, edição Windows. +STR_BASEGRAPHICS_DOS_DESCRIPTION :Gráficos originais do Transport Tycoon Deluxe, edição DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Gráficos originais do Transport Tycoon Deluxe, edição DOS (alemã). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Gráficos originais do Transport Tycoon Deluxe, edição Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Sons originais do Transport Tycoon Deluxe, edição DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Sons originais do Transport Tycoon Deluxe, edição Windows. STR_BASESOUNDS_NONE_DESCRIPTION :Um conjunto de sons vazio. -STR_BASEMUSIC_WIN_DESCRIPTION :Música Original do Transport Tycoon Deluxe, edição Windows. -STR_BASEMUSIC_DOS_DESCRIPTION :Música Original do Transport Tycoon Deluxe, edição DOS. -STR_BASEMUSIC_TTO_DESCRIPTION :Música Original do Transport Tycoon, edição (Original/Editor de Mundo) DOS. -STR_BASEMUSIC_NONE_DESCRIPTION :Um conjunto de música vazio. +STR_BASEMUSIC_WIN_DESCRIPTION :Música original do Transport Tycoon Deluxe, edição Windows. +STR_BASEMUSIC_DOS_DESCRIPTION :Música original do Transport Tycoon Deluxe, edição DOS. +STR_BASEMUSIC_TTO_DESCRIPTION :Música original do Transport Tycoon, edição DOS (Original/Editor Mundial). +STR_BASEMUSIC_NONE_DESCRIPTION :Um conjunto de músicas vazio. ##id 0x2000 # Town building names @@ -5385,8 +5417,8 @@ STR_TOWN_BUILDING_NAME_HOUSES_2 :Casas STR_TOWN_BUILDING_NAME_CINEMA_1 :Cinema STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Centro comercial STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglu -STR_TOWN_BUILDING_NAME_TEPEES_1 :Ocas -STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Casa-bule +STR_TOWN_BUILDING_NAME_TEPEES_1 :Tendas +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Casa-Bule STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Cofrinho ##id 0x4800 @@ -5402,9 +5434,9 @@ STR_INDUSTRY_NAME_PRINTING_WORKS :{G=f}Gráfica STR_INDUSTRY_NAME_STEEL_MILL :{G=f}Siderúrgica STR_INDUSTRY_NAME_FARM :{G=f}Fazenda STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=f}Mina de Cobre -STR_INDUSTRY_NAME_OIL_WELLS :{G=m}Poços de Petróleo +STR_INDUSTRY_NAME_OIL_WELLS :{G=m}Campo de Petróleo STR_INDUSTRY_NAME_BANK :{G=m}Banco -STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=f}Indústria Alimentícia +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=f}Indústria de Alimentos STR_INDUSTRY_NAME_PAPER_MILL :{G=f}Fábrica de Papel STR_INDUSTRY_NAME_GOLD_MINE :{G=f}Mina de Ouro STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=m}Banco @@ -5412,7 +5444,7 @@ STR_INDUSTRY_NAME_DIAMOND_MINE :{G=f}Mina de Di STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=f}Mina de Ferro STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=f}Plantação de Frutas STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=f}Plantação de Seringueiras -STR_INDUSTRY_NAME_WATER_SUPPLY :{G=m}Abastecimento de Água +STR_INDUSTRY_NAME_WATER_SUPPLY :{G=m}Fornecimento de Água STR_INDUSTRY_NAME_WATER_TOWER :{G=m}Reservatório de Água STR_INDUSTRY_NAME_FACTORY_2 :{G=f}Fábrica STR_INDUSTRY_NAME_FARM_2 :{G=f}Fazenda @@ -5420,10 +5452,10 @@ STR_INDUSTRY_NAME_LUMBER_MILL :{G=f}Madeireira STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=f}Floresta de Algodão Doce STR_INDUSTRY_NAME_CANDY_FACTORY :{G=f}Fábrica de Doces STR_INDUSTRY_NAME_BATTERY_FARM :{G=f}Fazenda de Pilhas -STR_INDUSTRY_NAME_COLA_WELLS :{G=m}Poços de Xarope de cola +STR_INDUSTRY_NAME_COLA_WELLS :{G=m}Poço de Xarope de Cola STR_INDUSTRY_NAME_TOY_SHOP :{G=f}Loja de Brinquedos STR_INDUSTRY_NAME_TOY_FACTORY :{G=f}Fábrica de Brinquedos -STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=f}Fontes de Plástico +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=f}Fonte de Plástico STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=f}Fábrica de Refrigerantes STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=m}Gerador de Bolhas STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=f}Pedreira de Caramelo @@ -5442,33 +5474,33 @@ STR_SV_AIRCRAFT_NAME :Aeronave #{COMM ###length 27 STR_SV_STNAME :{STRING} -STR_SV_STNAME_NORTH :{STRING} - Norte -STR_SV_STNAME_SOUTH :{STRING} - Sul -STR_SV_STNAME_EAST :{STRING} - Leste -STR_SV_STNAME_WEST :{STRING} - Oeste -STR_SV_STNAME_CENTRAL :{STRING} - Centro -STR_SV_STNAME_TRANSFER :{STRING} - Transbordo -STR_SV_STNAME_HALT :{STRING} - Parada -STR_SV_STNAME_VALLEY :Vale de {STRING} -STR_SV_STNAME_HEIGHTS :Montes de {STRING} -STR_SV_STNAME_WOODS :Bosques de {STRING} -STR_SV_STNAME_LAKESIDE :Lago de {STRING} -STR_SV_STNAME_EXCHANGE :{STRING} - Intercâmbio -STR_SV_STNAME_AIRPORT :Aeroporto de {STRING} -STR_SV_STNAME_OILFIELD :Petrolífera de {STRING} -STR_SV_STNAME_MINES :Minas de {STRING} -STR_SV_STNAME_DOCKS :Docas de {STRING} +STR_SV_STNAME_NORTH :{STRING} Norte +STR_SV_STNAME_SOUTH :{STRING} Sul +STR_SV_STNAME_EAST :{STRING} Leste +STR_SV_STNAME_WEST :{STRING} Oeste +STR_SV_STNAME_CENTRAL :{STRING} Central +STR_SV_STNAME_TRANSFER :{STRING} Transbordo +STR_SV_STNAME_HALT :{STRING} Terminal +STR_SV_STNAME_VALLEY :{STRING} Vale +STR_SV_STNAME_HEIGHTS :{STRING} Colinas +STR_SV_STNAME_WOODS :{STRING} Bosque +STR_SV_STNAME_LAKESIDE :{STRING} Margens +STR_SV_STNAME_EXCHANGE :{STRING} Intercâmbio +STR_SV_STNAME_AIRPORT :{STRING} Aeroporto +STR_SV_STNAME_OILFIELD :{STRING} Petrolífera +STR_SV_STNAME_MINES :{STRING} Minas +STR_SV_STNAME_DOCKS :{STRING} Docas STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 -STR_SV_STNAME_ANNEXE :{STRING} - Anexo -STR_SV_STNAME_SIDINGS :{STRING} - Desvios -STR_SV_STNAME_BRANCH :{STRING} - Ramal -STR_SV_STNAME_UPPER :{STRING} de Cima -STR_SV_STNAME_LOWER :{STRING} de Baixo -STR_SV_STNAME_HELIPORT :Heliporto de {STRING} -STR_SV_STNAME_FOREST :Floresta de {STRING} -STR_SV_STNAME_FALLBACK :Estação de {STRING} #{NUM} +STR_SV_STNAME_ANNEXE :{STRING} Anexo +STR_SV_STNAME_SIDINGS :{STRING} Desvio +STR_SV_STNAME_BRANCH :{STRING} Ramal +STR_SV_STNAME_UPPER :{STRING} Superior +STR_SV_STNAME_LOWER :{STRING} Inferior +STR_SV_STNAME_HELIPORT :{STRING} Heliporto +STR_SV_STNAME_FOREST :{STRING} Floresta +STR_SV_STNAME_FALLBACK :{STRING} Estação #{NUM} ############ end of savegame specific region! @@ -5517,7 +5549,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Vagão de Alime STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Vagão de Papel STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Vagão de Minério de Cobre STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Vagão de Água -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Vagão de Fruta +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Vagão de Frutas STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Vagão de Borracha STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Vagão de Açúcar STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Vagão de Algodão Doce @@ -5547,7 +5579,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Vagão de Alime STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Vagão de Papel STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Vagão de Minério de Cobre STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Vagão de Água -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Vagão de Fruta +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Vagão de Frutas STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Vagão de Borracha STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Vagão de Açúcar STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Vagão de Algodão Doce @@ -5557,7 +5589,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Vagão de Xarop STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Vagão de Doces STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Vagão de Brinquedos STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Vagão de Pilhas -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Vagão de Refrigerante +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Vagão de Refrigerantes STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Vagão de Plástico STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elétrico) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Elétrico) @@ -5579,7 +5611,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Vagão de Alime STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Vagão de Papel STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Vagão de Minério de Cobre STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Vagão de Água -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Vagão de Fruta +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Vagão de Frutas STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Vagão de Borracha STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Vagão de Açúcar STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Vagão de Algodão Doce @@ -5588,8 +5620,8 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Vagão de Bolha STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Vagão de Xarope de Cola STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Vagão de Doces STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Vagão de Brinquedos -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Vagão de Pilha -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Vagão de Refrigerante +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Vagão de Pilhas +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Vagão de Refrigerantes STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Vagão de Plástico ###length 88 @@ -5645,9 +5677,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Caminhão de Mi STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Caminhão de Água Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Caminhão de Água Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Caminhão de Água MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Caminhão de Fruta Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Caminhão de Fruta Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Caminhão de Fruta Kelling +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Caminhão de Frutas Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Caminhão de Frutas Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Caminhão de Frutas Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Caminhão de Borracha Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Caminhão de Borracha Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Caminhão de Borracha RMT @@ -5669,12 +5701,12 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Caminhão de Br STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Caminhão de Doces MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Caminhão de Doces Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Caminhão de Doces Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Caminhão de Pilha MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Caminhão de Pilha Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Caminhão de Pilha Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Caminhão de Refrigerante MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Caminhão de Refrigerante Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Caminhão de Refrigerante Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Caminhão de Pilhas MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Caminhão de Pilhas Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Caminhão de Pilhas Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Caminhão de Refrigerantes MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Caminhão de Refrigerantes Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Caminhão de Refrigerantes Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Caminhão de Plástico MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Caminhão de Plástico Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Caminhão de Plástico Wizzowow @@ -5751,8 +5783,8 @@ STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA STR_FORMAT_INDUSTRY_NAME :{1:STRING} de {0:TOWN} ###length 2 -STR_FORMAT_BUOY_NAME :Bóia de {TOWN} -STR_FORMAT_BUOY_NAME_SERIAL :Bóia de {TOWN} #{COMMA} +STR_FORMAT_BUOY_NAME :Boia de {TOWN} +STR_FORMAT_BUOY_NAME_SERIAL :Boia de {TOWN} #{COMMA} ###length 2 STR_FORMAT_WAYPOINT_NAME :Ponto de controle de {TOWN} @@ -5808,6 +5840,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}M +STR_CURRENCY_SHORT_GIGA :{NBSP}G +STR_CURRENCY_SHORT_TERA :{NBSP}T + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5824,6 +5861,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index f2de6f5aff..dac0807af3 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -288,7 +288,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}С ак STR_BUTTON_DEFAULT :{BLACK}По подразбиране STR_BUTTON_CANCEL :{BLACK}Отказ STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Внимание: Администраторите на сървъра могат да прочетат всеки текст, въведен тук. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-.,уеишщксдзц;(ьяаожгтнвмчюйъэфхпрлб @@ -400,6 +399,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Изход от STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Изход + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Игрови опции @@ -882,7 +882,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Избо STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Британска лира STR_GAME_OPTIONS_CURRENCY_USD :Американски долар STR_GAME_OPTIONS_CURRENCY_EUR :Евро @@ -971,11 +971,6 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Отме STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Анти-Alias шрифтове STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Отметни тук за да се добави anti-alias към променливи шрифтове. -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Автоматизирано проучване STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Участвайте в автоматизирано проучване @@ -1008,6 +1003,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Допъ + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Неуспешно извличане на списък с поддържаните резолюции STR_ERROR_FULLSCREEN_FAILED :{WHITE}Проблем при включване на режим "цял екран" @@ -1019,6 +1015,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Нама STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Увеличи стойността на твоята валута за една лира (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Сложи обменния курс на твоята валута за една лира (£) + STR_CURRENCY_PREFIX :{LTBLUE}Представка: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Укажете префиксен текст за валутата STR_CURRENCY_SUFFIX :{LTBLUE}Надставка: {ORANGE}{STRING} @@ -1375,6 +1372,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Предупр STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ако тази опция бъде активирана, ще получите съобщение ако някое от вашите ПС не е донесло печалба през изминалата година STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Ако тази опция бъде активирана, ще получите съобщение ако някое от вашите ПС не е донесло печалба през периода + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :ПС не губят валидност: {STRING.n} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ако тази опция бъде активирана, всички модели на превозните средства, ще бъдат възможни за производство завинаги @@ -1664,7 +1662,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Интерва STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Задайте интервала за обслужване на новите въздухоплавателни средства по подразбиране, ако такъв интервал не е зададен за превозното средство STR_CONFIG_SETTING_SERVINT_SHIPS :Интервал на обслужване за кораби: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Задайте интервала за обслужване на новите кораби по подразбиране, ако такъв интервал не е изрично зададен за превозното средство -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P 0 ен ни}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Изключен @@ -1905,17 +1904,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Индустр STR_CONFIG_SETTING_AI :Съперници STR_CONFIG_SETTING_AI_NPC :Компютърни играчи -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Пътенамирач за влакове: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Маршрутизатор използван за влакове -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Пътенамирач за автомобили: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Маршрутизатор използван за автомобили -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Пътенамирач за кораби: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Маршрутизатор използван за кораби STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Автоматично обръщане при сигнали: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Позволява на влаковете да обръщат ако са чакали твърде дълго -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(препоръчва се) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Промяна стойноста на настройка @@ -2202,7 +2192,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Свал STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Изключване STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Сървъра е защитен. Въведете парола -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Компанията е защитена. Въведете парола # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Списък с играчите @@ -2219,26 +2208,15 @@ STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :Админис STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Изхвърлен STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Бан STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Изтриване -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Отключване на парола STR_NETWORK_SPECTATORS :Наблюдатели -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Незапазвай паролата -STR_COMPANY_PASSWORD_OK :{BLACK}Дай на компанията новата парола -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Парола на компанията -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Парола по подразбиране за компания -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Използване на тази парола по подразбиране за нови компании - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Присъедини се STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Присъедини се, управлявайки тази компания -STR_COMPANY_VIEW_PASSWORD :{BLACK}Парола -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Постави парола за да предпазиш компанията си от неоторизирани потребители. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Поставяне парола на компанията # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Изпращане @@ -2277,7 +2255,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Отне STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Възможна загуба на връзката STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Последните {NUM} сек. не се е получила информация от сървъра -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :обща грешка STR_NETWORK_ERROR_CLIENT_DESYNC :загуба на синхронизация STR_NETWORK_ERROR_CLIENT_SAVEGAME :не може да зареди картата @@ -2475,7 +2453,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Изби # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Пътна точка -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Избор тип на пътни точки # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Избор на жп гара @@ -2488,8 +2465,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Дълж STR_STATION_BUILD_DRAG_DROP :{BLACK}Влачене & Пускане STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Строене на станция чрез изтегляне -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Избор на клас станция за показване -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Избор тип на станция за строене + + + STR_STATION_CLASS_DFLT :Станция по подразбиране STR_STATION_CLASS_WAYP :Пътни точки @@ -2621,8 +2599,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Купи # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Избор на обект -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Избери обект за построяване. Shift строеж/цена за построяване -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Избор на клас на обекта за строене STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Изглед на обекта STR_OBJECT_BUILD_SIZE :{BLACK}Размер: {GOLD}{NUM} x {NUM} плочки @@ -2722,7 +2698,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Собс STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Собственик на железопътната линия: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Община: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Нищо -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Координати: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Построен: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Клас на станцията: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип на станцията: {LTBLUE}{STRING} @@ -2963,9 +2938,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Генерация на свят STR_GENERATION_RIVER_GENERATION :{BLACK}Създаване на река -STR_GENERATION_TREE_GENERATION :{BLACK}Генерация на дърва -STR_GENERATION_OBJECT_GENERATION :{BLACK}Генерация на статични STR_GENERATION_CLEARING_TILES :{BLACK}Създаване на твърда и скална повърност +STR_GENERATION_OBJECT_GENERATION :{BLACK}Генерация на статични +STR_GENERATION_TREE_GENERATION :{BLACK}Генерация на дърва STR_GENERATION_SETTINGUP_GAME :{BLACK}Настройка на играта STR_GENERATION_PREPARING_TILELOOP :{BLACK}Изпълняване цикъл на плочките STR_GENERATION_PREPARING_SCRIPT :{BLACK}Пускане на програмен език @@ -3053,7 +3028,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Вид желе STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметър на променливата 60+x на NewGRF (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Следващ sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Продължи към следващия нормален sprite, Пропускайки всички псевдо/прерисувани/текстови sprite и ги облечи в края STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Иди на sprite @@ -3158,7 +3132,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Отид STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Въведете име за знакът # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Градове STR_TOWN_DIRECTORY_NONE :{ORANGE}- Отсъства - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Град){BLACK} ({COMMA}) @@ -3440,7 +3413,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Част STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Летища # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Индустрии STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Отсъства - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Имена на индустриите - натисни за да фокусираш върху индустрията. Ctrl+Click отваря нов прозорец на изглед върху индустрията. @@ -4246,8 +4218,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Игрови с STR_AI_SETTINGS_CLOSE :{BLACK}Затвори STR_AI_SETTINGS_RESET :{BLACK}Рестартиране STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4292,9 +4262,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Приб STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Записването продължава,{}моля изчакайте да сръши! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Автозапазването е неуспешно STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не може да прочете диска -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Запазването на играта е неуспешно{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Изтриването на файла е неуспешно -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Отварянето на играта е неуспешно{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Вътрешна грешка: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Запазената игра е повредена - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Запазената игра е направена от по-нова версия @@ -4659,6 +4627,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Пром STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Няма налични превозни средства все още STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Започни нова игра след {DATE_SHORT} или използвай NewGRF , който показва ранни превозни средства + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Влака не може да пропусне сигнала при опасност... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Не може да обърне посоката на влак... @@ -5178,6 +5147,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 8e7333dab1..bf05fccd6c 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -118,7 +118,7 @@ STR_QUANTITY_RUBBER :{VOLUME_LONG} d STR_QUANTITY_SUGAR :{WEIGHT_LONG} de sucre STR_QUANTITY_TOYS :{COMMA}{NBSP}joguin{P a es} STR_QUANTITY_SWEETS :{G=Femenin}{COMMA}{NBSP}boss{P a es} de dolços -STR_QUANTITY_COLA :{VOLUME_LONG} de refrescs +STR_QUANTITY_COLA :{VOLUME_LONG} de refrescos STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de cotó de sucre STR_QUANTITY_BUBBLES :{COMMA} bomboll{P a es} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de caramel{P "" s} @@ -309,11 +309,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Activant STR_BUTTON_DEFAULT :{BLACK}Predeterminat STR_BUTTON_CANCEL :{BLACK}Cancel·la STR_BUTTON_OK :{BLACK}D'acord -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Avís: Els administradors del servidor potser poden llegir el que escriviu aquí. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Llargada: {NUM} @@ -439,6 +438,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Surt de l'edito STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Surt +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Genera poblacions +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Posa cases + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Opcions de la partida @@ -525,7 +527,7 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historial de mi STR_NEWS_MENU_DELETE_ALL_MESSAGES :Esborra tots els missatges # About menu -STR_ABOUT_MENU_LAND_BLOCK_INFO :Informació de la casella +STR_ABOUT_MENU_LAND_BLOCK_INFO :Detalls de les caselles STR_ABOUT_MENU_HELP :Ajuda i manuals STR_ABOUT_MENU_TOGGLE_CONSOLE :Commuta la consola STR_ABOUT_MENU_AI_DEBUG :Depuració de les IA i l'script de partida @@ -629,7 +631,7 @@ STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Mostra r # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Llegenda dels gràfics de la companyia -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Clica aquí per mostrar/amagar la companyia al gràfic +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Feu clic aquí per a mostrar/amagar la companyia al gràfic. # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Taula de la lliga de companyies @@ -650,7 +652,7 @@ STR_PERFORMANCE_DETAIL :{WHITE}Detall d STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detall STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) -STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% +STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}{NBSP}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Veure els detalls d'aquesta companyia ###length 10 @@ -772,16 +774,16 @@ STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Vaixells STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Avions STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Rutes de transport -STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Bosc -STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Estació de ferrocarril -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Estació per a camions -STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Parada d'autobús +STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Boscos +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Estacions de tren +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Estacions de camió +STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Parades d'autobús STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Aeroport/Heliport -STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Moll +STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Molls STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Terreny irregular STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Gespa STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Terreny erm -STR_SMALLMAP_LEGENDA_RAINFOREST :{TINY_FONT}{BLACK}Selva tropical +STR_SMALLMAP_LEGENDA_RAINFOREST :{TINY_FONT}{BLACK}Selves tropicals STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Camps de conreu STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Arbres STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Roques @@ -793,7 +795,7 @@ STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Neu STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Mostra/amaga el nom de les poblacions al mapa -STR_SMALLMAP_CENTER :{BLACK}Centra el mapa petit a la posició actual +STR_SMALLMAP_CENTER :{BLACK}Centra el minimapa a la posició actual STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} @@ -879,10 +881,10 @@ STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nova veta de carbó trobada a {INDUSTRY}{}Es preveu doblar la producció STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Noves reserves de petroli trobades a {INDUSTRY}{}Es preveu doblar la producció STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Sistemes de conreu millorats a {INDUSTRY} fan preveure que es doblarà la producció -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}La producció de {STRING} a {INDUSTRY} creix un {COMMA}% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}La producció de {INDUSTRY} descendeix un 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Una plaga d'insectes provoca el caos a {INDUSTRY}{}La producció baixa un 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}La producció de {STRING} a {INDUSTRY} es redueix un {COMMA}% +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}La producció de {STRING} a {INDUSTRY} creix un {COMMA}{NBSP}% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}La producció de {INDUSTRY} descendeix un 50{NBSP}% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Una plaga d'insectes provoca el caos a {INDUSTRY}{}La producció baixa un 50{NBSP}% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}La producció de {STRING} a {INDUSTRY} es redueix un {COMMA}{NBSP}% ###length VEHICLE_TYPES STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} està esperant a la cotxera @@ -923,7 +925,7 @@ STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLAC STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvenció retirada:{}{}El transport de {STRING} des de {STRING} fins a {STRING} ja no està subvencionat STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Oferta de subvenció per a un servei:{}{}La primera companyia que transporti {STRING} des de {STRING} fins a {STRING} rebrà una subvenció durant {UNITS_YEARS_OR_MINUTES} de l'autoritat local ###length 4 -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvenció concedida a {STRING}{}{}El transport de {STRING} des de {STRING} fins a {STRING} rebrà uns ingressos addicionals del 50% durant {UNITS_YEARS_OR_MINUTES} +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvenció concedida a {STRING}{}{}El transport de {STRING} des de {STRING} fins a {STRING} rebrà uns ingressos addicionals del 50{NBSP}% durant {UNITS_YEARS_OR_MINUTES} STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvenció concedida a {STRING}{}{}El transport de {STRING} de {STRING} fins a {STRING} ingressarà el doble de la tarifa habitual durant {UNITS_YEARS_OR_MINUTES}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvenció concedida a {STRING}{}{}El transport de {STRING} de {STRING} fins a {STRING} ingressarà el triple de la tarifa habitual durant {UNITS_YEARS_OR_MINUTES} STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvenció concedida a {STRING}{}{}El transport de {STRING} de {STRING} fins a {STRING} ingressarà el quàdruple de la tarifa habitual durant {UNITS_YEARS_OR_MINUTES} @@ -957,18 +959,14 @@ STR_GAME_OPTIONS_VOLUME :Volum STR_GAME_OPTIONS_SFX_VOLUME :Efectes de so STR_GAME_OPTIONS_MUSIC_VOLUME :Música -STR_GAME_OPTIONS_VOLUME_0 :0{NBSP}% -STR_GAME_OPTIONS_VOLUME_25 :25{NBSP}% -STR_GAME_OPTIONS_VOLUME_50 :50{NBSP}% -STR_GAME_OPTIONS_VOLUME_75 :75{NBSP}% -STR_GAME_OPTIONS_VOLUME_100 :100{NBSP}% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}{NBSP}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Moneda STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecció de la unitat monetària STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Lliura esterlina STR_GAME_OPTIONS_CURRENCY_USD :Dòlar americà STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1012,6 +1010,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Rúpia índia STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonèsia STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit STR_GAME_OPTIONS_CURRENCY_LVL :Lats letó +STR_GAME_OPTIONS_CURRENCY_PTE :Escut portuguès STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Desa automàticament STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecciona l'interval de desada automàtica de la partida @@ -1026,7 +1025,7 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Cada 120 minuts STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona l'idioma de la interfície -STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}{NBSP}% completed) +STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}{NBSP}% completat) STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Pantalla completa STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marqueu la casella per mostrar l'OpenTTD a pantalla completa. @@ -1058,11 +1057,7 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marqueu STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Aplica anti-àlies a les fonts STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marqueu aquesta casella per a fer servir tècniques d'anti-àlies a les fonts redimensionables. -STR_GAME_OPTIONS_GUI_SCALE_1X :x1 -STR_GAME_OPTIONS_GUI_SCALE_2X :x2 -STR_GAME_OPTIONS_GUI_SCALE_3X :x3 -STR_GAME_OPTIONS_GUI_SCALE_4X :x4 -STR_GAME_OPTIONS_GUI_SCALE_5X :x5 +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Sondeig automatitzat STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participa al sondeig automatitzat @@ -1091,6 +1086,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunt STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecciona el conjunt de peces de música base a utilitzar STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informació addicional sobre el conjunt de peces de música base +STR_GAME_OPTIONS_ONLINE_CONTENT :Descarrega contingut +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Comprova si hi ha continguts nous o actualitzats per a descarregar. + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(no s'han instal·lat complements per a interactuar amb plataformes socials) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1118,6 +1116,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Disminue STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Augmenta la quantitat de moneda per cada lliura (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Estableix el tipus de canvi de la moneda per cada Lliura (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Separador: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Establiu el separador de la vostra moneda. + STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Estableix el prefix de text per a la moneda STR_CURRENCY_SUFFIX :{LTBLUE}Sufix: {ORANGE}{STRING} @@ -1163,7 +1164,7 @@ STR_SEA_LEVEL_LOW :Baix STR_SEA_LEVEL_MEDIUM :Mitjà STR_SEA_LEVEL_HIGH :Alt STR_SEA_LEVEL_CUSTOM :Personalitzat -STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Personalitzat ({NUM}%) +STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Personalitzat ({NUM}{NBSP}%) ###length 4 STR_RIVERS_NONE :Cap @@ -1272,10 +1273,10 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Diners infinits STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Permet gastar diners sense límit i desactiva les bancarrotes de les companyies. STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Préstec inicial màxim: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Quantitat màxima del préstec que pot demanar una companyia (sense tenir en compte la inflació) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Quantitat màxima del préstec que pot demanar una companyia (sense tenir en compte la inflació). Si s'estableix a "Sense préstecs", no es podran aconseguir diners a no ser que els proporcionin els scripts de partida o l'opció "Diners infinits". STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Sense préstec {RED}Fa falta un script de partida que doni els fons inicials +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Sense préstecs STR_CONFIG_SETTING_INTEREST_RATE :Taxa d'interès: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Tipus d'interès dels préstecs; també controla la inflació, si està activada @@ -1350,7 +1351,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Seleccioneu el STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Pendent de les costes per als trens: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :El pendent de les caselles amb costes per als trens. Els valors alts fan que sigui més difícil pujar els turons. -STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_PERCENTAGE :{COMMA}{NBSP}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Pendent de les costes per als vehicles de carretera: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :El pendent de les caselles amb costes per a vehicles de carretera. Els valors alts fan que sigui més difícil pujar els turons. @@ -1488,17 +1489,20 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisa si el ben STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Si està activat, s'envia un missatge de notícia quan un vehicle no ha tingut beneficis durant l'any. STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Si està activat, s'envia un missatge de notícia quan un vehicle no ha obtingut benefici durant un període. +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Avisa si el vehicle és vell: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Si està activat, s'envia un missatge de notícia quan un vehicle és vell. + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Els vehicles mai caduquen: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Si està activat, tots els models de vehicles continuen disponibles per sempre després de la seva introducció. STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Mode temporal: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Trieu les unitats del mode temporal de la partida. Una vegada començada la partida, no es pot canviar.{}{}El mode calendari ofereix l'experiència clàssica de l'OpenTTD, on un any té 12 mesos i cada mes té entre 28 i 31 dies.{}{}Amb el mode de rellotge de paret, el moviment del vehicle, la producció de càrrega i les finances es basen en increments d'un minut, que equival més o menys a un mes d'uns 30 dies en el mode calendari.{}{}En tots els modes sempre hi ha un calendari clàssic, que es fa servir per a la data d'introducció dels vehicles, cases i altres infraestructures. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Trieu les unitats del mode temporal de la partida. Una vegada començada la partida, no es pot canviar.{}{}El mode calendari ofereix l'experiència clàssica de l'OpenTTD, on un any té 12 mesos i cada mes té entre 28 i 31 dies.{}{}Amb el mode de rellotge de paret, la producció de càrrega i les finances es basen en increments d'un minut, que equival més o menys a un mes d'uns 30 dies en el mode calendari.{}{}En tots els modes sempre hi ha un calendari clàssic, que es fa servir per a la data d'introducció dels vehicles, cases i altres infraestructures. ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Calendari STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Rellotge de paret STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minuts per any: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Trieu el nombre de minuts d'un any de calendari. Per defecte són 12 minuts. Establiu-ho a 0 per a parar el temps del calendari. Aquesta opció no afecta a la simulació econòmica de la partida i només està disponible quan es fa servir el temps amb rellotge de paret. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Trieu el nombre de minuts d'un any de calendari. Per defecte són 12 minuts. Establiu-ho a 0 per a parar el temps del calendari. Si s'augmenta la durada de l'any del calendari s'alenteix la introducció de vehicles, cases i altres tipus d'infraestructures noves. No afecta a la velocitat dels vehicles o de la simulació econòmica, excepte per la inflació. Aquesta opció només està disponible quan es fa servir el temps amb rellotge de paret. STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special @@ -1539,7 +1543,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Gruix de la lí STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Mostra el nom del NewGRF a la finestra de construcció de vehicles: {STRING} STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Afegeix una línia a la finestra de construcció de vehicles que mostri de quin NewGRF és el vehicle seleccionat. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Mostra les càrregues que poden portar els vehicles a les finestres de llistes {STRING} +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Mostra les càrregues que poden portar els vehicles a les finestres de llistes: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Si s'activa, la càrrega transportable del vehicle apareixerà al damunt de les llistes dels vehicles. STR_CONFIG_SETTING_LANDSCAPE :Paisatge: {STRING} @@ -1619,8 +1623,8 @@ STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Inspecciona els STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Enllaça la barra d'eines del paisatge a les barres d'eines de vies/carreteres/aigua/aeroports: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Quan s'obre la barra d'eines de construcció per un tipus de transport, també s'obre la barra d'eines de remodelació del paisatge -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Color del terra utilitzat al mapa petit: {STRING} -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color del terreny al mapa petit +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Color del terra utilitzat al minimapa: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color del terreny al minimapa ###length 3 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verd STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verd fosc @@ -1643,7 +1647,7 @@ STR_CONFIG_SETTING_SCROLLMODE_RMB :Mou el mapa amb STR_CONFIG_SETTING_SCROLLMODE_LMB :Mou el mapa amb el botó esquerre del ratolí STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desplaçament suau de la vista: {STRING} -STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla com la vista principal es desplaça a una posició específica quan es clica al mapa petit o quan s'envia una ordre de desplaçar-se a un objecte específic al mapa. Si està activat, la vista es desplaça suaument; si està desactivat, salta directament al punt assenyalat +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla com la vista principal es desplaça a una posició específica quan es fa clic al minimapa o quan s'envia una ordre de desplaçar-se a un objecte específic al mapa. Si està activat, la vista es desplaça suaument; si està desactivat, salta directament al punt assenyalat STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostra un cartell de mesura quan estiguis utilitzant vàries eines de construcció: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Mostra les distàncies-cel·la i les diferències d'alçada quan s'arrossegui durant la construcció @@ -1829,7 +1833,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Interval per de STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Estableix l'interval de revisió predeterminat pels nous avions, si no hi ha un interval de revisió explícit pel vehicle STR_CONFIG_SETTING_SERVINT_SHIPS :Interval per defecte de servei per als vaixells: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Estableix l'interval de revisió predeterminat pels vaixells que es comprin, si no hi ha un interval de revisió explícit pel vehicle. -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}di{P 0 a es}/minut{P 0 "" s}% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}di{P 0 a es} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}minut{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Desactivat @@ -2051,10 +2059,10 @@ STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Com més alt el STR_CONFIG_SETTING_DEMAND_DISTANCE :Efecte de la distància sobre les demandes: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Si indiqueu un valor major de 0, la distància entre l'estació d'origen A d'una càrrega i la possible destinació B, tindrà efecte en la quantitat de càrrega enviada de A a B. Com més lluny és B de A menys càrrega s'hi enviarà. Com més alt el valor, menys càrrega s'enviarà a estacions llunyanes i més càrrega a estacions properes. STR_CONFIG_SETTING_DEMAND_SIZE :Quantitat de càrrega retornada per mode simètric: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Indicant menys del 100% la distribució simètrica es comporta més com l'asimètrica. Menys càrrega serà retornada si una certa quantitat és enviada a una estació. Si indiqueu 0% la distribució simètrica es comporta igual que l'asimètrica. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Indicant menys del 100{NBSP}% la distribució simètrica es comporta més com l'asimètrica. Menys càrrega serà retornada si una certa quantitat és enviada a una estació. Si indiqueu un 0{NBSP}%, la distribució simètrica es comporta igual que l'asimètrica. STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturació de camins curts abans d'usar camins d'alta capacitat: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Sovint hi ha diversos camins entre dues estacions donades. Cargodist primer saturarà el camí més curt, després usarà el segon camí més curt fins a saturar-lo i així successivament. La saturació és determinada per una estimació de la capacitat i l'ús previst. Un cop ha saturat tots els camins, si encara hi ha demanda, sobrecarregarà tots els camins, preferint aquells de major capacitat. No obstant, molt sovint l'algoritme no farà una estimació acurada de la capacitat. Aquest paràmetre us permet especificar fins a quin percentatge un camí més curt ha de ser saturat en la primera ronda abans d'escollir el següent en longitud. Indiqueu menys del 100% per evitar la superpoblació d'estacions en cas de capacitat sobreestimada. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Sovint hi ha diversos camins entre dues estacions donades. Cargodist primer saturarà el camí més curt, després usarà el segon camí més curt fins a saturar-lo i així successivament. La saturació és determinada per una estimació de la capacitat i l'ús previst. Un cop ha saturat tots els camins, si encara hi ha demanda, sobrecarregarà tots els camins, preferint aquells de major capacitat. No obstant, molt sovint l'algoritme no farà una estimació acurada de la capacitat. Aquest paràmetre us permet especificar fins a quin percentatge un camí més curt ha de ser saturat en la primera ronda abans d'escollir el següent en longitud. Indiqueu menys del 100{NBSP}% per a evitar la superpoblació d'estacions en cas de capacitat sobreestimada. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unitats de velocitat (terrestres): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Unitats de velocitat (nàutiques): {STRING} @@ -2129,17 +2137,8 @@ STR_CONFIG_SETTING_AI :Competidors STR_CONFIG_SETTING_AI_NPC :Jugadors IA STR_CONFIG_SETTING_NETWORK :Xarxa -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Encaminador dels trens: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algorisme a emprar per a escollir les rutes dels trens -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Encaminador d'automòbils: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Algorisme a emprar per a escollir les rutes dels automòbils -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Encaminador dels vaixells: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Algorisme a emprar per a escollir les rutes dels vaixells STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Canvi de sentit automàtic als senyals: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permetre als trens girar en un senyal, si esperaven allà durant molt temps -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recomanat) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Canvia el valor de l'ajustament @@ -2458,7 +2457,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Obtenint STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconnecta STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegit: escriviu-ne la contrasenya -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companyia protegida: escriviu-ne la contrasenya # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Jugadors en línia @@ -2485,6 +2483,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :El vostre nom d STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Accions d'administració que s'han de realitzar per a aquest client. STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Accions d'administració que s'han de realitzar per a aquesta companyia. STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Uniu-vos a aquesta companyia. +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Autoritza al client a unir-se a la vostra companyia. STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Envia un missatge a aquest jugador. STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Envia un missatge a tots els jugadors de la companyia. STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Envieu un missatge a tots els espectadors. @@ -2507,13 +2506,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via serv STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Treu STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Expulsa STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Esborra -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Desbloca la contrasenya STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Acció de l'administrador STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Esteu segur que voleu treure el jugador «{STRING}»? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Esteu segur que voleu expulsar el jugador «{STRING}»? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Esteu segur que voleu esborrar la companyia «{COMPANY}»? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Esteu segur que voleu restablir la contrasenya de la companyia «{COMPANY}»? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Voleu usar un servei de transmissió? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}No s'ha pogut establir una connexió amb el servidor «{STRING}».{}Voleu transmetre aquesta sessió via «{STRING}»? @@ -2530,19 +2527,9 @@ STR_NETWORK_ASK_SURVEY_YES :Sí STR_NETWORK_SPECTATORS :Espectadors -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}No desis la nova contrasenya. -STR_COMPANY_PASSWORD_OK :{BLACK}Estableix aquesta nova contrasenya per a la companyia. -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Contrasenya de la companyia -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Contrasenya predeterminada de companyies noves -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Utilitza com a contrasenya predeterminada de companyies noves la d'aquesta companyia. - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Uniu-vos STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Uniu-vos a aquesta companyia per poder-hi jugar. -STR_COMPANY_VIEW_PASSWORD :{BLACK}Contrasenya -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Protegeix la vostra companyia amb una contrasenya per tal d'evitar que la controlin altres usuaris no autoritzats. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Estableix la contrasenya de la companyia. # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Envia @@ -2571,6 +2558,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}No s'ha STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}No s'ha establit un nom per al vostre servidor. El nom s'estableix a la part superior de la finestra multijugador. STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}La revisió d'aquest client no concorda amb la revisió del servidor STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Contrasenya incorrecta +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}No esteu en la llista de clients permesos STR_NETWORK_ERROR_SERVER_FULL :{WHITE}El servidor està ple STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Estàs exclòs d'aquest servidor STR_NETWORK_ERROR_KICKED :{WHITE}T'han fet fora de la partida @@ -2586,7 +2574,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}El vostr STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Possible pèrdua de connexió STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Durant el darrer {NUM} segon{P "" s} no han arribat dades del servidor -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :error general STR_NETWORK_ERROR_CLIENT_DESYNC :error de sincronització STR_NETWORK_ERROR_CLIENT_SAVEGAME :no es pot carregar el mapa @@ -2598,6 +2586,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :s'ha rebut un p STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :revisió incorrecta STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nom ja utilitzat STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :contrasenya incorrecta +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :no en la llista de permesos STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :id-companyia erroni en DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :tret pel servidor STR_NETWORK_ERROR_CLIENT_CHEATER :s'ha intentat utilitzar una trampa @@ -2803,7 +2792,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Seleccio # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Punt de pas -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Seleccioneu el tipus de punt de pas. # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Estacions de Tren @@ -2816,8 +2804,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Seleccio STR_STATION_BUILD_DRAG_DROP :{BLACK}Arrossega i solta STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construeix una estació amb el mètode arrossega i solta. -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Selecciona un tipus de estació a mostrar -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Selecciona el tipus de estació a construir +STR_PICKER_MODE_ALL :Tots +STR_PICKER_MODE_ALL_TOOLTIP :Commuta entre mostrar o no els elements de totes les classes. +STR_PICKER_MODE_USED :Fets servir +STR_PICKER_MODE_USED_TOOLTIP :Commuta entre mostrar o no només els elements que ja s'hagin construït. +STR_PICKER_MODE_SAVED :Desats +STR_PICKER_MODE_SAVED_TOOLTIP :Commuta entre mostrar o no només els elements desats. + +STR_PICKER_STATION_CLASS_TOOLTIP :Trieu quina classe d'estació voleu veure. +STR_PICKER_STATION_TYPE_TOOLTIP :Trieu quin tipus d'estació voleu construir. Amb Ctrl+clic, s'afegeix o es trau l'element de la llista de desats. +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Trieu quina classe de punts de control voleu veure. +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Trieu quin tipus de punt de control voleu construir. Amb Ctrl+clic, s'afegeix o es trau l'element de la llista de desats. +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Trieu quina classe d'estacions d'autobús voleu veure. +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Trieu quin tipus d'estació d'autobús voleu construir. Amb Ctrl+clic, s'afegeix o es trau l'element de la llista de desats. +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Trieu quina classe d'estació de camions voleu veure. +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Trieu un tipus d'estació de camió a construir. Amb Ctrl+clic, s'afegeix o es trau l'element de la llista de desats. +STR_PICKER_OBJECT_CLASS_TOOLTIP :Trieu quina classe d'objectes voleu veure. +STR_PICKER_OBJECT_TYPE_TOOLTIP :Trieu quin tipus d'objecte voleu construir. Amb Ctrl+clic, s'afegeix o es trau l'element de la llista de desats. Amb Ctrl+clic+arrossega es selecciona l'àrea en diagonal. Amb Maj, només es mostrarà el cost estimat de l'acció. +STR_PICKER_HOUSE_CLASS_TOOLTIP :Trieu quina zona de població voleu veure. +STR_PICKER_HOUSE_TYPE_TOOLTIP :Trieu quin tipus de casa construir. Amb Ctrl+clic, s'afegeix o es trau l'element de la llista de desats. + +STR_HOUSE_PICKER_CAPTION :Selecció de cases + +STR_HOUSE_PICKER_CLASS_ZONE1 :Vora +STR_HOUSE_PICKER_CLASS_ZONE2 :Afores +STR_HOUSE_PICKER_CLASS_ZONE3 :Suburbi exterior +STR_HOUSE_PICKER_CLASS_ZONE4 :Suburbi interior +STR_HOUSE_PICKER_CLASS_ZONE5 :Centre de la població STR_STATION_CLASS_DFLT :Per defecte STR_STATION_CLASS_DFLT_STATION :Estació per defecte @@ -2872,6 +2885,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Construe STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Construeix seccions de tramvia amb el mode Autocarretera. Amb Ctrl+clic, es trauen les vies de tramvia en lloc de construir-les. Amb Maj, només es mostrarà el cost estimat de l'acció. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construeix una cotxera (per a comprar i revisar vehicles). Amb Maj, només es mostrarà el cost estimat de l'acció. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construeix cotxeres de tramvies (per a comprar i revisar tramvies). Amb Maj, només es mostrarà el cost estimat de l'acció. +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Construeix un punt de control de carretera. Amb Ctrl, es poden construir nous punts de control i ajuntar-los amb d'altres ja existents. Amb Maj, es mostrarà el cost estimat de construcció. +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Construeix un punt de control en tramvies. Amb Ctrl, es poden construir nous punts de control i ajuntar-los amb d'altres ja existents. Amb Maj, es mostrarà el cost estimat de construcció. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Construeix estacions d'autobús. Amb Ctrl, es poden ajuntar estacions. Amb Maj, se'n mostra el cost estimat. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construeix estacions de tramvia per a passatgers. Amb Ctrl, es poden ajuntar estacions. Amb Maj, se'n mostra el cost estimat. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construeix una estació per a camions. Amb Ctrl, es poden ajuntar estacions. Amb Maj, se'n mostra el cost estimat. @@ -2960,8 +2975,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Compra t # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Selecció d'objecte -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Seleccioneu l'objecte a construir. Amb Ctrl, se selecciona una àrea diagonal. Amb Maj, es commuta entre construir i mostrar el cost estimat. -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Selecciona la classe d'objecte a construir STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Previsualització de l'objecte STR_OBJECT_BUILD_SIZE :{BLACK}Mida: {GOLD}{NUM} x {NUM} cel·les @@ -2978,9 +2991,9 @@ STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Planta a STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Planta un arbre a cada casella arrossegant el ratolí pel paisatge. STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Arbreda -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Planta petits boscos arrossegant el ratolí pel paisatge. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Planta boscos petits arrossegant el ratolí pel paisatge. STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Bosc -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Planta grans boscos arrossegant el ratolí pel paisatge. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Planta boscos grans arrossegant el ratolí pel paisatge. # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generador de terreny @@ -3052,19 +3065,19 @@ STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Cadena d STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Indústries productores STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Indústries acceptades STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Cases -STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Clica a la indústria per veure els seus proveïdors i clients +STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Clica a la indústria per veure els seus proveïdors i clients. STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Clica a la càrrega per veure els proveïdors i clients STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Cadena d'indústries STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Mostra les càrregues proveïdes i les indústries acceptades -STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Enllaç al mapa petit -STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selecciona les indústries mostrades també al mapa petit +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Mostra el minimapa +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selecciona les indústries mostrades també al minimapa. STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Selecciona la càrrega STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Selecciona la càrrega que vols mostrar STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Selecciona indústria STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Selecciona la indústria que vols mostrar # Land area window -STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informació del terreny +STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Detalls de la casella STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centra la vista principal al lloc on està la casella. Amb Ctrl+clic, s'obre una vista nova on hi ha la casella. STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cost de neteja: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cost de neteja: {RED}{CURRENCY_LONG} @@ -3076,7 +3089,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietari del rail: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoritat local: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Cap -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenades: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenades: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Índex de casella: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construït/renovat: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe d'estació: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipus d'estació: {LTBLUE}{STRING} @@ -3194,9 +3208,9 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Fotogrames per segon STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} (x{DECIMAL}) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Velocitat de simulació: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Nombre de tics del joc per segon. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Nombre de tics del joc per segon STR_FRAMERATE_RATE_BLITTER :{BLACK}Fotogrames per segon: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Nombre de fotogrames renderitzats per segon. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Nombre de fotogrames renderitzats per segon STR_FRAMERATE_SPEED_FACTOR :{BLACK}Factor de velocitat actual: x{DECIMAL} STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Quant ràpid va la partida actual, comparant-ho amb l'estimació de la velocitat normal. STR_FRAMERATE_CURRENT :{WHITE}Actual @@ -3384,13 +3398,16 @@ STR_GENERATION_WORLD :{WHITE}Generant STR_GENERATION_ABORT :{BLACK}Avorta STR_GENERATION_ABORT_CAPTION :{WHITE}Avorta la generació del mapa STR_GENERATION_ABORT_MESSAGE :{YELLOW}Realment vols avortar la generació? -STR_GENERATION_PROGRESS :{WHITE}{NUM}% complet +STR_GENERATION_PROGRESS :{WHITE}{NUM}{NBSP}% complet STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Generació del món +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Generació del terreny STR_GENERATION_RIVER_GENERATION :{BLACK}Generació de rius -STR_GENERATION_TREE_GENERATION :{BLACK}Generació d'arbres -STR_GENERATION_OBJECT_GENERATION :{BLACK}Generació inamovible STR_GENERATION_CLEARING_TILES :{BLACK}Generació d'una àrea escarpada i rocosa +STR_GENERATION_TOWN_GENERATION :{BLACK}Generació de poblacions +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Generació d'indústries +STR_GENERATION_OBJECT_GENERATION :{BLACK}Generació inamovible +STR_GENERATION_TREE_GENERATION :{BLACK}Generació d'arbres STR_GENERATION_SETTINGUP_GAME :{BLACK}Configurant la partida STR_GENERATION_PREPARING_TILELOOP :{BLACK}Passant el bucle de cel·les STR_GENERATION_PREPARING_SCRIPT :{BLACK}Executant l'script @@ -3482,7 +3499,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipus de carret STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paràmetre NewGRF variable 60+x (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alineant sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Alineació de l'sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Alineació de l'sprite: Acció 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Alineació de l'sprite: Acció 0x5, tipus {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite següent STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procedeix cap al següent sprite normal, saltant qualsevol sprite pseudo/recolor/font i passant de l'últim sprite al primer STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Vés a l'sprite @@ -3491,6 +3510,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite a STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Procedeix cap a l'sprite normal anterior, saltant qualsevol sprite pseudo/recolor/font i passant del primer sprite a l'últim STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representació de l'sprite seleccionat actualment. L'alineació s'ignora quan es dibuixa aquest sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Desplaça l'sprite un píxel en el sentit indicat. Amb Ctrl+Clic el desplaça 8 píxels. +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Modificador centrat @@ -3586,8 +3606,8 @@ STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} Ne STR_NEWGRF_SCAN_ARCHIVES :Escanejant arxius # Sign list window -STR_SIGN_LIST_CAPTION :{WHITE}Llista de senyals - {COMMA} Senyal{P "" s} -STR_SIGN_LIST_MATCH_CASE :{BLACK}Coincideix Majúscules/Minúscules +STR_SIGN_LIST_CAPTION :{WHITE}Llista de senyals - {COMMA} senyal{P "" s} +STR_SIGN_LIST_MATCH_CASE :{BLACK}Coincideix majúscules/minúscules STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Commuta minúscules/majúscules en comparar els noms dels senyals contra la cadena filtrant # Sign window @@ -3599,7 +3619,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Vés al STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Posa un nom al senyal # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Poblacions +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Poblacions ({COMMA} de {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Cap - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{BLACK} ({COMMA} -{YELLOW} ciutat{BLACK}) @@ -3766,7 +3786,7 @@ STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratis STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostra els ratis de l'estació STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}Subministrament mensual i rati local: STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}Subministrament per minut i rati local: -STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}{NBSP}%) STR_STATION_VIEW_GROUP :{BLACK}Agrupa per STR_STATION_VIEW_WAITING_STATION :Estació: En espera @@ -3933,7 +3953,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/període # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Indústries +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Indústries ({COMMA} de {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Cap - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} (transportat: {COMMA}{NBSP}%){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3951,9 +3971,9 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :Cap STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producció del darrer mes: STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Producció durant l'últim minut: -STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportat) +STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}{NBSP}% transportat) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centra la vista principal al lloc de la indústria. Amb Ctrl+clic, s'obre una vista nova centrada al lloc on és la indústria. -STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivell de producció: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivell de producció: {YELLOW}{COMMA}{NBSP}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}La indústria ha anunciat la seva clausura imminent! STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Requereix: {YELLOW}{STRING}{STRING} @@ -3965,7 +3985,7 @@ STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{0:STRI STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperant{STRING} STR_CONFIG_GAME_PRODUCTION :{WHITE}Canvia la producció (múltiple de 8, fins a 2040) -STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Canvia el nivell de producció (en percentatge, fins a 800%) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Canvia el nivell de producció (en percentatge, fins al 800{NBSP}%) # Vehicle lists ###length VEHICLE_TYPES @@ -4042,7 +4062,7 @@ STR_GROUP_PROFIT_THIS_PERIOD :Benefici durant STR_GROUP_PROFIT_LAST_YEAR :Benefici de l'any passat: STR_GROUP_PROFIT_LAST_PERIOD :Benefici durant l'últim període: STR_GROUP_OCCUPANCY :Ocupació actual: -STR_GROUP_OCCUPANCY_VALUE :{NUM}% +STR_GROUP_OCCUPANCY_VALUE :{NUM}{NBSP}% # Build vehicle window ###length 4 @@ -4072,7 +4092,7 @@ STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Cost d'u STR_PURCHASE_INFO_CAPACITY :{BLACK}Capacitat: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(remodelable) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Dissenyat: {GOLD}{NUM}{BLACK} Vida: {GOLD}{COMMA} any{P "" s} -STR_PURCHASE_INFO_RELIABILITY :{BLACK}Fiabilitat màxima: {GOLD}{COMMA}% +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Fiabilitat màxima: {GOLD}{COMMA}{NBSP}% STR_PURCHASE_INFO_COST :{BLACK}Cost: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_COST_REFIT :{BLACK}Cost: {GOLD}{CURRENCY_LONG}{BLACK} (Cost del remodelat: {GOLD}{CURRENCY_LONG}{BLACK}) STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Pes: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) @@ -4172,7 +4192,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} ve STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trens - arrossegueu el vehicle per a afegir-lo/treure'l del tren. Feu clic amb el botó dret al tren per a obtenir-ne informació. Amb Ctrl, s'apliquen les dues funcions a tota la cadena posterior. +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trens - arrossegueu el vehicle per a afegir-lo/traure'l del tren. Feu clic amb el botó dret al tren per a obtenir-ne informació. Amb Ctrl, s'apliquen les dues funcions a tota la cadena posterior. STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vehicles - clica amb el botó dret en un vehicle per més informació STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Vaixells - clica amb el botó dret en un vaixell per més informació STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Avió - clica amb el botó dret sobre l'avió per més informació @@ -4226,10 +4246,10 @@ STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centra l STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centra la vista principal al lloc de l'hangar. Amb Ctrl+clic, s'obre una vista nova on hi ha l'hangar. ###length VEHICLE_TYPES -STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Treure una llista de tots els trens amb aquesta cotxera en les seves ordres -STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Treure una llista de tots els vehicles amb aquesta cotxera en les seves ordres -STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Treure una llista de tots els vaixells amb aquesta drassana en les seves ordres -STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Treu una llista de tots els avions amb algun hangar d'aquest aeroport en les seves ordres +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Mostra una llista de tots els trens que tinguin aquesta cotxera en alguna ordre. +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Mostra una llista de tots els vehicles que tinguin aquesta cotxera en alguna ordre. +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Mostra una llista de tots els vaixells que tinguin aquesta drassana en alguna ordre. +STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Mostra una llista de tots els avions que tinguin algun hangar d'aquest aeroport en les seves ordres. ###length VEHICLE_TYPES STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Clica per parar tots els trens de dins de la cotxera @@ -4432,7 +4452,7 @@ STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Benefici STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Benefici aquest any: {LTBLUE}{CURRENCY_LONG} (l'any passat: {CURRENCY_LONG}) {BLACK}Rendiment mínim: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Benefici durant aquest període: {LTBLUE}{CURRENCY_LONG} (durant l'últim període: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Benefici durant aquest període: {LTBLUE}{CURRENCY_LONG} (durant l'últim període: {CURRENCY_LONG}) {BLACK}Rendiment mínim: {LTBLUE}{POWER_TO_WEIGHT} -STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilitat: {LTBLUE}{COMMA}% {BLACK}Avaries des de la darrera revisió: {LTBLUE}{COMMA} +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilitat: {LTBLUE}{COMMA}{NBSP}% {BLACK}Avaries des de la darrera revisió: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Fabricat: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Capacitat: {LTBLUE}Cap{STRING} @@ -4637,7 +4657,7 @@ STR_ORDER_REFIT_ORDER :(Remodela a {ST STR_ORDER_REFIT_STOP_ORDER :(Remodela a {STRING} i para) STR_ORDER_STOP_ORDER :(Para) -STR_ORDER_WAIT_TO_UNBUNCH :(espera per a deixar espai entre vehicles) +STR_ORDER_WAIT_TO_UNBUNCH :(Espera per a deixar espai entre vehicles) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(No pot usar l'estació){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4841,8 +4861,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de la pa STR_AI_SETTINGS_CLOSE :{BLACK}Tanca STR_AI_SETTINGS_RESET :{BLACK}Restableix STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4868,14 +4886,14 @@ STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}Document # Vehicle loading indicators -STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} -STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} -STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} -STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} -STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} -STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} -STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% -STR_PERCENT_NONE :{WHITE}{NUM}% +STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}%{UP_ARROW} +STR_PERCENT_UP :{WHITE}{NUM}{NBSP}%{UP_ARROW} +STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}%{DOWN_ARROW} +STR_PERCENT_DOWN :{WHITE}{NUM}{NBSP}%{DOWN_ARROW} +STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}%{UP_ARROW}{DOWN_ARROW} +STR_PERCENT_UP_DOWN :{WHITE}{NUM}{NBSP}%{UP_ARROW}{DOWN_ARROW} +STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}% +STR_PERCENT_NONE :{WHITE}{NUM}{NBSP}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Cost: {CURRENCY_LONG} @@ -4895,9 +4913,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingresso STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Es desa la partida.{}Espera que acabi l'operació! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Ha fallat el desat automàtic STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Impossible llegir la unitat de disc -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Error guardant la partida{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}La partida no s'ha pogut desar... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Impossible esborrar l'arxiu -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Error carregant la partida{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}La partida no s'ha pogut carregar... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Error Intern: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :L'arxiu de la partida està corromput - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida està desada amb una versió més moderna @@ -4991,7 +5009,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}No pots STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}No es pot construir la seu de la companyia... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Impossible construir poblacions +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Impossible construir poblacions... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}No es pot canviar el nom de la població... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}No es pot construir una població aquí... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No es pot expandir la població... @@ -5002,6 +5020,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}...no qu STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obres en progrés STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No es pot eliminar aquesta població...{}Hi ha una estació, un dipòsit o una cel·la pertanyent a la població que no pot ser eliminada STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no hi ha un lloc adequat per situar l'estàtua al centre d'aquesta població +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}La casa no es pot construir... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... massa indústries @@ -5039,6 +5058,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Aquí no STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Fusiona més d'una estació/àrea de càrrega existent STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... estació massa extensa +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... nombre de vies no vàlid +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... llargada no vàlida STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Massa estacions/àrees de càrrega STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Hi ha massa parts d'estacions de tren STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Massa parades d'autobús @@ -5074,11 +5095,14 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Més d'u STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Massa prop d'un altre punt de control STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Aquí no es pot construir un punt de pas de tren... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Aquí no es pot construir un punt de pas de carretera... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Aquí no es pot situar una boia... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}No es pot canviar el nom del punt de pas... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Aquí no es pot treure un punt de pas de tren... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Aquí no es pot traure cap punt de pas de carretera... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}...abans s'ha de treure el punt de pas. +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}...abans s'ha de traure el punt de pas de carretera. STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boia en el camí STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boia en ús per una altra companyia! @@ -5279,6 +5303,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Canvia l STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Encara no hi ha vehicles disponibles STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Inicieu una partida nova després de {DATE_SHORT} o useu un NewGRF que proporcioni vehicles primerencs. +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Les poblacions no disposen de tipus de carretera que puguin construir. +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Canvieu la configuració dels NewGRF +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Encara no hi ha tipus de carretera disponibles per a les poblacions. +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Comenceu una partida nova després del {DATE_SHORT} o feu servir un NewGRF que proporcioni tipus de carretera que puguin construir les poblacions. + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}No pots fer que un tren passi d'una senyal amb perill... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}No es pot invertir la direcció del tren... @@ -5321,6 +5350,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}No hi ha STR_ERROR_AIRPORT_NO_PLANES :{WHITE}L'avió no pot aterrar en aquest aeroport STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}L'helicòpter no pot aterrar en aquest aeroport STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}No hi ha cap punt de pas ferroviari +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}No hi ha cap punt de control de carretera. STR_ERROR_NO_BUOY :{WHITE}No hi ha cap boia # Timetable related errors @@ -5391,43 +5421,43 @@ STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Banc-guardiola ##id 0x4800 # industry names -STR_INDUSTRY_NAME_COAL_MINE :{G=Femenin}Mina de Carbó -STR_INDUSTRY_NAME_POWER_STATION :{G=Femenin}Central Tèrmica +STR_INDUSTRY_NAME_COAL_MINE :{G=Femenin}Mina de carbó +STR_INDUSTRY_NAME_POWER_STATION :{G=Femenin}Central tèrmica STR_INDUSTRY_NAME_SAWMILL :{G=Femenin}Serradora STR_INDUSTRY_NAME_FOREST :{G=Masculin}Bosc -STR_INDUSTRY_NAME_OIL_REFINERY :{G=Femenin}Refineria de Petroli -STR_INDUSTRY_NAME_OIL_RIG :{G=Femenin}Plataforma Petrolífera +STR_INDUSTRY_NAME_OIL_REFINERY :{G=Femenin}Refineria de petroli +STR_INDUSTRY_NAME_OIL_RIG :{G=Femenin}Plataforma petrolífera STR_INDUSTRY_NAME_FACTORY :{G=Femenin}Fàbrica STR_INDUSTRY_NAME_PRINTING_WORKS :{G=Femenin}Impremta -STR_INDUSTRY_NAME_STEEL_MILL :{G=Masculin}Alt Forn +STR_INDUSTRY_NAME_STEEL_MILL :{G=Masculin}Alt forn STR_INDUSTRY_NAME_FARM :{G=Femenin}Granja -STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=Femenin}Mina de Coure -STR_INDUSTRY_NAME_OIL_WELLS :{G=Masculin}Pou de Petroli +STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=Femenin}Mina de coure +STR_INDUSTRY_NAME_OIL_WELLS :{G=Masculin}Pou de petroli STR_INDUSTRY_NAME_BANK :{G=Masculin}Banc STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=Femenin}Planta de Manipulació de Queviures -STR_INDUSTRY_NAME_PAPER_MILL :{G=Femenin}Indústria Paperera -STR_INDUSTRY_NAME_GOLD_MINE :{G=Femenin}Mina d'Or +STR_INDUSTRY_NAME_PAPER_MILL :{G=Femenin}Indústria paperera +STR_INDUSTRY_NAME_GOLD_MINE :{G=Femenin}Mina d'or STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=Masculin}Banc STR_INDUSTRY_NAME_DIAMOND_MINE :{G=Femenin}Mina de Diamants -STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=Femenin}Mina de Ferro -STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=Femenin}Plantació de Fruita -STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=Femenin}Plantació de Cautxú -STR_INDUSTRY_NAME_WATER_SUPPLY :{G=Masculin}Sortidor d'Aigua -STR_INDUSTRY_NAME_WATER_TOWER :{G=Femenin}Torre d'Aigua +STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=Femenin}Mina de ferro +STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=Femenin}Plantació de fruita +STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=Femenin}Plantació de cautxú +STR_INDUSTRY_NAME_WATER_SUPPLY :{G=Masculin}Sortidor d'aigua +STR_INDUSTRY_NAME_WATER_TOWER :{G=Femenin}Torre d'aigua STR_INDUSTRY_NAME_FACTORY_2 :{G=Femenin}Fàbrica STR_INDUSTRY_NAME_FARM_2 :{G=Femenin}Granja STR_INDUSTRY_NAME_LUMBER_MILL :{G=Femenin}Serradora -STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=Masculin}Bosc de Cotó de Sucre -STR_INDUSTRY_NAME_CANDY_FACTORY :{G=Femenin}Fàbrica de Dolços -STR_INDUSTRY_NAME_BATTERY_FARM :{G=Femenin}Granja de Piles -STR_INDUSTRY_NAME_COLA_WELLS :{G=Masculin}Pou de Refrescs -STR_INDUSTRY_NAME_TOY_SHOP :{G=Femenin}Botiga de Joguines -STR_INDUSTRY_NAME_TOY_FACTORY :{G=Femenin}Fàbrica de Joguines -STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=Femenin}Font de Plàstic -STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=Femenin}Fàbrica de Begudes Gasoses -STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=Masculin}Generador de Bombolles -STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=Femenin}Pedrera de Caramel -STR_INDUSTRY_NAME_SUGAR_MINE :{G=Femenin}Mina de Sucre +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=Masculin}Bosc de cotó de sucre +STR_INDUSTRY_NAME_CANDY_FACTORY :{G=Femenin}Fàbrica de dolços +STR_INDUSTRY_NAME_BATTERY_FARM :{G=Femenin}Granja de piles +STR_INDUSTRY_NAME_COLA_WELLS :{G=Masculin}Pou de refrescos +STR_INDUSTRY_NAME_TOY_SHOP :{G=Femenin}Botiga de joguines +STR_INDUSTRY_NAME_TOY_FACTORY :{G=Femenin}Fàbrica de joguines +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=Femenin}Font de plàstic +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=Femenin}Fàbrica de begudes gasoses +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=Masculin}Generador de bombolles +STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=Femenin}Pedrera de caramel +STR_INDUSTRY_NAME_SUGAR_MINE :{G=Femenin}Mina de sucre ############ WARNING, using range 0x6000 for strings that are stored in the savegame ############ These strings may never get a new id, or savegames will break! @@ -5447,7 +5477,7 @@ STR_SV_STNAME_SOUTH :{STRING} Sud STR_SV_STNAME_EAST :{STRING} Est STR_SV_STNAME_WEST :{STRING} Oest STR_SV_STNAME_CENTRAL :{STRING} Central -STR_SV_STNAME_TRANSFER :{STRING} Transbord +STR_SV_STNAME_TRANSFER :Transbord de {STRING} STR_SV_STNAME_HALT :Parada de {STRING} STR_SV_STNAME_VALLEY :Vall de {STRING} STR_SV_STNAME_HEIGHTS :Pic de {STRING} @@ -5523,7 +5553,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :{G=Masculin}Vag STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :{G=Masculin}Vagó de cotó de sucre STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :{G=Masculin}Vagó de caramels STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :{G=Masculin}Vagó de bombolles -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :{G=Masculin}Tanc de refresc +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :{G=Masculin}Tanc de refrescos STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :{G=Masculin}Vagó de dolços STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :{G=Masculin}Vagó de joguines STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :{G=Masculin}Vagó de piles @@ -5553,7 +5583,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :{G=Masculin}Vag STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :{G=Masculin}Vagó de cotó de sucre STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :{G=Masculin}Vagó de caramels STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :{G=Masculin}Vagó de bombolles -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :{G=Masculin}Tanc de refresc +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :{G=Masculin}Tanc de refrescos STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :{G=Masculin}Vagó de dolços STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :{G=Masculin}Vagó de joguines STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :{G=Masculin}Vagó de piles @@ -5585,7 +5615,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :{G=Masculin}Vag STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :{G=Masculin}Vagó de cotó de sucre STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :{G=Masculin}Vagó de caramels STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :{G=Masculin}Vagó de bombolles -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :{G=Masculin}Tanc de refresc +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :{G=Masculin}Tanc de refrescos STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :{G=Masculin}Vagó de dolços STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :{G=Masculin}Vagó de joguines STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :{G=Masculin}Vagó de piles @@ -5600,100 +5630,100 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :{G=Masculin}Aut STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :{G=Masculin}Autobús Ploddyphut MkI STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :{G=Masculin}Autobús Ploddyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :{G=Masculin}Autobús Ploddyphut MkIII -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :{G=Masculin}Camió per Carbó Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :{G=Masculin}Camió per Carbó Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :{G=Masculin}Camió per Carbó DW -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :{G=Masculin}Camió per Correu MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :{G=Masculin}Camió per Correu Reynard -STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :{G=Masculin}Camió per Correu Perry -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :{G=Masculin}Camió per Correu MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :{G=Masculin}Camió per Correu Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :{G=Masculin}Camió per Correu Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :{G=Femenin}Cuba de Petroli Witcombe -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :{G=Femenin}Cuba de Petroli Foster -STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :{G=Femenin}Cuba de Petroli Perry -STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :{G=Masculin}Camió de Bestiar Talbott -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :{G=Masculin}Vagó de Bestiar Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :{G=Masculin}Camió de Bestiar Foster -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :{G=Masculin}Camió de Mercaderies Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :{G=Masculin}Camió de Mercaderies Craighead -STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :{G=Masculin}Camió de Mercaderies Goss -STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :{G=Masculin}Camió per Gra Hereford -STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :{G=Masculin}Camió per Gra Thomas -STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :{G=Masculin}Camió per Gra Goss -STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :{G=Masculin}Camió per Fusta Witcombe -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :{G=Masculin}Camió per Fusta Foster -STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :{G=Masculin}Camió per Fusta Moreland -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :{G=Masculin}Camió per Mineral de Ferro MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :{G=Masculin}Camió per Mineral de Ferro Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :{G=Masculin}Camió per Mineral de Ferro Chippy -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :{G=Masculin}Camió per Acer Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :{G=Masculin}Camió per Acer Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :{G=Masculin}Camió per Acer Kelling -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :{G=Masculin}Furgó Blindat Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :{G=Masculin}Furgó Blindat Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :{G=Masculin}Furgó Blindat Foster -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :{G=Masculin}Camió per Queviures Foster -STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :{G=Masculin}Camió per Queviures Perry -STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :{G=Masculin}Camió per Queviures Chippy -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :{G=Masculin}Camió per Paper Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :{G=Masculin}Camió per Paper Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :{G=Masculin}Camió per Paper MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :{G=Masculin}Camió per Mineral de Coure MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :{G=Masculin}Camió per Mineral de Coure Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :{G=Masculin}Camió per Mineral de Coure Goss -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :{G=Femenin}Cuba d'Aigua Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :{G=Femenin}Cuba d'Aigua Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :{G=Femenin}Cuba d'Aigua MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :{G=Masculin}Camió per Fruita Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :{G=Masculin}Camió per Fruita Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :{G=Masculin}Camió per Fruita Kelling -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :{G=Masculin}Camió per Cautxú Balogh -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Camió per Cautxú Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :{G=Masculin}Camió per Cautxú RMT -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :{G=Masculin}Camió per Sucre MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :{G=Masculin}Camió per Sucre Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :{G=Masculin}Camió per Sucre Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :{G=Masculin}Camió per Refrescs MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :{G=Masculin}Camió per Refrescs Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :{G=Masculin}Camió per Refrescs Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :{G=Masculin}Camió per Cotó de Sucre MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :{G=Masculin}Camió per Cotó de Sucre Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :{G=Masculin}Camió per Cotó de Sucre Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :{G=Masculin}Camió per Caramels MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :{G=Masculin}Camió per Caramels Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :{G=Masculin}Camió per Caramels Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :{G=Masculin}Camió per Joguines MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :{G=Masculin}Camió per Joguines Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :{G=Masculin}Camió per Joguines Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :{G=Masculin}Camió per Dolços MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :{G=Masculin}Camió per Dolços Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :{G=Masculin}Camió per Dolços Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :{G=Masculin}Camió per Piles MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :{G=Masculin}Camió per Piles Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :{G=Masculin}Camió per Piles Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :{G=Masculin}Camió per Begudes Gasoses MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :{G=Masculin}Camió per Begudes Gasoses Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :{G=Masculin}Camió per Begudes Gasoses Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :{G=Masculin}Camió per Plàstic MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :{G=Masculin}Camió per Plàstic Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :{G=Masculin}Camió per Plàstic Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :{G=Masculin}Camió per Bombolles MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :{G=Masculin}Camió per Bombolles Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :{G=Masculin}Camió per Bombolles Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :{G=Masculin}Camió de carbó Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :{G=Masculin}Camió de carbó Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :{G=Masculin}Camió de carbó DW +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :{G=Masculin}Camió de correu MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :{G=Masculin}Camió de correu Reynard +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :{G=Masculin}Camió de correu Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :{G=Masculin}Camió de correu MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :{G=Masculin}Camió de correu Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :{G=Masculin}Camió de correu Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :{G=Femenin}Cuba de petroli Witcombe +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :{G=Femenin}Cuba de petroli Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :{G=Femenin}Cuba de petroli Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :{G=Masculin}Camió de bestiar Talbott +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :{G=Masculin}Vagó de bestiar Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :{G=Masculin}Camió de bestiar Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :{G=Masculin}Camió de mercaderies Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :{G=Masculin}Camió de mercaderies Craighead +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :{G=Masculin}Camió de mercaderies Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :{G=Masculin}Camió de gra Hereford +STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :{G=Masculin}Camió de gra Thomas +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :{G=Masculin}Camió de gra Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :{G=Masculin}Camió de fusta Witcombe +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :{G=Masculin}Camió de fusta Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :{G=Masculin}Camió de fusta Moreland +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :{G=Masculin}Camió de mineral de ferro MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :{G=Masculin}Camió de mineral de ferro Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :{G=Masculin}Camió de mineral de ferro Chippy +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :{G=Masculin}Camió d'acer Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :{G=Masculin}Camió d'acer Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :{G=Masculin}Camió d'acer Kelling +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :{G=Masculin}Furgó blindat Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :{G=Masculin}Furgó blindat Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :{G=Masculin}Furgó blindat Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :{G=Masculin}Camió de queviures Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :{G=Masculin}Camió de queviures Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :{G=Masculin}Camió de queviures Chippy +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :{G=Masculin}Camió de paper Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :{G=Masculin}Camió de paper Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :{G=Masculin}Camió de paper MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :{G=Masculin}Camió de mineral de coure MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :{G=Masculin}Camió de mineral de coure Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :{G=Masculin}Camió de mineral de coure Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :{G=Femenin}Cuba d'aigua Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :{G=Femenin}Cuba d'aigua Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :{G=Femenin}Cuba d'aigua MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :{G=Masculin}Camió de fruita Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :{G=Masculin}Camió de fruita Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :{G=Masculin}Camió de fruita Kelling +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :{G=Masculin}Camió de cautxú Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Camió de cautxú Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :{G=Masculin}Camió de cautxú RMT +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :{G=Masculin}Camió de sucre MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :{G=Masculin}Camió de sucre Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :{G=Masculin}Camió de sucre Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :{G=Masculin}Camió de refrescos MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :{G=Masculin}Camió de refrescos Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :{G=Masculin}Camió de refrescos Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :{G=Masculin}Camió de cotó de sucre MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :{G=Masculin}Camió de cotó de sucre Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :{G=Masculin}Camió de cotó de sucre Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :{G=Masculin}Camió de caramels MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :{G=Masculin}Camió de caramels Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :{G=Masculin}Camió de caramels Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :{G=Masculin}Camió de joguines MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :{G=Masculin}Camió de joguines Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :{G=Masculin}Camió de joguines Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :{G=Masculin}Camió de dolços MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :{G=Masculin}Camió de dolços Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :{G=Masculin}Camió de dolços Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :{G=Masculin}Camió de piles MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :{G=Masculin}Camió de piles Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :{G=Masculin}Camió de piles Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :{G=Masculin}Camió de begudes gasoses MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :{G=Masculin}Camió de begudes gasoses Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :{G=Masculin}Camió de begudes gasoses Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :{G=Masculin}Camió de plàstic MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :{G=Masculin}Camió de plàstic Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :{G=Masculin}Camió de plàstic Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :{G=Masculin}Camió de bombolles MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :{G=Masculin}Camió de bombolles Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :{G=Masculin}Camió de bombolles Wizzowow ###length 11 STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :{G=Masculin}Petroler MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :{G=Masculin}Petroler CS-Inc. -STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :{G=Masculin}Ferry de Passatgers MPS -STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :{G=Masculin}Ferry de Passatgers FFP +STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :{G=Masculin}Ferry de passatgers MPS +STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :{G=Masculin}Ferry de passatgers FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :{G=Masculin}Hovercraft Bakewell 300 -STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :{G=Masculin}Ferry de Passatgers Chugger-Chug -STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :{G=Masculin}Ferry de Passatgers Shivershake -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :{G=Masculin}Vaixell Mercant Yate -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :{G=Masculin}Vaixell Mercant Bakewell -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :{G=Masculin}Vaixell Mercant MightyMover -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :{G=Masculin}Vaixell Mercant Powernaut +STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :{G=Masculin}Ferry de passatgers Chugger-Chug +STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :{G=Masculin}Ferry de passatgers Shivershake +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :{G=Masculin}Vaixell mercant Yate +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :{G=Masculin}Vaixell mercant Bakewell +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :{G=Masculin}Vaixell mercant MightyMover +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :{G=Masculin}Vaixell mercant Powernaut ###length 41 STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :{G=Masculin}Sampson U52 @@ -5808,6 +5838,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}M +STR_CURRENCY_SHORT_GIGA :{NBSP}G +STR_CURRENCY_SHORT_TERA :{NBSP}T + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5824,6 +5859,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index 6c772d9192..ee2e1d142e 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -231,6 +231,7 @@ STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Объе STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Вӗҫле + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Вӑййи майлаштару @@ -459,7 +460,7 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Пӗлт -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_RUR :Вырӑсла тенкӗ STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Хӑй управ @@ -493,9 +494,11 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :расна + # Custom currency window + STR_CURRENCY_PREFIX :{LTBLUE}Префикс: {ORANGE}{STRING} STR_CURRENCY_SUFFIX :{LTBLUE}Суффикс: {ORANGE}{STRING} @@ -637,6 +640,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аэропор ###length 2 + ###length 2 @@ -751,6 +755,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31 +###length 3 + ###setting-zero-is-special @@ -842,8 +848,6 @@ STR_CONFIG_SETTING_VEHICLES :Ҫул-йӗр: STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Хуласем STR_CONFIG_SETTING_AI :Ӑмӑртуҫӑсем -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF # Config errors @@ -996,8 +1000,6 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Вырн -# Network set password - # Network company info join/password # Network chat @@ -1006,7 +1008,7 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Вырн # Network messages -###length 21 +###length 22 # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} @@ -1056,6 +1058,9 @@ STR_CONTENT_DETAIL_VERSION :{SILVER}Вер + + + # Signal window # Bridge selection window @@ -1708,6 +1713,7 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Ҫул + # Specific vehicle errors @@ -1810,6 +1816,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index a27afb423a..748929c37b 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -368,7 +368,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Uključi STR_BUTTON_DEFAULT :{BLACK}Zadano STR_BUTTON_CANCEL :{BLACK}Odustani STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Upozorenje: Administratori servera mogu pročitati bilo koji tekst upisan ovdje. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -486,6 +485,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Odustani od ure STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Izlaz + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Postavke igre @@ -968,7 +968,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Novčane STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor novčanih jedinica -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Funte STR_GAME_OPTIONS_CURRENCY_USD :Američki Dolar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1055,6 +1055,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatne + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Povlačenje liste podržanih rezolucija nije uspjelo STR_ERROR_FULLSCREEN_FAILED :{WHITE}Prikaz na cijelom zaslonu nije uspio @@ -1066,6 +1067,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Smanjite STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Povećajte iznos vaše valute za jednu funtu (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Postavite omjer zamjene vaše valute za jednu funtu (£) + STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Postavite prefiks za vašu valutu STR_CURRENCY_SUFFIX :{LTBLUE}Sufiks: {ORANGE}{STRING} @@ -1408,6 +1410,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Upozori ako pri ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Kada je uključeno, poruka vijesti se prikazuje kada vozilo nije uprihodilo ništa tijekom kalendarske godine + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozila ne zastarjevaju: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kada je uključeno, svi modeli vozila zauvijek ostaju dostupni nakon njihovog uvođenja @@ -1704,7 +1707,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Zadani interval STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Postavi osnovni interval servisa za nove zrakoplove, ako nije postavljen drugi specifični interval za određeno vozilo STR_CONFIG_SETTING_SERVINT_SHIPS :Zadani interval servisiranja za brodove: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Postavi osnovni interval servisa za nove brodove, ako nije postavljen drugi specifični interval za određeno vozilo -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dan{P 0 "" a a}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Isključeno @@ -1973,17 +1977,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribucija te STR_CONFIG_SETTING_AI :Suparnici STR_CONFIG_SETTING_AI_NPC :Računalni igrači -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pronalaženje putanje za vlakove: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pronalazač puteva koji će se koristiti za vlakove -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pronalaženje putanje za cestovna vozila: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pronalazač puteva koji će se koristiti za cestovna vozila -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pronalaženje putanje za brodove: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Pronalazač puteva koji će se koristiti za brodove STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatsko okretanje na signalima: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Dozvoli vlakovima okretanje kod signala ako tamo čekaju duže vrijeme -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Preporučljivo) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Promijeni vrijednost postavke @@ -2260,7 +2255,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Dohvaća STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Odspoji STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Poslužitelj je zaštićen. Unesite zaporku -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Tvrtka je zaštićena. Unesite zaporku # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Online igrači @@ -2288,19 +2282,9 @@ STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Da, samo STR_NETWORK_SPECTATORS :Promatrači -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nemoj spremiti upisanu zaporku -STR_COMPANY_PASSWORD_OK :{BLACK}Daj tvrtci novu zaporku -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Zaporka tvrtke -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Inicijalna zaporka tvrtke -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Uporabi zaporku ove tvrtke kao inicijalnu za nove tvrtke - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Pridruži se STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pridruži se i igraj kao ova tvrtka -STR_COMPANY_VIEW_PASSWORD :{BLACK}Zaporka -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Zaštiti šifrom svoju tvrtku od korištenja od strane neovlaštenih korisnika. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Postavi zaporku tvrtke # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Pošalji @@ -2343,7 +2327,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Tvoje im STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Moguć gubitak veze STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Zadnjih {NUM} sekundi nisu primljeni podaci sa servera -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :opća greška STR_NETWORK_ERROR_CLIENT_DESYNC :greška u sinkronizaciji STR_NETWORK_ERROR_CLIENT_SAVEGAME :nije moguće učitati kartu @@ -2543,7 +2527,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Odaberi # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Čvorište -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Odaberi vrstu čvorišta # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Izbor željezničke postaje @@ -2556,8 +2539,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Odaberi STR_STATION_BUILD_DRAG_DROP :{BLACK}Povuci i spusti STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Napravi postaju koristeći drag & drop -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Odaberi vrstu postaje za prikazivanje -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Odaberi vrstu postaje za izgradnju + + + STR_STATION_CLASS_DFLT :Zadana postaja STR_STATION_CLASS_WAYP :Čvorišta @@ -2692,8 +2676,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kupi zem # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Odabir objekta -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Odaberi objekt za izgradnju. Shift mijenja prikaz građenje/procjena troškova. -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Odaberi vrstu objekta za izgradnju STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Pregled objekta STR_OBJECT_BUILD_SIZE :{BLACK}Veličina: {GOLD}{NUM} x {NUM} polja @@ -2795,7 +2777,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Vlasnik željeznice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Područna nadležnost: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nijedan/Nitko/Ništa -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinate: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Izgrađeno: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Klasa postaje: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta postaje: {LTBLUE}{STRING} @@ -3080,9 +3061,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% g STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Izrada svijeta STR_GENERATION_RIVER_GENERATION :{BLACK}Generiranje rijeka -STR_GENERATION_TREE_GENERATION :{BLACK}Generiranje drveća -STR_GENERATION_OBJECT_GENERATION :{BLACK}Nepomično generiranje STR_GENERATION_CLEARING_TILES :{BLACK}Generiranje grubog i stjenovitog područja +STR_GENERATION_OBJECT_GENERATION :{BLACK}Nepomično generiranje +STR_GENERATION_TREE_GENERATION :{BLACK}Generiranje drveća STR_GENERATION_SETTINGUP_GAME :{BLACK}Pripremam igru STR_GENERATION_PREPARING_TILELOOP :{BLACK}Izvršavam tile-petlju STR_GENERATION_PREPARING_SCRIPT :{BLACK}Izvođenje skripte u tijeku @@ -3172,7 +3153,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Vrsta željezni STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF varijabla 60+x parametar (heksadecimalni) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Poravnanje sprite-a {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sljedeći sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Otiđi na sljedeći normalni sprite, preskačući svaki pseudo/prebojani/font sprite i nakon dolaska na zadnjeg prebaci na prvi STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Otiđi na sprite @@ -3284,7 +3264,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Idi do p STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Unesi ime znaka # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Gradovi STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ništa - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Grad){BLACK} ({COMMA}) @@ -3569,7 +3548,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Polje s STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Zračne luke # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrije STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ništa - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% prevezeno){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4444,9 +4422,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Predviđ STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Spremanje još u tijeku,{}molimo pričekajte dok se ne završi! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatsko spremanje neuspješno STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ne mogu pročitati disk -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spremanje igre nije uspjelo{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ne mogu obrisati datoteku -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Učitavanje igre nije uspjelo{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna greška: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Pokvarena spremljena igra - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spremljena igra je stvorena s novijom verzijom @@ -4815,6 +4791,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Promijen STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Još nema dostupnih vozila STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Pokreni novu igru nakon {DATE_SHORT} ili upotrijebi NewGRF koji daje vrlo rana vozila + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nije moguće natjerati vlak da ignorira signale dok traje opasnost... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nije moguće promijeniti smjer vlaka... @@ -5364,6 +5341,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/czech.txt b/src/lang/czech.txt index d102c0600b..30bbcad19b 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -383,7 +383,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Zapnutí STR_BUTTON_DEFAULT :{BLACK}Původní STR_BUTTON_CANCEL :{BLACK}Zrušit STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Upozornění: Administrátor serveru může zjistit a přečíst jakýkoliv text sem vložený. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :"+ěščřžýáíé=-\qwertyuiopú)asdfghjklů' zxcvbnm,./ . @@ -513,6 +512,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Ukončit editor STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Ukončit + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Možnosti hry @@ -1043,18 +1043,13 @@ STR_GAME_OPTIONS_VOLUME :Hlasitost STR_GAME_OPTIONS_SFX_VOLUME :Zvukové efekty STR_GAME_OPTIONS_MUSIC_VOLUME :Hudba -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25 % -STR_GAME_OPTIONS_VOLUME_50 :50 % -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Měna STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výběr jednotek měny STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Libra STR_GAME_OPTIONS_CURRENCY_USD :Dolar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1144,11 +1139,6 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Zaškrtn STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-aliasovat písma STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Zaškrtni toto políčko pro zapnutí anti-aliasování škálovatelných písem. -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatický průzkum STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Účastnit se automatického průzkumu @@ -1177,6 +1167,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Základn STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vyberte jaký základní hudební set použít STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Další informace o základním hudebním setu + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(nejsou nainstalovány žádné zásuvné moduly pro integraci sociálních platforem) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1204,6 +1195,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Snížit STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zvýšit hodnotu vlastní měny oproti libře (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Určit směnný kurz vlastní měny oproti libře (£) + STR_CURRENCY_PREFIX :{LTBLUE}Předpona: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Určit předponu pro vlastní měnu STR_CURRENCY_SUFFIX :{LTBLUE}Přípona: {ORANGE}{STRING} @@ -1574,6 +1566,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Varovat, pokud STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Pokud je zapnuto, budou zobrazovány zprávy o vozidlech, která v posledním roce neměla žádný zisk. STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Pokud je zapnuto, budou zobrazovány zprávy o vozidlech, která v posledním období neměla žádný zisk. + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozidlům se nikdy nezastaví výroba ('nezastarají'): {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Pokud je zapnuto, všechny modely vlaků zůstanou po uvedení dostupné napořád. (nezastarají) @@ -1915,7 +1908,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Základní serv STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Nastaví defaultní servisní interval pro letadla, pokud letadlo nemá nastaveno jiný servisní interval STR_CONFIG_SETTING_SERVINT_SHIPS :Základní servisní interval pro lodě: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Nastaví defaultní servisní interval pro lodě pokud loď nemá nastaven jiný servisní interval -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}D{P en ní ""}/Minut{P a y ""}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Vypnuto @@ -2215,17 +2209,8 @@ STR_CONFIG_SETTING_AI :Konkurenti STR_CONFIG_SETTING_AI_NPC :Umělá inteligence STR_CONFIG_SETTING_NETWORK :Síť -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Hledač cesty pro vlaky: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Hledač cesty pro vlaky -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Hledač cesty pro silniční vozidla: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Hledač cesty pro vozidla -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Hledač cesty pro lodě: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Hledač cesty pro lodě STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatické otáčení vlaků na semaforech: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Povoluje vlakům otočit se na semaforech, pokud čekají příliš dlouho -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(doporučený) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Změnit hodnotu nastavení @@ -2544,7 +2529,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Přijím STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Odpojit se STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server je chráněný. Napiš heslo -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Společnost je chráněná. Napiš heslo # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Seznam hráčů @@ -2593,13 +2577,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Přes re STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Vyhodit STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Ban STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Smazat -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Odemčení hesla STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Administrátorská akce STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Opravdu chceš vyhodit hráče '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Opravdu chceš zabanovat hráče '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Jste si jisti, že chcete smazat společnost '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Opravdu chcete obnovit heslo společnosti '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Použít relay? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Nepodařilo se vytvořit spojení mezi tebou a serverem '{STRING}'.{}Chceš propojit toto sezení přes relay '{STRING}'? @@ -2616,19 +2598,9 @@ STR_NETWORK_ASK_SURVEY_YES :Ano STR_NETWORK_SPECTATORS :Pozorovatelé -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neukládat zadané heslo -STR_COMPANY_PASSWORD_OK :{BLACK}Změnit heslo společnosti -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Heslo společnosti -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Výchozí heslo společností -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Použít toto heslo jako výchozí pro nově založené společnosti - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Přidat se STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Připojit se a hrát za tuto společnost -STR_COMPANY_VIEW_PASSWORD :{BLACK}Heslo -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Heslo - zabrání neautorizovaným uživatelům v připojení se k tvé společnosti -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Nastav heslo společnosti # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Poslat @@ -2672,7 +2644,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Jméno v STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Pravděpodobná ztráta spojení STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Během poslední{P 0 "" ch ch} {NUM} sekund{P y "" ""} nepřišla ze serveru žádná data -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :všeobecná chyba STR_NETWORK_ERROR_CLIENT_DESYNC :chyba v synchronizaci STR_NETWORK_ERROR_CLIENT_SAVEGAME :nelze nahrát hru @@ -2889,7 +2861,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Zvolit o # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Směrování -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vyber typ směrování # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Výběr nádraží @@ -2902,8 +2873,11 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Zvolit d STR_STATION_BUILD_DRAG_DROP :{BLACK}Táhni a pusť STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Stavět stanice pomocí tahaní myši -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vyber, který druh stanic se má zobrazit -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vyber typ stavěné stanice + + + +STR_HOUSE_PICKER_CLASS_ZONE1 :Okraj +STR_HOUSE_PICKER_CLASS_ZONE2 :Periferie STR_STATION_CLASS_DFLT :Původní STR_STATION_CLASS_DFLT_STATION :Původní stanice @@ -3046,8 +3020,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Zakoupit # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Výběr objektu -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Vyberte objekt k postavení. Při stisknutí Ctrl+Klik+Tažení vyberte oblast diagonálně. Pro zobrazení pouze odhadovaných nákladů stiskněte také klávesu Shift. -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Vyberte třídu objektu, který chcete postavit STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Náhled objektu STR_OBJECT_BUILD_SIZE :{BLACK}Velikost: {GOLD}{NUM}{NBSP}x{NBSP}{NUM} @@ -3168,7 +3140,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Majitel STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Majitel tratě: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Místní správa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nic -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Souřadnice: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Postaveno/obnoveno: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Třída stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Druh stanice: {LTBLUE}{STRING} @@ -3480,9 +3451,9 @@ STR_GENERATION_PROGRESS :{WHITE}Z{NBSP}{ STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Tvorba krajiny STR_GENERATION_RIVER_GENERATION :{BLACK}Generování řek -STR_GENERATION_TREE_GENERATION :{BLACK}Výsadba stromů -STR_GENERATION_OBJECT_GENERATION :{BLACK}Výstavba nepřesunutelných objektů STR_GENERATION_CLEARING_TILES :{BLACK}Tvorba členitého a kamenitého území +STR_GENERATION_OBJECT_GENERATION :{BLACK}Výstavba nepřesunutelných objektů +STR_GENERATION_TREE_GENERATION :{BLACK}Výsadba stromů STR_GENERATION_SETTINGUP_GAME :{BLACK}Nastavování hry STR_GENERATION_PREPARING_TILELOOP :{BLACK}Spouštění tile-loopu (cyklus na dílcích mapy) STR_GENERATION_PREPARING_SCRIPT :{BLACK}Rozbíhání skriptu @@ -3574,7 +3545,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Typ silnice STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Hodnota NewGRF proměnné 60+x (šestnáctkově) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Zarovávání spritu {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Další sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Jít na další normální sprite (s grafikou), přičemž se přeskakují pseudo-/barvící/znakové sprity a při dosažení konce se jde zase na začátek STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Jít na sprite @@ -3691,7 +3661,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Na před STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Zadej název pro značku # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Města STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nic - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (velkoměsto){BLACK} ({COMMA}) @@ -4025,7 +3994,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/období # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Průmysl STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nic - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% přepraveno){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4465,7 +4433,7 @@ STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily letadla ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjez vlaku +STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjezd vlaku STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjezd vozidla STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjezd lodě STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/odlet letadla @@ -4473,7 +4441,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Stávaj # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Nakládá nebo vykládá STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Odjíždí -STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Čeká na vyložení +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Čeká na dostatečný rozestup STR_VEHICLE_STATUS_CRASHED :{RED}Nehoda! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Porucha STR_VEHICLE_STATUS_STOPPED :{RED}Zastaveno @@ -4487,7 +4455,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Bez př STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Míří do {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Míří do {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Údržba v {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Rozbalit a poslat do servisu do {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Poslat do servisu a vytvořit rozestup v {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Nelze dosáhnout {STATION}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Nelze dosáhnout {WAYPOINT}, {VELOCITY} @@ -4655,7 +4623,7 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Dostupný nákl STR_ORDER_DROP_GO_ALWAYS_DEPOT :Jeď vždy STR_ORDER_DROP_SERVICE_DEPOT :Údržba v případě potřeby STR_ORDER_DROP_HALT_DEPOT :Zastavit -STR_ORDER_DROP_UNBUNCH :Vyložit +STR_ORDER_DROP_UNBUNCH :Vytvořit rozestup # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES @@ -4732,7 +4700,7 @@ STR_ORDER_REFIT_ORDER :(Přestavět na STR_ORDER_REFIT_STOP_ORDER :(Přestavět na {STRING} a zastavit) STR_ORDER_STOP_ORDER :(Zastavit) -STR_ORDER_WAIT_TO_UNBUNCH :(čeká na vykládku) +STR_ORDER_WAIT_TO_UNBUNCH :(Vytvořit rozestup) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Nemůže použít stanici){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4936,8 +4904,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Herní skript STR_AI_SETTINGS_CLOSE :{BLACK}Zavřít STR_AI_SETTINGS_RESET :{BLACK}Obnovit nastavení STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4990,9 +4956,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Odhadova STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ukládání ještě běží,{}počkej prosím, než doběhne! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatické uložení selhalo STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nelze číst z jednotky -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Uložení hry selhalo{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nelze smazat soubor -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nelze otevřít hru{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Vnitřní chyba: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Poškozená hra - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Uložená hra je z novější verze @@ -5204,11 +5168,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Nelze na STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Nevhodný druh depa # Depot unbunching related errors -STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... může mít pouze jeden příkaz nalož -STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... příkaz plně naložit nelze použít dokud má vozidlo sdílený příkaz -STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... nelze vyložit vozidlo s příkazem plně naložit -STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... nelze použít podmíněné příkazy dokud má vozidlo sdílený příkaz -STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... nelze rozplánovat vozidla s podmíněným příkazem. +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... může mít pouze jeden příkaz pro vytvoření rozestupu +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... příkaz plně naložit nelze použít dokud má vozidlo příkaz na vytvoření rozestupu +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... nelze vytvořit rozestup pro vozidlo s příkazem plně naložit +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... nelze použít podmíněné příkazy dokud má vozidlo příkaz pro vytvoření rozestupu +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... nelze vytvořit rozestup pro vozidla s podmíněným příkazem. # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} je po výměně moc dlouhý @@ -5381,6 +5345,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmeň na STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Zatím nejsou dostupná žádná vozidla STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Začít hru po {DATE_SHORT} nebo použít NewGRF, která zajistí dřívější vozidla + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nelze nechat vlak projet semafory v nebezpečí... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nelze obrátit vlak... @@ -6027,6 +5992,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 937086807b..e568338994 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -289,7 +289,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Klik og STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skift mellem stort/lille vindue STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scrollbar - scroller listen op/ned STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - flytter listen mod venstre/højre -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nedriv bygninger osv. på et stykke land. Ctrl vælger arealet diagonalt. Shift skifter mellem at bygge og vise prisoverslag. +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nedriv bygninger osv. på et stykke land. Ctrl+klik vælger arealet diagonalt. Shift skifter mellem at bygge og vise prisoverslag. # Show engines button ###length VEHICLE_TYPES @@ -308,7 +308,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ved at a STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Annuller STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Advarsel: Server administratoren kan være i stand til at læse al tekst skrevet her. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -384,8 +383,8 @@ STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Kør spi STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Valgmuligheder og indstillinger STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Gem spillet, forlad spillet, afslut STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vis kort, ekstra vindue, laststrøm eller liste over skilte -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Vis byoversigten -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Vis tilskudsordninger +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Åben byoversigten +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Åben tilskudsordninger STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Åbn liste over virksomhedens stationer STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Åben selskabets finans informationer STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Åben generel selskabs information @@ -420,10 +419,10 @@ STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Flyt sta STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klik for at angive startdatoen STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Åbn kort, ekstra visnings af skilteliste eller by- eller brancheoversigt STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Åbn landskabsmenuen, eller generer en ny verden -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bygenerering +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Byg eller generer by STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Byg eller generer industrier STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Byg vejinfrastruktur -STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Sporvejskonstruktion +STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Byg sporvejskonstruktion STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plante træer. Ctrl+klik+træk for at markere området diagonalt. Tryk også på Shift for kun at vise omkostningsestimat STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Placér skilt STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Placer objekt. Ctrl+klik+træk for at markere området diagonalt. Tryk også på Shift for kun at vise omkostningsestimat @@ -438,6 +437,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Forlad scenarie STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Afslut + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Opsætning @@ -956,18 +956,14 @@ STR_GAME_OPTIONS_VOLUME :Lydstyrke STR_GAME_OPTIONS_SFX_VOLUME :Lydeffekter STR_GAME_OPTIONS_MUSIC_VOLUME :musik -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaenhed STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valg af valutaenhed STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Britiske Pund STR_GAME_OPTIONS_CURRENCY_USD :Amerikanske dollars STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1011,6 +1007,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupiah STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk Ringgit STR_GAME_OPTIONS_CURRENCY_LVL :lettiske lats +STR_GAME_OPTIONS_CURRENCY_PTE :Portugisiske Escudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk gemning STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vælg interval imellem automatisk gemning @@ -1053,15 +1050,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skalere STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marker dette afkrydsningsfelt for at skalere facetter efter grænsefladestørrelse STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Brug traditionel sprite-skrifttype -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marker dette felt, hvis du foretrækker at bruge den traditionelle sprite-skrifttype med fast størrelse. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marker dette felt, hvis du foretrækker at bruge den traditionelle sprite-skrifttype med fast størrelse STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias skrifttyper -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marker dette felt for at skrifttyper, der kan ændres størrelse, kan udlignes. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marker dette felt for at skrifttyper, der kan ændres størrelse, kan udlignes -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatiseret undersøgelse STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Deltag i automatiseret undersøgelse @@ -1090,6 +1083,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis-mu STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vælg basismusik-sæt STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Yderligere information om basismusik-sættet +STR_GAME_OPTIONS_ONLINE_CONTENT :Hent indhold +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Søg efter nyt og opdateret indhold, der skal downloades + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(ingen plugins til at integrere med sociale platforme installeret) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1117,6 +1113,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Reducer STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Forøg beløb i din valuta for et pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Sæt vekselkursen i din valuta for et pund (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Indstil separatoren for din valuta + STR_CURRENCY_PREFIX :{LTBLUE}Præfiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Sæt præfiks-streng for din valuta STR_CURRENCY_SUFFIX :{LTBLUE}Endetillæg: {ORANGE}{STRING} @@ -1271,10 +1270,10 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Ubegrænset pen STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Tillad ubegrænset forbrug og deaktiver virksomheders konkurs STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimum startlån: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksimumbeløb et selskab kan låne (uden at tage inflation i betragtning) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Det maksimale beløb en virksomhed kan låne (uden at tage højde for inflation). Hvis den er indstillet til "Intet lån", vil ingen penge være tilgængelige, medmindre de leveres af et spilscript eller indstillingen "Uendelige penge" STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :No loan {RED}Kræver, at Game Script leverer indledende midler +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Intet lån STR_CONFIG_SETTING_INTEREST_RATE :Lånerente: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lånerente; kontrollerer også inflationen hvis aktiveret @@ -1355,7 +1354,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Skrånings stej STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Stejlhed af skrå felter for vej køretøjer. Højere værdier gør det vanskeligere at bestige en bakke STR_CONFIG_SETTING_FORBID_90_DEG :Forbyd tog at dreje 90 grader: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 graders drejninger forekommer når et vandret sporstykke er direkte efterfulgt af et lodret sporstykke på det tilstødende felt. Således drejer toget 90 grader når det passerer feltets kant, i stedet for de sædvanlige 45 grader for andre sporkombinationer. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 graders drejninger forekommer når et vandret sporstykke er direkte efterfulgt af et lodret sporstykke på det tilstødende felt. Således drejer toget 90 grader når det passerer feltets kant, i stedet for de sædvanlige 45 grader for andre sporkombinationer STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillad sammenkædning af stationer der ikke ligger direkte op ad hinanden: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Tillad tilføjelse af dele til en station uden direkte at røre de eksisterende dele ved at Ctrl+klikke, mens du placerer de nye dele @@ -1467,7 +1466,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Foretrukken sel STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Vælg den foretrukne farve egne selskaber skal starte med STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Startfirma sekundær farve: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Vælg startende sekundær farve for virksomheden, hvis du bruger en NewGRF, der aktiverer det. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Vælg startende sekundær farve for virksomheden, hvis du bruger en NewGRF, der aktiverer det STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Lufthavnenes levealder udløber aldrig: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Aktiveres denne indstilling gøres at hver lufthavnstype forbliver tilgængelig for evigt efter dens indførelse @@ -1487,26 +1486,27 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Advar hvis et k STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Når aktiveret, bliver en nyhedsmeddelelse sendt når et køretøj der ikke har haft overskud inden for et år STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Når det er aktiveret, sendes en nyhedsmeddelelse, når et køretøj ikke har tjent noget inden for en periode + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Køretøjernes levealder udløber aldrig: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Når aktiveret, forbliver alle biltyper tilgængelige for evigt efter indførelse STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Tidtagning: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Vælg spillets tidtagningsenheder. Dette kan ikke ændres senere.{}{}Kalenderbaseret er den klassiske OpenTTD-oplevelse, med et år bestående af 12 måneder, og hver måned har 28-31 dage.{}{}I vægur-baseret tid, køretøjsbevægelser, gods produktion, og økonomi er i stedet baseret på trin på et minut, hvilket er omtrent lige så lang tid, som en måned på 30 dage tager i kalenderbaseret tilstand. Disse er grupperet i 12-minutters perioder, svarende til et år i kalenderbaseret tilstand.{}{}I begge tilstande er der altid en klassisk kalender, som bruges til introduktionsdatoer for køretøjer, huse og anden infrastruktur. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Vælg spillets tidtagningsenheder. Dette kan ikke ændres senere.{}{}Kalenderbaseret er den klassiske OpenTTD-oplevelse, med et år bestående af 12 måneder, og hver måned har 28-31 dage.{}{}I Vægur-baseret tid, lastproduktion og økonomi er i stedet baseret på trin på et minut, hvilket er omtrent lige så lang tid, som en måned på 30 dage tager i kalenderbaseret tilstand. Disse er grupperet i 12-minutters perioder, svarende til et år i kalenderbaseret tilstand.{}{}I begge tilstande er der altid en klassisk kalender, som bruges til introduktionsdatoer for køretøjer, huse og anden infrastruktur ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalender STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Vægur STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minutter om året: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Vælg antallet af minutter i et kalenderår. Standard er 12 minutter. Indstil til 0 for at forhindre kalendertiden i at ændre sig. Denne indstilling påvirker ikke den økonomiske simulering af spillet og er kun tilgængelig, når du bruger vægurs tidtagning. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Vælg antallet af minutter i et kalenderår. Standard er 12 minutter. Indstil til 0 for at forhindre kalendertiden i at ændre sig. Denne indstilling påvirker ikke den økonomiske simulering af spillet og er kun tilgængelig, når du bruger vægurs tidtagning STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (kalendertid frosset) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Skala bygodsproduktion: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skaler byernes godsproduktion med denne procentdel. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skaler byernes godsproduktion med denne procentdel STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Skaler industri gods produktion: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skaler industriens gods produktion med denne procentdel. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skaler industriens gods produktion med denne procentdel STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatisk fornyelse af gamle køretøjer: {STRING} @@ -1525,7 +1525,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Varighed af fej STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Varighed for visning fejlmeddelelser i en rød vindue. Bemærk, at nogle (kritisk) fejlmeddelelser ikke lukkes automatisk efter dette tidspunkt, men skal lukkes manuelt STR_CONFIG_SETTING_HOVER_DELAY :Vis værktøjstip: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Forsinkelse inden tooltips vises, når musen føres over nogle den grænseflade . Alternativt tooltips er bundet til den højre museknap, når denne værdi er sat til 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Forsinkelse inden tooltips vises, når musen føres over nogle den grænseflade . Alternativt tooltips er bundet til den højre museknap, når denne værdi er sat til 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hold markøren i {COMMA} sekund{P 0 "" er} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Højre klik @@ -1537,8 +1537,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Linjetykkelse i STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Bredde af linjerne i graferne. En tynd linie er mere læsbar, en tykkere linje er nemmere at se og det er lettere at skelne mellem farverne STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Vis navn på NewGRF i byg fartøj vinduet: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Tilføjer en linje til byg fartøj vinduet som viser, hvilken NewGRF det valgte fartøj stammer fra. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Vis de laster, køretøjerne kan bære i listevinduerne {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Tilføjer en linje til byg fartøj vinduet som viser, hvilken NewGRF det valgte fartøj stammer fra +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Vis de laster, køretøjerne kan bære i listevinduerne: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Hvis det er aktiveret, vises køretøjets transportable last over det på køretøjslisterne STR_CONFIG_SETTING_LANDSCAPE :Landskab: {STRING} @@ -1557,13 +1557,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industri tæthe STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Angiv hvor mange industrier skal genereres og hvilket niveau der bevares i løbet af spillet STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimal afstand fra kant til olieindustrier: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Grænse for hvor langt fra kortets kant olieraffinaderier kan blive bygget. På ø-kort sikrer dette at de er nær kysten. På kort større end 256 felter bliver denne værdi automatisk skaleret op. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Grænse for hvor langt fra kortets kant olieraffinaderier kan blive bygget. På ø-kort sikrer dette at de er nær kysten. På kort større end 256 felter bliver denne værdi automatisk skaleret op STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snelinjehøjden: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Vælg, i hvilken højde sneen starter i det subarktiske landskab. Sne påvirker også industriproduktion og byvækstkrav. Kan kun ændres via Scenario Editor eller på anden måde beregnes via "snedækning" STR_CONFIG_SETTING_SNOW_COVERAGE :Snedække: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Vælg den omtrentlige mængde sne på det subarktiske landskab. Sne påvirker også industriproduktion og byvækstkrav. Bruges kun under kortgenerering. Havniveau og kystfliser har aldrig sne. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Vælg den omtrentlige mængde sne på det subarktiske landskab. Sne påvirker også industriproduktion og byvækstkrav. Bruges kun under kortgenerering. Havniveau og kystfliser har aldrig sne STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Ørkendækning: {STRING} @@ -1571,7 +1571,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Vælg den omtre STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Tærrenets hårdhed (kun TerraGenesis) : {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Vælg formen og antallet af bakker. Glatte landskaber har færre, bredere bakker, mens barske landskaber har flere mindre bakker. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Vælg formen og antallet af bakker. Glatte landskaber har færre, bredere bakker, mens barske landskaber har flere mindre bakker ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Meget blødt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Blødt @@ -1579,7 +1579,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Råt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Meget råt STR_CONFIG_SETTING_VARIETY :Forskelligheds fordeling: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Vælg om kortet indeholder både bjerge og flade områder. Jo højere sorten er, jo flere højdeforskelle mellem bjergrige og flade områder. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Vælg om kortet indeholder både bjerge og flade områder. Jo højere sorten er, jo flere højdeforskelle mellem bjergrige og flade områder STR_CONFIG_SETTING_RIVER_AMOUNT :Floder antal: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Vælg, hvor mange floder at skabe @@ -1626,7 +1626,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mørkegrøn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Overlejringsfarver til lastflow: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Indstil det farveskema, der bruges til laststrømsoverlejringen. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Indstil det farveskema, der bruges til laststrøms overlejringen ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Grøn til rød (original) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Grøn til blå @@ -1747,10 +1747,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Hold byggeværk STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Hold bygnings-værktøjer til broer, tunneler, mv. åben efter brug STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Fjern automatisk signaler under jernbane-bygning: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Fjerner automatisk signaler under jernbane-bygning, hvis signalerne er i vejen. Bemærk at dette potentielt kan føre til togsammenstød. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Fjerner automatisk signaler under jernbane-bygning, hvis signalerne er i vejen. Bemærk at dette potentielt kan føre til togsammenstød STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Hurtig kørsel hastighedsgrænse: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Begrænser hvor hurtigt spillet kører, når hurtig kørsel er aktiveret. 0 = ingen grænse (så hurtigt som din computer er i stand til.) Værdier under 100% sænker spillets hastighed. Den øvre grænse afhænger af din computers specifikationer og kan variere afhængig af spillet. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Begrænser hvor hurtigt spillet kører, når hurtig kørsel er aktiveret. 0 = ingen grænse (så hurtigt som din computer er i stand til.) Værdier under 100% sænker spillets hastighed. Den øvre grænse afhænger af din computers specifikationer og kan variere afhængig af spillet STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normal simulationshastighed ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Ingen grænse (så hurtigt din computer er i stand til) @@ -1814,11 +1814,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillad computer STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes før scriptet bliver stoppet: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximale nummer af udregninger et script kan eksekvere i en tur STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maks hukommelsesforbrug per script: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Hvor meget hukommelse et enkelt script må anvende før det bliver tvungent afbrudt. Det kan være nødvendigt at forøge dette for spil på store kort. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Hvor meget hukommelse et enkelt script må anvende før det bliver tvungent afbrudt. Det kan være nødvendigt at forøge dette for spil på store kort STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Service intervaller er i procent: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Når den er aktiveret, forsøger køretøjer at servicere, når deres pålidelighed falder med en given procentdel af den maksimale pålidelighed.Hvis f.eks. et køretøjs maksimale pålidelighed er 90 %, og serviceintervallet er 20 %, vil køretøjet forsøge at servicere, når den når 72 % pålidelighed. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Når den er aktiveret, forsøger køretøjer at servicere, når deres pålidelighed falder med en given procentdel af den maksimale pålidelighed.{}{}Hvis f.eks. et køretøjs maksimale pålidelighed er 90 %, og serviceintervallet er 20 %, vil køretøjet forsøge at servicere, når den når 72 % pålidelighed STR_CONFIG_SETTING_SERVINT_TRAINS :Standard vedligeholdelses interval for tog: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Sæt serviceintervallets standardværdi for nye skinnekøretøjer. @@ -1828,7 +1828,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard servic STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Sæt serviceintervallets standardværdi for nye fly. STR_CONFIG_SETTING_SERVINT_SHIPS :Standard serviceinterval for skibe: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Sæt serviceintervallets standardværdi for nye skibe. -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" e}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Dag{P 0 "" e} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minut{P 0 "" er} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktiveret @@ -1836,7 +1840,7 @@ STR_CONFIG_SETTING_NOSERVICE :Slå service fr STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Når tilladt, bliver køretøjer ikke serviceret, hvis de ikke kan bryde ned STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Læsningshastighedsstraf for tog, der er længere end stationen: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Når den er aktiveret, læsser et tog, der er for lange til stationen, langsommere end et tog, der passer til stationen. Denne indstilling påvirker ikke stifinding. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Når den er aktiveret, læsser et tog, der er for lange til stationen, langsommere end et tog, der passer til stationen. Denne indstilling påvirker ikke stifinding STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktiver hastighedsbegrænsning for vogne: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Når tilladt, brug også fartgrænse på vogne, for at bestemme makshastigheden på tog @@ -1901,13 +1905,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Året hvor nyhe STR_CONFIG_SETTING_STARTING_YEAR :Start dato: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Slutår for pointoptælling: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Årstal hvor spillet slutter pointoptælling. Ved slutningen af dette år bliver selskabets point optaget, og topresultater-skærmen bliver vist. Spillerne kan fortsætte med at spille efter dette.{}Hvis dette er før spillets start år, bliver topresultater-skærmen aldrig vist. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Årstal hvor spillet slutter pointoptælling. Ved slutningen af dette år bliver selskabets point optaget, og topresultater-skærmen bliver vist. Spillerne kan fortsætte med at spille efter dette.{}Hvis dette er før spillets start år, bliver topresultater-skærmen aldrig vist STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Aldrig STR_CONFIG_SETTING_ECONOMY_TYPE :Økonomitype: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Udjævnet økonomi ændrer produktionsniveauet oftere, og i mindre trin. Frossen økonomi forhindrer ændringer i produktionsniveauet og industrilukninger. Denne indstilling kan muligvis ikke have nogen effekt hvis industrityperne stammer fra en NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Udjævnet økonomi ændrer produktionsniveauet oftere, og i mindre trin. Frossen økonomi forhindrer ændringer i produktionsniveauet og industrilukninger. Denne indstilling kan muligvis ikke have nogen effekt hvis industrityperne stammer fra en NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Udjævnet @@ -1962,7 +1966,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Tilladt STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Tilladt, tilpasset by-layout STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Godsgenerering i byer: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Hvor meget gods der bliver produceret af byers bygninger, i forhold til byens samlede indbyggertal.{}Kvadratisk vækst: En by med dobbelt indbyggertal genererer fire gange så mange passagerer.{}Lineær vækst: En by med dobbelt indbyggertal genererer dobbelt så mange passagerer. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Hvor meget gods der bliver produceret af byers bygninger, i forhold til byens samlede indbyggertal.{}Kvadratisk vækst: En by med dobbelt indbyggertal genererer fire gange så mange passagerer.{}Lineær vækst: En by med dobbelt indbyggertal genererer dobbelt så mange passagerer ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Kvadratisk (original) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineær @@ -2003,7 +2007,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Højeste sprite-opløsning der må anvendes: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Begrænser den maksimale opløsning for sprites. Denne begrænsning vil forhindre brug af højopløsningsgrafik selv når den er tilgængelig. Dette kan bevare en ensartet fremtoning af spillet når der er en blanding af GRF filer med og uden højopløsningsgrafik. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Begrænser den maksimale opløsning for sprites. Denne begrænsning vil forhindre brug af højopløsningsgrafik selv når den er tilgængelig. Dette kan bevare en ensartet fremtoning af spillet når der er en blanding af GRF filer med og uden højopløsningsgrafik ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2027,33 +2031,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Startværdi for STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Gennemsnitlig størrelse af storbyer i forhold til normale byer ved start af spillet STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Opdater distributionsgraf hver {STRING}{NBSP}sekund{P 0:2 "" er} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tid mellem efterfølgende genberegninger af linkgrafen. Hver genberegning beregner planerne for én komponent af grafen. Det betyder, at en værdi X for denne indstilling ikke betyder, at hele grafen vil blive opdateret hvert X sekund. Kun en komponent vil. Jo kortere du indstiller det, jo mere CPU-tid vil være nødvendigt for at beregne det. Jo længere du indstiller det, jo længere tid vil det tage, før godsfordelingen starter på nye ruter. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tid mellem efterfølgende genberegninger af linkgrafen. Hver genberegning beregner planerne for én komponent af grafen. Det betyder, at en værdi X for denne indstilling ikke betyder, at hele grafen vil blive opdateret hvert X sekund. Kun en komponent vil. Jo kortere du indstiller det, jo mere CPU-tid vil være nødvendigt for at beregne det. Jo længere du indstiller det, jo længere tid vil det tage, før godsfordelingen starter på nye ruter STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Tag {STRING}{NBSP}sekund{P 0:2 "" er} til genberegning af fordelingsgraf -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tid det tager for hver genberegning af en linkgrafkomponent. Når en genberegning startes, dannes en tråd, som får lov til at køre i dette antal sekunder. Jo kortere du indstiller dette, jo mere sandsynligt er det, at tråden ikke er færdig, når den skal. Så stopper spillet, indtil det er ("lag"). Jo længere du indstiller det, jo længere tid tager det for distributionen at blive opdateret, når ruter ændres. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tid det tager for hver genberegning af en linkgrafkomponent. Når en genberegning startes, dannes en tråd, som får lov til at køre i dette antal sekunder. Jo kortere du indstiller dette, jo mere sandsynligt er det, at tråden ikke er færdig, når den skal. Så stopper spillet, indtil det er ("lag"). Jo længere du indstiller det, jo længere tid tager det for distributionen at blive opdateret, når ruter ændres STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributionsmodel for passagerer: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetrisk" betyder, at omtrent det samme antal passagerer vil gå fra en station A til en station B som fra B til A. "Asymmetrisk" betyder, at vilkårlige antal passagerer kan gå i begge retninger. "Manuel" betyder, at der ikke finder nogen automatisk distribution sted for passagerer. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetrisk" betyder, at omtrent det samme antal passagerer vil gå fra en station A til en station B som fra B til A. "Asymmetrisk" betyder, at vilkårlige antal passagerer kan gå i begge retninger. "Manuel" betyder, at der ikke finder nogen automatisk distribution sted for passagerer STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distributionsmodel for post: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisk" betyder, at der sendes omtrent den samme mængde post fra en station A til en station B som fra B til A. "asymmetrisk" betyder, at vilkårlige mængder post kan sendes i begge retninger. "Manuel" betyder, at der ikke finder automatisk distribution sted for post. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisk" betyder, at der sendes omtrent den samme mængde post fra en station A til en station B som fra B til A. "asymmetrisk" betyder, at vilkårlige mængder post kan sendes i begge retninger. "Manuel" betyder, at der ikke finder automatisk distribution sted for post STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distributionsmodel for PANSRET last-klasse: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :PANSRET last-klasse indeholder værdigenstande i tempereret, diamanter i det subtropiske eller guld i det subarktiske klima. NewGRF'er kan ændre det. "Symmetrisk" betyder, at omtrent den samme mængde af denne last vil blive sendt fra en station A til en station B som fra B til A. "Asymmetrisk" betyder, at vilkårlige mængder af denne last kan sendes i begge retninger. "Manuel" betyder, at der ikke finder nogen automatisk distribution sted for den pågældende last. Det anbefales at indstille dette til asymmetrisk eller manuel, når du spiller subarktisk eller subtropisk, da banker kun modtager gods i disse klimaer. For tempereret kan du også vælge symmetrisk, da banker sender værdigenstande tilbage til oprindelsesbanken. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :PANSRET last-klasse indeholder værdigenstande i tempereret, diamanter i det subtropiske eller guld i det subarktiske klima. NewGRF'er kan ændre det. "Symmetrisk" betyder, at omtrent den samme mængde af denne last vil blive sendt fra en station A til en station B som fra B til A. "Asymmetrisk" betyder, at vilkårlige mængder af denne last kan sendes i begge retninger. "Manuel" betyder, at der ikke finder nogen automatisk distribution sted for den pågældende last. Det anbefales at indstille dette til asymmetrisk eller manuel, når du spiller subarktisk eller subtropisk, da banker kun modtager gods i disse klimaer. For tempereret kan du også vælge symmetrisk, da banker sender værdigenstande tilbage til oprindelsesbanken STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distributionsmodel for andre lastklasser: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetrisk" betyder, at vilkårlige mængder last kan sendes i begge retninger. "manuel" betyder, at der ikke finder nogen automatisk distribution sted for disse laster. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetrisk" betyder, at vilkårlige mængder last kan sendes i begge retninger. "manuel" betyder, at der ikke finder nogen automatisk distribution sted for disse laster ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuel STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrisk STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrisk STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distributionsnøjagtighed: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Jo højere du sætter denne indstilling, jo mere CPU-tid vil beregningen af forbindelsesgrafen tage. Hvis den tager for længe, kan du opleve lag. Hvis du derimod sætter indstillingen til en lav værdi, vil distributionen være unøjagtig, og du kan opleve last ikke blive sendt til de steder, du forventer. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Jo højere du sætter denne indstilling, jo mere CPU-tid vil beregningen af forbindelsesgrafen tage. Hvis den tager for længe, kan du opleve lag. Hvis du derimod sætter indstillingen til en lav værdi, vil distributionen være unøjagtig, og du kan opleve last ikke blive sendt til de steder, du forventer STR_CONFIG_SETTING_DEMAND_DISTANCE :Effekt af afstand på efterspørgsel: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Hvis du sætter denne indstilling til en værdi større end 0, vil afstanden mellem oprindelsesstation A for noget last og en mulig destination B have en effekt på mængden af last sendt fra A til B. Jo længere væk B er fra A, jo mindre last vil blive sendt. Jo højere du sætter denne indstilling, jo mindre last vil blive sendt til fjerne stationer, og jo mere last vil blive sendt til nærliggende stationer. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Hvis du sætter denne indstilling til en værdi større end 0, vil afstanden mellem oprindelsesstation A for noget last og en mulig destination B have en effekt på mængden af last sendt fra A til B. Jo længere væk B er fra A, jo mindre last vil blive sendt. Jo højere du sætter denne indstilling, jo mindre last vil blive sendt til fjerne stationer, og jo mere last vil blive sendt til nærliggende stationer STR_CONFIG_SETTING_DEMAND_SIZE :Mængde returnerende last for symmetrisk model: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ved at sætte denne indstilling til mindre end 100%, opfører den symmetriske distribution sig mere som den asymmetriske. Mindre last vil blive tvunget sendt tilbage hvis en bestemt mængde er blevet sendt til en station. Hvis du sætter denne indstilling til 0%, vil den symmetriske distribution opfører sig ligesom den asymmetriske. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ved at sætte denne indstilling til mindre end 100%, opfører den symmetriske distribution sig mere som den asymmetriske. Mindre last vil blive tvunget sendt tilbage hvis en bestemt mængde er blevet sendt til en station. Hvis du sætter denne indstilling til 0%, vil den symmetriske distribution opfører sig ligesom den asymmetriske STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Mætning af korte veje før brug af veje med høj kapacitet: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Der er ofte flere veje mellem to givne stationer. Cargodist vil mætte den korteste vej først, så bruge den næstkorteste vej indtil den er mættet, osv.. Mætning bestemmes af en vurdering af kapacitet og planlagt brug. Når den har mættet alle veje, og hvis der stadig er efterspørgsel tilbage, vil den overbelaste alle veje, og foretrække vejene med høj kapacitet. Det meste af tiden vil algoritmen dog ikke vurdere kapaciteten nøjagtigt. Denne indstilling giver dig mulighed for at bestemme op til hvilken procentdel en kortere vej skal være mættet i første omgang før den næste, længere vej vælges. Sæt denne indstilling til mindre end 100% for at undgå overfyldte stationer i tilfælde af overvurderet kapacitet. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Der er ofte flere veje mellem to givne stationer. Cargodist vil mætte den korteste vej først, så bruge den næstkorteste vej indtil den er mættet, osv.. Mætning bestemmes af en vurdering af kapacitet og planlagt brug. Når den har mættet alle veje, og hvis der stadig er efterspørgsel tilbage, vil den overbelaste alle veje, og foretrække vejene med høj kapacitet. Det meste af tiden vil algoritmen dog ikke vurdere kapaciteten nøjagtigt. Denne indstilling giver dig mulighed for at bestemme op til hvilken procentdel en kortere vej skal være mættet i første omgang før den næste, længere vej vælges. Sæt denne indstilling til mindre end 100% for at undgå overfyldte stationer i tilfælde af overvurderet kapacitet STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighedsenheder: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Hastighedsenheder (nautisk): {STRING} @@ -2128,17 +2132,8 @@ STR_CONFIG_SETTING_AI :Modstandere STR_CONFIG_SETTING_AI_NPC :Computerstyrede spillere STR_CONFIG_SETTING_NETWORK :Netværk -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Stifinder til tog: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Stifinder til brug for toge -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Stifinder til vejkøretøjer: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Stifinder til brug for vejkøretøjer -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Stifinder til skibe: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Stifinder til brug for skibe STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Vend automatisk ved signaler: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Tillad tog at vende ved et signal, hvis det har ventet i lang tid -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Anbefalet) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Skift indstillingsværdi @@ -2199,14 +2194,14 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vælg 's STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vælg 'subtropisk' landskab STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vælg 'legetøjsland' landskab -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Sæt spillet op -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Hvis topscoreliste +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Åbn spilmuligheder +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Åben topscoreliste STR_INTRO_TOOLTIP_HELP :{BLACK}Få adgang til dokumentation og online ressourcer STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Åben indstillinger -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vis NewGRF-indstillinger +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Åben NewGRF-indstillinger STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tjek for nyt og opdateret indhold til download STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Åben AI indstillinger -STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Vis indstillinger for spilscript +STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Åben indstillinger for spilscript STR_INTRO_TOOLTIP_QUIT :{BLACK}Afslut 'OpenTTD' STR_INTRO_BASESET :{BLACK} Det aktuelt valgte base grafiksæt mangler {NUM} sprite {P "" s}. Se venligst efter opdateringer til basesættet. @@ -2457,7 +2452,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Henter s STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Afbryd forbindelse STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serveren er beskyttet. Indtast kodeord -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Selskabet er beskyttet. Indtast kodeord # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Online spillere @@ -2506,13 +2500,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via rel STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Smid ud STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Udeluk STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Slet -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Lås adgangskode op STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Admin handling STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Er du sikker på du ønsker at smide spilleren '{STRING}' ud? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Er du sikker på du ønsker at udelukke spilleren '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Er du sikker på du ønsker at slette selskabet '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Er du sikker på du ønsker at nulstille adgangskoden til selskabet '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Anvend relæ? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Det lykkedes ikke at etablere en forbindelse mellem dig og serveren '{STRING}'.{}Ønsker du at anvende '{STRING}' som relæ for denne gang? @@ -2529,19 +2521,9 @@ STR_NETWORK_ASK_SURVEY_YES :Ja STR_NETWORK_SPECTATORS :Tilskuere -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Gem ikke den indtastede adgangskode -STR_COMPANY_PASSWORD_OK :{BLACK}Giv firmaet den nye adgangskode -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Firma-adgangskode -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standard firma-adgangskode -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Brug denne firma-adgangskode som standard for nye firmaer - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Tilslut dig STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Tilslut dig og spil som dette firma -STR_COMPANY_VIEW_PASSWORD :{BLACK}Kodeord -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Beskyt dit selskab med et kodeord for at undgå, at fremmede slutter sig til det. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Sæt selskabets kodeord # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send @@ -2570,6 +2552,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Dit spil STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Dit servernavn er ikke indstillet. Navnet kan indstilles øverst i Netværksspil vinduet STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Revisionen af denne klient passer ikke sammen med serverens revision STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Forkert kodeord +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Du er ikke på listen over tilladte klienter STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Serveren er fuld STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Du er udelukket fra denne server STR_NETWORK_ERROR_KICKED :{WHITE}Du blev smidt ud af spillet @@ -2585,7 +2568,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Dit spil STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mulig forbindelses tab STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}De{P 0 t ""} sidste {NUM} sekund{P "" er} er der ikke ankommet data fra serveren -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :generel fejl STR_NETWORK_ERROR_CLIENT_DESYNC :synkroniseringsfejl STR_NETWORK_ERROR_CLIENT_SAVEGAME :kunne ikke hente kortet @@ -2597,6 +2580,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :modtog en ikke STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :forkert revision STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :navnet er allerede i brug STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :forkert spil kodeord +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :ikke på listen over tilladelser STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :forkert firma-id i DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :smidt ud af serveren STR_NETWORK_ERROR_CLIENT_CHEATER :prøvede at snyde @@ -2780,12 +2764,12 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektrisk jernb STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monorailkonstruktion STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magnetskinnekonstruktion -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Byg jernbane. Ctrl skifter mellem at bygge og fjerne elementer. Shift skifter mellem at bygge og vise prisoverslag. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Byg jernbane med auto-jernbane-værktøj. Ctrl skifter mellem at bygge og fjerne elementer. Shift skifter mellem at bygge og vise prisoverslag. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Byg jernbanespor. Ctrl+klik skifter mellem at bygge og fjerne elementer. Shift skifter mellem at bygge og vise prisoverslag. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Byg jernbane med auto-jernbane-værktøj. Ctrl+klik skifter mellem at bygge og fjerne elementer. Shift skifter mellem at bygge og vise prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Byg en remise (til køb og servicering af tog). Shift skifter mellem at bygge og vise prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Ombyg jernbane til rutepunkt. Ctrl muliggør sammenslutning af rutepunkt. Shift skifter mellem at bygge og vise prisoverslag. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Byg en banegård. Ctrl muliggør sammenslutning af stationer. Shift skifter mellem at bygge og vise prisoverslag. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Byg signal på jernbane. Ctrl skifter semafor-/lyssignaler{}Hvis du trækker, opbygges signaler langs en lige jernbanestrækning. Ctrl bygger signaler op til næste vejkryds eller signal{}Ctrl+klik skifter til at åbne vinduet til valg af signal. Shift skifter mellem at bygge/vise omkostningsestimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Byg en banegård. Ctrl+klik muliggør sammenslutning af stationer. Shift skifter mellem at bygge og vise prisoverslag. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Byg signal på jernbane. Ctrl+klik for at bygge den alternative signalstil{}Klik+Træk for at udfylde den valgte sektion af skinnen med signaler med den valgte afstand. Ctrl+klik+træk for at fylde signaler op til næste vejkryds, station eller signal. Tryk også på Shift for kun at vise omkostningsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Byg jernbanebro. Shift skifter mellem at bygge og vise prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Byg jernbanetunnel. Shift skifter mellem at bygge og vise prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Skift mellem at bygge og fjerne jernbaneskinner, signaler, rutepunkter og stationer. Hold Ctrl nede for også at fjerne togspor fra rutepunkter og stationer. @@ -2802,7 +2786,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Vælg or # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Rutepunkt -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vælg udseende af rutepunkt # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Valg af banegård @@ -2815,8 +2798,10 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Vælg l STR_STATION_BUILD_DRAG_DROP :{BLACK}Træk & slip STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Byg en station vha. træk & slip -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vælg hvilken stationstype, der skal vises -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vælg hvilken stationstype du vil bygge +STR_PICKER_MODE_ALL :Alle + + + STR_STATION_CLASS_DFLT :Standard station STR_STATION_CLASS_DFLT_STATION :Standard station @@ -2839,7 +2824,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Udgangss STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombi signal (elektrisk){}Kombi signalet fungerer både som indgangs- og udgangssignal. Dette muliggør opbygning af store forgreninger af signaler. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Togvejssignal (elektrisk){}Et togvejssignal tillader, at mere en et tog ad gangen kan køre inden for en signalblok, hvis toget kan reservere en togvej til et sikkert sted at stoppe. Togvejssignaler kan passeres fra bagsiden. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Ensrettet togvejssignal (elektrisk){}Et togvejssignal tillader, at mere en et tog ad gangen kan køre inden for en signalblok, hvis toget kan reservere en togvej til et sikkert sted at stoppe. Ensrettede togvejssignaler kan ikke passeres fra bagsiden. -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signalombygning{}Når denne er valgt, vil klik på et eksisterende signal ombygge det til den valgte signaltype og -variant. Ctrl vil skifte den eksisterende signalvariant. Shift skifter mellem at bygge og vise prisoverslag. +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signalombygning{}Når denne er valgt, vil klik på et eksisterende signal ombygge det til den valgte signaltype og -variant. Ctrl+klik vil skifte den eksisterende signalvariant. Shift+klik skifter mellem at bygge og vise prisoverslag. STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Træk-og-slip signalafstand STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Formindsk træk-og-slip signalafstand STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Forøg træk-og-slip signalafstand @@ -2866,14 +2851,14 @@ STR_BRIDGE_TUBULAR_SILICON :Rørformet bro, STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Vejkonstruktion STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Sporvejskonstruktion STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Byg vejstrækning. Ctrl+klik for at fjerne vejafsnit. Tryk også på Shift for at vise omkostningsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Byg sporvej. Ctrl skifter mellem at bygge og fjerne elementer. Shift skifter mellem at bygge og vise prisoverslag. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Byg sporvej. Ctrl+klik skifter mellem at bygge og fjerne elementer. Shift skifter mellem at bygge og vise prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Byg vejsektion ved hjælp af Autoroad-tilstand. Ctrl+klik for at fjerne vejafsnit. Tryk også på Shift for kun at vise omkostningsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Byg sporvognssektion ved hjælp af Autotram-tilstand. Ctrl+klik for at fjerne sporvejssektionen. Tryk også på Shift for kun at vise omkostningsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Byg værksted (til køb og servicering af vejkøretøjer). Shift skifter mellem at bygge og vise prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Byg sporvognsremise (til køb og serviceing af sporvogne). Shift skifter mellem at bygge og vise prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Byg busstation. Ctrl+klik for at vælge en anden station at deltage i. Tryk også på Shift for kun at vise omkostningsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Byg en passager-sporvognsstation. Ctrl muliggør sammenslutning af stationer. Shift skifter mellem at bygge og vise prisoverslag. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Byg lastbilstation. Ctrl gør det muligt at tilslutte stationer. Shift skifter mellem at bygge/vise omkostningsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Byg en passager-sporvognsstation. Ctrl+klik muliggør sammenslutning af stationer. Shift skifter mellem at bygge og vise prisoverslag. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Byg lastbilstation. Ctrl+klik gør det muligt at tilslutte stationer. Shift skifter mellem at bygge/vise omkostningsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Byg godssporvognsstation. Ctrl+klik for at vælge en anden station at deltage i. Tryk også på Shift for kun at vise omkostningsestimat STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktiver/Deaktiver ensrettede veje STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Byg en bro. Shift skifter mellem at bygge og vise prisoverslag. @@ -2913,8 +2898,8 @@ STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Byg en s STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Byg en havn. Ctrl muliggør sammenslutning af stationer. Shift skifter mellem at bygge og vise prisoverslag. STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Placer en bøje, der kan bruges som yderligere navigationspunkt. Shift skifter mellem at bygge og vise prisoverslag. STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Byg akvædukt. Tryk også på Shift for kun at vise omkostningsestimat -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Definer vandområde.{}Lav en kanal, med mindre CTRL-tasten bruges ved havniveau, da omgivelserne i stedet vil blive oversvømmet -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Placér floder. Ctrl markerer området diagonalt. +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Lav en kanal, med mindre CTRL-tasten bruges ved havniveau, da omgivelserne i stedet vil blive oversvømmet +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Placér floder. Ctrl+klik markerer området diagonalt. # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Retning af skibsdok @@ -2952,15 +2937,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Generere # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landskabsværktøjer -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Sænk punkter i landskabet. Ved trækning sænkes det først valgte hjørne, og udligner det valgte område til samme niveau. Ctrl vælger området diagonalt. Shift skifter mellem at bygge og vise prisoverslag. +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Sænk et hjørne af jorden. Klik+træk for at sænke det første valgte hjørne og udjævne det valgte område til den nye hjørnehøjde. Ctrl+klik+træk for at markere området diagonalt. Tryk også på Shift for kun at vise omkostningsestimat STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Løft et hjørne af jorden. Klik+træk for at hæve det første valgte hjørne og udjævne det valgte område til den nye hjørnehøjde. Ctrl+klik+træk for at markere området diagonalt. Tryk også på Shift for kun at vise omkostningsestimat -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Udjævn et område til en højde svarende til det først markerede hjørne. Ctrl vælger området diagonalt. Shift skifter mellem at bygge og vise prisoverslag. +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Udjævn et landområde til højden af det første valgte hjørne. Ctrl+klik+træk for at markere området diagonalt. Tryk også på Shift for kun at vise omkostningsestimat STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Køb land til fremtidig brug. Shift skifter mellem at bygge og vise prisoverslag. # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objekt valg -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Vælg objektet der skal bygges. Shift skifter mellem at bygge og vise prisoverslag -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Vælg hvilken objekttype du vil bygge STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Forvisning af objektet STR_OBJECT_BUILD_SIZE :{BLACK}Størrelse: {GOLD}{NUM} x {NUM} felter @@ -2975,9 +2958,9 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Placer t STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tilfældige træer STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant træer tilfældigt i landskabet STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant individuelle træer ved at trække hen over landskabet. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant individuelle træer ved at trække hen over landskabet STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Lund -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant små skove ved at trække hen over landskabet. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant små skove ved at trække hen over landskabet STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Skov STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant store skove ved at trække hen over landskabet @@ -3075,7 +3058,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Ejer af STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Ejer af jernbane: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokal myndighed: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Flise indeks: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Bygget/renoveret: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstype: {LTBLUE}{STRING} @@ -3193,11 +3177,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Billedhastighed STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Simulationshastighed: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Antal spil-trin simuleret i sekundet. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Antal spil-trin simuleret i sekundet STR_FRAMERATE_RATE_BLITTER :{BLACK}Grafik hastighed: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Antal billeder tegnet i sekundet. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Antal billeder tegnet i sekundet STR_FRAMERATE_SPEED_FACTOR :{BLACK}Aktuel spilhastighedsfaktor: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hvor hurtigt spillet aktuelt kører, i forhold til det forventede ved normal simulationshastighed. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hvor hurtigt spillet aktuelt kører, i forhold til det forventede ved normal simulationshastighed STR_FRAMERATE_CURRENT :{WHITE}Aktuel STR_FRAMERATE_AVERAGE :{WHITE}Gennemsnit STR_FRAMERATE_MEMORYUSE :{WHITE}Hukommelse @@ -3311,11 +3295,11 @@ STR_MAPGEN_VARIETY :{BLACK}Varietet STR_MAPGEN_GENERATE :{WHITE}Generer STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Skab en verden og spil OpenTTD! STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF indstillinger -STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Vis indstillinger for NewGRF +STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Åben indstillinger for NewGRF STR_MAPGEN_AI_SETTINGS :{BLACK}AI indstillinger -STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Vis AI indstillinger +STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Åben AI indstillinger STR_MAPGEN_GS_SETTINGS :{BLACK}Indstillinger for spilscript -STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Vis indstillinger for spilscript +STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Åben indstillinger for spilscript ###length 21 STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Engelske @@ -3386,10 +3370,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vil du STR_GENERATION_PROGRESS :{WHITE}{NUM}% færdig STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Verdensgenerering +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Landskabs generering STR_GENERATION_RIVER_GENERATION :{BLACK}Flod-generering -STR_GENERATION_TREE_GENERATION :{BLACK}Trægenerering -STR_GENERATION_OBJECT_GENERATION :{BLACK}Ikke-flytbar generering STR_GENERATION_CLEARING_TILES :{BLACK}Generer råt og stenet område +STR_GENERATION_TOWN_GENERATION :{BLACK}By generation +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Industri generation +STR_GENERATION_OBJECT_GENERATION :{BLACK}Ikke-flytbar generering +STR_GENERATION_TREE_GENERATION :{BLACK}Trægenerering STR_GENERATION_SETTINGUP_GAME :{BLACK}Klargør spil STR_GENERATION_PREPARING_TILELOOP :{BLACK}Kører felt-løkken STR_GENERATION_PREPARING_SCRIPT :{BLACK}Kørende script @@ -3481,7 +3468,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Vej type STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variabel 60+x parameter (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Justerer sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Justering af sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Justering af sprite: Handling 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Justering af sprite: Handling 0x5, type {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Næste sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsæt til næste normale sprite, spring pseudo/omfarvning/font-sprites over og med omløb fra enden til starten STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til sprite @@ -3490,6 +3479,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Forrige STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsæt til den forrige normal sprite, spring pseudo/omfarvning/font-sprites over og omløb fra starten til slutningen STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Repræsentation af den markerede sprite. Justeringen ignoreres når denne sprite tegnes. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flyt spriten rundt for at ændre X- og Y-forskydningen. Ctrl+Klik for at flytte spriten otte enheder af gangen +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Forskudt centreret @@ -3598,7 +3588,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gå til STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Indtast et navn for skiltet # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Byer STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ingen - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (storby){BLACK} ({COMMA}) @@ -3726,7 +3715,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global H STR_STORY_BOOK_SPECTATOR :Global Historiebog STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Side {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Gå til en bestemt side ved at vælge den i denne rulleliste. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Gå til en bestemt side ved at vælge den i denne rulleliste STR_STORY_BOOK_PREV_PAGE :{BLACK}Forrige STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Gå til forrige side STR_STORY_BOOK_NEXT_PAGE :{BLACK}Næste @@ -3735,7 +3724,7 @@ STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ugyldig m # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stationsnavne - klik på et navn for at centrere skærmen over stationen. Ctrl+Klik åbner et nyt vindue ved stationens lokalitet -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold Ctrl nede for at vælge mere end én ting +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold Ctrl+klik nede for at vælge mere end én ting STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stationer STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -3932,7 +3921,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/periode # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrier STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ingen - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transporteret){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4026,7 +4014,7 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}Klik for STR_GROUP_DELETE_TOOLTIP :{BLACK}Slet den valgte gruppe STR_GROUP_RENAME_TOOLTIP :{BLACK}Omdøb den valgte gruppe STR_GROUP_LIVERY_TOOLTIP :{BLACK}Skift farvetema for den valgte gruppe -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik for at beskytte denne gruppe mod global auto-udskiftning Ctrl+klik beskytter også undergrupper. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik for at beskytte denne gruppe mod global auto-udskiftning Ctrl+klik beskytter også undergrupper STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Slet gruppe STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Er du sikker på at du vil slette denne gruppe og eventuelle under grupper? @@ -4094,7 +4082,7 @@ STR_CARGO_TYPE_FILTER_FREIGHT :Fragt STR_CARGO_TYPE_FILTER_NONE :Ingen ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Togvalgsliste - klik på et køretøj for mere information +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Valgliste for togkøretøjer. Klik på køretøjet for information. Ctrl+klik for at vise/skjule denne køretøjstype STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liste over køretøjstyper - klik på køretøj for information STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skib valgliste. Klik på skib for information. Ctrl + Klik for at skifte skjule skibstypen STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Luftfartøj valgliste. Klik på fly til orientering. Ctrl + Klik for at vise/skjule flytypen @@ -4386,12 +4374,12 @@ STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Ingen str STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Afventer fri passage STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}For langt til næste destination -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Retning mod {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Ingen ordrer, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Retning mod {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Retning mod {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Service ved {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Afsæt og service ved {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Retning mod {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Ingen ordrer +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Retning mod {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Retning mod {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Service ved {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Afsæt og service ved {0:DEPOT} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Kan ikke nå {0:STATION} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Kan ikke nå {0:WAYPOINT} @@ -4442,10 +4430,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapacite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Værdi af overført fragt: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Serviceinterval: {LTBLUE}{COMMA}{NBSP}dage{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Serviceinterval: {LTBLUE}{COMMA}{NBSP}minutter{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Serviceinterval: {LTBLUE}{COMMA}{NBSP}minut{P "" ter}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Serviceinterval: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Sidste service: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Last service: {LTBLUE}{NUM} minutter siden +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :sidste service: {LTBLUE}{NUM} minut{P "" ter} siden STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Forøg serviceintervallet med 10 dage. Ctrl+klik for at øge serviceintervallet med 5 dage STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Forøg serviceintervallet med 5 minutter. Ctrl+klik for at øge serviceintervallet med 1 minut STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Forøg serviceintervallet med 10 procent. Ctrl+klik for at øge serviceintervallet med 5 procent @@ -4636,7 +4624,7 @@ STR_ORDER_REFIT_ORDER :(Tilpas til {ST STR_ORDER_REFIT_STOP_ORDER :(Tilpas til {STRING} og stop) STR_ORDER_STOP_ORDER :(Stop) -STR_ORDER_WAIT_TO_UNBUNCH :(vent med at pakke ud) +STR_ORDER_WAIT_TO_UNBUNCH :(vent med at afkoble) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Kan ikke bruge station){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4723,7 +4711,7 @@ STR_TIMETABLE_START_TOOLTIP :{BLACK}Vælg, h STR_TIMETABLE_START_SECONDS_QUERY :Sekunder til tidsplanen starter STR_TIMETABLE_CHANGE_TIME :{BLACK}Ændre tid -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ændre den tid, som den fremhævede rækkefølge skal tage. Ctrl+Click angiver tidspunktet for alle ordrer +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ændre den tid, som den fremhævede rækkefølge skal tage. Ctrl+klik angiver tidspunktet for alle ordrer STR_TIMETABLE_CLEAR_TIME :{BLACK}Nulstil tid STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Nulstil tiden for den markerede ordre. Ctrl+klik for at rydde tiden for alle ordrer @@ -4777,7 +4765,7 @@ STR_AI_DEBUG_CONTINUE :{BLACK}Fortsæt STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Sæt spillet i gang, og start den kunstige intelligens igen STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Se fejlretningsoutput af denne AI. Ctrl-klik for at åbne i et nyt vindue STR_AI_GAME_SCRIPT :{BLACK}Spil Script -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Tjek SpilScript-loggen +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Tjek SpilScript-loggen. Ctrl+klik for at åbne i et nyt vindue STR_ERROR_AI_NO_AI_FOUND :Ingen passende AI kan findes.{}Denne AI er en pladsholder, og vil ikke gøre noget.{} Du kan downloade indtil flere AI'er fra 'Online Indhold'-systemet. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}En af de kørende scripts gik ned. Rapporter det venligst til script-udvikleren sammen med et skærmbillede af AI/spilscript-debugvinduet. @@ -4840,8 +4828,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spil Script STR_AI_SETTINGS_CLOSE :{BLACK}Luk STR_AI_SETTINGS_RESET :{BLACK}Nulstil STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4894,9 +4880,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Anslået STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gemmer stadig,{}vent venligst! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fejl under autogem STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke læse drevet -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Fejl under gemning af spil{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Fejl under lagring af spil... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fejl under indlæsning af spil{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fejl under indlæsning af spil... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern fejl: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ødelagt gemt spil - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillet er gemt med en nyere version @@ -4990,7 +4976,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan ikke STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan ikke bygge selskabets hovedkvarter... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan ikke bygge nogen byer +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan ikke bygge nogen byer... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kan ikke omdøbe byen... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kan ikke bygge en by her... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kan ikke udvide byen... @@ -5278,6 +5264,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Skift di STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ingen køretøjer er tilgængelige endnu STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start et nyt spil efter {DATE_SHORT} eller brug en NewGRF der giver tidlige køretøjer +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Der findes ingen vejtyper, der kan bygges i by +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Skift din NewGRF konfiguration +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Der er endnu ingen tilgængelige vejtyper, der kan bygges i byer +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Start et nyt spil efter{DATE_SHORT} eller brug en NewGRF, der leverer vejtyper, der kan bygges tidligt i byen + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikke få toget til at passere signalet... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikke vende retningen af toget... @@ -5807,6 +5798,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}m +STR_CURRENCY_SHORT_GIGA :{NBSP}bn +STR_CURRENCY_SHORT_TERA :{NBSP}tn + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5823,6 +5819,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 7b535ef0a9..8cf759a4b5 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -308,11 +308,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Wanneer STR_BUTTON_DEFAULT :{BLACK}Standaard STR_BUTTON_CANCEL :{BLACK}Annuleren STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Waarschuwing: het kan zijn dat serverbeheerders de tekst kunnen lezen die hier is ingevoerd. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Lengte: {NUM} @@ -438,6 +437,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Scenariobewerke STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Afsluiten +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Steden genereren +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Huizen plaatsen + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Spelopties @@ -621,14 +623,14 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Alles uit STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Alle vrachtsoorten weergeven op de grafiek van vrachtprijzen STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Geen vrachtsoorten weergeven op de grafiek van vrachtprijzen -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Grafiek voor vrachttype aan-uit +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Grafiek voor dit vrachttype weergeven-verbergen STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Gedetailleerde prestatiescores weergeven # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Legenda voor bedrijfsgrafieken -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klik hier om dit bedrijf weer te geven of te verbergen op de grafiek +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Grafiek van dit bedrijf weergeven-verbergen # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Bedrijfsscoretabel @@ -708,7 +710,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selectee STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selecteer het programma 'Ezy Street' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecteer het programma 'Aangepast1' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecteer het programma 'Aangepast2' -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Willekeurige volgorde aan-uit +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Willekeurige volgorde in-uitschakelen STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Venster voor muzieknummers weergeven # Playlist window @@ -791,7 +793,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Woestijn STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sneeuw -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Plaatsnamen op de kaart weergeven-verbergen. +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Plaatsnamen weergeven-verbergen. STR_SMALLMAP_CENTER :{BLACK}Kleine kaart centreren op huidige positie STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -800,9 +802,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Alles uitschakelen STR_SMALLMAP_ENABLE_ALL :{BLACK}Alles inschakelen STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Hoogte weergeven +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Namen van industrieën weergeven STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Geen industrieën op de kaart weergeven STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Alle industrieën op de kaart weergeven STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Hoogtekaart weergeven-verbergen +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Namen van industrieën op de kaart weergeven-verbergen STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Verberg bedrijfseigendommen op de kaart STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Alle bedrijfseigendommen op de kaart weergeven STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Geen vrachtsoorten op de kaart weergeven @@ -956,18 +960,14 @@ STR_GAME_OPTIONS_VOLUME :Volume STR_GAME_OPTIONS_SFX_VOLUME :Geluidseffecten STR_GAME_OPTIONS_MUSIC_VOLUME :Muziek -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valuta kiezen STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Britse Pond STR_GAME_OPTIONS_CURRENCY_USD :Dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1011,6 +1011,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Indiase rupee STR_GAME_OPTIONS_CURRENCY_IDR :Indonesische roepia STR_GAME_OPTIONS_CURRENCY_MYR :Maleisische Ringgit STR_GAME_OPTIONS_CURRENCY_LVL :Letse lats +STR_GAME_OPTIONS_CURRENCY_PTE :Portugese Escudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisch opslaan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tijdsduur kiezen tussen automatisch opgeslagen spellen @@ -1053,15 +1054,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Randen s STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Vink dit vakje aan om randen te schalen op grootte van gebruikersscherm STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Traditioneel sprite-lettertype gebruiken -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Vink dit vakje aan als je het traditionele sprite-lettertype met vaste breedte wilt gebruiken. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Vink dit vakje aan als je het traditionele sprite-lettertype met vaste breedte wilt gebruiken STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Lettertypen met anti-alias -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Vink dit vakje aan voor in grootte aanpasbare lettertypen met anti-alias. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Vink dit vakje aan voor in grootte aanpasbare lettertypen met anti-alias -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Geautomatiseerd onderzoek STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Deelnemen aan geautomatiseerd onderzoek @@ -1090,6 +1087,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basisset STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecteer de te gebruiken basisset voor muziek STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Aanvullende informatie over the basisset voor muziek +STR_GAME_OPTIONS_ONLINE_CONTENT :Inhoud ophalen +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Controleren op nieuwe en aangepaste inhoud om te downloaden + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(geen invoegtoepassingen voor integratie met sociale platforms geïnstalleerd) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1117,6 +1117,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Verlaag STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Verhoog de wisselkoers van jouw munteenheid ten opzichte van het pond (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Stel de wisselkoers in van jouw munteenheid ten opzichte van het pond (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Scheidingsteken: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Stel het scheidingsteken voor je munteenheid in + STR_CURRENCY_PREFIX :{LTBLUE}Voorvoegsel: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Stel het voorvoegsel in voor jouw munteenheid STR_CURRENCY_SUFFIX :{LTBLUE}Achtervoegsel: {ORANGE}{STRING} @@ -1271,10 +1274,10 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Onbeperkt geld: STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Je kunt onbeperkt geld uitgeven en bedrijven gaan niet failliet STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximale beginlening: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximaal bedrag dat een bedrijf kan lenen (zonder rekening te houden met de inflatie) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximaal bedrag dat een bedrijf kan lenen (zonder rekening te houden met de inflatie). Als je dit instelt op 'Geen lening' kun je geen geld krijgen tenzij door middel van een spelscript of de instelling 'Onbeperkt geld' STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Geen lening {RED}Spelscript vereist voor aanvankelijk saldo +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Geen lening STR_CONFIG_SETTING_INTEREST_RATE :Rente van lening: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Percentage rente op lening; bepaald ook het inflatiecijfer wanneer ingeschakeld @@ -1355,7 +1358,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Hellingsteilhei STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steilheid van een schuine tegel voor een wegvoertuig. Hogere waarden maken het moeilijker om een heuvel te beklimmen STR_CONFIG_SETTING_FORBID_90_DEG :Treinen en schepen mogen niet 90° draaien: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Draaiingen met 90° treden op wanneer een horizontale baan direct gevolgd wordt door een verticaal baanstuk op de aangrenzende tegel, waardoor de trein daarna 90 graden draait wanneer de tegelrand wordt overgestoken in plaats van de gebruikelijke 45 graden voor andere spoorcombinaties. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Bochten van 90° treden op wanneer een horizontale baan direct gevolgd wordt door een verticaal baanstuk op de aangrenzende tegel, waardoor de trein daarna 90 graden draait wanneer de tegelrand wordt overgestoken in plaats van de gebruikelijke 45 graden voor andere spoorcombinaties STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Samenvoegen van indirect aansluitende stations toestaan: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Hiermee kun je aanvullende onderdelen aan een station plaatsen zonder dat reeds bestaande onderdelen beïnvloed worden. Ctrl+klik is vereist tijdens het plaatsen van nieuwe onderdelen. @@ -1487,26 +1490,29 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Waarschuwen als STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Wanneer ingeschakeld, wordt een nieuwsbericht verstuurd wanneer een voertuig geen winst heeft gemaakt in een kalenderjaar STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Wanneer ingeschakeld, krijg je een nieuwsbericht wanneer een voertuig geen winst heeft gemaakt gedurende een periode +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Waarschuwing als een voertuig oud aan het worden is: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Wanneer ingeschakeld, wordt een nieuwsbericht verzonden wanneer een voertuig oud aan het worden is + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Voertuigen verlopen niet: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Wanneer ingeschakeld, alle voertuig modellen blijven voor altijd beschikbaar na hun introductie STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Tijd bijhouden: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Selecteer de tijdbasis voor het spel. Dit kan later niet meer worden gewijzigd.{}{}Kalender is het klassieke OpenTTD, met een jaar met 12 maanden en maanden met 28-31 dagen.{}{}Bij Muurklok worden voertuigbewegingen, vrachtproductie en financiën gebaseerd op stappen van één minuut, ongeveer zolang als maanden van 30 dagen in Kalender-modus. Deze worden gegroepeerd in perioden van 12 minuten, equivalent aan een jaar in Kalender-modus.{}{}In beide modi heb je altijd een klassieke kalender die wordt gebruikt voor de introductiedatums van voertuigen, huizen en andere infrastructuur. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Selecteer de tijdbasis voor het spel. Dit kan later niet meer worden gewijzigd.{}{}Kalender is het klassieke OpenTTD, met een jaar met 12 maanden en maanden met 28-31 dagen.{}{}Bij Muurklok worden vrachtproductie en financiën gebaseerd op stappen van één minuut, ongeveer zolang als maanden van 30 dagen in Kalender-modus. Deze worden gegroepeerd in perioden van 12 minuten, equivalent aan een jaar in Kalender-modus.{}{}In beide modi heb je altijd een klassieke kalender die wordt gebruikt voor de introductiedatums van voertuigen, huizen en andere infrastructuur ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalender STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Muurklok STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minuten per jaar: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Kies het aantal minuten in een kalenderjaar. Standaard is 12 minuten. Bij 0 wijzigt de kalendertijd niet. Deze instelling heeft geen invloed op de economische simulatie van het spel en is alleen beschikbaar met tijdbasis Muurklok. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Kies het aantal minuten in een kalenderjaar. Standaard is 12 minuten. Bij 0 wijzigt de kalendertijd niet. Als je het kalenderjaar langer maakt, komen voertuigen, huizen en andere infrastructuur langzamer beschikbaar. Deze instelling heeft geen invloed op voertuigsnelheid en op de economische simulatie van het spel, afgezien van inflatie. Deze instelling is alleen beschikbaar met tijdbasis Muurklok STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (kalendertijd bevroren) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Schaal vrachtproductie van stad: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Schaal de vrachtproductie van steden met dit percentage. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Schaal de vrachtproductie van steden met dit percentage STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Schaal vrachtproductie van industrie: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Schaal de vrachtproductie van industrieën met dit percentage. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Schaal de vrachtproductie van industrieën met dit percentage STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Voertuig automatisch vernieuwen wanneer dit oud wordt: {STRING} @@ -1525,7 +1531,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duur van foutbe STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duur voor het weergeven van foutberichten in een rood venster. Merk op dat sommige (kritische) foutmeldingen niet automatisch worden gesloten na deze tijd, deze moeten handmatig worden gesloten STR_CONFIG_SETTING_HOVER_DELAY :Knopinfo weergeven: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Vertraging voordat knopinfo worden weergegeven wanneer je de muis boven een besturingselement houdt. Wanneer de waarde 0 is, wordt knopinfo aan de rechtermuisknop gebonden. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Vertraging voordat knopinfo worden weergegeven wanneer je de muis boven een besturingselement houdt. Wanneer de waarde 0 is, wordt knopinfo aan de rechtermuisknop gebonden STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Muis stilhouden gedurende {COMMA} milliseconde{P 0 "" n} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Rechtsklik @@ -1537,8 +1543,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Dikte van de li STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Breedte van de lijnen in de grafiek. Een dunne lijn is preciezer leesbaar, een dikke lijn is makkelijker te zien en kleuren zijn makkelijker om te onderscheiden STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Naam van NewGRF weergeven in venster voor voertuigen bouwen: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Voeg een regel toe aan het venster voor voertuigen bouwen die aangeeft uit welke NewGRF het geselecteerde voertuig komt. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Mogelijke lading van voertuigen weergeven in lijstvensters {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Voeg een regel toe aan het venster voor voertuigen bouwen die aangeeft uit welke NewGRF het geselecteerde voertuig komt +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Mogelijke lading van voertuigen weergeven in lijstvensters: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Wanneer ingeschakeld, verschijnt de mogelijke lading van het voertuig erboven in voertuiglijsten STR_CONFIG_SETTING_LANDSCAPE :Landschap: {STRING} @@ -1557,13 +1563,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industriedichth STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Stelt in hoeveel industrieën worden gegenereerd en welk niveau tijdens het spel moet worden gehandhaafd STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximumafstand van de rand voor olieraffinaderijen: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olieraffinaderijen worden alleen gebouwd nabij de kaartgrens, dat is aan de kust van eilandkaarten +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limiet voor hoe ver van de kaartgrens olieraffinaderijen en booreilanden kunnen worden gebouwd. Op eilandkaarten zorgt dit ervoor dat ze dichtbij de kust liggen. Op kaarten groter dan 256 wordt deze waarde opgeschaald. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sneeuwhoogte: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Kies op welke hoogte de sneeuw begint in subarctisch landschap. Sneeuw heeft ook invloed op het ontstaan van industrieën en op de vereisten voor stadsgroei. Kan alleen worden aangepast in de scenariobewerker of wordt berekend met behulp van 'sneeuwoppervlak' STR_CONFIG_SETTING_SNOW_COVERAGE :Sneeuwoppervlak: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Kies de hoeveelheid sneeuw in het subarctische landschap. Sneeuw is ook van invloed op de industrieën en de groei van steden. Wordt alleen gebruikt tijdens het maken van de kaart. Land op zeeniveau of aan de kust krijgt nooit sneeuw. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Kies de hoeveelheid sneeuw in het subarctische landschap. Sneeuw is ook van invloed op de industrieën en de groei van steden. Wordt alleen gebruikt tijdens het maken van de kaart. Land op zeeniveau of aan de kust krijgt nooit sneeuw STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Woestijnoppervlak: {STRING} @@ -1571,7 +1577,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Kies de hoeveel STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Ruwheid van het terrein: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Kies vorm en aantal heuvels. Gladde landschappen hebben minder en bredere heuvels. Ruwe landschappen hebben meer, maar kleinere heuvels. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Kies vorm en aantal heuvels. Gladde landschappen hebben minder en bredere heuvels. Ruwe landschappen hebben meer, maar kleinere heuvels ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Erg glad STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Glad @@ -1579,7 +1585,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ruig STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Erg ruig STR_CONFIG_SETTING_VARIETY :Variëteit distributie: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Kies of de kaart zowel bergachtige als vlakke gebieden bevat. Hoe groter de variatie, hoe meer verschillen in hoogte tussen bergachtige en vlakke gebieden. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Kies of de kaart zowel bergachtige als vlakke gebieden bevat. Hoe groter de variatie, hoe meer verschillen in hoogte tussen bergachtige en vlakke gebieden STR_CONFIG_SETTING_RIVER_AMOUNT :Hoeveelheid rivieren: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Selecteer hoeveel rivieren er gegenereerd worden @@ -1750,7 +1756,7 @@ STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatisch sei STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Seinen automatisch verwijderen tijdens spooraanleg als deze in de weg staan. Dit kan botsingen veroorzaken. STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Limiet verhoogde spelsnelheid: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Beperkt de snelheid van het spel wanneer de spelsnelheid is verhoogt. 0 = geen limiet (alleen beperkt door de computer zelf). Waarden onder 100% vertragen het spel. De hoogste waarde hangt af van de specifcaties van de computer en kan afhankelijk van het spel variëren. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Beperkt de snelheid van het spel wanneer snel vooruit is ingeschakeld. 0 = geen limiet (alleen beperkt door de computer zelf). Waarden onder 100% vertragen het spel. De hoogste waarde hangt af van de specifcaties van de computer en kan afhankelijk van het spel variëren STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normale spelsnelheid ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Geen limiet (alleen beperkt door de computer zelf) @@ -1814,11 +1820,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Computerspelers STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Aantal opcodes voordat scripts worden gestopt: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximumaantal berekeningsstappen die een script kan maken in een beurt STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Max. geheugengebruik per script: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :De hoeveelheid geheugen die een script mag gebruiken voordat het geforceerd wordt beëindigd. Voor grote kaarten moet deze waarde misschien verhoogd worden. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :De hoeveelheid geheugen die een script mag gebruiken voordat het geforceerd wordt beëindigd. Voor grote kaarten moet deze waarde misschien verhoogd worden STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Onderhoudstermijnen in procenten: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Als deze optie is ingeschakeld, proberen voertuigen in onderhoud te gaan als de betrouwbaarheid met een bepaald percentage van de maximale betrouwbaarheid is gezakt.{}{}Als bijvoorbeeld de maximale betrouwbaarheid 90% is en de onderhoudstermijn is 20%, dan probeert het voertuig in onderhoud te gaan als de betrouwbaarheid tot 72% daalt. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Als deze optie is ingeschakeld, proberen voertuigen in onderhoud te gaan als de betrouwbaarheid met een bepaald percentage van de maximale betrouwbaarheid is gezakt.{}{}Als bijvoorbeeld de maximale betrouwbaarheid 90% is en de onderhoudstermijn is 20%, dan probeert het voertuig in onderhoud te gaan als de betrouwbaarheid tot 72% daalt STR_CONFIG_SETTING_SERVINT_TRAINS :Standaardonderhoudstermijn voor treinen: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Standaardonderhoudstermijn instellen voor nieuwe treinen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig @@ -1828,7 +1834,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standaardonderh STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Standaardonderhoudsterrmijn voor nieuwe vliegtuigen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig STR_CONFIG_SETTING_SERVINT_SHIPS :Standaardonderhoudstermijn voor schepen: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Standaardonderhoudstermijn voor nieuwe schepen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dag{P 0 "" en}/minu{P 0 ut ten}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Dag{P 0 "" en} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minu{P 0 ut ten} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Uitgeschakeld @@ -1836,7 +1846,7 @@ STR_CONFIG_SETTING_NOSERVICE :Onderhoud uitsc STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Als deze optie is ingeschakeld worden voertuigen niet onderhouden als ze niet kapot kunnen gaan. STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Verminderde laadsnelheid voor treinen langer dan het station: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Indien ingeschakeld worden treinen die te lang zijn voor het station langzamer geladen dan treinen die in het station passen. Deze instelling is niet van invloed op het zoeken van de route. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Indien ingeschakeld worden treinen die te lang zijn voor het station langzamer geladen dan treinen die in het station passen. Deze instelling is niet van invloed op het zoeken van de route STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Snelheidslimieten voor wagons inschakelen: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Wanneer ingeschakeld, ook gebruik maken van snelheidsbeperkingen van wagons voor het bepalen van de maximale snelheid van een trein @@ -1901,13 +1911,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Jaar dat de kra STR_CONFIG_SETTING_STARTING_YEAR :Startjaar: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Eindjaar voor score: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Jaar dat het spel eindigt ten behoeve van de score. Aan het einde van dit jaar wordt de score van het bedrijf vastgelegd en verschijnt het venster met topscores. De spelers kunnen echter doorgaan met spelen.{}Als dit voor het startjaar ligt, verschijnt het venster met topscores niet. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Jaar dat het spel eindigt ten behoeve van de score. Aan het einde van dit jaar wordt de score van het bedrijf vastgelegd en verschijnt het venster met topscores. Je kunt echter doorgaan met spelen.{}Als deze waarde eerder is dan het startjaar, verschijnt het venster met topscores niet STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nooit STR_CONFIG_SETTING_ECONOMY_TYPE :Type economie: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Bij gelijkmatige economie zijn er vaker wijzigingen in productie, die in kleinere stappen verlopen. Bij vaste economie zijn er geen wijzigingen in productie en sluiten bedrijven niet. Deze instelling werkt misschien niet als de soorten industrie worden geleverd in een NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Bij gelijkmatige economie zijn er vaker wijzigingen in productie die in kleinere stappen verlopen. Bij vaste economie zijn er geen wijzigingen in productie en sluiten bedrijven niet. Deze instelling werkt misschien niet als de soorten industrie worden geleverd in een NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Origineel STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Gelijkmatig @@ -1962,7 +1972,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Toestaan STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Toestaan, eigen wegpatroon STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Genereren van vracht in steden: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Hoeveel vracht wordt geproduceerd door huizen in steden, in relatie tot de totale bevolking van de stad.{}Kwadratische groei: een stad die twee keer zo groot is, genereert vier keer zo veel passagiers.{}Lineaire groei: een stad die twee keer zo groot is, genereert twee keer zo veel passagiers. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Hoeveel vracht wordt geproduceerd door huizen in steden, in relatie tot de totale bevolking van de stad.{}Kwadratische groei: een stad die twee keer zo groot is, genereert vier keer zo veel passagiers.{}Lineaire groei: een stad die twee keer zo groot is, genereert twee keer zo veel passagiers ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Kwadratisch (origineel) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineair @@ -2003,7 +2013,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Hoogste resolutie die sprites mogen gebruiken: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Beperk de maximale resolutie die voor sprites wordt gebruikt. Door deze beperking worden geen grafische elementen in hoge resolutie gebruikt, ook niet als ze beschikbaar zijn. Zo kan de weergave van het spel consistent blijven wanneer je verschillende GRF-bestanden gebruikt met en zonder grafische elementen in hoge resolutie. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Beperk de maximale resolutie die voor sprites wordt gebruikt. Door deze beperking worden geen grafische elementen in hoge resolutie gebruikt, ook niet als ze beschikbaar zijn. Zo kan de weergave van het spel consistent blijven wanneer je verschillende GRF-bestanden gebruikt met en zonder grafische elementen in hoge resolutie ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2027,9 +2037,9 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Beginfactor voo STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Gemiddelde grootte van steden in vergelijking tot normale steden bij het begin van het spel. STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Distributiegrafiek elke {STRING} bijwerken -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :De tijd tussen opeenvolgende herberekeningen van de koppeling-grafiek. Elke berekening berekent de plannen voor één component van de grafiek. Dat betekent dat een waarde X voor deze instelling niet betekent dat de hele grafiek elke X seconden wordt bijgewerkt. Dat geldt alleen voor één component. Hoe korter je deze waarde instelt, hoe meer CPU-tijd er nodig is voor de berekening. Hoe langer je deze waarde instelt, hoe langer het duurt voordat de vrachtdistributie start op nieuwe routes. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :De tijd tussen opeenvolgende herberekeningen van de koppelingsgrafiek. Elke berekening berekent de plannen voor één component van de grafiek. Dat betekent dat een waarde X voor deze instelling niet betekent dat de hele grafiek elke X seconden wordt bijgewerkt. Dat geldt alleen voor één component. Hoe korter je deze waarde instelt, hoe meer CPU-tijd er nodig is voor de berekening. Hoe langer je deze waarde instelt, hoe langer het duurt voordat de vrachtdistributie start op nieuwe routes. STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :{STRING} per herberekening van de distributiegrafiek besteden -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :De benodigde tijd voor een herbereking van een koppeling-grafiekcomponent. Wanneer een herberekening wordt gestart, start een draad die dit aantal seconden mag lopen. Hoe korter je deze waarde maakt, hoe groter de kans dat de draad niet op tijd is afgelopen. Het spel stopt dan totdat dit alsnog gebeurt (het 'hikt'). Hoe langer je deze waarde maakt, hoe langer het duurt voor de distributie wordt bijgewerkt wanneer een route wijzigt. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :De benodigde tijd voor een herberekening van een koppelingsgrafiekcomponent. Wanneer een herberekening wordt gestart, start een proces die dit aantal seconden mag lopen. Hoe korter je deze waarde maakt, hoe groter de kans dat het proces niet op tijd is afgelopen. Het spel stopt dan totdat dit alsnog gebeurt (het 'hikt'). Hoe langer je deze waarde maakt, hoe langer het duurt voor de distributie wordt bijgewerkt wanneer een route wijzigt. STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributiemodus voor passagiers: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :'Symmetrisch' betekent dat ongeveer hetzelfde aantal passagiers van station A naar station B gaat als van B naar A. 'Asymmetrisch' betekent dat willekeurige aantallen passagiers reizen in beide richtingen. 'Handmatig' betekent dat er geen automatische distributie plaatsvindt voor passagiers. @@ -2045,7 +2055,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :Asymmetrisch STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :Symmetrisch STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Verdeelnauwkeurigheid: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Hoe hoger de instelling, des te meer CPU-tijd de berekening van de linkgrafiek zal gebruiken. Als het te lang duurt, kan dan dat lag opleveren. Als je dit echter op een lage waarde instelt, zal de verdeling onnauwkeurig zijn, en kan het zijn dat vracht niet wordt gestuurd naar de plekken waar het naartoe moet gaan. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Hoe hoger de instelling, des te meer CPU-tijd de berekening van de linkgrafiek zal gebruiken. Als het te lang duurt, kan dat lag opleveren. Als je dit echter op een lage waarde instelt, zal de verdeling onnauwkeurig zijn en kan het zijn dat vracht niet wordt gestuurd naar de plekken waar het naartoe moet gaan. STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect van afstand op de vraag: {STRING} STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Als je dit op een waarde hoger dan 0 zet, dan zal de afstand tussen het station van herkomst A met enige vracht en een mogelijke bestemming B effect hebben op de hoeveelheid lading verzonden van A naar B. Hoe verder weg B is van A, des te minder lading wordt verzonden. Hoe hoger je deze instelt, hoe minder lading wordt verzonden naar verder geleden stations en meer lading zal worden verzonden naar dichtbij gelegen stations. @@ -2053,7 +2063,7 @@ STR_CONFIG_SETTING_DEMAND_SIZE :Hoeveelheid ter STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Door dit op minder dan 100% te zetten lijkt de symmetrische verdeling meer op de asymmetrische verdeling. Minder vracht zal geforceerd worden om zich terug te sturen als er een bepaalde hoeveelheid wordt verzonden naar een station. Op 0% van de symmetrische verdeling gedraagt deze zich als de asymmetrische verdeling. STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Verzadiging van korte routes voordat routes met hoge capaciteit worden gebruikt: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Vaak zijn er meerdere routes mogelijk tussen twee stations. De vrachtdistributie verzadigt eerst de kortste route, gebruikt dan de op één na kortste route tot die verzadigd is enzovoort. Verzadiging wordt bepaald door een schatting van de capaciteit en het geplande gebruik. Wanneer alle routes verzadigd zijn, maar er is meer vraag, raken alle wegen overbelast, die met hoge capaciteit als eerste. In veel gevallen schat het algoritme helaas de capaciteit niet nauwkeurig in. Met deze instelling kun je aangeven tot welk percentage een korter pad moet worden verzadigd voordat de eerstvolgende, langere route wordt gekozen. Stel dit in op minder dan 100% om overvolle stations in geval van overschatte capaciteit te voorkomen. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Vaak zijn er meerdere routes mogelijk tussen twee stations. De vrachtdistributie verzadigt eerst de kortste route, gebruikt dan de op één na kortste route tot die verzadigd is enzovoort. Verzadiging wordt bepaald door een schatting van de capaciteit en het geplande gebruik. Wanneer alle routes verzadigd zijn, maar er is meer vraag, raken alle wegen overbelast, die met hoge capaciteit als eerste. In veel gevallen schat het algoritme helaas de capaciteit niet nauwkeurig in. Met deze instelling kun je aangeven tot welk percentage een korter pad moet worden verzadigd voordat de eerstvolgende, langere route wordt gekozen. Stel dit in op minder dan 100% om overvolle stations in geval van overschatte capaciteit te voorkomen STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Snelheidseenheden (land): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Snelheidseenheden (nautisch): {STRING} @@ -2128,17 +2138,8 @@ STR_CONFIG_SETTING_AI :Tegenstanders STR_CONFIG_SETTING_AI_NPC :Computerspelers STR_CONFIG_SETTING_NETWORK :Netwerk -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Routezoeker voor treinen: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Routezoeker voor treinen. -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Routezoeker voor wegvoertuigen: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Routezoeker voor wegvoertuigen -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Routezoeker voor schepen: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Routezoeker voor schepen STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatisch omdraaien bij seinen: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Treinen mogen keren bij een sein als ze hier lang staan wachten -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Aanbevolen) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Instelwaarde wijzigen @@ -2457,7 +2458,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Bedrijfs STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Verbinding verbreken STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is beveiligd. Voer wachtwoord in -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Bedrijf is beveiligd. Voer wachtwoord in # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Spelers online @@ -2484,6 +2484,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Je spelernaam STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Beheeracties die nodig zijn voor deze client STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Beheeracties die nodig zijn voor dit bedrijf STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Meedoen met dit bedrijf +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Geef deze client toestemming om met je bedrijf mee te doen STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Een bericht sturen naar deze speler STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Een bericht versturen naar alle spelers van dit bedrijf STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Een bericht sturen naar alle toeschouwers @@ -2506,13 +2507,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via omle STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Eruit schoppen STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Bannen STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Verwijderen -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Wachtwoord ontgrendelen STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Beheeractie STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Weet je zeker dat je de speler '{STRING}' eruit wilt schoppen? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Weet je zeker dat je de speler '{STRING}' wilt bannen? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Weet je zeker dat je het bedrijf '{COMPANY}' wilt verwijderen? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Weet je zeker dat je het wachtwoord voor bedrijf '{COMPANY}' wilt terugstellen? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Omleiden? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Kan geen verbinding maken tussen jou en server '{STRING}'.{}Wil je deze sessie omleiden via '{STRING}'? @@ -2529,19 +2528,9 @@ STR_NETWORK_ASK_SURVEY_YES :Ja STR_NETWORK_SPECTATORS :Toeschouwers -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ingevoerd wachtwoord niet opslaan -STR_COMPANY_PASSWORD_OK :{BLACK}Bedrijf het nieuwe wachtwoord geven -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Bedrijfswachtwoord -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standaard bedrijfswachtwoord -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Dit bedrijfswachtwoord gebruiken als standaard voor nieuwe bedrijven - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Meedoen STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Doe mee en speel als dit bedrijf -STR_COMPANY_VIEW_PASSWORD :{BLACK}Wachtwoord -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Beveilig het bedrijf met een wachtwoord zodat niet-geautoriseerde personen niet mee kunnen doen -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Bedrijfswachtwoord instellen # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Verstuur @@ -2570,6 +2559,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Je spele STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Je servernaam is niet ingesteld. Je kunt de naam instellen bovenin het venster Netwerkspel STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}De revisie van deze client komt niet overeen met de revisie van de server STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Ongeldig wachtwoord +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Je staat niet op de lijst met toegestane clients STR_NETWORK_ERROR_SERVER_FULL :{WHITE}De server is vol STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Je bent verbannen van deze server STR_NETWORK_ERROR_KICKED :{WHITE}Je bent van de server geschopt @@ -2585,7 +2575,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Je spele STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mogelijk verbinding verbroken STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}In de afgelopen {NUM} seconde{P "" n} is er geen data ontvangen van de server -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :algemene fout STR_NETWORK_ERROR_CLIENT_DESYNC :desynchronisatiefout STR_NETWORK_ERROR_CLIENT_SAVEGAME :kan kaart niet laden @@ -2597,6 +2587,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ongeldig of onv STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :foute revisie STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :naam al in gebruik STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :fout spelwachtwoord +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :niet op toegestane lijst STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :verkeerd bedrijfsnummer in verstuurd commando STR_NETWORK_ERROR_CLIENT_KICKED :eruit geschopt door server STR_NETWORK_ERROR_CLIENT_CHEATER :probeerde vals te spelen @@ -2802,7 +2793,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Selectee # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Routepunt -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Type routepunt selecteren # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Stationskeuze @@ -2815,8 +2805,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Selectee STR_STATION_BUILD_DRAG_DROP :{BLACK}Slepen STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Je kunt een station bouwen door te slepen -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Selecteer een stationsklasse om weer te geven -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Selecteer het type station om te bouwen +STR_PICKER_MODE_ALL :Alle +STR_PICKER_MODE_ALL_TOOLTIP :Weergave van alle klassen onderdelen omschakelen +STR_PICKER_MODE_USED :Gebruikt +STR_PICKER_MODE_USED_TOOLTIP :Weergave van alleen bestaande onderdelen omschakelen +STR_PICKER_MODE_SAVED :Opgeslagen +STR_PICKER_MODE_SAVED_TOOLTIP :Weergave van alleen opgeslagen onderdelen omschakelen + +STR_PICKER_STATION_CLASS_TOOLTIP :Selecteer een klasse stations voor weergave +STR_PICKER_STATION_TYPE_TOOLTIP :Selecteer een type station om te bouwen. Ctrl+klik om toe te voegen aan of te verwijderen uit opgeslagen onderdelen +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Selecteer een klasse routepunten voor weergave +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Selecteer een routepunt om te bouwen. Ctrl+klik om toe te voegen aan of te verwijderen uit opgeslagen onderdelen +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Selecteer een klasse busstations voor weergave +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Selecteer een type busstation om te bouwen. Ctrl+klik om toe te voegen aan of te verwijderen uit opgeslagen onderdelen +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Selecteer een klasse vrachtwagenstations voor weergave +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Selecteer een type vrachtwagenstation om te bouwen. Ctrl+klik om toe te voegen aan of te verwijderen uit opgeslagen onderdelen +STR_PICKER_OBJECT_CLASS_TOOLTIP :Selecteer een onderdeelklasse voor weergave +STR_PICKER_OBJECT_TYPE_TOOLTIP :Selecteer een type objet voor bouwen. Ctrr+klik om toe te voegen aan of te verwijderen uit opgeslagen onderdelen. Ctrl+klik+slepen om diagonaal te selecteren. Voeg Shift toe voor alleen inschatting van de kosten +STR_PICKER_HOUSE_CLASS_TOOLTIP :Selecteer een stadsgebied voor weergave +STR_PICKER_HOUSE_TYPE_TOOLTIP :Selecteer een type huizen om te bouwen. Ctrl+klik om toe te voegen aan of te verwijderen uit opgeslagen onderdelen + +STR_HOUSE_PICKER_CAPTION :Huizen selecteren + +STR_HOUSE_PICKER_CLASS_ZONE1 :Rand +STR_HOUSE_PICKER_CLASS_ZONE2 :Buitenwijken +STR_HOUSE_PICKER_CLASS_ZONE3 :Buitenste voorsteden +STR_HOUSE_PICKER_CLASS_ZONE4 :Binnenste voorsteden +STR_HOUSE_PICKER_CLASS_ZONE5 :Stadscentrum STR_STATION_CLASS_DFLT :Standaard STR_STATION_CLASS_DFLT_STATION :Standaard station @@ -2871,6 +2886,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Wegen bo STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Bouw tramsporen met de Autotram-methode. Ctrl+klik om tramrails te verwijderen. Voeg Shift toe voor alleen inschatting van de kosten STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Garage bouwen (voor het kopen en onderhouden van wegvoertuigen). Voeg Shift toe voor alleen inschatting van de kosten STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Tramremise bouwen (voor het kopen en onderhouden van trams). Voeg Shift toe voor alleen inschatting van de kosten +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Routepunt bouwen op weg. Ctrl+klik om samen te voegen met ander routepunt. Voeg Shift toe voor alleen inschatting van de kosten +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Routepunt bouwen op trambaan. Ctrl+klik om samen te voegen met ander routepunt. Voeg Shift toe voor alleen inschatting van de kosten STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Busstation bouwen. Ctrl+klik om samen te voegen met ander station. Voeg Shift toe voor alleen inschatting van de kosten STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Passagierstramhalte bouwen. Ctrl+klik om samen te voegen met ander station. Voeg Shift toe voor alleen inschatting van de kosten STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Vrachtwagenstation bouwen. Ctrl+klik om samen te voegen met ander station. Voeg Shift toe voor alleen inschatting van de kosten @@ -2959,8 +2976,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Land kop # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Keuze van object -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selecteer object om te bouwen. Ctrl+klik voor diagonaal gebied. Voeg Shift toe voor alleen inschatting van de kosten -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Hiermee selecteer je de klasse van het te bouwen object STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Bekijk het object STR_OBJECT_BUILD_SIZE :{BLACK}Grootte: {GOLD}{NUM} x {NUM} tegels @@ -3075,7 +3090,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigenaar STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eigenaar van spoorweg: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Gemeente: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Geen -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coördinaten: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coördinaten: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Tegelindex: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Bouwjaar/opknapjaar: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstype: {LTBLUE}{STRING} @@ -3197,7 +3213,7 @@ STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Aantal g STR_FRAMERATE_RATE_BLITTER :{BLACK}Grafische framesnelheid: {STRING} STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Aantal videoframes die weergegeven worden per seconde. STR_FRAMERATE_SPEED_FACTOR :{BLACK}Huidige spelsnelheidsfactor: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hoe snel het spel momenteel draait, vergeleken met de verwachte snelheid bij een normale simulatiesnelheid. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hoe snel het spel momenteel verloopt, vergeleken met de verwachte snelheid bij een normale simulatiesnelheid STR_FRAMERATE_CURRENT :{WHITE}Huidig STR_FRAMERATE_AVERAGE :{WHITE}Gemiddeld STR_FRAMERATE_MEMORYUSE :{WHITE}Geheugen @@ -3386,10 +3402,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Weet je STR_GENERATION_PROGRESS :{WHITE}{NUM}% compleet STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Wereldontwikkeling +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Landschap genereren STR_GENERATION_RIVER_GENERATION :{BLACK}Rivierplaatsing -STR_GENERATION_TREE_GENERATION :{BLACK}Bosplaatsing -STR_GENERATION_OBJECT_GENERATION :{BLACK}Ontwikkeling van onverplaatsbare objecten STR_GENERATION_CLEARING_TILES :{BLACK}Ontwikkeling van ruig en rotsachtig gebied +STR_GENERATION_TOWN_GENERATION :{BLACK}Steden genereren +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Industrieën genereren +STR_GENERATION_OBJECT_GENERATION :{BLACK}Ontwikkeling van onverplaatsbare objecten +STR_GENERATION_TREE_GENERATION :{BLACK}Bosplaatsing STR_GENERATION_SETTINGUP_GAME :{BLACK}Spel wordt geconfigureerd STR_GENERATION_PREPARING_TILELOOP :{BLACK}Bezig met tile-loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Script loopt @@ -3481,7 +3500,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Wegtype STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parameter 60+x voor NewGRF-variabele (hexadecimaal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Sprite uitlijnen {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Sprite uitlijnen: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Sprite uitlijnen: actie 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Sprite uitlijnen: actie 0x5, type {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Volgende sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Doorgaan met volgende normale sprite, alle pseudo-/herkleur-/lettertype-sprites overslaan; bij het einde terug naar het begin STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ga naar sprite @@ -3490,6 +3511,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Vorige s STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Doorgaan met de vorige normale sprite, alle pseudo-/herkleur-/lettertype-sprites overslaan; bij het einde terug naar het begin STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Voorbeeld van de huidige sprite. De uitlijning wordt genegeerd bij het weergeven van deze sprite. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Sprite verplaatsen, dit verandert X en Y offsets. Ctr+klik om de sprite 8 eenheden per keer te verplaatsen. +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Op offset gecentreerd @@ -3598,7 +3620,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ga naar STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Geef een naam voor dit bord # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Steden +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Steden ({COMMA} van {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE} Geen STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (groeistad){BLACK} ({COMMA}) @@ -3726,7 +3748,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Algemeen STR_STORY_BOOK_SPECTATOR :Algemeen verhaal STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Spring naar een bepaalde pagina door deze te selecteren in deze keuzelijst. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Spring naar een bepaalde pagina door deze te selecteren in deze keuzelijst STR_STORY_BOOK_PREV_PAGE :{BLACK}Vorige STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ga naar de vorige pagina STR_STORY_BOOK_NEXT_PAGE :{BLACK}Volgende @@ -3932,7 +3954,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/periode # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrielijst +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrieën ({COMMA} van {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE} Geen STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% vervoerd){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4021,12 +4043,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Niet-gegroepeer STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groepen - Klik op een groep voor een lijst van alle voertuigen in deze groep. Klik en sleep om hiërarchie te beheren +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groepen - Klik op een groep voor een lijst van alle voertuigen in deze groep. Klik en sleep om hiërarchie te ordenen STR_GROUP_CREATE_TOOLTIP :{BLACK}Klik om een groep te creëren STR_GROUP_DELETE_TOOLTIP :{BLACK}Verwijder de geselecteerde groep STR_GROUP_RENAME_TOOLTIP :{BLACK}Hiermee hernoem je de geselecteerde groep STR_GROUP_LIVERY_TOOLTIP :{BLACK}Wijzig het uiterlijk van de geselecteerde groep -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik om deze groep te beschermen tegen globaal automatisch vervangen. Met Ctrl+klik geldt dit ook voor subgroepen. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik om deze groep te beschermen tegen globaal automatisch vervangen. Met Ctrl+klik geldt dit ook voor subgroepen STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Verwijder groep STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Weet je zeker dat je deze groep en de eventuele subgroepen wilt verwijderen? @@ -4442,10 +4464,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Geldoverdracht: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Onderhoudstermijn: {LTBLUE}{COMMA}{NBSP}dagen{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Onderhoudstermijn: {LTBLUE}{COMMA}{NBSP}minuten{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Onderhoudstermijn: {LTBLUE}{COMMA}{NBSP}minu{P ut ten}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Onderhoudstermijn: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Laatste onderhoud: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Laatste onderhoud: {LTBLUE}{NUM} minuten geleden +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Laatste onderhoud: {LTBLUE}{NUM} minu{P ut ten} geleden STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Vergroot de onderhoudstermijn met 10 dagen. Ctrl+klik voor een verhoging met 5 dagen STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Vergroot de onderhoudstermijng met 5 minuten. Ctrl+klik voor een verhoging met 1 minuut STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Vergroot de onderhoudstermijn met 10 procent. Ctrl+klik voor een verhoging met 5 procent @@ -4636,7 +4658,7 @@ STR_ORDER_REFIT_ORDER :(Ombouwen naar STR_ORDER_REFIT_STOP_ORDER :(Ombouwen naar {STRING} en stop) STR_ORDER_STOP_ORDER :(Stop) -STR_ORDER_WAIT_TO_UNBUNCH :(wacht op ontkreukelen) +STR_ORDER_WAIT_TO_UNBUNCH :(Wacht op ontkreukelen) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Kan station niet gebruiken){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4840,8 +4862,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spelscript STR_AI_SETTINGS_CLOSE :{BLACK}Sluiten STR_AI_SETTINGS_RESET :{BLACK}Terugstellen STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4894,9 +4914,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Verwacht STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Opslaan van spel is nog bezig,{}Wacht tot dit voltooid is! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatisch opslaan mislukt STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan niet lezen van schijf -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Opslaan spel mislukt{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spel opslaan mislukt... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan bestand niet verwijderen -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Laden spel mislukt{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Spel laden spel mislukt... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne fout: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Opgeslagen spel beschadigd - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Opgeslagen spel hoort bij een nieuwere versie @@ -4990,7 +5010,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan het STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan bedrijfshoofdkantoor niet bouwen... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan geen steden bouwen +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan geen steden bouwen... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kan stad niet hernoemen... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kan hier geen nieuwe stad bouwen... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kan dorp niet uitbreiden... @@ -5001,6 +5021,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... er i STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Wegwerkzaamheden in uitvoering STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan deze stad niet verwijderen...{}Een station of depot verwijst naar deze plaats of een door de stad beheerde tegel kan niet worden verwijderd STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... er is geen geschikte plaats voor een standbeeld in het centrum van dit dorp +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Kan huis niet bouwen... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... te veel industrieën @@ -5038,6 +5059,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kan hier STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Voegt meer dan één bestaand (laad)station samen STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... station te omvangrijk +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... niet-ondersteund aantal sporen +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... niet-ondersteunde lengte STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Te veel (laad)stations STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Te veel treinstationsdelen STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Te veel bushaltes @@ -5073,11 +5096,14 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Ligt naa STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Te dicht bij een ander routepunt STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan hier geen routepunt bouwen... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Kan hier geen weg-routepunt bouwen... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kan boei hier niet plaatsen... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan naam routepunt niet aanpassen... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan hier geen routepunt verwijderen... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Kan hier geen weg-routepunt verwijderen... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Routepunt moet eerst verwijderd worden +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Verwijder eerst het weg-routepunt STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boei in de weg STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boei is in gebruik door een ander bedrijf! @@ -5278,6 +5304,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Pas je N STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nog geen voertuigen beschikbaar STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE} Start een nieuw spel na {DATE_SHORT} of gebruik een NewGRF dat in vroege voertuigen voorziet +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Geen wegtypen beschikbaar voor in de stad +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Wijzig je NewGRF-configuratie +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Er zijn nog geen wegtypen beschikbaar voor steden +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Start een nieuw spel na {DATE_SHORT} of gebruik een NewGRF met wegtypen die al vroeg in steden gebruikt kunnen worden + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan trein niet het sein laten passeren bij gevaar... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan de richting van de trein niet omdraaien... @@ -5320,6 +5351,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Er zijn STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Dit vliegtuig kan niet landen op dit heliplatform STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Deze helikopter kan niet landen op dit vliegveld STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Er is geen routepunt +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Er is geen weg-routepunt STR_ERROR_NO_BUOY :{WHITE}Er is geen boei # Timetable related errors @@ -5807,6 +5839,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}mjn +STR_CURRENCY_SHORT_GIGA :{NBSP}mjd +STR_CURRENCY_SHORT_TERA :{NBSP}bn + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5823,6 +5860,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/english.txt b/src/lang/english.txt index 8ff92f7f97..e8ab5b700b 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -308,11 +308,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}By enabl STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}Cancel STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Warning: Server administrators may be able to read any text entered here. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Length: {NUM} @@ -438,6 +437,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Abandon scenari STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Exit +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Generate towns +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Place houses + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Game options @@ -621,14 +623,14 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Disable all STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Display all cargoes on the cargo payment rates graph STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Display no cargoes on the cargo payment rates graph -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toggle graph for cargo type on/off +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toggle graph of this cargo type STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Show detailed performance ratings # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Key to company graphs -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Click here to toggle company's entry on graph on/off +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Toggle graph of this company # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Company League Table @@ -708,7 +710,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Select ' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Select 'Ezy Street style music' programme STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Select 'Custom 1' (user-defined) programme STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select 'Custom 2' (user-defined) programme -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle programme shuffle on/off +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle programme shuffle STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Show music track selection window # Playlist window @@ -791,7 +793,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Desert STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snow -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle town names on/off on map +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle display of town names STR_SMALLMAP_CENTER :{BLACK}Centre the smallmap on the current position STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -800,9 +802,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Disable all STR_SMALLMAP_ENABLE_ALL :{BLACK}Enable all STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Show height +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Show industry names STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Display no industries on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Display all industries on the map STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toggle display of heightmap +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Toggle display of industry names STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Display no company property on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Display all company property on the map STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Display no cargoes on the map @@ -956,18 +960,14 @@ STR_GAME_OPTIONS_VOLUME :Volume STR_GAME_OPTIONS_SFX_VOLUME :Sound effects STR_GAME_OPTIONS_MUSIC_VOLUME :Music -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency units STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({RAW_STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :British Pound STR_GAME_OPTIONS_CURRENCY_USD :American Dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1011,6 +1011,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit STR_GAME_OPTIONS_CURRENCY_LVL :Latvian Lats +STR_GAME_OPTIONS_CURRENCY_PTE :Portuguese Escudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves @@ -1053,15 +1054,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale be STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Use traditional sprite font -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the traditional fixed-size sprite font. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the traditional fixed-size sprite font STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fonts -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Check this box to anti-alias resizable fonts. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Check this box to anti-alias resizable fonts -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automated survey STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participate in automated survey @@ -1090,6 +1087,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base mus STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select the base music set to use STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set +STR_GAME_OPTIONS_ONLINE_CONTENT :Get Content +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Check for new and updated content to download + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(no plugins to integrate with social platforms installed) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{RAW_STRING} ({RAW_STRING}) @@ -1274,7 +1274,7 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Infinite money: STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Allow unlimited spending and disable bankruptcy of companies STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximum initial loan: {STRING2} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account). If set to "No loan", no money will be available unless provided by a Game Script or the "Infinite money" setting. +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account). If set to "No loan", no money will be available unless provided by a Game Script or the "Infinite money" setting STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :No loan @@ -1358,7 +1358,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Slope steepness STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steepness of a sloped tile for a road vehicle. Higher values make it more difficult to climb a hill STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains from making 90° turns: {STRING2} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Allow to join stations not directly adjacent: {STRING2} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Allow adding parts to a station without directly touching the existing parts, by Ctrl+Clicking while placing the new parts @@ -1470,7 +1470,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Starting compan STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Choose starting colour for the company STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Starting company secondary colour: {STRING2} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Choose starting secondary colour for the company, if using a NewGRF that enables it. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Choose starting secondary colour for the company, if using a NewGRF that enables it STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Airports never expire: {STRING2} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Enabling this setting makes each airport type stay available forever after its introduction @@ -1490,26 +1490,29 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Warn if a vehic STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :When enabled, a news message gets sent when a vehicle has not made any profit within a year STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :When enabled, a news message gets sent when a vehicle has not made any profit within a period +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Warn if a vehicle is getting old: {STRING2} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :When enabled, a news message gets sent when a vehicle is getting old + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never expire: {STRING2} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Timekeeping: {STRING2} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Select the timekeeping units of the game. This cannot be changed later.{}{}Calendar-based is the classic OpenTTD experience, with a year consisting of 12 months, and each month having 28-31 days.{}{}In Wallclock-based time, vehicle movement, cargo production, and financials are instead based on one-minute increments, which is about as long as a 30 day month takes in Calendar-based mode. These are grouped into 12-minute periods, equivalent to a year in Calendar-based mode.{}{}In either mode there is always a classic calendar, which is used for introduction dates of vehicles, houses, and other infrastructure. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Select the timekeeping units of the game. This cannot be changed later.{}{}Calendar-based is the classic OpenTTD experience, with a year consisting of 12 months, and each month having 28-31 days.{}{}In Wallclock-based time, cargo production and financials are instead based on one-minute increments, which is about as long as a 30 day month takes in Calendar-based mode. These are grouped into 12-minute periods, equivalent to a year in Calendar-based mode.{}{}In either mode there is always a classic calendar, which is used for introduction dates of vehicles, houses, and other infrastructure ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Calendar STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Wallclock STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minutes per year: {STRING2} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Choose the number of minutes in a calendar year. The default is 12 minutes. Set to 0 to stop calendar time from changing. This setting does not affect the economic simulation of the game, and is only available when using wallclock timekeeping. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Choose the number of minutes in a calendar year. The default is 12 minutes. Set to 0 to stop calendar time from changing. Increasing the length of the calendar year slows down the introduction of vehicles, houses, and other infrastructure. It does not affect vehicle speed or economic simulation, except for inflation. This setting is only available when using wallclock timekeeping STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (calendar time frozen) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Scale town cargo production: {STRING2} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Scale the cargo production of towns by this percentage. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Scale the cargo production of towns by this percentage STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Scale industry cargo production: {STRING2} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Scale the cargo production of industries by this percentage. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Scale the cargo production of industries by this percentage STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING2} @@ -1528,7 +1531,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duration of err STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duration for displaying error messages in a red window. Note that some (critical) error messages are not closed automatically after this time, but must be closed manually STR_CONFIG_SETTING_HOVER_DELAY :Show tooltips: {STRING2} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips are bound to the right mouse button when this value is set to 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips are bound to the right mouse button when this value is set to 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hover for {COMMA} millisecond{P 0 "" s} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Right click @@ -1540,8 +1543,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Thickness of li STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the line in the graphs. A thin line is more precisely readable, a thicker line is easier to see and colours are easier to distinguish STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Show the NewGRF's name in the build vehicle window: {STRING2} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Add a line to the build vehicle window, showing which NewGRF the selected vehicle comes from. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Show the cargoes the vehicles can carry in the list windows {STRING2} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Add a line to the build vehicle window, showing which NewGRF the selected vehicle comes from +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Show the cargoes the vehicles can carry in the list windows: {STRING2} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :If enabled, the vehicle's transportable load will appear above it in the vehicle lists STR_CONFIG_SETTING_LANDSCAPE :Landscape: {STRING2} @@ -1560,13 +1563,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry densit STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil industries: {STRING2} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING2} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Choose at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage" STR_CONFIG_SETTING_SNOW_COVERAGE :Snow coverage: {STRING2} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING2} @@ -1574,7 +1577,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Choose the appr STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING2} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Choose the shape and number of hills. Smooth landscapes have fewer, wider hills, while rough landscapes have more, smaller hills. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Choose the shape and number of hills. Smooth landscapes have fewer, wider hills, while rough landscapes have more, smaller hills ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth @@ -1582,7 +1585,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough STR_CONFIG_SETTING_VARIETY :Variety distribution: {STRING2} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Choose if the map contains both mountains and flat areas. The higher the variety, the more differences in elevation between mountainous and flat areas. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Choose if the map contains both mountains and flat areas. The higher the variety, the more differences in elevation between mountainous and flat areas STR_CONFIG_SETTING_RIVER_AMOUNT :River amount: {STRING2} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choose how many rivers to generate @@ -1629,7 +1632,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dark green STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Cargo flow overlay colours: {STRING2} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Set the colour scheme used for the cargo flow overlay. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Set the colour scheme used for the cargo flow overlay ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Green to red (original) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Green to blue @@ -1750,10 +1753,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building t STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatically remove signals during rail construction: {STRING2} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatically remove signals during rail construction if the signals are in the way. Note that this can potentially lead to train crashes. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatically remove signals during rail construction if the signals are in the way. Note that this can potentially lead to train crashes STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Fast forward speed limit: {STRING2} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limit on how fast the game goes when fast forward is enabled. 0 = no limit (as fast as your computer allows). Values below 100% slow the game down. The upper-limit depends on the specification of your computer and can vary depending on the game. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limit on how fast the game goes when fast forward is enabled. 0 = no limit (as fast as your computer allows). Values below 100% slow the game down. The upper-limit depends on the specification of your computer and can vary depending on the game STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normal game speed ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :No limit (as fast as your computer allows) @@ -1817,11 +1820,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Allow AI comput STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes before scripts are suspended: {STRING2} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximum number of computation steps that a script can take in one turn STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Max memory usage per script: {STRING2} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :How much memory a single script may consume before it's forcibly terminated. This may need to be increased for large maps. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :How much memory a single script may consume before it's forcibly terminated. This may need to be increased for large maps STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Service intervals are in percents: {STRING2} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :When enabled, vehicles try to service when their reliability drops by a given percentage of the maximum reliability.{}{}For example, if a vehicle's maximum reliability is 90% and the service interval is 20%, the vehicle will try to service when it reaches 72% reliability. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :When enabled, vehicles try to service when their reliability drops by a given percentage of the maximum reliability.{}{}For example, if a vehicle's maximum reliability is 90% and the service interval is 20%, the vehicle will try to service when it reaches 72% reliability STR_CONFIG_SETTING_SERVINT_TRAINS :Default service interval for trains: {STRING2} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default service interval for new rail vehicles, if no explicit service interval is set for the vehicle @@ -1831,7 +1834,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Default service STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Set the default service interval for new aircraft, if no explicit service interval is set for the vehicle STR_CONFIG_SETTING_SERVINT_SHIPS :Default service interval for ships: {STRING2} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Set the default service interval for new ships, if no explicit service interval is set for the vehicle -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Day{P 0 "" s}/Minute{P 0 "" s}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Day{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minute{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled @@ -1839,7 +1846,7 @@ STR_CONFIG_SETTING_NOSERVICE :Disable servici STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :When enabled, vehicles do not get serviced if they cannot break down STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Loading speed penalty for trains that are longer than the station: {STRING2} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :When enabled, trains which are too long for the station load more slowly than a train which fits the station. This setting does not affect pathfinding. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :When enabled, trains which are too long for the station load more slowly than a train which fits the station. This setting does not affect pathfinding STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Enable wagon speed limits: {STRING2} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :When enabled, also use speed limits of wagons for deciding the maximum speed of a train @@ -1904,13 +1911,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Year that the n STR_CONFIG_SETTING_STARTING_YEAR :Starting year: {STRING2} STR_CONFIG_SETTING_ENDING_YEAR :Scoring end year: {STRING2} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Year the game ends for scoring purposes. At the end of this year, the company's score is recorded and the high-score screen is displayed, but the players can continue playing after that.{}If this is before the starting year, the high-score screen is never displayed. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Year the game ends for scoring purposes. At the end of this year, the company's score is recorded and the high-score screen is displayed, but the players can continue playing after that.{}If this is before the starting year, the high-score screen is never displayed STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Never STR_CONFIG_SETTING_ECONOMY_TYPE :Economy type: {STRING2} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Smooth economy makes production changes more often, and in smaller steps. Frozen economy stops production changes and industry closures. This setting may have no effect if industry types are provided by a NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Smooth economy makes production changes more often, and in smaller steps. Frozen economy stops production changes and industry closures. This setting may have no effect if industry types are provided by a NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Smooth @@ -1965,7 +1972,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Allowed STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Allowed, custom town layout STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Town cargo generation: {STRING2} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :How much cargo is produced by houses in towns, relative to the overall population of the town.{}Quadratic growth: A town twice the size generates four times as many passengers.{}Linear growth: A town twice the size generates twice the amount of passengers. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :How much cargo is produced by houses in towns, relative to the overall population of the town.{}Quadratic growth: A town twice the size generates four times as many passengers.{}Linear growth: A town twice the size generates twice the amount of passengers ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Quadratic (original) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linear @@ -2006,7 +2013,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Highest resolution sprites to use: {STRING2} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limit the maximum resolution to use for sprites. Limiting sprite resolution will avoid using high resolution graphics even when available. This can help keep the game appearance unified when using a mix of GRF files with and without high resolution graphics. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limit the maximum resolution to use for sprites. Limiting sprite resolution will avoid using high resolution graphics even when available. This can help keep the game appearance unified when using a mix of GRF files with and without high resolution graphics ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2030,33 +2037,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial city si STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Average size of cities relative to normal towns at start of the game STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Update distribution graph every {STRING2} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X seconds. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X seconds. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Take {STRING2} for recalculation of distribution graph -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of seconds. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of seconds. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribution mode for passengers: {STRING2} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetric" means that roughly the same number of passengers will go from a station A to a station B as from B to A. "Asymmetric" means that arbitrary numbers of passengers can go in either direction. "Manual" means that no automatic distribution will take place for passengers. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetric" means that roughly the same number of passengers will go from a station A to a station B as from B to A. "Asymmetric" means that arbitrary numbers of passengers can go in either direction. "Manual" means that no automatic distribution will take place for passengers STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distribution mode for mail: {STRING2} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetric" means that roughly the same amount of mail will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of mail can be sent in either direction. "Manual" means that no automatic distribution will take place for mail. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetric" means that roughly the same amount of mail will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of mail can be sent in either direction. "Manual" means that no automatic distribution will take place for mail STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribution mode for the ARMOURED cargo class: {STRING2} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical, or gold in the subarctic climate. NewGRFs may change that. "Symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of that cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic or subtropic, as banks only receive cargo in these climates. For temperate you can also choose symmetric as banks will send valuables back to the origin bank. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical, or gold in the subarctic climate. NewGRFs may change that. "Symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of that cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic or subtropic, as banks only receive cargo in these climates. For temperate you can also choose symmetric as banks will send valuables back to the origin bank STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribution mode for other cargo classes: {STRING2} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for those cargoes. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for those cargoes ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetric STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetric STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribution accuracy: {STRING2} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect of distance on demands: {STRING2} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this to a value higher than 0, the distance between the origin station A of some cargo and a possible destination B will have an effect on the amount of cargo sent from A to B. The further away B is from A the less cargo will be sent. The higher you set it, the less cargo will be sent to far away stations and the more cargo will be sent to near stations. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this to a value higher than 0, the distance between the origin station A of some cargo and a possible destination B will have an effect on the amount of cargo sent from A to B. The further away B is from A the less cargo will be sent. The higher you set it, the less cargo will be sent to far away stations and the more cargo will be sent to near stations STR_CONFIG_SETTING_DEMAND_SIZE :Amount of returning cargo for symmetric mode: {STRING2} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using high-capacity paths: {STRING2} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, prefering the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, prefering the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Speed units (land): {STRING2} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Speed units (nautical): {STRING2} @@ -2131,17 +2138,8 @@ STR_CONFIG_SETTING_AI :Competitors STR_CONFIG_SETTING_AI_NPC :Computer players STR_CONFIG_SETTING_NETWORK :Network -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder for trains: {STRING2} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Path finder to use for trains -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pathfinder for road vehicles: {STRING2} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Path finder to use for road vehicles -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pathfinder for ships: {STRING2} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Path finder to use for ships STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatic reversing at signals: {STRING2} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Allow trains to reverse on a signal, if they waited there a long time -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recommended) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Change setting value @@ -2460,7 +2458,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Disconnect STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is protected. Enter password -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Online players @@ -2487,6 +2484,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Your player nam STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Administrative actions to perform for this client STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Administrative actions to perform for this company STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Join this company +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Authorize this client to join your company STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Send a message to this player STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Send a message to all players of this company STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Send a message to all spectators @@ -2509,13 +2507,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via rela STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Kick STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Ban STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Delete -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Password unlock STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Admin action STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Are you sure you want to kick player '{RAW_STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Are you sure you want to ban player '{RAW_STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Are you sure you want to delete company '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Are you sure you want to reset the password of company '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Use relay? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Failed to establish a connection between you and server '{RAW_STRING}'.{}Would you like to relay this session via '{RAW_STRING}'? @@ -2532,19 +2528,9 @@ STR_NETWORK_ASK_SURVEY_YES :Yes STR_NETWORK_SPECTATORS :Spectators -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password -STR_COMPANY_PASSWORD_OK :{BLACK}Give the company the new password -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Company password -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Default company password -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Use this company password as default for new companies - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Join STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Join and play as this company -STR_COMPANY_VIEW_PASSWORD :{BLACK}Password -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Password-protect your company to prevent unauthorised users from joining -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Set company password # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send @@ -2573,6 +2559,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Your pla STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Your server name has not been set. The name can be set at the top of the Multiplayer window STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}The revision of this client does not match the server's revision STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Wrong password +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}You are not on the list of allowed clients STR_NETWORK_ERROR_SERVER_FULL :{WHITE}The server is full STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}You are banned from this server STR_NETWORK_ERROR_KICKED :{WHITE}You were kicked out of the game @@ -2588,7 +2575,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Your pla STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Possible connection loss STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}The last {NUM} second{P "" s} no data has arrived from the server -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :general error STR_NETWORK_ERROR_CLIENT_DESYNC :desync error STR_NETWORK_ERROR_CLIENT_SAVEGAME :could not load map @@ -2600,6 +2587,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :received invali STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :wrong revision STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :name already in use STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :wrong password +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :not on allow list STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :wrong company in DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :kicked by server STR_NETWORK_ERROR_CLIENT_CHEATER :was trying to use a cheat @@ -2805,7 +2793,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Select r # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Waypoint -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Select waypoint type # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Rail Station Selection @@ -2818,8 +2805,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Select l STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Build a station using drag & drop -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Select a station class to display -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Select the station type to build +STR_PICKER_MODE_ALL :All +STR_PICKER_MODE_ALL_TOOLTIP :Toggle showing items from all classes +STR_PICKER_MODE_USED :Used +STR_PICKER_MODE_USED_TOOLTIP :Toggle showing only existing items +STR_PICKER_MODE_SAVED :Saved +STR_PICKER_MODE_SAVED_TOOLTIP :Toogle showing only saved items + +STR_PICKER_STATION_CLASS_TOOLTIP :Select a station class to display +STR_PICKER_STATION_TYPE_TOOLTIP :Select a station type to build. Ctrl+Click to add or remove in saved items +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Select a waypoint class to display +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Select a waypoint to build. Ctrl+Click to add or remove in saved items +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Select a bus station class to display +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Select a bus station type to build. Ctrl+Click to add or remove in saved items +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Select a lorry station class to display +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Select a lorry station type to build. Ctrl+Click to add or remove in saved items +STR_PICKER_OBJECT_CLASS_TOOLTIP :Select an object class to display +STR_PICKER_OBJECT_TYPE_TOOLTIP :Select an object type to build. Ctrl+Click to add or remove in saved items. Ctrl+Click+Drag to select the area diagonally. Also press Shift to show cost estimate only +STR_PICKER_HOUSE_CLASS_TOOLTIP :Select a town zone to display +STR_PICKER_HOUSE_TYPE_TOOLTIP :Select a house type to build. Ctrl+Click to add or remove in saved items + +STR_HOUSE_PICKER_CAPTION :House Selection + +STR_HOUSE_PICKER_CLASS_ZONE1 :Edge +STR_HOUSE_PICKER_CLASS_ZONE2 :Outskirts +STR_HOUSE_PICKER_CLASS_ZONE3 :Outer Suburbs +STR_HOUSE_PICKER_CLASS_ZONE4 :Inner Suburbs +STR_HOUSE_PICKER_CLASS_ZONE5 :Town centre STR_STATION_CLASS_DFLT :Default STR_STATION_CLASS_DFLT_STATION :Default station @@ -2874,6 +2886,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Build ro STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Build tramway section using the Autotram mode. Ctrl+Click to remove tramway section. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Build road vehicle depot (for buying and servicing vehicles). Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Build tram vehicle depot (for buying and servicing vehicles). Also press Shift to show cost estimate only +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Build waypoint on road. Ctrl+Click to select another waypoint to join. Also press Shift to show cost estimate only +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Build waypoint on tramway. Ctrl+Click to select another waypoint to join. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Build bus station. Ctrl+Click to select another station to join. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Build passenger tram station. Ctrl+Click to select another station to join. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Build lorry station. Ctrl+Click to select another station to join. Also press Shift to show cost estimate only @@ -2962,8 +2976,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Purchase # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Object Selection -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Select object to build. Ctrl+Click+Drag to select the area diagonally. Also press Shift to show cost estimate only -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Select class of the object to build STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Preview of the object STR_OBJECT_BUILD_SIZE :{BLACK}Size: {GOLD}{NUM} x {NUM} tiles @@ -2978,11 +2990,11 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Place tr STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Random Trees STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly throughout the landscape STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant single trees by dragging over the landscape. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant single trees by dragging over the landscape STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Grove -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant small forests by dragging over the landscape. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant small forests by dragging over the landscape STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Forest -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant large forests by dragging over the landscape. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant large forests by dragging over the landscape # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generation @@ -3078,7 +3090,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramway STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Railway owner: {LTBLUE}{STRING1} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Local authority: {LTBLUE}{STRING1} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :None -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUM} x {NUM} x {NUM} ({RAW_STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Tile index: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Built/renovated: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Station class: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Station type: {LTBLUE}{STRING} @@ -3196,11 +3209,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Frame Rate STR_FRAMERATE_CAPTION_SMALL :{STRING2}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Simulation rate: {STRING2} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Number of game ticks simulated per second. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Number of game ticks simulated per second STR_FRAMERATE_RATE_BLITTER :{BLACK}Graphics frame rate: {STRING2} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Number of video frames rendered per second. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Number of video frames rendered per second STR_FRAMERATE_SPEED_FACTOR :{BLACK}Current game speed factor: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}How fast the game is currently running, compared to the expected speed at normal simulation rate. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}How fast the game is currently running, compared to the expected speed at normal simulation rate STR_FRAMERATE_CURRENT :{WHITE}Current STR_FRAMERATE_AVERAGE :{WHITE}Average STR_FRAMERATE_MEMORYUSE :{WHITE}Memory @@ -3389,10 +3402,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Do you STR_GENERATION_PROGRESS :{WHITE}{NUM}% complete STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}World generation +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Landscape generation STR_GENERATION_RIVER_GENERATION :{BLACK}River generation -STR_GENERATION_TREE_GENERATION :{BLACK}Tree generation -STR_GENERATION_OBJECT_GENERATION :{BLACK}Object generation STR_GENERATION_CLEARING_TILES :{BLACK}Rough and rocky area generation +STR_GENERATION_TOWN_GENERATION :{BLACK}Town generation +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Industry generation +STR_GENERATION_OBJECT_GENERATION :{BLACK}Object generation +STR_GENERATION_TREE_GENERATION :{BLACK}Tree generation STR_GENERATION_SETTINGUP_GAME :{BLACK}Setting up game STR_GENERATION_PREPARING_TILELOOP :{BLACK}Running tile-loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Running script @@ -3484,7 +3500,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road type STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({RAW_STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Aligning sprite: ({RAW_STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Aligning sprite: Action 0xA, {COMMA} ({RAW_STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Aligning sprite: Action 0x5, type {HEX}, {COMMA} ({RAW_STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the last sprite to the first STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Go to sprite @@ -3493,6 +3511,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the first sprite to the last STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets. Ctrl+Click to move the sprite eight units at a time +STR_SPRITE_ALIGNER_SPRITE :{RAW_STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Offset centred @@ -3601,7 +3620,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Go to pr STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Enter a name for the sign # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Towns +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Towns ({COMMA} of {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- None - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (City){BLACK} ({COMMA}) @@ -3729,7 +3748,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global S STR_STORY_BOOK_SPECTATOR :Global Story Book STR_STORY_BOOK_TITLE :{YELLOW}{RAW_STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Page {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list STR_STORY_BOOK_PREV_PAGE :{BLACK}Previous STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Go to previous page STR_STORY_BOOK_NEXT_PAGE :{BLACK}Next @@ -3937,7 +3956,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_HIGHLIGHT_INFRASTRUCTURE :{BLACK}Highligh STR_COMPANY_INFRASTRUCTURE_VIEW_HIGHLIGHT_INFRASTRUCTURE_TOOLTIP:{BLACK}Highlight all infrastructure tiles owned by this company # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industries +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industries ({COMMA} of {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- None - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{RAW_STRING}{YELLOW} ({COMMA}% transported){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4026,12 +4045,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Ungrouped aircr STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to create a group STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete the selected group STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group STR_GROUP_LIVERY_TOOLTIP :{BLACK}Change livery of the selected group -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace. Ctrl+Click to also protect sub-groups. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace. Ctrl+Click to also protect sub-groups STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Delete Group STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Are you sure you want to delete this group and any descendants? @@ -4447,10 +4466,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacity STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer Credits: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servicing interval: {LTBLUE}{COMMA}{NBSP}days{BLACK} {STRING1} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Servicing interval: {LTBLUE}{COMMA}{NBSP}minutes{BLACK} {STRING1} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Servicing interval: {LTBLUE}{COMMA}{NBSP}minute{P "" s}{BLACK} {STRING1} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servicing interval: {LTBLUE}{COMMA}%{BLACK} {STRING1} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Last service: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Last service: {LTBLUE}{NUM} minutes ago +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Last service: {LTBLUE}{NUM} minute{P "" s} ago STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Increase servicing interval by 10 days. Ctrl+Click to increase servicing interval by 5 days STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Increase servicing interval by 5 minutes. Ctrl+Click to increase servicing interval by 1 minute STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Increase servicing interval by 10 percent. Ctrl+Click to increase servicing interval by 5 percent @@ -4641,7 +4660,7 @@ STR_ORDER_REFIT_ORDER :(Refit to {STRI STR_ORDER_REFIT_STOP_ORDER :(Refit to {STRING} and stop) STR_ORDER_STOP_ORDER :(Stop) -STR_ORDER_WAIT_TO_UNBUNCH :(wait to unbunch) +STR_ORDER_WAIT_TO_UNBUNCH :(Wait to unbunch) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING1} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Can't use station){POP_COLOUR} {STRING} {STATION} {STRING1} @@ -4845,8 +4864,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script STR_AI_SETTINGS_CLOSE :{BLACK}Close STR_AI_SETTINGS_RESET :{BLACK}Reset STR_AI_SETTINGS_SETTING :{RAW_STRING}: {ORANGE}{STRING1} -STR_AI_SETTINGS_SETTING_DEVIATION :{RAW_STRING}: {ORANGE}[{STRING1}, {STRING1}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING1}, {STRING1}] # Textfile window @@ -4899,9 +4916,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimate STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Saving still in progress,{}please wait until it is finished! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosave failed STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING1} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game save failed... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING1} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game load failed... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {RAW_STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {RAW_STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version @@ -4995,7 +5012,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Can't bu STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Can't build company headquarters... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Can't build any towns +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Can't build any towns... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Can't rename town... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Can't found town here... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Can't expand town... @@ -5006,6 +5023,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... ther STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road works in progress STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Can't delete this town...{}A station or depot is referring to the town or a town owned tile can't be removed STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... there is no suitable place for a statue in the centre of this town +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Can't build house... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... too many industries @@ -5043,6 +5061,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Can't bu STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjoins more than one existing station/loading area STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... station too spread out +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... unsupported number of tracks +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... unsupported length STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Too many stations/loading areas STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Too many railway station parts STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Too many bus stops @@ -5078,11 +5098,14 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjoins STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Too close to another waypoint STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Can't build train waypoint here... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Can't build road waypoint here... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Can't place buoy here... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Can't change waypoint name... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Can't remove train waypoint here... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Can't remove road waypoint here... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Must remove rail waypoint first +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Must remove road waypoint first STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... buoy in the way STR_ERROR_BUOY_IS_IN_USE :{WHITE}... buoy is in use by another company! @@ -5283,6 +5306,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change y STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early vehicles +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}No town-buildable road types are available +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}No town-buildable road types are available yet +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early town-buildable road types + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train... @@ -5325,6 +5353,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}There ar STR_ERROR_AIRPORT_NO_PLANES :{WHITE}This plane cannot land at this heliport STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}This helicopter cannot land at this airport STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}There is no railway waypoint +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}There is no road waypoint STR_ERROR_NO_BUOY :{WHITE}There is no buoy # Timetable related errors @@ -5833,6 +5862,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING1} STR_JUST_STRING2 :{STRING2} +STR_JUST_STRING4 :{STRING4} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{RAW_STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{RAW_STRING} diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 75f9da2d39..1eba93bc77 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -308,11 +308,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}By enabl STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}Cancel STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Warning: Server administrators may be able to read any text entered here. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Length: {NUM} @@ -438,6 +437,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Abandon scenari STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Exit +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Generate towns +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Place houses + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Game options @@ -621,14 +623,14 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Disable all STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Display all cargos on the cargo payment rates graph STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Display no cargos on the cargo payment rates graph -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toggle graph for cargo type on/off +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toggle graph of this cargo type STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Show detailed performance ratings # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Key to company graphs -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Click here to toggle company's entry on graph on/off +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Toggle graph of this company # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Company League Table @@ -708,7 +710,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Select ' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Select 'Ezy Street style music' programme STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Select 'Custom 1' (user-defined) programme STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select 'Custom 2' (user-defined) programme -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle programme shuffle on/off +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle program shuffle STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Show music track selection window # Playlist window @@ -791,7 +793,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Desert STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snow -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle town names on/off on map +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle display of town names STR_SMALLMAP_CENTER :{BLACK}Centre the small map on the current position STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -800,9 +802,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Disable all STR_SMALLMAP_ENABLE_ALL :{BLACK}Enable all STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Show height +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Show industry names STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Display no industries on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Display all industries on the map STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toggle display of heightmap +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Toggle display of industry names STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Display no company property on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Display all company property on the map STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Display no cargoes on the map @@ -956,18 +960,14 @@ STR_GAME_OPTIONS_VOLUME :Volume STR_GAME_OPTIONS_SFX_VOLUME :Sound effects STR_GAME_OPTIONS_MUSIC_VOLUME :Music -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency units STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :British Pound STR_GAME_OPTIONS_CURRENCY_USD :American Dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1011,6 +1011,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit STR_GAME_OPTIONS_CURRENCY_LVL :Latvian Lats +STR_GAME_OPTIONS_CURRENCY_PTE :Portuguese Escudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves @@ -1053,15 +1054,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale be STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Use traditional sprite font -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the traditional fixed-size sprite font. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the traditional fixed-size sprite font STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fonts -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Check this box to anti-alias resizable fonts. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Check this box to anti-alias resizable fonts -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automated survey STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participate in automated survey @@ -1090,6 +1087,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base mus STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select the base music set to use STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set +STR_GAME_OPTIONS_ONLINE_CONTENT :Get Content +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Check for new and updated content to download + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(no plugins to integrate with social platforms installed) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1117,6 +1117,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Decrease STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Increase the amount of your currency for one Pound (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Set the exchange rate of your currency for one Pound (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Set the separator for your currency + STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Set the prefix string for your currency STR_CURRENCY_SUFFIX :{LTBLUE}Suffix: {ORANGE}{STRING} @@ -1271,7 +1274,7 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Infinite money: STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Allow unlimited spending and disable bankruptcy of companies STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximum initial loan: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account). If set to "No loan", no money will be available unless provided by a Game Script or the "Infinite money" setting. +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account). If set to "No loan", no money will be available unless provided by a Game Script or the "Infinite money" setting STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :No loan @@ -1355,7 +1358,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Slope steepness STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steepness of a sloped tile for a road vehicle. Higher values make it more difficult to climb a hill STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains and ships from making 90° turns: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations. This also applies to the turning radius of ships +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Allow to join stations not directly adjacent: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Allow adding parts to a station without directly touching the existing parts, by Ctrl+Clicking while placing the new parts @@ -1467,7 +1470,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Starting compan STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Choose starting colour for the company STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Starting company secondary colour: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Choose starting secondary colour for the company, if using a NewGRF that enables it. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Choose starting secondary colour for the company, if using a NewGRF that enables it STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Airports never expire: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Enabling this setting makes each airport type stay available forever after its introduction @@ -1487,26 +1490,29 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Warn if a vehic STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :When enabled, a news message gets sent when a vehicle has not made any profit within a year STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :When enabled, a news message gets sent when a vehicle has not made any profit within a period +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Warn if a vehicle is getting old: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :When enabled, a news message gets sent when a vehicle is getting old + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never expire: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Timekeeping: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Select the timekeeping units of the game. This cannot be changed later.{}{}Calendar-based is the classic OpenTTD experience, with a year consisting of 12 months, and each month having 28-31 days.{}{}In Wallclock-based time, vehicle movement, cargo production, and financials are instead based on one-minute increments, which is about as long as a 30 day month takes in Calendar-based mode. These are grouped into 12-minute periods, equivalent to a year in Calendar-based mode.{}{}In either mode there is always a classic calendar, which is used for introduction dates of vehicles, houses, and other infrastructure. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Select the timekeeping units of the game. This cannot be changed later.{}{}Calendar-based is the classic OpenTTD experience, with a year consisting of 12 months, and each month having 28-31 days.{}{}In Wallclock-based time, cargo production and financials are instead based on one-minute increments, which is about as long as a 30 day month takes in Calendar-based mode. These are grouped into 12-minute periods, equivalent to a year in Calendar-based mode.{}{}In either mode there is always a classic calendar, which is used for introduction dates of vehicles, houses, and other infrastructure ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Calendar STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Wallclock STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minutes per year: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Choose the number of minutes in a calendar year. The default is 12 minutes. Set to 0 to stop calendar time from changing. This setting does not affect the economic simulation of the game, and is only available when using wallclock timekeeping. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Choose the number of minutes in a calendar year. The default is 12 minutes. Set to 0 to stop calendar time from changing. Increasing the length of the calendar year slows down the introduction of vehicles, houses, and other infrastructure. It does not affect vehicle speed or economic simulation, except for inflation. This setting is only available when using wallclock timekeeping STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (calendar time frozen) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Scale town cargo production: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Scale the cargo production of towns by this percentage. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Scale the cargo production of towns by this percentage STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Scale industry cargo production: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Scale the cargo production of industries by this percentage. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Scale the cargo production of industries by this percentage STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING} @@ -1525,7 +1531,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duration of err STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duration for displaying error messages in a red window. Note that some (critical) error messages are not closed automatically after this time, but must be closed manually STR_CONFIG_SETTING_HOVER_DELAY :Show tooltips: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips can be bound to the right mouse button +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips are bound to the right mouse button when this value is set to 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hover for {COMMA} millisecond{P 0 "" s} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Right click @@ -1537,8 +1543,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Thickness of li STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the line in the graphs. A thin line is more precisely readable, a thicker line is easier to see and colours are easier to distinguish STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Show the NewGRF's name in the build vehicle window: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Add a line to the build vehicle window, showing which NewGRF the selected vehicle comes from. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Show the cargoes the vehicles can carry in the list windows {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Add a line to the build vehicle window, showing which NewGRF the selected vehicle comes from +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Show the cargoes the vehicles can carry in the list windows: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :If enabled, the vehicle's transportable load will appear above it in the vehicle lists STR_CONFIG_SETTING_LANDSCAPE :Landscape: {STRING} @@ -1557,13 +1563,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry densit STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil refineries: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Choose at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage" STR_CONFIG_SETTING_SNOW_COVERAGE :Snow coverage: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING} @@ -1571,7 +1577,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Choose the appr STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Choose the shape and number of hills. Smooth landscapes have fewer, wider hills, while rough landscapes have more, smaller hills. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Choose the shape and number of hills. Smooth landscapes have fewer, wider hills, while rough landscapes have more, smaller hills ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth @@ -1579,7 +1585,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough STR_CONFIG_SETTING_VARIETY :Variety distribution: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Choose if the map contains both mountains and flat areas. The higher the variety, the more differences in elevation between mountainous and flat areas. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Choose if the map contains both mountains and flat areas. The higher the variety, the more differences in elevation between mountainous and flat areas STR_CONFIG_SETTING_RIVER_AMOUNT :River amount: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choose how many rivers to generate @@ -1626,7 +1632,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dark green STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Cargo flow overlay colours: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Set the colour scheme used for the cargo flow overlay. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Set the colour scheme used for the cargo flow overlay ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Green to red (original) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Green to blue @@ -1747,10 +1753,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building t STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatically remove signals during rail construction: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatically remove signals during rail construction if the signals are in the way. Note that this can potentially lead to train crashes. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatically remove signals during rail construction if the signals are in the way. Note that this can potentially lead to train crashes STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Fast forward speed limit: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limit on how fast the game goes when fast forward is enabled. 0 = no limit (as fast as your computer allows). Values below 100% slow the game down. The upper-limit depends on the specification of your computer and can vary depending on the game. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limit on how fast the game goes when fast forward is enabled. 0 = no limit (as fast as your computer allows). Values below 100% slow the game down. The upper-limit depends on the specification of your computer and can vary depending on the game STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normal game speed ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :No limit (as fast as your computer allows) @@ -1814,11 +1820,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Allow AI comput STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes before scripts are suspended: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximum number of computation steps that a script can take in one turn STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Max memory usage per script: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :How much memory a single script may consume before it's forcibly terminated. This may need to be increased for large maps. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :How much memory a single script may consume before it's forcibly terminated. This may need to be increased for large maps STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Service intervals are in percents: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :When enabled, vehicles try to service when their reliability drops by a given percentage of the maximum reliability.{}{}For example, if a vehicle's maximum reliability is 90% and the service interval is 20%, the vehicle will try to service when it reaches 72% reliability. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :When enabled, vehicles try to service when their reliability drops by a given percentage of the maximum reliability.{}{}For example, if a vehicle's maximum reliability is 90% and the service interval is 20%, the vehicle will try to service when it reaches 72% reliability STR_CONFIG_SETTING_SERVINT_TRAINS :Default service interval for trains: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default service interval for new rail vehicles, if no explicit service interval is set for the vehicle @@ -1828,7 +1834,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Default service STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Set the default service interval for new aircraft, if no explicit service interval is set for the vehicle STR_CONFIG_SETTING_SERVINT_SHIPS :Default service interval for ships: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Set the default service interval for new ships, if no explicit service interval is set for the vehicle -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Day{P 0 "" s}/Minute{P 0 "" s}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Day{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minute{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled @@ -1836,7 +1846,7 @@ STR_CONFIG_SETTING_NOSERVICE :Disable servici STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :When enabled, vehicles do not get serviced if they cannot break down STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Loading speed penalty for trains that are longer than the station: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :When enabled, trains which are too long for the station load more slowly than a train which fits the station. This setting does not affect pathfinding. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :When enabled, trains which are too long for the station load more slowly than a train which fits the station. This setting does not affect pathfinding STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Enable wagon speed limits: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :When enabled, also use speed limits of wagons for deciding the maximum speed of a train @@ -1901,13 +1911,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Year that the n STR_CONFIG_SETTING_STARTING_YEAR :Starting year: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Scoring end year: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Year the game ends for scoring purposes. At the end of this year, the company's score is recorded and the high-score screen is displayed, but the players can continue playing after that.{}If this is before the starting year, the high-score screen is never displayed. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Year the game ends for scoring purposes. At the end of this year, the company's score is recorded and the high-score screen is displayed, but the players can continue playing after that.{}If this is before the starting year, the high-score screen is never displayed STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Never STR_CONFIG_SETTING_ECONOMY_TYPE :Economy type: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Smooth economy makes production changes more often, and in smaller steps. Frozen economy stops production changes and industry closures. This setting may have no effect if industry types are provided by a NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Smooth economy makes production changes more often, and in smaller steps. Frozen economy stops production changes and industry closures. This setting may have no effect if industry types are provided by a NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Smooth @@ -1962,7 +1972,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Allowed STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Allowed, custom town layout STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Town cargo generation: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :How much cargo is produced by houses in towns, relative to the overall population of the town.{}Quadratic growth: A town twice the size generates four times as many passengers.{}Linear growth: A town twice the size generates twice the amount of passengers. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :How much cargo is produced by houses in towns, relative to the overall population of the town.{}Quadratic growth: A town twice the size generates four times as many passengers.{}Linear growth: A town twice the size generates twice the amount of passengers ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Quadratic (original) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linear @@ -2003,7 +2013,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Highest resolution sprites to use: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limit the maximum resolution to use for sprites. Limiting sprite resolution will avoid using high resolution graphics even when available. This can help keep the game appearance unified when using a mix of GRF files with and without high resolution graphics. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limit the maximum resolution to use for sprites. Limiting sprite resolution will avoid using high resolution graphics even when available. This can help keep the game appearance unified when using a mix of GRF files with and without high resolution graphics ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2027,33 +2037,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial city si STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Average size of cities relative to normal towns at start of the game STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Update distribution graph every {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X seconds. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X seconds. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Take {STRING} for recalculation of distribution graph -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of seconds. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of seconds. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribution mode for passengers: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetric" means that roughly the same number of passengers will go from a station A to a station B as from B to A. "Asymmetric" means that arbitrary numbers of passengers can go in either direction. "Manual" means that no automatic distribution will take place for passengers. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetric" means that roughly the same number of passengers will go from a station A to a station B as from B to A. "Asymmetric" means that arbitrary numbers of passengers can go in either direction. "Manual" means that no automatic distribution will take place for passengers STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distribution mode for mail: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetric" means that roughly the same amount of mail will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of mail can be sent in either direction. "Manual" means that no automatic distribution will take place for mail. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetric" means that roughly the same amount of mail will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of mail can be sent in either direction. "Manual" means that no automatic distribution will take place for mail STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribution mode for the ARMOURED cargo class: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical, or gold in the subarctic climate. NewGRFs may change that. "Symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of that cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic or subtropic, as banks only receive cargo in these climates. For temperate you can also choose symmetric as banks will send valuables back to the origin bank. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical, or gold in the subarctic climate. NewGRFs may change that. "Symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of that cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic or subtropic, as banks only receive cargo in these climates. For temperate you can also choose symmetric as banks will send valuables back to the origin bank STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribution mode for other cargo classes: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for those cargoes. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for those cargoes ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetric STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetric STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribution accuracy: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect of distance on demands: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this to a value higher than 0, the distance between the origin station A of some cargo and a possible destination B will have an effect on the amount of cargo sent from A to B. The further away B is from A the less cargo will be sent. The higher you set it, the less cargo will be sent to far away stations and the more cargo will be sent to near stations. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this to a value higher than 0, the distance between the origin station A of some cargo and a possible destination B will have an effect on the amount of cargo sent from A to B. The further away B is from A the less cargo will be sent. The higher you set it, the less cargo will be sent to far away stations and the more cargo will be sent to near stations STR_CONFIG_SETTING_DEMAND_SIZE :Amount of returning cargo for symmetric mode: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using high-capacity paths: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, prefering the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, prefering the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Speed units (land): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Speed units (nautical): {STRING} @@ -2128,17 +2138,8 @@ STR_CONFIG_SETTING_AI :Competitors STR_CONFIG_SETTING_AI_NPC :Computer players STR_CONFIG_SETTING_NETWORK :Network -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder for trains: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Path finder to use for trains -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pathfinder for road vehicles: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Path finder to use for road vehicles -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pathfinder for ships: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Path finder to use for ships STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatic reversing at signals: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Allow trains to reverse on a signal, if they have waited there a long time -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recommended) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Change setting value @@ -2457,7 +2458,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Disconnect STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is protected. Enter password -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Online players @@ -2484,6 +2484,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Your player nam STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Administrative actions to perform for this client STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Administrative actions to perform for this company STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Join this company +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Authorize this client to join your company STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Send a message to this player STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Send a message to all players of this company STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Send a message to all spectators @@ -2506,13 +2507,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via rela STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Kick STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Ban STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Delete -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Password unlock STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Admin action STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Are you sure you want to kick player '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Are you sure you want to ban player '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Are you sure you want to delete company '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Are you sure you want to reset the password of company '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Use relay? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Failed to establish a connection between you and server '{STRING}'.{}Would you like to relay this session via '{STRING}'? @@ -2529,19 +2528,9 @@ STR_NETWORK_ASK_SURVEY_YES :Yes STR_NETWORK_SPECTATORS :Spectators -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password -STR_COMPANY_PASSWORD_OK :{BLACK}Give the company the new password -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Company password -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Default company password -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Use this company password as default for new companies - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Join STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Join and play as this company -STR_COMPANY_VIEW_PASSWORD :{BLACK}Password -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Password-protect your company to prevent unauthorised users from joining -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Set company password # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send @@ -2570,6 +2559,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Your pla STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Your server name has not been set. The name can be set at the top of the Multiplayer window STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}The revision of this client does not match the server's revision STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Wrong password +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}You are not on the list of allowed clients STR_NETWORK_ERROR_SERVER_FULL :{WHITE}The server is full STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}You are banned from this server STR_NETWORK_ERROR_KICKED :{WHITE}You were kicked out of the game @@ -2585,7 +2575,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Your pla STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Possible connection loss STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}The last {NUM} second{P "" s} no data has arrived from the server -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :general error STR_NETWORK_ERROR_CLIENT_DESYNC :desync error STR_NETWORK_ERROR_CLIENT_SAVEGAME :could not load map @@ -2597,6 +2587,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :received invali STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :wrong revision STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :name already in use STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :wrong password +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :not on allow list STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :wrong company in DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :kicked by server STR_NETWORK_ERROR_CLIENT_CHEATER :was trying to use a cheat @@ -2802,7 +2793,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Select r # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Waypoint -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Select waypoint type # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Rail Station Selection @@ -2815,8 +2805,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Select l STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Build a station using drag & drop -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Select a station class to display -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Select the station type to build +STR_PICKER_MODE_ALL :All +STR_PICKER_MODE_ALL_TOOLTIP :Toggle showing items from all classes +STR_PICKER_MODE_USED :Used +STR_PICKER_MODE_USED_TOOLTIP :Toggle showing only existing items +STR_PICKER_MODE_SAVED :Saved +STR_PICKER_MODE_SAVED_TOOLTIP :Toogle showing only saved items + +STR_PICKER_STATION_CLASS_TOOLTIP :Select a station class to display +STR_PICKER_STATION_TYPE_TOOLTIP :Select a station type to build. Ctrl+Click to add or remove in saved items +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Select a waypoint class to display +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Select a waypoint to build. Ctrl+Click to add or remove in saved items +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Select a bus station class to display +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Select a bus station type to build. Ctrl+Click to add or remove in saved items +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Select a lorry station class to display +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Select a lorry station type to build. Ctrl+Click to add or remove in saved items +STR_PICKER_OBJECT_CLASS_TOOLTIP :Select an object class to display +STR_PICKER_OBJECT_TYPE_TOOLTIP :Select an object type to build. Ctrl+Click to add or remove in saved items. Ctrl+Click+Drag to select the area diagonally. Also press Shift to show cost estimate only +STR_PICKER_HOUSE_CLASS_TOOLTIP :Select a town zone to display +STR_PICKER_HOUSE_TYPE_TOOLTIP :Select a house type to build. Ctrl+Click to add or remove in saved items + +STR_HOUSE_PICKER_CAPTION :House Selection + +STR_HOUSE_PICKER_CLASS_ZONE1 :Edge +STR_HOUSE_PICKER_CLASS_ZONE2 :Outskirts +STR_HOUSE_PICKER_CLASS_ZONE3 :Outer Suburbs +STR_HOUSE_PICKER_CLASS_ZONE4 :Inner Suburbs +STR_HOUSE_PICKER_CLASS_ZONE5 :Town centre STR_STATION_CLASS_DFLT :Default STR_STATION_CLASS_DFLT_STATION :Default station @@ -2871,6 +2886,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Build ro STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Build tramway section using the Autotram mode. Ctrl+Click to remove tramway section. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Build road vehicle depot (for buying and servicing vehicles). Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Build tram vehicle depot (for buying and servicing vehicles). Also press Shift to show cost estimate only +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Build waypoint on road. Ctrl+Click to select another waypoint to join. Also press Shift to show cost estimate only +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Build waypoint on tramway. Ctrl+Click to select another waypoint to join. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Build bus station. Ctrl+Click to select another station to join. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Build passenger tram station. Ctrl+Click to select another station to join. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Build lorry station. Ctrl+Click to select another station to join. Also press Shift to show cost estimate only @@ -2959,8 +2976,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Purchase # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Object Selection -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Select object to build. Ctrl+Click+Drag to select the area diagonally. Also press Shift to show cost estimate only -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Select class of the object to build STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Preview of the object STR_OBJECT_BUILD_SIZE :{BLACK}Size: {GOLD}{NUM} x {NUM} tiles @@ -2975,11 +2990,11 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Place tr STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Random Trees STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly throughout the landscape STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant single trees by dragging over the landscape. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant single trees by dragging over the landscape STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Grove -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant small forests by dragging over the landscape. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant small forests by dragging over the landscape STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Forest -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant large forests by dragging over the landscape. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant large forests by dragging over the landscape # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generation @@ -3075,7 +3090,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramway STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Railway owner: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Local authority: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :None -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Tile index: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Built/renovated: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Station class: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Station type: {LTBLUE}{STRING} @@ -3193,11 +3209,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Frame Rate STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Simulation rate: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Number of game ticks simulated per second. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Number of game ticks simulated per second STR_FRAMERATE_RATE_BLITTER :{BLACK}Graphics frame rate: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Number of video frames rendered per second. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Number of video frames rendered per second STR_FRAMERATE_SPEED_FACTOR :{BLACK}Current game speed factor: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}How fast the game is currently running, compared to the expected speed at normal simulation rate. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}How fast the game is currently running, compared to the expected speed at normal simulation rate STR_FRAMERATE_CURRENT :{WHITE}Current STR_FRAMERATE_AVERAGE :{WHITE}Average STR_FRAMERATE_MEMORYUSE :{WHITE}Memory @@ -3386,10 +3402,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Do you STR_GENERATION_PROGRESS :{WHITE}{NUM}% complete STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}World generation +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Landscape generation STR_GENERATION_RIVER_GENERATION :{BLACK}River generation -STR_GENERATION_TREE_GENERATION :{BLACK}Tree generation -STR_GENERATION_OBJECT_GENERATION :{BLACK}Object generation STR_GENERATION_CLEARING_TILES :{BLACK}Rough and rocky area generation +STR_GENERATION_TOWN_GENERATION :{BLACK}Town generation +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Industry generation +STR_GENERATION_OBJECT_GENERATION :{BLACK}Object generation +STR_GENERATION_TREE_GENERATION :{BLACK}Tree generation STR_GENERATION_SETTINGUP_GAME :{BLACK}Setting up game STR_GENERATION_PREPARING_TILELOOP :{BLACK}Running tile-loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Running script @@ -3481,7 +3500,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road type STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Aligning sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Aligning sprite: Action 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Aligning sprite: Action 0x5, type {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the end STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Go to sprite @@ -3490,6 +3511,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the begin STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Offset centred @@ -3598,7 +3620,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Go to pr STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Enter a name for the sign # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Towns +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Towns ({COMMA} of {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- None - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (City){BLACK} ({COMMA}) @@ -3726,7 +3748,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global S STR_STORY_BOOK_SPECTATOR :Global Story Book STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Page {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list STR_STORY_BOOK_PREV_PAGE :{BLACK}Previous STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Go to previous page STR_STORY_BOOK_NEXT_PAGE :{BLACK}Next @@ -3932,7 +3954,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/period # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industries +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industries ({COMMA} of {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- None - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transported){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4021,12 +4043,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Ungrouped aircr STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to create a group STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete the selected group STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group STR_GROUP_LIVERY_TOOLTIP :{BLACK}Change livery of the selected group -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace. Ctrl+Click to also protect sub-groups. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace. Ctrl+Click to also protect sub-groups STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Delete Group STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Are you sure you want to delete this group and any descendants? @@ -4442,10 +4464,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacity STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer Credits: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servicing interval: {LTBLUE}{COMMA}{NBSP}days{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Servicing interval: {LTBLUE}{COMMA}{NBSP}minutes{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Servicing interval: {LTBLUE}{COMMA}{NBSP}minute{P "" s}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servicing interval: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Last service: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Last service: {LTBLUE}{NUM} minutes ago +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Last service: {LTBLUE}{NUM} minute{P "" s} ago STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Increase servicing interval by 10 days. Ctrl+Click to increase servicing interval by 5 days STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Increase servicing interval by 5 minutes. Ctrl+Click to increase servicing interval by 1 minute STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Increase servicing interval by 10 percent. Ctrl+Click to increase servicing interval by 5 percent @@ -4636,7 +4658,7 @@ STR_ORDER_REFIT_ORDER :(Refit to {STRI STR_ORDER_REFIT_STOP_ORDER :(Refit to {STRING} and stop) STR_ORDER_STOP_ORDER :(Stop) -STR_ORDER_WAIT_TO_UNBUNCH :(wait to unbunch) +STR_ORDER_WAIT_TO_UNBUNCH :(Wait to unbunch) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Can't use station){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4840,8 +4862,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script STR_AI_SETTINGS_CLOSE :{BLACK}Close STR_AI_SETTINGS_RESET :{BLACK}Reset STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4894,9 +4914,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimate STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Saving still in progress,{}please wait until it is finished! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosave failed STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game save failed... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game load failed... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version @@ -4990,7 +5010,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Can't bu STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Can't build company headquarters... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Can't build any towns +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Can't build any towns... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Can't rename town... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Can't found town here... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Can't expand town... @@ -5001,6 +5021,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... ther STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road works in progress STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Can't delete this town...{}A station or depot is referring to the town or a town owned tile can't be removed STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... there is no suitable place for a statue in the centre of this town +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Can't build house... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... too many industries @@ -5038,6 +5059,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Can't bu STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjoins more than one existing station/loading area STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... station too spread out +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... unsupported number of tracks +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... unsupported length STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Too many stations/loading areas STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Too many railway station parts STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Too many bus stops @@ -5073,11 +5096,14 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjoins STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Too close to another waypoint STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Can't build train waypoint here... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Can't build road waypoint here... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Can't place buoy here... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Can't change waypoint name... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Can't remove train waypoint here... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Can't remove road waypoint here... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Must remove rail waypoint first +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Must remove road waypoint first STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... buoy in the way STR_ERROR_BUOY_IS_IN_USE :{WHITE}... buoy is in use by another company! @@ -5278,6 +5304,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change y STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF which provides early vehicles +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}No town-buildable road types are available +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}No town-buildable road types are available yet +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early town-buildable road types + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train... @@ -5320,6 +5351,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}There ar STR_ERROR_AIRPORT_NO_PLANES :{WHITE}This plane cannot land at this heliport STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}This helicopter cannot land at this airport STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}There is no railway waypoint +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}There is no road waypoint STR_ERROR_NO_BUOY :{WHITE}There is no buoy # Timetable related errors @@ -5807,6 +5839,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}m +STR_CURRENCY_SHORT_GIGA :{NBSP}bn +STR_CURRENCY_SHORT_TERA :{NBSP}tn + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5823,6 +5860,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 73fac4bfc2..f57292b236 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -308,7 +308,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}By enabl STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}Cancel STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Warning: Server administrators may be able to read any text entered here. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -438,6 +437,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Abandon scenari STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Quit +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Generate towns +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Place houses + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Game options @@ -621,14 +623,14 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Disable all STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Display all cargos on the cargo payment rates graph STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Display no cargos on the cargo payment rates graph -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toggle graph for cargo type on/off +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toggle graph of this cargo type STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Show detailed performance ratings # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Key to company graphs -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Click here to toggle company's entry on graph on/off +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Toggle graph of this company # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Company League Table @@ -708,7 +710,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Select ' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Select 'Ezy Street style music' program STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Select 'Custom 1' (user-defined) program STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select 'Custom 2' (user-defined) program -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle program shuffle on/off +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle program shuffle STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Show music track selection window # Playlist window @@ -791,7 +793,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Desert STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snow -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle town names on/off on map +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle display of town names STR_SMALLMAP_CENTER :{BLACK}Center the minimap on the current position STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -800,9 +802,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Disable all STR_SMALLMAP_ENABLE_ALL :{BLACK}Enable all STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Show height +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Show industry names STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Display no industries on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Display all industries on the map STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toggle display of heightmap +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Toggle display of industry names STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Display no company property on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Display all company property on the map STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Display no cargos on the map @@ -956,18 +960,14 @@ STR_GAME_OPTIONS_VOLUME :Volume STR_GAME_OPTIONS_SFX_VOLUME :Sound effects STR_GAME_OPTIONS_MUSIC_VOLUME :Music -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency units STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :British Pound STR_GAME_OPTIONS_CURRENCY_USD :American Dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1011,6 +1011,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit STR_GAME_OPTIONS_CURRENCY_LVL :Latvian Lats +STR_GAME_OPTIONS_CURRENCY_PTE :Portuguese Escudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves @@ -1053,15 +1054,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale be STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Use traditional sprite font -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the traditional fixed-size sprite font. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the traditional fixed-size sprite font STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fonts -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Check this box to anti-alias resizable fonts. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Check this box to anti-alias resizable fonts -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automated survey STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participate in automated survey @@ -1090,6 +1087,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base mus STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select the base music set to use STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set +STR_GAME_OPTIONS_ONLINE_CONTENT :Get Content +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Check for new and updated content to download + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(no plugins to integrate with social platforms installed) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1117,6 +1117,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Decrease STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Increase the amount of your currency for one Pound (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Set the exchange rate of your currency for one Pound (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Set the separator for your currency + STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Set the prefix string for your currency STR_CURRENCY_SUFFIX :{LTBLUE}Suffix: {ORANGE}{STRING} @@ -1271,10 +1274,10 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Infinite money: STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Allow unlimited spending and disable bankruptcy of companies STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximum initial loan: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account). If set to "No loan", no money will be available unless provided by a Game Script or the "Infinite money" setting STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :No loan {RED}Requires Game Script to provide initial funds +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :No loan STR_CONFIG_SETTING_INTEREST_RATE :Interest rate: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation, if enabled @@ -1355,7 +1358,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Slope steepness STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steepness of a sloped tile for a road vehicle. Higher values make it more difficult to climb a hill STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains from making 90° turns: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degrees when traversing the tile edge instead of the usual 45 degrees for other track combinations. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Allow joining stations not directly adjacent: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Allow adding parts to a station without directly touching the existing parts, by Ctrl+Clicking while placing the new parts @@ -1467,7 +1470,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Starting compan STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Choose starting color for the company STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Starting company secondary color: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Choose starting secondary color for the company, if using a NewGRF that enables it. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Choose starting secondary color for the company, if using a NewGRF that enables it STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Airports never expire: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Enabling this setting makes each airport type stay available forever after its introduction @@ -1487,26 +1490,29 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Warn if a vehic STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :When enabled, a news message gets sent when a vehicle has not made any profit within a year STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :When enabled, a news message gets sent when a vehicle has not made any profit within a period +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Warn if a vehicle is getting old: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :When enabled, a news message gets sent when a vehicle is getting old + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never expire: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Timekeeping: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Select the timekeeping units of the game. This cannot be changed later.{}{}Calendar-based is the classic OpenTTD experience, with a year consisting of 12 months, and each month having 28-31 days.{}{}In Wallclock-based time, vehicle movement, cargo production, and financials are instead based on one-minute increments, which is about as long as a 30 day month takes in Calendar-based mode. These are grouped into 12-minute periods, equivalent to a year in Calendar-based mode.{}{}In either mode there is always a classic calendar, which is used for introduction dates of vehicles, houses, and other infrastructure. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Select the timekeeping units of the game. This cannot be changed later.{}{}Calendar-based is the classic OpenTTD experience, with a year consisting of 12 months, and each month having 28-31 days.{}{}In Wallclock-based time, cargo production and financials are instead based on one-minute increments, which is about as long as a 30 day month takes in Calendar-based mode. These are grouped into 12-minute periods, equivalent to a year in Calendar-based mode.{}{}In either mode there is always a classic calendar, which is used for introduction dates of vehicles, houses, and other infrastructure ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Calendar STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Wallclock STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minutes per year: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Choose the number of minutes in a calendar year. The default is 12 minutes. Set to 0 to stop calendar time from changing. This setting does not affect the economic simulation of the game, and is only available when using wallclock timekeeping. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Choose the number of minutes in a calendar year. The default is 12 minutes. Set to 0 to stop calendar time from changing. Increasing the length of the calendar year slows down the introduction of vehicles, houses, and other infrastructure. It does not affect vehicle speed or economic simulation, except for inflation. This setting is only available when using wallclock timekeeping STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (calendar time frozen) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Scale town cargo production: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Scale the cargo production of towns by this percentage. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Scale the cargo production of towns by this percentage STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Scale industry cargo production: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Scale the cargo production of industries by this percentage. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Scale the cargo production of industries by this percentage STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING} @@ -1525,7 +1531,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duration of err STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duration for displaying error messages in a red window. Note that some (critical) error messages are not closed automatically after this time, but must be closed manually STR_CONFIG_SETTING_HOVER_DELAY :Show tooltips: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips are bound to the right mouse button when this value is set to 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips are bound to the right mouse button when this value is set to 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hover for {COMMA} millisecond{P 0 "" s} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Right click @@ -1537,8 +1543,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Thickness of li STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the line in the graphs. A thin line is more precisely readable, a thicker line is easier to see and colors are easier to distinguish STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Show the NewGRF's name in the build vehicle window: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Add a line to the build vehicle window, showing which NewGRF the selected vehicle comes from. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Show the cargos the vehicles can carry in the list windows {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Add a line to the build vehicle window, showing which NewGRF the selected vehicle comes from +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Show the cargos the vehicles can carry in the list windows: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :If enabled, the vehicle's transportable load will appear above it in the vehicle lists STR_CONFIG_SETTING_LANDSCAPE :Landscape: {STRING} @@ -1557,13 +1563,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry densit STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil industries: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Choose at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage" STR_CONFIG_SETTING_SNOW_COVERAGE :Snow coverage: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING} @@ -1571,7 +1577,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Choose the appr STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Choose the shape and number of hills. Smooth landscapes have fewer, wider hills, while rough landscapes have more, smaller hills. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Choose the shape and number of hills. Smooth landscapes have fewer, wider hills, while rough landscapes have more, smaller hills ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth @@ -1579,7 +1585,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough STR_CONFIG_SETTING_VARIETY :Variety distribution: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Choose if the map contains both mountains and flat areas. The higher the variety, the more differences in elevation between mountainous and flat areas. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Choose if the map contains both mountains and flat areas. The higher the variety, the more differences in elevation between mountainous and flat areas STR_CONFIG_SETTING_RIVER_AMOUNT :River amount: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choose how many rivers to generate @@ -1626,7 +1632,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dark green STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Purple STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Cargo flow overlay colors: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Set the color scheme used for the cargo flow overlay. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Set the color scheme used for the cargo flow overlay ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Green to red (original) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Green to blue @@ -1747,10 +1753,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building t STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatically remove signals during track construction: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatically remove signals during track construction if the signals are in the way. Note that this can potentially lead to train crashes. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatically remove signals during track construction if the signals are in the way. Note that this can potentially lead to train crashes STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Fast forward speed limit: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limit on how fast the game goes when fast forward is enabled. 0 = no limit (as fast as your computer allows). Values below 100% slow the game down. The upper-limit depends on the specification of your computer and can vary depending on the game. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limit on how fast the game goes when fast forward is enabled. 0 = no limit (as fast as your computer allows). Values below 100% slow the game down. The upper-limit depends on the specification of your computer and can vary depending on the game STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normal game speed ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :No limit (as fast as your computer allows) @@ -1814,11 +1820,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Allow AI comput STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes before scripts are suspended: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximum number of computation steps that a script can take in one turn STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Max memory usage per script: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :How much memory a single script may consume before it's forcibly terminated. This may need to be increased for large maps. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :How much memory a single script may consume before it's forcibly terminated. This may need to be increased for large maps STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Maintenance intervals are in percents: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :When enabled, vehicles try to go for maintenance when their reliability drops by a given percentage of the maximum reliability.{}{}For example, if a vehicle's maximum reliability is 90% and the maintenance interval is 20%, the vehicle will try to go for maintenance when it reaches 72% reliability. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :When enabled, vehicles try to go for maintenance when their reliability drops by a given percentage of the maximum reliability.{}{}For example, if a vehicle's maximum reliability is 90% and the maintenance interval is 20%, the vehicle will try to go for maintenance when it reaches 72% reliability STR_CONFIG_SETTING_SERVINT_TRAINS :Default maintenance interval for trains: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default maintenance interval for new rail vehicles, if no explicit maintenance interval is set for the vehicle @@ -1828,7 +1834,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Default mainten STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Set the default maintenance interval for new aircraft, if no explicit maintenance interval is set for the vehicle STR_CONFIG_SETTING_SERVINT_SHIPS :Default maintenance interval for ships: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Set the default maintenance interval for new ships, if no explicit maintenance interval is set for the vehicle -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Day{P 0 "" s}/Minute{P 0 "" s}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Day{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minute{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled @@ -1836,7 +1846,7 @@ STR_CONFIG_SETTING_NOSERVICE :Disable mainten STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :When enabled, vehicles do not get maintained if they cannot break down STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Loading speed penalty for trains that are longer than the station: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :When enabled, trains which are too long for the station load more slowly than a train which fits the station. This setting does not affect pathfinding. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :When enabled, trains which are too long for the station load more slowly than a train which fits the station. This setting does not affect pathfinding STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Enable railroad car speed limits: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :When enabled, also use speed limits of wagons for deciding the maximum speed of a train @@ -1901,13 +1911,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Year that the n STR_CONFIG_SETTING_STARTING_YEAR :Starting year: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Scoring end year: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Year the game ends for scoring purposes. At the end of this year, the company's score is recorded and the high-score screen is displayed, but the players can continue playing after that.{}If this is before the starting year, the high-score screen is never displayed. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Year the game ends for scoring purposes. At the end of this year, the company's score is recorded and the high-score screen is displayed, but the players can continue playing after that.{}If this is before the starting year, the high-score screen is never displayed STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Never STR_CONFIG_SETTING_ECONOMY_TYPE :Economy type: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Smooth economy makes production changes more often, and in smaller steps. Frozen economy stops production changes and industry closures. This setting may have no effect if industry types are provided by a NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Smooth economy makes production changes more often, and in smaller steps. Frozen economy stops production changes and industry closures. This setting may have no effect if industry types are provided by a NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Smooth @@ -1962,7 +1972,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Allowed STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Allowed, custom town layout STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Town cargo generation: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :How much cargo is produced by houses in towns, relative to the overall population of the town.{}Quadratic growth: A town twice the size generates four times as many passengers.{}Linear growth: A town twice the size generates twice the amount of passengers. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :How much cargo is produced by houses in towns, relative to the overall population of the town.{}Quadratic growth: A town twice the size generates four times as many passengers.{}Linear growth: A town twice the size generates twice the amount of passengers ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Quadratic (original) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linear @@ -2003,7 +2013,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Highest resolution sprites to use: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limit the maximum resolution to use for sprites. Limiting sprite resolution will avoid using high resolution graphics even when available. This can help keep the game appearance unified when using a mix of GRF files with and without high resolution graphics. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limit the maximum resolution to use for sprites. Limiting sprite resolution will avoid using high resolution graphics even when available. This can help keep the game appearance unified when using a mix of GRF files with and without high resolution graphics ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2027,33 +2037,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial city si STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Average size of cities relative to normal towns at start of the game STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Update distribution graph every {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X seconds. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X seconds. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Take {STRING} for recalculation of distribution graph -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of seconds. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of seconds. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribution mode for passengers: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetric" means that roughly the same number of passengers will go from a station A to a station B as from B to A. "Asymmetric" means that arbitrary numbers of passengers can go in either direction. "Manual" means that no automatic distribution will take place for passengers. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetric" means that roughly the same number of passengers will go from a station A to a station B as from B to A. "Asymmetric" means that arbitrary numbers of passengers can go in either direction. "Manual" means that no automatic distribution will take place for passengers STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distribution mode for mail: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetric" means that roughly the same amount of mail will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of mail can be sent in either direction. "Manual" means that no automatic distribution will take place for mail. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetric" means that roughly the same amount of mail will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of mail can be sent in either direction. "Manual" means that no automatic distribution will take place for mail STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribution mode for the ARMORED cargo class: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMORED cargo class contains valuables in the temperate, diamonds in the subtropical, or gold in the subarctic climate. NewGRFs may change that. "Symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of that cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic or subtropic, as banks only receive cargo in these climates. For temperate you can also choose symmetric as banks will send valuables back to the origin bank. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMORED cargo class contains valuables in the temperate, diamonds in the subtropical, or gold in the subarctic climate. NewGRFs may change that. "Symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "Asymmetric" means that arbitrary amounts of that cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic or subtropic, as banks only receive cargo in these climates. For temperate you can also choose symmetric as banks will send valuables back to the origin bank STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribution mode for other cargo classes: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for those cargoes. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "Manual" means that no automatic distribution will take place for those cargoes ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetric STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetric STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribution accuracy: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect of distance on demands: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this to a value higher than 0, the distance between the origin station A of some cargo and a possible destination B will have an effect on the amount of cargo sent from A to B. The further away B is from A the less cargo will be sent. The higher you set it, the less cargo will be sent to far away stations and the more cargo will be sent to near stations. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this to a value higher than 0, the distance between the origin station A of some cargo and a possible destination B will have an effect on the amount of cargo sent from A to B. The further away B is from A the less cargo will be sent. The higher you set it, the less cargo will be sent to far away stations and the more cargo will be sent to near stations STR_CONFIG_SETTING_DEMAND_SIZE :Amount of returning cargo for symmetric mode: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using high-capacity paths: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, preferring the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, preferring the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Speed units (land): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Speed units (nautical): {STRING} @@ -2128,17 +2138,8 @@ STR_CONFIG_SETTING_AI :Competitors STR_CONFIG_SETTING_AI_NPC :Computer players STR_CONFIG_SETTING_NETWORK :Network -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder for trains: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Path finder to use for trains -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pathfinder for road vehicles: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Path finder to use for road vehicles -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pathfinder for ships: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Path finder to use for ships STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatic reversing at signals: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Allow trains to reverse on a signal, if they waited there a long time -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recommended) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Change setting value @@ -2457,7 +2458,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Disconnect STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is protected. Enter password -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Online players @@ -2484,6 +2484,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Your player nam STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Administrative actions to perform for this client STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Administrative actions to perform for this company STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Join this company +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Authorize this client to join your company STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Send a message to this player STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Send a message to all players of this company STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Send a message to all spectators @@ -2506,13 +2507,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via rela STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Kick STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Ban STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Delete -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Password unlock STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Admin action STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Are you sure you want to kick player '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Are you sure you want to ban player '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Are you sure you want to delete company '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Are you sure you want to reset the password of company '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Use relay? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Failed to establish a connection between you and server '{STRING}'.{}Would you like to relay this session via '{STRING}'? @@ -2529,19 +2528,9 @@ STR_NETWORK_ASK_SURVEY_YES :Yes STR_NETWORK_SPECTATORS :Spectators -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password -STR_COMPANY_PASSWORD_OK :{BLACK}Give the company the new password -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Company password -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Default company password -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Use this company password as default for new companies - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Join STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Join and play as this company -STR_COMPANY_VIEW_PASSWORD :{BLACK}Password -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Password-protect your company to prevent unauthorized users from joining -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Set company password # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send @@ -2570,6 +2559,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Your pla STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Your server name has not been set. The name can be set at the top of the Multiplayer window STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}The revision of this client does not match the server's revision STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Wrong password +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}You are not on the list of allowed clients STR_NETWORK_ERROR_SERVER_FULL :{WHITE}The server is full STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}You are banned from this server STR_NETWORK_ERROR_KICKED :{WHITE}You were kicked out of the game @@ -2585,7 +2575,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Your pla STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Possible connection loss STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}The last {NUM} second{P "" s} no data has arrived from the server -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :general error STR_NETWORK_ERROR_CLIENT_DESYNC :desync error STR_NETWORK_ERROR_CLIENT_SAVEGAME :could not load map @@ -2597,6 +2587,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :received invali STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :wrong revision STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :name already in use STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :wrong game-password +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :not on allow list STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :wrong company-id in DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :kicked by server STR_NETWORK_ERROR_CLIENT_CHEATER :was trying to use a cheat @@ -2802,7 +2793,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Select r # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Waypoint -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Select waypoint type # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Rail Station Selection @@ -2815,8 +2805,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Select l STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Build a station with drag & drop -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Select a station class to display -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Select the station type to build +STR_PICKER_MODE_ALL :All +STR_PICKER_MODE_ALL_TOOLTIP :Toggle showing items from all classes +STR_PICKER_MODE_USED :Used +STR_PICKER_MODE_USED_TOOLTIP :Toggle showing only existing items +STR_PICKER_MODE_SAVED :Saved +STR_PICKER_MODE_SAVED_TOOLTIP :Toogle showing only saved items + +STR_PICKER_STATION_CLASS_TOOLTIP :Select a station class to display +STR_PICKER_STATION_TYPE_TOOLTIP :Select a station type to build. Ctrl+Click to add or remove in saved items +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Select a waypoint class to display +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Select a waypoint to build. Ctrl+Click to add or remove in saved items +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Select a bus station class to display +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Select a bus station type to build. Ctrl+Click to add or remove in saved items +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Select a truck station class to display +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Select a truck station type to build. Ctrl+Click to add or remove in saved items +STR_PICKER_OBJECT_CLASS_TOOLTIP :Select an object class to display +STR_PICKER_OBJECT_TYPE_TOOLTIP :Select an object type to build. Ctrl+Click to add or remove in saved items. Ctrl+Click+Drag to select the area diagonally. Also press Shift to show cost estimate only +STR_PICKER_HOUSE_CLASS_TOOLTIP :Select a town zone to display +STR_PICKER_HOUSE_TYPE_TOOLTIP :Select a house type to build. Ctrl+Click to add or remove in saved items + +STR_HOUSE_PICKER_CAPTION :House Selection + +STR_HOUSE_PICKER_CLASS_ZONE1 :Edge +STR_HOUSE_PICKER_CLASS_ZONE2 :Outskirts +STR_HOUSE_PICKER_CLASS_ZONE3 :Outer Suburbs +STR_HOUSE_PICKER_CLASS_ZONE4 :Inner Suburbs +STR_HOUSE_PICKER_CLASS_ZONE5 :Town center STR_STATION_CLASS_DFLT :Default STR_STATION_CLASS_DFLT_STATION :Default station @@ -2871,6 +2886,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Build ro STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Build streetcar section using the Autorail mode. Ctrl+Click to remove streetcar section. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Build road vehicle depot (for buying and maintaining vehicles). Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Build streetcar vehicle depot (for buying and maintaining vehicles). Also press Shift to show cost estimate only +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Build waypoint on road. Ctrl+Click to select another waypoint to join. Also press Shift to show cost estimate only +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Build waypoint on streetcar track. Ctrl+Click to select another waypoint to join. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Build bus station. Ctrl+Click to select another station to join. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Build passenger streetcar station. Ctrl+Click to select another station to join. Also press Shift to show cost estimate only STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Build truck station. Ctrl+Click to select another station to join. Also press Shift to show cost estimate only @@ -2959,8 +2976,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Purchase # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Object Selection -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Select object to build. Ctrl+Click+Drag to select the area diagonally. Also press Shift to show cost estimate only -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Select class of the object to build STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Preview of the object STR_OBJECT_BUILD_SIZE :{BLACK}Size: {GOLD}{NUM} x {NUM} tiles @@ -2975,11 +2990,11 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Place tr STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Random Trees STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly throughout the landscape STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant single trees by dragging over the landscape. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant single trees by dragging over the landscape STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Grove -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant small forests by dragging over the landscape. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant small forests by dragging over the landscape STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Forest -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant large forests by dragging over the landscape. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant large forests by dragging over the landscape # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generation @@ -3075,7 +3090,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Streetca STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Railroad owner: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Local authority: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :None -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Co-ordinates: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Tile index: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Built/renovated: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Station class: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Station type: {LTBLUE}{STRING} @@ -3193,11 +3209,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Frame Rate STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Simulation rate: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Number of game ticks simulated per second. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Number of game ticks simulated per second STR_FRAMERATE_RATE_BLITTER :{BLACK}Graphics frame rate: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Number of video frames rendered per second. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Number of video frames rendered per second STR_FRAMERATE_SPEED_FACTOR :{BLACK}Current game speed factor: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}How fast the game is currently running, compared to the expected speed at normal simulation rate. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}How fast the game is currently running, compared to the expected speed at normal simulation rate STR_FRAMERATE_CURRENT :{WHITE}Current STR_FRAMERATE_AVERAGE :{WHITE}Average STR_FRAMERATE_MEMORYUSE :{WHITE}Memory @@ -3386,10 +3402,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Do you STR_GENERATION_PROGRESS :{WHITE}{NUM}% complete STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}World generation +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Landscape generation STR_GENERATION_RIVER_GENERATION :{BLACK}River generation -STR_GENERATION_TREE_GENERATION :{BLACK}Tree generation -STR_GENERATION_OBJECT_GENERATION :{BLACK}Object generation STR_GENERATION_CLEARING_TILES :{BLACK}Rough and rocky area generation +STR_GENERATION_TOWN_GENERATION :{BLACK}Town generation +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Industry generation +STR_GENERATION_OBJECT_GENERATION :{BLACK}Object generation +STR_GENERATION_TREE_GENERATION :{BLACK}Tree generation STR_GENERATION_SETTINGUP_GAME :{BLACK}Setting up game STR_GENERATION_PREPARING_TILELOOP :{BLACK}Running tile-loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Running script @@ -3481,7 +3500,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road type STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Aligning sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Aligning sprite: Action 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Aligning sprite: Action 0x5, type {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolor/font sprites and wrapping around from the last sprite to the first STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Go to sprite @@ -3490,6 +3511,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolor/font sprites and wrapping around from the first sprite to the last STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets. Ctrl+Click to move the sprite eight units at a time +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Offset centered @@ -3598,7 +3620,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Go to pr STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Enter a name for the sign # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Towns +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Towns ({COMMA} of {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- None - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (City){BLACK} ({COMMA}) @@ -3726,7 +3748,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global S STR_STORY_BOOK_SPECTATOR :Global Story Book STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Page {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list STR_STORY_BOOK_PREV_PAGE :{BLACK}Previous STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Go to previous page STR_STORY_BOOK_NEXT_PAGE :{BLACK}Next @@ -3932,7 +3954,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/period # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industries +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industries ({COMMA} of {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- None - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transported){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4021,12 +4043,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Ungrouped aircr STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to create a group STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete the selected group STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group STR_GROUP_LIVERY_TOOLTIP :{BLACK}Change livery of the selected group -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace. Ctrl+Click to also protect sub-groups. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace. Ctrl+Click to also protect sub-groups STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Delete Group STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Are you sure you want to delete this group and any descendants? @@ -4442,10 +4464,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacity STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer Credits: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Maintenance interval: {LTBLUE}{COMMA}{NBSP}days{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Maintenance interval: {LTBLUE}{COMMA}{NBSP}minutes{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Maintenance interval: {LTBLUE}{COMMA}{NBSP}minute{P "" s}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Maintenance interval: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Last maintenance: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Last maintenance: {LTBLUE}{NUM} minutes ago +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Last maintenance: {LTBLUE}{NUM} minute{P "" s} ago STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Increase maintenance interval by 10 days. Ctrl+Click to increase maintenance interval by 5 days STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Increase maintenance interval by 5 minutes. Ctrl+Click to increase maintenance interval by 1 minute STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Increase maintenance interval by 10 percent. Ctrl+Click to increase maintenance interval by 5 percent @@ -4636,7 +4658,7 @@ STR_ORDER_REFIT_ORDER :(Refit to {STRI STR_ORDER_REFIT_STOP_ORDER :(Refit to {STRING} and stop) STR_ORDER_STOP_ORDER :(Stop) -STR_ORDER_WAIT_TO_UNBUNCH :(wait to unbunch) +STR_ORDER_WAIT_TO_UNBUNCH :(Wait to unbunch) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Can't use station){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4840,8 +4862,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script STR_AI_SETTINGS_CLOSE :{BLACK}Close STR_AI_SETTINGS_RESET :{BLACK}Reset STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4894,9 +4914,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimate STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Saving still in progress,{}please wait until it is finished! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosave failed STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game save failed... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game load failed... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version @@ -4990,7 +5010,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Can't bu STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Can't build company headquarters... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Can't build any towns +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Can't build any towns... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Can't rename town... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Can't found town here... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Can't expand town... @@ -5001,6 +5021,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... ther STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road work in progress STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Can't delete this town...{}A station or depot is referring to the town or a town owned tile can't be removed STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... there is no suitable place for a statue in the center of this town +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Can't build house... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... too many industries @@ -5038,6 +5059,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Can't bu STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjoins more than one existing station/loading area STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... station too spread out +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... unsupported number of tracks +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... unsupported length STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Too many stations/loading areas STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Too many railroad station parts STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Too many bus stops @@ -5073,11 +5096,14 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjoins STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Too close to another waypoint STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Can't build train waypoint here... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Can't build road waypoint here... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Can't place buoy here... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Can't change waypoint name... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Can't remove train waypoint here... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Can't remove road waypoint here... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Must remove rail waypoint first +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Must remove road waypoint first STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... buoy in the way STR_ERROR_BUOY_IS_IN_USE :{WHITE}... buoy is in use by another company! @@ -5278,6 +5304,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change y STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early vehicles +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}No town-buildable road types are available +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}No town-buildable road types are available yet +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early town-buildable road types + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train... @@ -5320,6 +5351,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}There ar STR_ERROR_AIRPORT_NO_PLANES :{WHITE}This plane cannot land at this heliport STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}This helicopter cannot land at this airport STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}There is no railroad waypoint +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}There is no road waypoint STR_ERROR_NO_BUOY :{WHITE}There is no buoy # Timetable related errors @@ -5807,6 +5839,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}m +STR_CURRENCY_SHORT_GIGA :{NBSP}bn +STR_CURRENCY_SHORT_TERA :{NBSP}tn + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5823,6 +5860,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index abb9eb3551..13eb7c3b12 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -268,12 +268,30 @@ STR_COLOUR_WHITE :Blanka STR_COLOUR_RANDOM :Hazarda ###length 17 +STR_COLOUR_SECONDARY_DARK_BLUE :Malhelblua +STR_COLOUR_SECONDARY_PALE_GREEN :Palverda +STR_COLOUR_SECONDARY_RED :Ruĝa +STR_COLOUR_SECONDARY_LIGHT_BLUE :Helblua +STR_COLOUR_SECONDARY_GREEN :Verda +STR_COLOUR_SECONDARY_DARK_GREEN :Malhelverda +STR_COLOUR_SECONDARY_BLUE :Blua +STR_COLOUR_SECONDARY_CREAM :Kremkolora +STR_COLOUR_SECONDARY_MAUVE :Malva +STR_COLOUR_SECONDARY_PURPLE :Purpura +STR_COLOUR_SECONDARY_ORANGE :Oranĝa +STR_COLOUR_SECONDARY_BROWN :Bruna +STR_COLOUR_SECONDARY_GREY :Griza +STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Same kiel ĉefa # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP}mph STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}km/h STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}m/s +STR_UNITS_VELOCITY_GAMEUNITS_DAY :{DECIMAL}{NBSP}kaheloj/tago +STR_UNITS_VELOCITY_GAMEUNITS_DAY.n :{DECIMAL}{NBSP}kahelojn/tago +STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}kaheloj/sek +STR_UNITS_VELOCITY_GAMEUNITS_SEC.n :{DECIMAL}{NBSP}kahelojn/sek STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}knotoj STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}ĉp @@ -321,11 +339,15 @@ STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP} # Time units used in string control characters STR_UNITS_DAYS :{COMMA}{NBSP}tago{P "" j} STR_UNITS_SECONDS :{COMMA}{NBSP}sekundo{P "" j} +STR_UNITS_TICKS :{COMMA}{NBSP}tempopulso{P "" j} +STR_UNITS_TICKS.n :{COMMA}{NBSP}tempopulso{P "" j}n STR_UNITS_MONTHS :{NUM}{NBSP}monato{P "" j} STR_UNITS_MINUTES :{NUM}{NBSP}minuto{P "" j} STR_UNITS_YEARS :{NUM}{NBSP}jaro{P "" j} +STR_UNITS_PERIODS :{NUM}{NBSP}periodo{P "" j} +STR_UNITS_PERIODS.n :{NUM}{NBSP}periodo{P "" j}n # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtroteksto: @@ -369,7 +391,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Post akt STR_BUTTON_DEFAULT :{BLACK}Normo STR_BUTTON_CANCEL :{BLACK}Nuligu STR_BUTTON_OK :{BLACK}Bone -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Atentu: La serviladministrantoj eventuale povas legi ajnan tekston entajpitan ĉi tie. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -392,7 +413,9 @@ STR_SORT_BY_TYPE :Tipo STR_SORT_BY_TRANSPORTED :Transportiĝis STR_SORT_BY_NUMBER :Numero STR_SORT_BY_PROFIT_LAST_YEAR :Gajno lastjara +STR_SORT_BY_PROFIT_LAST_PERIOD :Profito pasintperiode STR_SORT_BY_PROFIT_THIS_YEAR :Gajno ĉi-jara +STR_SORT_BY_PROFIT_THIS_PERIOD :Profito ĉi-periode STR_SORT_BY_AGE :Aĝo STR_SORT_BY_RELIABILITY :Fidebleco STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Tuta kapablo por ĉiu ŝarĝtipo @@ -420,9 +443,13 @@ STR_SORT_BY_POPULATION :Enloĝantaro STR_SORT_BY_RATING :Takso STR_SORT_BY_NUM_VEHICLES :Nombro de veturiloj STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Ensuma profito pasintjare +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Ensuma profito pasintperiode STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Ensuma profito ĉi-jare +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Ensuma profito ĉi-periode STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Averaĝa profito pasintjare +STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Averaĝa profito pasintperiode STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Averaĝa profito ĉi-jare +STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Averaĝa profito ĉi-periode # Group by options for vehicle list STR_GROUP_BY_NONE :Neniu @@ -438,25 +465,25 @@ STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Agordoj STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Konservu ludon, foriru ludo, forlasi STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Montru mapon, ekstran vidujon, fluon de ŝarĝoj aŭ liston de ŝildoj STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Montru urbaron -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Montru subvenciojn +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Malfermu liston de subvencioj STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Montri stacidomoliston de la kompanio. -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Montru kompaniajn financajn informojn -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Montru ĝeneralajn kompaniajn informojn +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Malfermu kompaniajn financajn informojn +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Malfermu ĝeneralajn kompaniajn informojn STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Montru rakontolibron -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Montru celoj-liston -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Montru grafikojn -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Montru kompanian tabelon +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Malfermu liston de celoj +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Malfermu kompaniajn diagramojn kaj kargajn tarifojn +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Malfermu kompanian rangotabelon STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Pagu konstruadon de nova industrio aŭ listigu ĉiujn industriojn STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Montri vagonarliston de la kompanio. Stir+Klak baskulas la grupo/veturilo-liston. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Montristratveturiloliston de la kompanio. Stir+Klak baskulas la grupo/veturilo-liston. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Montri ŝipoliston de la kompanio. Stir+Klak baskulas la grupo/veturilo-liston. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Montri aviadiloliston de la kompanio. Stir+Klak baskulas la grupo/veturilo-liston. -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zomu vidon -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Malzomu vidon -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Konstrui trakon -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Konstruu stratojn -STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Konstruu tramvojojn -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Konstruu havenojn +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zomu +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Malzomu +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Konstrui fervojan infrastrukturon +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Konstruu stratan infrastrukturon +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Konstruu traman infrastrukturon +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Konstruu akvotransportan infrastrukturon STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Konstruu flughavenojn STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Malfermu la landaspektan ilbreton por (mal)altigi landon, planti arbojn ktp. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Montru fenestron de sono/muziko @@ -471,15 +498,15 @@ STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Scenark STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Movu la komencdaton 1 jaron posten STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Movu la komencdaton 1 jaron antaŭen STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klaku por enigi komencjaron -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Montru mapon, urbaron +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Malfermu mapon, ekstran vidujon, liston de ŝildoj, aŭ katalogon de urboj aŭ industriejoj STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landaspekta generado STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Urba generado STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industria generado -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Vojkonstruado +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Konstruu stratan infrastrukturon STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Konstruado de tramvojo STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantu arbojn. «Shift» aktivigita konstruado/montrante kosto takso STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Metu signon -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Loku objekton. «Shift» aktivigita konstruado/montrante kosto takso +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Metu objekton. Ctrl+klak+tiru por elekti areon diagonale. Ankaŭ premu Shift por nur montri kostotakson # Scenario editor file menu ###length 7 @@ -491,6 +518,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Forlasi scenaro STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Forlasi + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Ludaj agordoj @@ -658,8 +686,9 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Gajna Gr STR_GRAPH_INCOME_CAPTION :{WHITE}Enspeza Grafiko STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Kiom da ŝarĝo liveriĝis STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Kompania rendimento (maksimumo=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Kompaniaj valoroj +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Diagramo de kompania valoro +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Pasintaj 72 minutoj STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Ŝarĝpagaj Tarifoj STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pago por liveri 10 unuojn (aŭ 10,000 litrojn) da ŝarĝo trans 20 kvadratoj @@ -690,7 +719,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Potenculo STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Plejpotenculo # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}Detala rendimento +STR_PERFORMANCE_DETAIL :{WHITE}Detala rendimentpritakso STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detaloj STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) @@ -710,7 +739,11 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Prunto: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Entute: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Nombro de veturiloj kiuj donis profiton pasintjare. Tio inkluzivas stratveturilojn, trajnojn, ŝipojn kaj aviadilojn +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Nombro de veturiloj kiuj donis profiton pasintperiode. Tio inkluzivas stratveturilojn, trajnojn, ŝipojn kaj aviadilojn STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Nombro da staciopartoj lastatempe servitaj. Ĉiu stacioparto (ekz. stacidomo, bushaltejo, flughaveno) alkalkuliĝas, eĉ se ligite kiel unu stacio. +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}La profito de la veturilo kun la plej malalta enspezo (estas konsiderataj nur veturiloj kies aĝo superas du jarojn) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}La profito de la veturilo kun la plej malalta enspezo (estas konsiderataj nur veturiloj kies aĝo superas du periodojn) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Enspezo dum la plej malaltprofita kvarono de la lastaj 12 kvaronoj STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Enspezo dum la plej altprofita kvaronjaro el la lastaj 12 kvaronjaroj STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Ŝarĝunuoj liveritaj dum la pasintaj 4 kvaronjaroj @@ -810,7 +843,7 @@ STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transportstratoj STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Arbaro STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Fervoja Stacidomo -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Ŝarĝaŭta Ŝarĝejo +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Ŝarĝaŭta stacio STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Busstacio STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Flughaveno/Helikopterejo STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Haveno @@ -854,6 +887,7 @@ STR_STATUSBAR_AUTOSAVE :{RED}AŬTOMATA STR_STATUSBAR_SAVING_GAME :{RED}* * KONSERVAS LUDON * * STR_STATUSBAR_SPECTATOR :{WHITE}(spektanto) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(senfina mono) # News message history STR_MESSAGE_HISTORY :{WHITE}Mesaĝa historio @@ -938,25 +972,28 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} tro malnoviĝis kaj postulas anstataŭiĝon STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} ne povas trovi padon por daŭrigi. STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} estas perdita +STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :{WHITE}La profito de {VEHICLE} dum la pasinta jaro estis {CURRENCY_LONG} +STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}La profito de {VEHICLE} dum la pasinta periodo estis {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} ne povas iri ĝis la sekva celpunkto ĉar ĝi estas ekster la atingebla distanco STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} haltis ĉar komanda transformo fiaskis -STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Aŭtorenovigo fiaskis ĉe {VEHICLE}{}{STRING} +STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Aŭtomata renovigo fiaskis ĉe {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nova {STRING} nun haveblas! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nova {STRING} nun haveblas! - {ENGINE} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} nun akceptas: {CARGO_LIST.n} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subvencia oferto ne plu validas:{}{}Transportado de {STRING} de {STRING} al {STRING} ne estos subvenciata. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvencio retiriĝis:{}{}Servo de {STRING} de {STRING} al {STRING} ne plu estas subvenciata. -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subvencia proponiĝas:{}{}Unua {STRING} de {STRING} al {STRING} ricevos {UNITS_YEARS_OR_MINUTES} subvencion de la lokaj estroj! +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subvencio proponiĝas:{}{}Unua {STRING} de {STRING} al {STRING} ricevos dum {UNITS_YEARS_OR_MINUTES} subvencion de la lokaj estroj! ###length 4 STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvencion gajnis {STRING}!{}{}{STRING} de {STRING} al {STRING} pagiĝos kun aldono je 50% dum la sekvontaj {UNITS_YEARS_OR_MINUTES}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvencion gajnis {STRING}!{}{}{STRING} de {STRING} al {STRING} pagiĝos duoble dum la sekvontaj {UNITS_YEARS_OR_MINUTES}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvencion gajnis {STRING}!{}{}{STRING} de {STRING} al {STRING} pagiĝos trioble dum la sekvontaj {UNITS_YEARS_OR_MINUTES}! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Suvencion gajnis {STRING}!{}{}{STRING} de {STRING} al {STRING} pagiĝos kvaroble dum la sekvontaj {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvencion gajnis {STRING}!{}{}{STRING} de {STRING} al {STRING} pagiĝos kvaroble dum la sekvontaj {UNITS_YEARS_OR_MINUTES}! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transporta monopolo! @@ -981,17 +1018,13 @@ STR_GAME_OPTIONS_VOLUME :Laŭteco STR_GAME_OPTIONS_SFX_VOLUME :Sonefektoj STR_GAME_OPTIONS_MUSIC_VOLUME :Muziko -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Monunuoj STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Elekto de monunuoj +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Brita Pundo STR_GAME_OPTIONS_CURRENCY_USD :Usona Dolaro STR_GAME_OPTIONS_CURRENCY_EUR :Eŭro @@ -1034,6 +1067,8 @@ STR_GAME_OPTIONS_CURRENCY_HKD :Honkonga dolaro STR_GAME_OPTIONS_CURRENCY_INR :Barata rupio STR_GAME_OPTIONS_CURRENCY_IDR :Indonezia rupio STR_GAME_OPTIONS_CURRENCY_MYR :Malajzia ringito +STR_GAME_OPTIONS_CURRENCY_LVL :Latvaj Latoj +STR_GAME_OPTIONS_CURRENCY_PTE :Portugalaj Eskudoj STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Aŭtomata konservado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Elektu intervalon inter aŭtomataj konservadoj de la ludo @@ -1068,19 +1103,20 @@ STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Nuna pel STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Interfacgrandeco STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Aŭtomate rekonu grandecon +STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Ŝaltu ĉi tiun kvadrateton por aŭtomate detekti grandecon de la interfaco +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Uzu tradician bildetan tiparon +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Ŝaltu ĉi tiun kvadrateton se vi preferas uzi la tradician fiksgrandecan bildetan tiparon. +STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Glatigu tiparojn +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Ŝaltu ĉi tiun kvadrateton por glatigi aligrandigeblajn tiparojn -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Aŭtomata sondado STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Partopreni aŭtomatan sondadon STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Kiam tiu ĉi agordo estas aktiva, OpenTTD sendos sondaĵon je forlaso de ludo STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Pri sondado kaj privateco +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Tio ĉi malfermos retumilon kun pli da informoj pri la aŭtomata sondado STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Antaŭmontru sondaĵrezulton STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Montru la sondaĵrezulton de la kuranta ludo @@ -1092,11 +1128,11 @@ STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Aktualigoftecoj pli altaj ol 60Hz povas kaŭzi malrapidiĝon. STR_GAME_OPTIONS_BASE_GRF :{BLACK}Baza grafikaro -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektu la uzendan bazgrafikaron +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektu la uzotan bazan grafikaron (ne eblas ŝanĝi ene de la ludo, nur de la ĉefa menuo) STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Aldonaj informoj pri la baza grafikaro STR_GAME_OPTIONS_BASE_SFX :{BLACK}Baza sonaro -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Elektu la uzendan sonaron +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Elektu la uzotan bazan sonaron (ne eblas ŝanĝi ene de la ludo, nur de la ĉefa menuo) STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Aldonaj informoj pri la baza sonaro STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Baza muzikaro. @@ -1105,6 +1141,10 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Pluaj in +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Stato de la kromprogramo: + +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Duplikata kromprogramo +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Malvalida subskribo STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Ne eblis akiri liston de subtenataj distingivoj @@ -1118,6 +1158,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Malpliig STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Pliigu la kvanton de via valuto kiu egalas al unu pundo (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Indiku la kurzon de via valuto por unu pundo (£) + STR_CURRENCY_PREFIX :{LTBLUE}Prefikso: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Ekekti simbolon de via valuto STR_CURRENCY_SUFFIX :{LTBLUE}Sufikso: {ORANGE}{STRING} @@ -1201,13 +1242,13 @@ STR_TERRAIN_TYPE_CUSTOM_VALUE :Specifa alteco STR_CITY_APPROVAL_LENIENT :Indulgema STR_CITY_APPROVAL_TOLERANT :Tolerante STR_CITY_APPROVAL_HOSTILE :Malamikema -STR_CITY_APPROVAL_PERMISSIVE :Permeseme (ne efikas al la agoj de la kompanio) +STR_CITY_APPROVAL_PERMISSIVE :Permesema (ne efikas al la agoj de la kompanio) STR_WARNING_NO_SUITABLE_AI :{WHITE}Neniu taŭga AI estas disponebla...{}Kelkaj AI-oj estas elŝuteblaj per la sistemo 'Enreta Enhavo'. # Settings tree window STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Agordoj -STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtroteksto: +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrilo: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Etendu ĉion STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Maletendu ĉiujn STR_CONFIG_SETTING_COLLAPSE_ALL.n :{BLACK}Collapse all @@ -1268,12 +1309,14 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centre STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dekstre +STR_CONFIG_SETTING_INFINITE_MONEY :Senfina mono: {STRING} +STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Permesu senliman elspezadon kaj malŝaltu bankroton de kompanioj STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimuma komenca prunto: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksimuma monsumo kiun kompanio povas prunti (sen enkalkulado de inflacio) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksimuma monsumo kiun kompanio povas prunti (sen enkalkulado de inflacio). Se "Sen prunto" estas elektita, neniom da mono estos havebla krom se ludoskripto provizas monon aŭ la agordo "Senfina mono" estas elektita. STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Sen prunto {RED}Bezonatas ludoskripto por provizi komencan financadon +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Sen prunto STR_CONFIG_SETTING_INTEREST_RATE :Rentumtarifoj: {STRING} @@ -1310,6 +1353,7 @@ STR_CONFIG_SETTING_DISASTERS :Katastrofoj: {S STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ŝaltu akcidentojn kiuj de temp' al tempo povas bloki veturilojn aŭ infrastrukturon STR_CONFIG_SETTING_CITY_APPROVAL :Sinteno de lokaj estraroj: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Elektu kiugrade bruo kaj poluado de kompanioj influas la urban takson kaj pluajn konstruajn agojn en la urbo STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Limo de mapalteco: {STRING} STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM} @@ -1336,9 +1380,10 @@ STR_CONFIG_SETTING_SMOKE_AMOUNT :Kvanto da lokom STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Agordu kiom da fumo aŭ fajreroj eligas veturiloj STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Modelo de vagonarakcelado: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Elektu fizikan modelon por trajna akcelado. La "originala" modelo malfaciligas deklivojn egale por ĉiuj veturiloj. La "realisma" modelo malfaciligas deklivojn kaj kurbojn depende de diversaj ecoj de la vagonkonsisto, ekzemple longeco kaj trakcia forto STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modelo de stratveturilakcelado: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Elektu fizikan modelon por startveturila akcelado. La "originala" modelo malfaciligas deklivojn egale por ĉiuj veturiloj. La "realisma" modelo malfaciligas deklivojn depende de diversaj ecoj de la motoro, ekzemple "trakcia forto". +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Elektu fizikan modelon por stratveturila akcelado. La "originala" modelo malfaciligas deklivojn egale por ĉiuj veturiloj. La "realisma" modelo malfaciligas deklivojn depende de diversaj ecoj de la motoro, ekzemple "trakcia forto". STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Deklivkruteco por vagonaroj: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Kruteco de dekliva kahelo por vagonaro. Kun pli alta valoro estas pli malfacile supreniri altaĵon @@ -1371,10 +1416,10 @@ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kiel aliaj indu STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :esploradon STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Ebena areo ĉirkaŭ fabrikoj: {STRING} -STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Kvanto de ebena spaco ĉirkaŭ fabriko. Tio certigas ke restos spaco ĉirkaŭ fabriko por konstrui fervojojn ktp +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Kvanto de ebena spaco ĉirkaŭ industriejo. Tio certigas ke restos spaco ĉirkaŭ industriejo por konstrui fervojojn ktp STR_CONFIG_SETTING_MULTIPINDTOWN :Permesu pliajn similajn industriojn en la sama urbo: {STRING} -STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normale, urbo ne volas pli ol unu fabrikon de ĉiu tipo. Kun tiu ĉi agordo, ĝi permesos plurajn fabrikojn de la sama tipo en la sama urbo +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normale, urbo ne volas pli ol unu industriejo de ĉiu tipo. Kun tiu ĉi agordo, ĝi permesos plurajn industriejojn de la sama tipo en la sama urbo STR_CONFIG_SETTING_SIGNALSIDE :Montru signaloj: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Elektu je kiu flanko de la reloj meti semaforojn @@ -1409,10 +1454,12 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Ĉiu vidujo STR_CONFIG_SETTING_BRIBE :Permesu subaĉeti la lokajn estrojn: {STRING} ###length 2 STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permesu al kompanioj provi subaĉeti lokajn estrojn. Se inspektoro rimarkas la subaĉeton, la kompanio dum ses monatoj ne povos agi en la urbo +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Permesu al kompanioj provi subaĉeti lokajn estrojn. Se inspektoro rimarkas la subaĉeton, la kompanio dum ses minutoj ne povos agi en la urbo STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permesu aĉeti ekskluzivajn transportrajtojn: {STRING} ###length 2 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Se kompanio aĉetas ekskluzivajn transportrajtojn en urbo, stacioj de konkurantoj (pasaĝeraj kaj kargaj) ne ricevos ŝarĝojn dum tuta jaro +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Se kompanio aĉetas ekskluzivajn transportrajtojn en urbo, stacioj de konkurantoj (pasaĝeraj kaj kargaj) ne ricevos ŝarĝojn dum 12 monatoj +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :Se kompanio aĉetas ekskluzivajn transportrajtojn en urbo, stacioj de konkurantoj (pasaĝeraj kaj kargaj) ne ricevos ŝarĝojn dum 12 minutoj STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Permesi financi konstruaĵojn: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permesu ke kompanioj donu monon al urboj por financi novajn domojn @@ -1437,7 +1484,7 @@ STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :reduktita STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normala -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permesu trairajn bushaltejojn sur urboposedataj stratoj: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permesu trairajn bushaltejojn sur stratoj posedataj de urboj: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permesu konstrui trairajn strathaltejojn sur stratoj posedataj de urboj STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permesu trairajn strathaltejojn sur stratoj posedataj de konkurantoj: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permesu konstrui trairajn strathaltejojn sur stratoj posedataj de konkurantoj @@ -1465,17 +1512,23 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :de ĉiuj veturi STR_CONFIG_SETTING_WARN_INCOME_LESS :Avertu se gajno de veturilo negativas: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Kiam tiu ĉi agordo estas aktiva, aperas anonco kiam iu veturilo ne faris profiton dum kalendara jaro +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Kiam tiu ĉi agordo estas aktiva, aperas anonco kiam iu veturilo ne faris profiton dum jaro +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Kiam tiu ĉi agordo estas aktiva, aperas anonco kiam iu veturilo ne faris profiton dum periodo + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Veturiloj neniam eluziĝas: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Se tiu ĉi agordo estas aktiva, ĉiuj modeloj de veturiloj restos aĉeteblaj por ĉiam post ekhaveblo +STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Tempomezuro: {STRING} +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Elektu tempomezurajn unuoj por la ludo. Ne eblas ŝanĝi tion ĉi poste.{}{}Kalendar-bazita estas la klasika OpenTTD-sperto, kun jaro konsistanta el 12 monatoj, kaj ĉiu monato havas 28-31 tagojn.{}{}En Murhorloĝ-bazita tempo, kargoproduktado kaj financoj anstataŭe baziĝas je unu-minutaj eroj, kiuj proksimume same longe daŭras kiel 30-taga monato en Kalendar-bazita reĝimo. Tiuj ĉi eroj grupiĝas en 12-minutajn periodojn, ekvivalentajn al jaro en Kalendar-bazita reĝimo.{}{}En ambaŭ reĝimoj ĉiam ekzistas klasika kalendaro, uzata por datoj de havebliĝo de veturiloj, domoj, kaj alia infrastrukturo. ###length 2 -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalendaro +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalendara +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Murhorloĝa ###setting-zero-is-special +STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Aŭtomate anstataŭu veturilon se malnoviĝas: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Se tiu ĉi agordo estas aktiva, veturilo kiu alproksimiĝas al la fino de sia vivdaŭro estos aŭtomate anstataŭigita kiam la renovigkondiĉoj estas plenumitaj @@ -1516,7 +1569,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TERRAIN_TYPE :Terentipo: {STRING} -STR_CONFIG_SETTING_INDUSTRY_DENSITY :Denseco de fabrikoj: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Denseco de industriejoj: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Agordu kiom da fabrikoj estu generitaj, kaj kiu nivelo estu tenata dum la ludo STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimuma distanco de la maprando por olea industrio: {STRING} @@ -1525,11 +1578,11 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limigu kiom for STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Neĝregiona alto: {STRING} STR_CONFIG_SETTING_SNOW_COVERAGE :Neĝa kovro: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Regas la proksimuman kvanton de neĝo en la arktikeca landaspekto. Neĝo ankaŭ influas generadon de fabrikoj kaj kondiĉojn por kreskado de urboj. Nur uzata dum mapgenerado. Tereno tuj super la marnivelo ĉiam estas senneĝa. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Elektu la proksimuman kvanton de neĝo en la arktikeca landaspekto. Neĝo ankaŭ influas generadon de industriejoj kaj kondiĉojn por kreskado de urboj. Nur uzata dum mapgenerado. Marnivelaj kaj marbordaj kaheloj neniam havas neĝon. STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Dezerta kovro: {STRING} -STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Regas la proksimuman kvanton de dezerto en la tropikeca landaspekto. Dezertoj ankaŭ influas generadon de fabrikoj. Nur uzata dum mapgenerado +STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Elektu la proksimuman kvanton de dezerto en la tropikeca landaspekto. Dezertoj ankaŭ influas generadon de industriejoj kaj kondiĉojn por kreskado de urboj. Nur uzata dum mapgenerado STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Nereguleco de tereno: {STRING} @@ -1646,6 +1699,9 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ne STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fermu fenestron per dekstra klako: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fermas fenestron per dekstra klako ene de ĝi. Malebligas ŝpruchelpilon je dekstra klako! ###length 3 +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Ne +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Jes +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Jes, krom gluecaj STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Uzu la {STRING.n} datformon por nomoj de konservludoj. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Dataranĝo en dosiernomoj de konservitaj ludoj @@ -1673,7 +1729,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ebligu uzadon d STR_CONFIG_SETTING_LOADING_INDICATORS :Uzu ŝarg-indikilojn: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Elektu ĉu ŝarĝ-indikiloj estas montrataj sub ŝarĝataj aŭ malŝarĝataj veturiloj +STR_CONFIG_SETTING_TIMETABLE_MODE :Tempunuoj por horaroj: {STRING} +STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Elektu tempunuojn uzotajn por horaroj de veturiloj ###length 3 +STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Tagoj +STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Sekundoj +STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Tempopulsoj STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Montru alvenojn kaj forirojn sur horaroj: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Montru antaŭvidatajn alven- kaj forir-tempojn en horaroj @@ -1709,9 +1770,11 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Ludu sonon je m ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR :Fine de la jaro: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Fino de periodo: {STRING} ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Ludu sonon je la fino de jaro resumantan la rendimenton de la kompanio dum la jaro kompare al la antaŭa jaro +STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Ludu sonon je la fino de jaro resumantan la rendimenton de la kompanio dum la periodo kompare al la antaŭa periodo STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruado: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Ludu sonon je sukcesa plenumo de konstruado aŭ aliaj agoj @@ -1770,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Defaŭlta prise STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Elektu la defaŭltan priservintervalon por novaj aviadiloj, se ne estas eksplicite agordita priservintervalo por la veturilo STR_CONFIG_SETTING_SERVINT_SHIPS :Defaŭlta priservintervalo por ŝipoj: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Elektu la defaŭltan priservintervalon por novaj ŝipoj, se ne estas eksplicite agordita priservintervalo por la veturilo -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}tago{P 0 "" j}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Malaktiva @@ -1846,7 +1910,7 @@ STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Neniam STR_CONFIG_SETTING_ECONOMY_TYPE :Tipo de ekonomio: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :En glata ekonomio, produktadkvantoj ŝanĝiĝas pli ofte, kaj je malpli multe. En frostigita ekonomio, ne ŝanĝiĝas produktadkvantoj kaj ne fermiĝas fabrikoj. Tiu ĉi agordo povas esti senefika se iu NewGRF provizas tipojn de fabrikoj. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :En glata ekonomio, produktadkvantoj ŝanĝiĝas pli ofte, kaj je malpli multe. En frostigita ekonomio, ne ŝanĝiĝas produktadkvantoj kaj ne fermiĝas industriejoj. Tiu ĉi agordo povas esti senefika se iu NewGRF provizas tipojn de industriejoj. ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Originala STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Glata @@ -1885,8 +1949,8 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permesu ke urbo STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Urboj rajtas konstrui traknivelajn pasejojn: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Kiam tiu ĉi agordo estas aktiva, urboj rajtas konstrui traknivelajn pasejojn -STR_CONFIG_SETTING_NOISE_LEVEL :Permesu urbe kontrolatan laŭtecon por flughavenoj: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kiam tiu ĉi agordo estas malaktiva, povas esti nur du flughavenoj en ĉiu urbo. Kiam tiu ĉi agordo estas aktiva, la nombron de flughavenoj en urbo limigas la bruo-toleremo de la urbo, kiu dependas de la loĝantaro kaj de la grandeco kaj distanco de la flughaveno +STR_CONFIG_SETTING_NOISE_LEVEL :Limigu lokigon de flughavenoj surbaze de brunivelo: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Permesu ke urboj bloku konstruadon de flughavenoj surbaze de ilia bruo-toleremo, kiu dependas de la loĝantaro kaj de la grandeco kaj distanco de la flughaveno. Kiam tiu ĉi agordo estas malaktiva, urboj permesas nur du flughavenojn krom se la sinteno de lokaj estraroj estas agordita al "Permesema" STR_CONFIG_SETTING_TOWN_FOUNDING :Konstruanta urbojn en ludo: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Kiam tiu ĉi agordo estas aktiva, ludantoj rajtas fondi novajn urbojn dum la ludo @@ -1902,6 +1966,7 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Kvadrata (origi STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineara STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Dumluda metado de arboj: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Regu la hazardan aperadon de arboj dum la ludo. Tio povas influi al industriejoj kiuj dependas je arbokreskado, ekzemple segejoj ###length 4 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Kresku sed ne disvastiĝu {RED}(malfunkciigas lignejojn) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Kresku sed disvastiĝu nur en pluvarbaroj @@ -1954,8 +2019,9 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Neniom STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Komenca urbgrandeca multobligo: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Averaĝa grandeco de urbegoj rilate al normalaj urboj je la komenco de la ludo -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Ĝisdatigu la distribuan grafeon {P 0:2 "ĉiun" "ĉiujn"} {STRING}{NBSP}{P 0:2 "sekundon" "sekundojn"} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Uzu {STRING}{NBSP}sekundo{P 0:2 n jn} por rekalkulado de la distribua grafeo +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Ĝisdatigu la distribuan grafeon ĉiujn {STRING.n} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tempo inter sinsekvaj rekalkuloj de la liga grafeo. Ĉiu rekalkulo kalkulas planoj por unu komponento de la grafeo. Tio signifas ke meti valoron X por tiu ĉi agordo ne signifas ke la tuta grafeo estos ĝisdatigita ĉiujn X sekundojn. Nur iu komponento estos. Ju pli mallongan tempon vi elektas, des pli da procesora tempo bezonatas por la kalkulado. Ju pli longan tempon vi elektas, des pli longe daŭros ĝis kiam komenciĝos distribuado de kargoj en novaj itineroj. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Uzu {STRING.n} por rekalkulado de la distribua grafeo STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribua reĝimo por pasaĝeroj: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simetria" signifas ke proksimume la sama nombro de pasaĝeroj iros de stacio A al stacio B kiel de B al A. "Malsimetria" signifas ke ajnaj nombroj de pasaĝeroj povas iri en ajnan direkton. "Permana" signifas ke ne estos aŭtomata distribuado de pasaĝeroj. @@ -1986,6 +2052,8 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kiam ajn montri STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Angla-usona sistemo (mejloj hore) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metra (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI-unuoj (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Enludaj unuoj (kaheloj/tago) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Enludaj unuoj (kaheloj/tago) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Knotoj STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unuoj de veturila povumo: {STRING} @@ -2048,14 +2116,8 @@ STR_CONFIG_SETTING_AI :Konkurantoj STR_CONFIG_SETTING_AI_NPC :Komputil-ludantoj STR_CONFIG_SETTING_NETWORK :Reto -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Padtrovilo por vagonaroj: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Padtrovilo por stratveturiloj: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Padtrovilo por ŝipoj: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Aŭtomata dorsflankante ĉe signaloj: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permesu al vagonaro turniĝi ĉe semaforo, se ĝi jam atendis dum longa tempo -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Rekomendite) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Ŝanĝu agord-valoron @@ -2115,7 +2177,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Elektu ' STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Elektu 'ludlandan' landstilon STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Montri ludajn agordojn -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Montru altpoentara tabelo +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Malfermu altpoentaran tabelon STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Montru agordojn STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Montri NewGRF-agordojn STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Serĉi pri nova kaj ĝisdatigita enhavo por elŝuti @@ -2138,9 +2200,18 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Ĉu vi STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ĉu vi certas ke vi volas forlasi ĉi tiun scenaron? # Help window +STR_HELP_WINDOW_CAPTION :{WHITE}Helpo & manlibroj +STR_HELP_WINDOW_DOCUMENTS :{BLACK}Dokumentoj +STR_HELP_WINDOW_CHANGELOG :{BLACK}Ŝanĝarĥivo +STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Konataj cimoj +STR_HELP_WINDOW_LICENSE :{BLACK}Permesilo +STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD +STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Manlibro / Vikio +STR_HELP_WINDOW_BUGTRACKER :{BLACK}Raportu cimon +STR_HELP_WINDOW_COMMUNITY :{BLACK}Komunumo # Cheat window -STR_CHEATS :{WHITE}Filudaĵoj +STR_CHEATS :{WHITE}Sablujaj agordoj STR_CHEAT_MONEY :{LTBLUE}Altigu monkvanton per {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ludanta kiel kompanio: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magia forigilo (forviŝu industriojn, nemovebla objektoj): {ORANGE}{STRING} @@ -2160,6 +2231,9 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Montru v STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Montru stratveturilajn kolorskemojn STR_LIVERY_SHIP_TOOLTIP :{BLACK}Montru ŝipkolorajn skemojn STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Montru aviadilajn kolorskemojn +STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Montru kolorojn de stratveturilaj grupoj +STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Montru kolorojn de ŝipaj grupoj +STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Montru kolorojn de aviadilaj grupoj STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elektu la unuan koloron por la elektita skemo. Ctrl+klaki aktivigos tiu koloron je ĉiu skemoj STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elektu la duan koloron por la elektita skemo. Ctrl+klaki aktivigos tiu koloron je ĉiu skemoj STR_LIVERY_PANEL_TOOLTIP :{BLACK}Elektu la kolorskemon ŝanĝendan, aŭ plurajn per CTRL+click. Alklaku kvadraton por uzi/ne uzi skemon @@ -2268,6 +2342,7 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Mapgrand STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Mapgrandeco de la ludo{}Klaku por ordigi laŭ areo STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dato STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Aktuala dato +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Ludotempo STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Lingvo, servila versio ktp. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Alklaku ludon el la listo por elekti ĝin @@ -2283,6 +2358,7 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Adreso STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Invitokodo: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Komenca dato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Nuna dato: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Ludotempo: {WHITE}{NUM}h {NUM}m STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Ludoskripto: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Protektata per pasvorto! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVILO NE SURRETAS @@ -2316,7 +2392,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}La ludno STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Agordu pasvorton STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protektu vian ludon per pasvorto por ne publike atingebligi ĝin -STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Videbleco +STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Videbleco: STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Ĉu aliuloj povas vidi vian servilon en la publika listo STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} kliento{P "" j} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Klienta maksimumo: @@ -2347,7 +2423,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Kaptante STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Malkonektu STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servilo estas protektata. Enigu pasvorton -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Kompanio estas protektata. Enigu pasvorton # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Enretaj ludantoj @@ -2357,6 +2432,8 @@ STR_NETWORK_CLIENT_LIST_CAPTION :{WHITE}Enretaj STR_NETWORK_CLIENT_LIST_SERVER :{BLACK}Servilo STR_NETWORK_CLIENT_LIST_SERVER_NAME :{BLACK}Nomo STR_NETWORK_CLIENT_LIST_SERVER_NAME_TOOLTIP :{BLACK}Nomo de la servilo ĉe kiu vi ludas +STR_NETWORK_CLIENT_LIST_SERVER_NAME_EDIT_TOOLTIP :{BLACK}Ŝanĝu la nomon de via servilo +STR_NETWORK_CLIENT_LIST_SERVER_NAME_QUERY_CAPTION :Nomo de la servilo STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY :{BLACK}Videbleco STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY_TOOLTIP :{BLACK}Ĉu aliuloj povas vidi vian servilon en la publika listo STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE :{BLACK}Invitkodo @@ -2392,6 +2469,7 @@ STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Forbaru STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Forigi STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Administra ago +STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Ĉu vi certas ke vi volas forĵeti la ludantoj '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Ĉu vi certas ke vi volas forbari la ludanton '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Ĉu vi certas ke vi volas forigi la kompanion '{COMPANY}'? @@ -2410,19 +2488,9 @@ STR_NETWORK_ASK_SURVEY_YES :Jes STR_NETWORK_SPECTATORS :Spektantoj -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne konservu la pasvorton. -STR_COMPANY_PASSWORD_OK :{BLACK}Donu la novan pasvorton al la kompanio. -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Kompania pasvorto -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Fari defaŭltan kompanipasvorton. -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Uzu ĉi tiun kompanipasvorton kiel defaŭlto por novaj kompanioj. - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Anigi STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Anigi kaj ludi kiel ĉi tiu kompanio. -STR_COMPANY_VIEW_PASSWORD :{BLACK}Pasvorto -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Pasvorte protektu vian kompanion por eviti ke eksteruloj aliĝu -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Agordu kompanian pasvorton # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Sendu @@ -2462,7 +2530,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Via luda STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Ebla konektoperdo STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Ne alvenis datumoj de la servilo dum la pasinta{P 0 "" j} {NUM} sekundo{P 0 "" j} -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :ĝenerala eraro STR_NETWORK_ERROR_CLIENT_DESYNC :sensinkroneca eraro STR_NETWORK_ERROR_CLIENT_SAVEGAME :ne povis ŝarĝi mapon @@ -2536,7 +2604,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK} Serĉu STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Vi forlase OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}La uzokondiĉoj por elŝuti enhavon de eksteraj retejoj estas variaj.{}Vi devas kontroli ĉe la eksteraj retejoj por trovi informojn pri kiel instali la enhavon al OpenTTD.{}Ĉu vi volas daŭrigi? STR_CONTENT_FILTER_TITLE :{BLACK}Etikeda/noma filtro: -STR_CONTENT_OPEN_URL :{BLACK}Vizitu la retejon +STR_CONTENT_OPEN_URL :{BLACK}Retejo STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Vizitu la retejon de tiu ĉi enhavo STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Elŝuti STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Komencu elŝuti la elektitan enhavon. @@ -2621,6 +2689,8 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}superŝutata # Linkgraph tooltip +STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}{CARGO_LONG} transportendas ĉiumonate de {STATION} al {STATION} ({COMMA}% de la kapacito){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG} transportendas ĉiuminute de {STATION} al {STATION} ({COMMA}% de la kapacito){STRING} STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} transportenda reen ({COMMA}% de la kapacito) STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Meznombra veturtempo: {UNITS_DAYS_OR_SECONDS} @@ -2671,7 +2741,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Elekti d # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Vojpunkto -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Elekti tipon de vojpunkto # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Elekto de Stacidomo @@ -2684,8 +2753,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Elektu l STR_STATION_BUILD_DRAG_DROP :{BLACK}Tiru k metu STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Tiru por konstrui stacidomon -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Elekti stacidomklason por montri. -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Elekti stacidomotipon por konstrui. + + + STR_STATION_CLASS_DFLT :Defaŭlta STR_STATION_CLASS_DFLT_STATION :Defaŭlta stacio @@ -2728,13 +2798,14 @@ STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Vojkonst STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Konstruado de tramvojoj STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Konstruu vojeron. Ctrl baskuligas inter konstrui/mal-konstrui vojeron. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Konstruu tramvojan sekcion. Stir-klavo ŝaltas konstruadon/forigon por tramvojkonstruado. Majuskliga klavo ŝaltas konstruadon/montradon de kostotakso -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Konstruu vojan sekcion per la Aŭtomata voj-reĝimo. Stir-klavo ŝaltas konstruadon/forigon por vojkonstruado. Majuskliga klavo ŝaltas konstruadon/montradon de kostotakso +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Konstruu vojan sekcion per la Aŭtomata voj-reĝimo. Ctrl+klaku por forigi vojsekcion. Ankaŭ premu Shift por nur montri kostotakson +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Konstruu tramvojan sekcion per la Aŭtomata tramvoj-reĝimo. Ctrl+klaku por forigi tramvojsekcion. Ankaŭ premu Shift por nur montri kostotakson STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Konstrui stratveturilan garaĝon (por konstrui kaj prizorgi veturilojn). Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Konstrui tramveturilan garaĝon (por konstrui kaj prizorgi veturilojn). Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Konstrui bushaltejon. Premu Ctrl-klavo por ligi haltejojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Konstruu bushaltejon. Ctrl+klaku por elekti alian stacion por ligi. Ankaŭ premu Shift por nur montri kostotakson STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Konstrui pasaĝerotraman stacion. Premu Ctrl-klavo por ligi staciojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Konstrui kamionan ŝarĝejon. Premu Ctrl-klavon por ligi ŝarĝejojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Konstrui frajttraman stacion. Premu Ctrl-klavon por ligi staciojn. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Konstrui kargotraman stacion. Ctrl+klaku por elekti alian stacion por ligi. Ankaŭ premu Shift por nur montri kostotakson STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktivigi/Malaktivigi unudirektajn stratojn STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Konstruu vojponton. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Konstrui tramponton. Baskulu inter konstrui/(kosto)taksi per maljuskliga klavo @@ -2819,8 +2890,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Aĉetu l # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Elekto de Objekto -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Elektu objekton por konstrui. La majuskliga klavo baskuligas inter konstrui/(kosto)taksi -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Elektu klason de la objekto konstrui STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Antaŭvido de la objekto STR_OBJECT_BUILD_SIZE :{BLACK}Grandeco: {GOLD}{NUM} x {NUM} kaheloj @@ -2859,7 +2928,7 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ĉu vi c # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Urba Generado STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nova Urbo -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fondi novan urbon. Maljuskliga klavo+klaki nur montrigas taksitan koston +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fondu novan urbon. Ankaŭ premu Shift por nur montri kostotakson STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Hazarda Urbo STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Fondi urbon en hazarda loko STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Multaj hazardaj urboj @@ -2891,7 +2960,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 krad STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Hazarde # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Fondu novan industrion +STR_FUND_INDUSTRY_CAPTION :{WHITE}Fondado de industriejoj STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Elektu la taŭgan industrion de ĉi tiu listo STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Kreu hazardajn fabrikojn STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Kovru la mapon per hazarde metitajn industriojn @@ -2934,7 +3003,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Posedant STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Posedanto de fervojo: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokaj estroj: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neniu -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Troviĝo: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Troviĝo: {LTBLUE}{NUM} x {NUM} x {NUM} STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Kreite: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stacioklaso: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Staciotipo: {LTBLUE}{STRING} @@ -3001,7 +3070,7 @@ STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusoj STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Stacidomo STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Aviadila hangaro STR_LAI_STATION_DESCRIPTION_AIRPORT :Flughaveno -STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Ŝarĝejo +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Ŝarĝaŭta stacio STR_LAI_STATION_DESCRIPTION_BUS_STATION :Bushaltejo STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Haveno STR_LAI_STATION_DESCRIPTION_BUOY :Buo @@ -3145,6 +3214,7 @@ STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Urbonomo STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Elektu stilon de urbonomoj STR_MAPGEN_DATE :{BLACK}Dato: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Kiom da industrioj: +STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Elektu densecon de industriejoj, aŭ specifan nombron STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Plej alta pinto: STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Pliigu la maksimuman altecon de la plej alta pinto sur la mapo je unu STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Malpliigu la maksimuman altecon de la plej alta pinto sur la mapo je unu @@ -3158,6 +3228,7 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Malpliig STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terentipo: STR_MAPGEN_SEA_LEVEL :{BLACK}Marnivelo: +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Elektu marnivelon STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Riveroj: STR_MAPGEN_SMOOTHNESS :{BLACK}Reguleco: STR_MAPGEN_VARIETY :{BLACK}Diverseca distribuo: @@ -3165,6 +3236,7 @@ STR_MAPGEN_GENERATE :{WHITE}Generu STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}Agordoj de NewGRF STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Montru NewGRF-agordojn STR_MAPGEN_AI_SETTINGS :{BLACK}AI-agordoj +STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Malfermu AI-agordojn STR_MAPGEN_GS_SETTINGS :{BLACK}Ludoskriptaj agordoj STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Montru ludoskriptajn agordojn @@ -3193,6 +3265,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Katalune # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Maprandoj: +STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Elektu randojn de la ludmondo STR_MAPGEN_NORTHWEST :{BLACK}Nordokcidenta STR_MAPGEN_NORTHEAST :{BLACK}Nordorienta STR_MAPGEN_SOUTHEAST :{BLACK}Sudorienta @@ -3201,7 +3274,7 @@ STR_MAPGEN_BORDER_FREEFORM :{BLACK}Liberman STR_MAPGEN_BORDER_WATER :{BLACK}Akvo STR_MAPGEN_BORDER_RANDOM :{BLACK}Hazarde STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Hazarde -STR_MAPGEN_BORDER_MANUAL :{BLACK}Manlibro +STR_MAPGEN_BORDER_MANUAL :{BLACK}Permane STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Mapa turniĝo: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Mapa nomo: @@ -3233,9 +3306,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% k STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Mondgenerado STR_GENERATION_RIVER_GENERATION :{BLACK}Rivergenerado -STR_GENERATION_TREE_GENERATION :{BLACK}Arba generado -STR_GENERATION_OBJECT_GENERATION :{BLACK}Nemoveblaĵa generado STR_GENERATION_CLEARING_TILES :{BLACK}Generado de malglataj kaj rokaj regionoj +STR_GENERATION_OBJECT_GENERATION :{BLACK}Nemoveblaĵa generado +STR_GENERATION_TREE_GENERATION :{BLACK}Arba generado STR_GENERATION_SETTINGUP_GAME :{BLACK}Agordante ludon STR_GENERATION_PREPARING_TILELOOP :{BLACK}Trakurante kvadratojn STR_GENERATION_PREPARING_SCRIPT :{BLACK}Ruligas la skripton @@ -3315,6 +3388,7 @@ STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Magistro STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} je {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekto STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de relo +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Vojtipo # Sprite aligner window @@ -3362,7 +3436,7 @@ STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Malvalida/nekon # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Atentu! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vi ŝanĝos kurantan ludon. Tio povas kraŝigi la ludon OpenTTD aŭ povas rompi ludstaton. Ne fajlu cim-raportojn pri iaj posteuloj.{}Ĉu vi nepre certas, ke vi volas fari tion? +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vi ŝanĝos kurantan ludon. Tio povas paneigi OpenTTD aŭ rompi la ludstaton. Ne sendu cim-raportojn pri tiaj problemoj.{}Ĉu vi tute certas, ke vi volas fari tion? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Dosiero ne aldoneblas: duobla GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Ne troviĝis apartena dosiero (ŝarĝis taŭgan GRF) @@ -3387,6 +3461,7 @@ STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Ĝi ŝan STR_BROKEN_VEHICLE_LENGTH :{WHITE}La vagonaro '{VEHICLE}' apartenanta al '{COMPANY}' havas malvalidan longecon. Tion verŝajne kaŭzis problemoj pri NewGRF-oj. La ludo eventuale malsinkroniĝos aŭ paneos STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' donas malĝustan informon +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' kaŭzis senfinan iteracion en la revokfunkcio por produktado STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}'Revoko' {1:HEX} revenis nekonatan/malvalidan rezulton {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs @@ -3419,7 +3494,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Iri al l STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Enigu nomon por la signo # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Urboj STR_TOWN_DIRECTORY_NONE :{ORANGE}-Neniu - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Urbego){BLACK} ({COMMA}) @@ -3484,6 +3558,10 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{Y # Goal window STR_GOALS_CAPTION :{WHITE}Celoj de {COMPANY} +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Tutmondaj celoj +STR_GOALS_SPECTATOR :Tutmondaj celoj +STR_GOALS_GLOBAL_BUTTON :{BLACK}Tutmonde +STR_GOALS_GLOBAL_BUTTON_HELPTEXT :{BLACK}Montru tutmondajn celojn STR_GOALS_COMPANY_BUTTON :{BLACK}Kompanio STR_GOALS_COMPANY_BUTTON.n :{BLACK}Kompanion STR_GOALS_COMPANY_BUTTON_HELPTEXT :{BLACK}Montru celojn de la kompanio @@ -3491,6 +3569,7 @@ STR_GOALS_TEXT :{ORANGE}{STRING STR_GOALS_NONE :{ORANGE}- Nenia - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klaku la celon por centri la ĉefvidon ĉe la industrio/urbo/kahelo. Ctrl+Klak por malfermi novan vidujon ĉe la loko de la industrio/urbo/kahelo # Goal question window STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informoj @@ -3500,13 +3579,16 @@ STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Eraro # Goal Question button list ###length 18 STR_GOAL_QUESTION_BUTTON_CANCEL :Nuligi +STR_GOAL_QUESTION_BUTTON_OK :Bone STR_GOAL_QUESTION_BUTTON_NO :Ne STR_GOAL_QUESTION_BUTTON_YES :Jes STR_GOAL_QUESTION_BUTTON_DECLINE :Malakcepti STR_GOAL_QUESTION_BUTTON_ACCEPT :Akceptu STR_GOAL_QUESTION_BUTTON_IGNORE :Ignoru +STR_GOAL_QUESTION_BUTTON_RETRY :Reprovu STR_GOAL_QUESTION_BUTTON_PREVIOUS :Antaŭa STR_GOAL_QUESTION_BUTTON_NEXT :Sekva +STR_GOAL_QUESTION_BUTTON_GO :Ek STR_GOAL_QUESTION_BUTTON_CONTINUE :Daŭrigu STR_GOAL_QUESTION_BUTTON_RESTART :Restartigu STR_GOAL_QUESTION_BUTTON_POSTPONE :Prokrasti @@ -3520,6 +3602,10 @@ STR_SUBSIDIES_NONE :{ORANGE}- Neniu STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Servoj subvenciataj: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} de {STRING} al {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klaku servon por centri vidpunkto ĉe la industrio/urbo. Ctrl+Klak por malfermi novan vidujon ĉe la loko +STR_SUBSIDIES_OFFERED_EXPIRY_DATE :ĝis {DATE_SHORT} +STR_SUBSIDIES_OFFERED_EXPIRY_TIME :ene de {UNITS_MONTHS_OR_MINUTES} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :ĝis {DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} restas # Story book window STR_STORY_BOOK_TITLE :{YELLOW}{STRING} @@ -3539,6 +3625,8 @@ STR_STATION_LIST_STATION :{YELLOW}{STATIO STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Neniu - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Elektu ĉiujn konstruaĵojn +STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Neniaj ŝarĝoj +STR_STATION_LIST_CARGO_FILTER_NO_RATING :Sen ŝarĝotakso # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} @@ -3606,7 +3694,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Malperme STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la vojpunkto. Stir+Klak por malfermi novan vidujon ĉe la loko. STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Ŝanĝi nomon de vojpunkto. -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la buo. Stir+Klak por malfermi novan vidujon ĉe la bua loko. +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la buo. Ctrl+Klak por malfermi novan vidujon ĉe la bua loko. STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Ŝanĝi nomon de la buo. STR_EDIT_WAYPOINT_NAME :{WHITE}Ŝanĝu vojpunktonomon @@ -3614,6 +3702,8 @@ STR_EDIT_WAYPOINT_NAME :{WHITE}Ŝanĝu # Finances window STR_FINANCES_CAPTION :{WHITE}Financoj de {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_YEAR_CAPTION :{WHITE}Jaro +STR_FINANCES_PERIOD_CAPTION :{WHITE}Periodo ###length 3 STR_FINANCES_REVENUE_TITLE :{WHITE}Enspezo @@ -3715,17 +3805,20 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanaloj STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stacioj: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Staciaj kaheloj STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flughavenoj +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENCY_LONG}/jaro +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/periodo # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrioj STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Neniu - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transportiĝis){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} +STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} kaj {NUM} pliaj... STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrionomoj - klaku nomon por centri vidon ĉe la industrio. Ctrl+Klak por malfermi novan vidujon ĉe la loko STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Ŝarĝo akceptata: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Produktata kargo: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Ĉiaj ŝarĝoj STR_INDUSTRY_DIRECTORY_FILTER_NONE :Neniu @@ -3743,6 +3836,7 @@ STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION.n :, {STRING.n}{ST STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Bezonas: STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{0:STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} atendas{STRING} STR_CONFIG_GAME_PRODUCTION :{WHITE}Ŝanĝu produktadon (multoble de 8, ĝis 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Ŝanĝu produktan nivelon (procento, limigo je 800%) @@ -3769,15 +3863,16 @@ STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Haveblaj Aviadi STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Manaĝu liston STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Sendu instrukciojn al ĉiuj veturiloj en la listo STR_VEHICLE_LIST_REPLACE_VEHICLES :Anstataŭu veturilojn -STR_VEHICLE_LIST_SEND_FOR_SERVICING :Sendu por Prizorgo +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Sendu por prizorgo STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Gajno ĉi-jare: {CURRENCY_LONG} (pasintjare: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Profito ĉi-periode: {CURRENCY_LONG} (pasintperiode: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Sendu al Garaĝo -STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Sendu al Garaĝo -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Sendi al Garaĝo -STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Sendu al Hangaro +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Sendu al garaĝo +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Sendu al garaĝo +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Sendu al garaĝo +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Sendu al hangaro STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Alklaku por haltigi ĉiujn veturilojn en la listo STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Alklaku por starti ĉiujn veturilojn en la listo @@ -3814,7 +3909,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Forigi ĉiujn v STR_GROUP_RENAME_CAPTION :{BLACK}Alinomi grupon STR_GROUP_PROFIT_THIS_YEAR :Ĉi-jara profito: +STR_GROUP_PROFIT_THIS_PERIOD :Profito ĉi-periode: STR_GROUP_PROFIT_LAST_YEAR :Pasintjara profito: +STR_GROUP_PROFIT_LAST_PERIOD :Profito pasintperiode: STR_GROUP_OCCUPANCY_VALUE :{NUM}% # Build vehicle window @@ -3868,9 +3965,9 @@ STR_CARGO_TYPE_FILTER_NONE :Neniaj ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Vagonara elektolisto - alklaku veturilon por informoj -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Stratveturilelektan liston - alklaku veturilon por informoj -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Ŝipelekta listo - alklaku ŝipon por informoj -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aviadilelekta listo - alklaku aviadilon por informoj +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Stratveturila elektolisto. Alklaku veturilon por informoj. Ctrl+klak por montri/kaŝi tiun ĉi veturiltipon +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Ŝipa elektolisto. Alklaku ŝipon por informoj. Ctrl+klak por montri/kaŝi tiun ĉi ŝipotipon +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aviadilelekta listo. Alklaku aviadilon por informoj. Ctrl+klak por montri/kaŝi tiun ĉi aviadiltipon ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Aĉeti Veturilon @@ -3885,12 +3982,15 @@ STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Aĉetu k STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Aĉetu kaj readaptu la aviadilon ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan vagonaron. Montri taksitaj kostoj sen aĉeti per maljuskliga klavo + Klaki -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan stratveturilon. Montri taksitaj kostoj sen aĉeti per maljuskliga klavo + Klaki -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan ŝipon. Montri taksitaj kostoj sen aĉeti per maljuskliga klavo + Klaki -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan aviadilon. Montri taksitaj kostoj sen aĉeti per maljuskliga klavo + Klaki +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉetu la emfazitan vagonaron. Ankaŭ premu Shift por nur montri kostotakson +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉetu la emfazitan stratveturilon. Ankaŭ premu Shift por nur montri kostotakson +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉetu la emfazitan ŝipon. Ankaŭ premu Shift por nur montri kostotakson +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉetu la emfazitan aviadilon. Ankaŭ premu Shift por nur montri la taksitan koston ###length VEHICLE_TYPES +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Aĉetu kaj readaptu la emfazitan relveturilon. Ankaŭ premu Shift por nur montri kostotakson +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Aĉetu kaj readaptu la emfazitan stratveturilon. Ankaŭ premu Shift por nur montri kostotakson +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Aĉetu kaj readaptu la emfazitan ŝipon. Ankaŭ premu Shift por nur montri kostotakson ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Alinomi @@ -3985,13 +4085,13 @@ STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonu av STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Aĉeti kopion de vagonaro kun ĉiuj vagonoj. Klaku ĉi tiun butonon kaj poste vagonaron en aŭ ekster la garaĝo. Ctrl+Klak kunhavigas la itineron. Maljuskliga klavo+klaku montras taksatan koston sen aĉeti STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Aĉeti kopion de stratveturilo. Klaku ĉi tiun butonon kaj poste veturilon en aŭ ekster la garaĝo. Ctrl+Klak kunhavigas la itineron. Maljuskliga klavo+klaku montras taksatan koston sen aĉeti STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Aĉeti kopion de ŝipo. Klaku ĉi tiun butonon kaj poste ŝipon en aŭ ekster garaĝo. Ctrl+Klak kunhavigas la itineron. Maljuskliga klavo+klaku montras taksatan koston sen aĉeti -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Aĉeti kopion de la aviadilo. Klaku ĉi tiun butonon kaj poste aviadilon en aŭ ekster la hangaro. Ctrl+Klak kunhavigas la ordonojn. Maljuskliga klavo+klaku montras taksatan koston sen aĉeti +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Aĉetu kopion de aviadilo. Klaku ĉi tiun butonon kaj poste aviadilon en aŭ ekster la hangaro. Ctrl+Klak kunhavigas la ordonojn. Ankaŭ premu Shift por nur montri kostotakson ###length VEHICLE_TYPES STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la vagonartenejo. Stir+Klak por malfermi novan vidujon ĉe la vagonartenejo loko. STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la stratveturilan garaĝon. Stir+Klak por malfermi novan vidujon ĉe la garaĝa loko. STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la ŝipgaraĝon. Stir+Klak por malfermi novan vidujon ĉe la ŝipgaraĝa loko. -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la hangaro. Stir+Klak por malfermi novan vidujon ĉe la hangara lokon. +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centru ĉefvidon ĉe la loko de la hangaro. Ctrl+Klak por malfermi novan vidujon ĉe la loko de la hangaro ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Akiri liston da ĉiuj vagonaroj kun ĉi tiu garaĝo en siaj itineroj @@ -4031,6 +4131,14 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE.n :tramvojan vetur STR_ENGINE_PREVIEW_AIRCRAFT :aviadilo STR_ENGINE_PREVIEW_SHIP :ŝipo +STR_ENGINE_PREVIEW_COST_WEIGHT :Kosto: {CURRENCY_LONG} Pezo: {WEIGHT_SHORT} +STR_ENGINE_PREVIEW_COST_MAX_SPEED :Kosto: {CURRENCY_LONG} Maksimuma rapideco: {VELOCITY} +STR_ENGINE_PREVIEW_SPEED_POWER :Rapideco: {VELOCITY} Povo: {POWER} +STR_ENGINE_PREVIEW_TYPE :Tipo de aviadilo: {STRING} +STR_ENGINE_PREVIEW_RUNCOST_YEAR :Irkosto: {CURRENCY_LONG}/jaro +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Irkosto: {CURRENCY_LONG}/periodo +STR_ENGINE_PREVIEW_CAPACITY :Kapacito: {CARGO_LONG} +STR_ENGINE_PREVIEW_CAPACITY_2 :Kapacito: {CARGO_LONG}, {CARGO_LONG} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Anstataŭu {STRING.n} - {STRING} @@ -4144,16 +4252,16 @@ STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Senforte STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Atendas haveblan padon STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}La sekva celo estas tro for -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Irante al {STATION}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Iras al {0:STATION} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Neniu ordono, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Irante al {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Irante al {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Iras al {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Iras al {0:DEPOT} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Prizorgo en {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Ne povas atingi {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Ne povas atingi {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Ne povas atingi {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Ne povas atingi {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Ne povas atingi {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Ne povas atingi {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Ne povas atingi {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Ne povas atingi {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4176,6 +4284,7 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nomu avi STR_VEHICLE_INFO_AGE :{COMMA} jaro{P "" j} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} jaro{P "" j} ({COMMA}) STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aĝo: {LTBLUE}{STRING}{BLACK} Irkosto: {LTBLUE}{CURRENCY_LONG}/jaro +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Aĝo: {LTBLUE}{STRING}{BLACK} Irkosto: {LTBLUE}{CURRENCY_LONG}/periodo STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. rapido: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maks. rapideco: {LTBLUE}{VELOCITY} {BLACK}Tipo de aviadilo: {LTBLUE}{STRING} @@ -4185,6 +4294,8 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Pezo: {L STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profito ĉijare: {LTBLUE}{CURRENCY_LONG} (lastjare: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Profito ĉi-jare: {LTBLUE}{CURRENCY_LONG} (pasintjare: {CURRENCY_LONG}) {BLACK}Min. rendimento: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Profito ĉi-periode: {LTBLUE}{CURRENCY_LONG} (pasintperiode: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Profito ĉi-periode: {LTBLUE}{CURRENCY_LONG} (pasintperiode: {CURRENCY_LONG}) {BLACK}Min. rendimento: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fidindo: {LTBLUE}{COMMA}% {BLACK}Paneoj ekde lasta servo: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Konstruita: {LTBLUE}{NUM}{BLACK} Valoro: {LTBLUE}{CURRENCY_LONG} @@ -4196,10 +4307,21 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Enhaveco STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transigaj Kreditoj: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Prizorga intertempo: {LTBLUE}{COMMA}{NBSP}tagoj{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Prizorga intertempo: {LTBLUE}{COMMA}{NBSP}minutoj{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Prizorga intertempo: {LTBLUE}{COMMA}%{BLACK} {STRING} +STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Lasta prizorgo: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Lasta prizorgo: antaŭ {LTBLUE}{NUM} minutoj +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Pliigu prizorgan intertempon je 10 tagoj. Ctrl+klak por pliigi prizorgan intertempon je 5 tagoj +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Pliigu prizorgan intertempon je 5 minutoj. Ctrl+klak por pliigi prizorgan intertempon je 1 minuto +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Pliigu prizorgan intertempon je 10 procentoj. Ctrl+klak por pliigi prizorgan intertempon je 5 procentoj +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Malpliigu prizorgan intertempon je 10 tagoj. Ctrl+klak por malpliigi prizorgan intertempon je 5 tagoj +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Malpliigu prizorgan intertempon je 5 minutoj. Ctrl+klak por malpliigi prizorgan intertempon je 1 minuto +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Malpliigu prizorgan intertempon je 10 procentoj. Ctrl+klak por malpliigi prizorgan intertempon je 5 procentoj STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Ŝanĝi la tipo de servon intervalon STR_VEHICLE_DETAILS_DEFAULT :Defaŭlto +STR_VEHICLE_DETAILS_DAYS :Tagoj +STR_VEHICLE_DETAILS_MINUTES :Minutoj STR_VEHICLE_DETAILS_PERCENT :Procentaĵo ###length VEHICLE_TYPES @@ -4305,6 +4427,7 @@ STR_ORDER_DROP_HALT_DEPOT :Haltu. # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES +STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Elektu agon por fari ĉe tiu ĉi hangaro ###next-name-looks-similar @@ -4324,12 +4447,13 @@ STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Kiel kom STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :egalas al STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ne egalas al STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :estas malpli ol -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :estas malpli aŭ egalas al +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :estas malpli ol aŭ egalas al STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :estas pli ol -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :estas pli aŭ egalas al +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :estas pli ol aŭ egalas al STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :estas vera STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :estas falsa +STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}La valoro al kiu kompari la datumojn de la veturilo STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Enigi valoron por kompari STR_ORDERS_SKIP_BUTTON :{BLACK}Plusaltu @@ -4449,8 +4573,12 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Ĉi tiu STR_TIMETABLE_STATUS_LATE :{BLACK}Ĉi tiu veturilo nun malfruas je {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Ĉi tiu veturilo nun fruas je {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ĉi tiu horaro ankoraŭ ne komenciĝas. +STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Tiu ĉi horaro komenciĝos je {STRING} +STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Tiu ĉi horaro komenciĝos post {COMMA} sekundoj +STR_TIMETABLE_START :{BLACK}Komencu horaron +STR_TIMETABLE_START_SECONDS_QUERY :Sekundoj ĝis kiam komenciĝos la horaro STR_TIMETABLE_CHANGE_TIME :{BLACK}Ŝanĝu tempon STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ŝanĝu kiom da tempo devus postuli la markita ordono. Stir+Klak ŝanĝas la tempon por ĉiuj ordonoj @@ -4474,6 +4602,10 @@ STR_TIMETABLE_EXPECTED :{BLACK}Atendite STR_TIMETABLE_SCHEDULED :{BLACK}Planite STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Ŝalti inter atendite kaj planite +STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :E: {COLOUR}{DATE_TINY} +STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} sek +STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :E: {COLOUR}{COMMA} sek # Date window (for timetable) @@ -4500,9 +4632,9 @@ STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Kiam iu STR_AI_DEBUG_MATCH_CASE :{BLACK}Parigu kazon STR_AI_DEBUG_CONTINUE :{BLACK}Daŭrigu STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Malpaŭzu kaj daŭrigi la AI -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vidu forigeraran eligon de ĉiu tio AI +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vidu forigeraran eligon de ĉiu tio AI. Ctrl+klak por malfermi en nova fenestro STR_AI_GAME_SCRIPT :{BLACK}Ludoskripto -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Kontrolu la ludoskriptan protokolon +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Kontrolu la ludoskriptan protokolon. Ctrl+klak por malfermi en nova fenestro STR_ERROR_AI_NO_AI_FOUND :Neniu taŭga AI estas ŝarĝebla.{}Tiu ĉi AI estas lokokupa AI kiu nenion faros.{}Vi povas elŝuti pliajn AIojn per la 'Enreta Enhavo'-sistemo STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Unu el la rulantaj skriptoj paneis. Bonvolu raporti tion ĉi al la aŭtoro de la skripto kun ekrankapto de la fenestro 'AI/Ludoskripta Sencimigo' @@ -4563,20 +4695,24 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Ludoskripto STR_AI_SETTINGS_CLOSE :{BLACK}Fermi STR_AI_SETTINGS_RESET :{BLACK}Reŝargo STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] # Textfile window +STR_TEXTFILE_JUMPLIST :{WHITE}Enhavtabelo +STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} STR_TEXTFILE_WRAP_TEXT :{WHITE}Faldi tekstoliniojn STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Faldu tekstoliniojn en la fenestro por ke ĉio estu videbla sen rulumado STR_TEXTFILE_VIEW_README :{BLACK}Vidi legumin STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Ŝanĝarĥivo +STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Montru la ŝanĝarĥivon de tiu ĉi enhavo STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenco +STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Montru la permesilon de tiu ĉi enhavo ###length 5 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} legumin de {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING}-a ŝanĝarĥivo de {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING}-a licenco de {STRING} STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Antaŭmontro de sondaĵrezulto +STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD-dokumento '{STRING}' # Vehicle loading indicators @@ -4607,9 +4743,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Atendata STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ankoraŭ konservas,{}bv atendi ĝis finiĝo! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fiaskis aŭtomate konservi STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ne eblas legi diskon -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Ludkonservado Fiaskis{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ne eblas forviŝi dosieron -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Ludŝarĝado Fiaskis{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna eraro: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Rompa konservludo - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Tiu ĉi ludo estis konservita per pli nova versio @@ -4822,7 +4956,7 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Malĝusta gara # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} tro longas post anstataŭado -STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Neniuj aŭtoanstataŭo/renovigo reguloj aplikitaj. +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Neniuj reguloj pri aŭtomata anstataŭigo/renovigo aplikiĝas STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(monlimo) STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}La nova veturilo ne povas porti {STRING.n} STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}La nova veturilo ne povas plenumi readapton en la {NUM}a ordono @@ -4981,6 +5115,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Ŝanĝu STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Neniuj veturiloj dume haveblas STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Komencu novan ludon post {DATE_SHORT} aŭ uzu NewGRF-on kiu havebligas frutempajn veturilojn + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ne povas igi vagonaron transiri signalon je danĝero... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ne povas inversigi direkton de vagonaro... @@ -5096,7 +5231,7 @@ STR_INDUSTRY_NAME_SAWMILL :Segejo STR_INDUSTRY_NAME_FOREST :Arbaro STR_INDUSTRY_NAME_OIL_REFINERY :Oleproduktejo STR_INDUSTRY_NAME_OIL_RIG :Oleplatformo -STR_INDUSTRY_NAME_FACTORY :Farejo +STR_INDUSTRY_NAME_FACTORY :Fabriko STR_INDUSTRY_NAME_PRINTING_WORKS :Printejo STR_INDUSTRY_NAME_STEEL_MILL :Ŝtalejo STR_INDUSTRY_NAME_FARM :Farmbieno @@ -5113,9 +5248,10 @@ STR_INDUSTRY_NAME_FRUIT_PLANTATION :Fruktkulturejo STR_INDUSTRY_NAME_RUBBER_PLANTATION :Kaŭĉukkulturejo STR_INDUSTRY_NAME_WATER_SUPPLY :Akvofonto STR_INDUSTRY_NAME_WATER_TOWER :Akvoturo -STR_INDUSTRY_NAME_FACTORY_2 :Farejo +STR_INDUSTRY_NAME_FACTORY_2 :Fabriko STR_INDUSTRY_NAME_FARM_2 :Farmbieno -STR_INDUSTRY_NAME_LUMBER_MILL :Lignejo +STR_INDUSTRY_NAME_LUMBER_MILL :Segejo +STR_INDUSTRY_NAME_LUMBER_MILL.n :Segejon STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Sukerŝpinaĵaro STR_INDUSTRY_NAME_CANDY_FACTORY :Dolĉaĵfarejo STR_INDUSTRY_NAME_BATTERY_FARM :Bateribieno @@ -5474,6 +5610,7 @@ STR_UNKNOWN_STATION :nekonata stacio STR_DEFAULT_SIGN_NAME :Ŝildo STR_COMPANY_SOMEONE :iu +STR_SAVEGAME_DURATION_REALTIME :{NUM}h {NUM}m STR_SAVEGAME_NAME_DEFAULT :{COMPANY} je {STRING} STR_SAVEGAME_NAME_SPECTATOR :Spektanto, {1:STRING} @@ -5507,6 +5644,10 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}mil +STR_CURRENCY_SHORT_MEGA :{NBSP}mln +STR_CURRENCY_SHORT_GIGA :{NBSP}mld + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 1d19b4844e..1ec0f28c98 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -365,7 +365,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Selle nu STR_BUTTON_DEFAULT :{BLACK}Esialgne STR_BUTTON_CANCEL :{BLACK}Tühista STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Hoiatus: Serveriadministraatorid võivad olla võimelised lugema siinset teksti. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -388,7 +387,9 @@ STR_SORT_BY_TYPE :Tüüp STR_SORT_BY_TRANSPORTED :Veetud STR_SORT_BY_NUMBER :Number STR_SORT_BY_PROFIT_LAST_YEAR :Eelmise aasta kasum +STR_SORT_BY_PROFIT_LAST_PERIOD :Kasum eelmisel perioodil STR_SORT_BY_PROFIT_THIS_YEAR :Selle aasta kasum +STR_SORT_BY_PROFIT_THIS_PERIOD :Kasum sellel perioodil STR_SORT_BY_AGE :Vanus STR_SORT_BY_RELIABILITY :Tehnoseisund STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Täielik kandevõime veoseliigi kohta @@ -416,9 +417,13 @@ STR_SORT_BY_POPULATION :Rahvaarv STR_SORT_BY_RATING :Hinnang STR_SORT_BY_NUM_VEHICLES :Sõidukite koguarv STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Eelmise aasta kogukasum +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Eelmise perioodi kogukasum STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Selle aasta kogukasum +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Selle perioodi kogukasum STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Eelmise aasta keskmine kasum +STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Keskmine kasum eelmisel perioodil STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Selle aasta keskmine kasum +STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Keskmine kasum sellel perioodil # Group by options for vehicle list STR_GROUP_BY_NONE :Puudub @@ -433,32 +438,32 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Ava korr STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Mängu paus STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Kiirenda mängu STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Seadistus -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Mängu salvestamine/jätkamine, mängust lahkumine, väljumine -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Ava kaart, vaateaken või siltide loend -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Ava asustuste register +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Mängu salvestamine/jätkamine, mängust lahkumine, programmist väljumine +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Ava kaart, uus vaateaken, kaubavood või siltide loend +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Ava asustuste register või asuta asustus STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Ava toetuste loend -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Avab ettevõtte jaamade registri +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Ava ettevõtte jaamaregister STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Ava ettevõtte rahavoogude aruanne STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Ava ettevõtte ülevaade -STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Näita juturaamatut -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Näita eesmärke -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Ava graafik +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Ava juturaamat +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Ava eesmärgiloend +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Ava ettevõtte graafikud ja kaubamaksumuste määrad STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Ava ettevõtete edetabel STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Uue tööstuse rajamise rahastamine või tööstuste registri avamine -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Ava ettevõtte rongide register. Jaotus- ja sõidukiregistrit vahetatakse Ctrl+klõpsu abil -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Ava ettevõtte mootorsõidukite register. Jaotus- ja sõidukiregistrit vahetatakse Ctrl+klõpsu abil -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Ava ettevõtte laevade register. Jaotus- ja sõidukiregistrit vahetatakse Ctrl+klõpsu abil -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Ava ettevõtte õhusõidukite register. Jaotus- ja sõidukiregistrit vahetatakse Ctrl+klõpsu abil -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Suurenda vaadet -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Vähenda vaadet -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Ehita raudtee -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Ehita maantee -STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Ehita trammiteid -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Ehita laevakai +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Ava ettevõtte rongiregister. Ctrl+klõps avab või peidab sõidukide jaod, vastupidiselt valitud seadele +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Ava ettevõtte mootorsõidukiregister. Ctrl+klõps avab või peidab sõidukide jaod, vastupidiselt valitud seadele +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Ava ettevõtte laevaregister. Ctrl+klõps avab või peidab sõidukide jaod, vastupidiselt valitud seadele +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Ava ettevõtte õhusõidukiregister. Ctrl+klõps avab või peidab sõidukide jaod, vastupidiselt valitud seadele +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Suurenda sisse +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Suurenda väłja +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Ehita raudteetaristut +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Ehita maanteetaristut +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Ehita trammiteetaristut +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Ehita veeteetaristut STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Ehita lennuväli -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Ava riba maastikutarvikutega, millega saab maad tõsta/langetada, puid istutada, jne. -STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Näita heli/muusika akent -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Näita viimast teadet, ava teadete seadistus +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Ava maastikukujunduse menüü, puude menüü või paigalda silt +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Ava heli/muusika aken +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Ava viimane sõnum/uudis, sõnumite ajalugu või kustuta kõik sõnumid STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Maa-ala andmed, konsool, skriptide debug, ekraanitõmmised, OpenTTDst STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Vaheta tarvikuribad @@ -470,9 +475,9 @@ STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Alguse l STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Alguse liigutamine 1 aasta võrra edasi STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Alustamise aasta valikuks klõpsi siin STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Ava kaart, asustuste register -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Maastiku tekitamine +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Ava maastikukujunduse menüü või genereeri uus maailm STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Asustuste tekitamine -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Tööstuste tekitamine +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Tööstuste ehitamine või tekitamine STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Maanteede ehitamine STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Trammiteede ehitamine STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Istuta puid. Ctrl valib piirkonna diagonaalselt. Shift valib ehitamise/hinna kuvamise režiimi vahel @@ -489,6 +494,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Lahku redaktori STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Välju + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Mängu seadistus @@ -496,6 +502,7 @@ STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Seaded STR_SETTINGS_MENU_AI_SETTINGS :TI seaded STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :GameScript'i seaded STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-i seadistus +STR_SETTINGS_MENU_SANDBOX_OPTIONS :Liivakasti valikud STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Läbipaistvuse seadistus STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Näidatavad asustuste nimed STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Näidatavad jaamanimed @@ -576,14 +583,15 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Kustuta kõik t # About menu STR_ABOUT_MENU_LAND_BLOCK_INFO :Maa-ala andmed STR_ABOUT_MENU_HELP :Abi & kasutusjuhendid -STR_ABOUT_MENU_TOGGLE_CONSOLE :Lülita konsool sisse/välja +STR_ABOUT_MENU_TOGGLE_CONSOLE :Vahelda konsooli STR_ABOUT_MENU_AI_DEBUG :AI/GameScripti debugimine STR_ABOUT_MENU_SCREENSHOT :Ekraanipilt STR_ABOUT_MENU_SHOW_FRAMERATE :Näita kaadrisagedust STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' kohta STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite aligner -STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Kontuuride kuvamine -STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Vaheta toon määrdunud plokil +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Vahelda piirangkaste +STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Vahelda määrdunud plokkide värvimist +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Vahelda vidinakontuure ###length 31 STR_DAY_NUMBER_1ST :1. @@ -660,6 +668,7 @@ STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Äraveet STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Ettevõtte tegevushinnang (suurim hinnang saab olla 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Firmaväärtused +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Viimased 72 minutit STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Veotariifid STR_GRAPH_CARGO_PAYMENT_RATES_DAYS :{TINY_FONT}{BLACK}Päeva transiidis @@ -669,7 +678,7 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Kõik välja STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Näita kõiki kaubatüüpe kaubamaksumuste määrade graafikul STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Ära näita kaubatüüpe kaubamaksumuste määrade graafikul -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Lülita veoste graafik sisse/välja +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Vahelda veoseliikide graafik sisse/välja STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Näita põhjalike tegevushinnanguid @@ -756,7 +765,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Vali 'uu STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}'Ezy Street' stiilis muusikaprogrammi valimine STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vali 'isiklik 1' programm STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vali 'isiklik 2' programm -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Lülita lugude segamine sisse ja välja +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Vahelda lugude segamine sisse/välja STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Näita muusikalugude valimise akent # Playlist window @@ -772,6 +781,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Vajuta l STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Vajuta laulule, et see eemaldada praegusest progammist (Custom1 või Custom2 ainult) # Highscore window +STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Edukaimad ettevõtted STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Äriinimene STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Ettevõtja @@ -804,8 +814,8 @@ STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Näita k STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Näita kaardil veoliine STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Näita kaardil taimestikku STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Näita kaardil maaomanikke -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klõps tööstuse tüübil lülitab sisse/välja selle kuvamise. Ctrl+klõps lülitab välja kõik tüübid peale valitu. Teistkordne Ctrl+klõps lülitab sisse kõik tööstuse tüübid -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klõpsa ettevõttel, et tema varade kuvamine sisse/välja lülitada. Ctrl+klõps eemaldab valikust kõik teised ettevõtted. Teiskordne Ctrl+klõps valib välja kõik ettevõtted +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klõps tööstuse tüübil vaheldab selle näitamist. Ctrl+klõps lülitab välja kõik tüübid peale valitu. Teistkordne Ctrl+klõps lülitab sisse kõik tööstuse tüübid +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klõpsa ettevõttel, et vaheldada varade kuvamine näitamist. Ctrl+klõps eemaldab valikust kõik teised ettevõtted. Teiskordne Ctrl+klõps valib välja kõik ettevõtted STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Kaubale klõpsamine vahetab selle omaduse näitamist. Kõik teised kaubad keelatakse CTRL-klõpsuga. Kõik kaubad lubatakse järgmise CTRL-klõpsuga STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Sõiduteed @@ -864,6 +874,7 @@ STR_STATUSBAR_AUTOSAVE :{RED}VÄLPSALVE STR_STATUSBAR_SAVING_GAME :{RED}* * MÄNGU SALVESTAMINE * * STR_STATUSBAR_SPECTATOR :{WHITE}(vaatleja) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(lõpmatu raha) # News message history STR_MESSAGE_HISTORY :{WHITE}Sõnumite ajalugu @@ -961,6 +972,7 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Uus {STR STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Ava sõiduki jaole fokuseeritud jaoaken +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} ei võta enam vastu: {CARGO_LIST} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} võtab nüüd vastu: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Toetuse pakkumine lõppes:{}{}{STRING.g} kohast {STRING} kohta {STRING} veoste eest ei maksta enam toetusi @@ -972,7 +984,11 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Teenusetoetust makstakse ettevõttele {STRING}!{}{}{STRING} kohast {STRING} kohta {STRING} teenuse eest makstakse järgmise {UNITS_YEARS_OR_MINUTES} aasta jooksul kolmekordselt! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Teenusetoetust makstakse ettevõttele {STRING}!{}{}{STRING} kohast {STRING} kohta {STRING} teenuse eest makstakse järgmise {UNITS_YEARS_OR_MINUTES} aasta jooksul neljakordselt! +STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Liikluskaos {TOWN} linnas!{}{}{STRING} poolt rahastatud teede renoveerimisprogramm toob 6 kuud häda ja viletsust mootorsõiduki juhtidele! +STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Liikluskaos {TOWN} linnas!{}{}{STRING} poolt rahastatud teede renoveerimisprogramm toob 6 minutit häda ja viletsust mootorsõiduki juhtidele! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transpordimonopol! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}Asula {TOWN} kohalik omavalitsus allkirjastas leppe ettevõttega {STRING} vedude ainuõiguseks 12 kuuks! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}Asula {TOWN} kohalik omavalitsus allkirjastas leppe ettevõttega {STRING} vedude ainuõiguseks 12 minutiks! # Extra view window STR_EXTRA_VIEWPORT_TITLE :{WHITE}Vaateaken {COMMA} @@ -994,19 +1010,17 @@ STR_GAME_OPTIONS_TAB_SOCIAL :Sotsiaal STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Vali sotsiaalse integratsiooni seaded STR_GAME_OPTIONS_VOLUME :Helitase +STR_GAME_OPTIONS_SFX_VOLUME :Heliefektid +STR_GAME_OPTIONS_MUSIC_VOLUME :Muusika -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valuuta valimine STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Suurbritannia nael STR_GAME_OPTIONS_CURRENCY_USD :USA dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1050,6 +1064,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :India ruupia STR_GAME_OPTIONS_CURRENCY_IDR :Indoneesia ruupia STR_GAME_OPTIONS_CURRENCY_MYR :Malaisia ringit STR_GAME_OPTIONS_CURRENCY_LVL :Läti Latt +STR_GAME_OPTIONS_CURRENCY_PTE :Portugali eskuudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvestusvälp STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vali salvestamise välp @@ -1084,6 +1099,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Märgi, STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Hetke draiver: {STRING} STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Liidese suurus +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Lohista liugurit liidesesuuruse seadmiseks. Ctrl+lohistamisel pidevkohendamine STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Tuvasta automaatselt suurus STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Märgi see kast, et tuvastada liidese suurus automaatselt @@ -1091,15 +1107,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaleeri STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Skaleeri kaldeid liidese suuruse järgi STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Kasuta traditsioonilist märgipõhist fonti -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Märgi, kui eelistad traditsioonilist kindla suurusega märgipõhist fonti. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Märgi, kui eelistad traditsioonilist kindla suurusega märgipõhist fonti STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fondid -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Kasti märkimisel tehakse muudetava suurusega fontidele anti-alias. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Kasti märkimisel tehakse muudetava suurusega fontidele anti-alias -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automaatne uuring STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Osale automaatses uuringus @@ -1116,20 +1128,32 @@ STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}Vali, mi STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Värskendussagedused üle 60Hz võivad jõudlusele löögi anda. -STR_GAME_OPTIONS_BASE_GRF :{BLACK}Lähtegraafikakogu -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Valib kasutatava lähtegraafikakogu -STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Lisateave lähtegraafikakogu kohta +STR_GAME_OPTIONS_BASE_GRF :{BLACK}Põhigraafika komplekt +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vali kasutatav põhigraafika komplekt (mängus ei saa muuta, ainult peamenüüst) +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Lisateave põhigraafika komplekti kohta -STR_GAME_OPTIONS_BASE_SFX :{BLACK}Lähtehelikogu -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Valib kasutatava lähtehelikogu -STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Lisateave lähtehelikogu kohta +STR_GAME_OPTIONS_BASE_SFX :{BLACK}Põhihelide komplekt +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Vali põhihelide komplekt (mängus ei saa muuta, ainult peamenüüst) +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Lisateave põhihelide komplekti kohta -STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Lähtemuusikakogu -STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Valib kasutatava lähtemuusikakogu -STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Rohkem teavet lähtemuusikakogu kohta +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Põhimuusika komplekt +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Valib kasutatava põhimuusika komplekti +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Rohkem teavet põhimuusika komplekti kohta +STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(puuduvad pistikprogrammid sotsiaalplatvormidega integreerumiseks) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Platvorm: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Pistikprogrammi olek: + +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Töötab +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Alglaadimine ebaõnnestus +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} ei tööta +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Ei ole laetud +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Duplikaat pistikprogramm +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}Versioon ei ole toetatud +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Vigane signatuur STR_BASESET_STATUS :{STRING} {RED}({NUM} puuduv/vigane fail{P "" s}) @@ -1144,6 +1168,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Langeta STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Tõsta oma valuuta väärtust naela (£) suhtes STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Määra oma valuuta kurss naela (£) suhtes +STR_CURRENCY_SEPARATOR :{LTBLUE}Eraldaja: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK} Määra oma valuuta kümnendkohtade eraldaja + STR_CURRENCY_PREFIX :{LTBLUE}Eesliide: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Määra oma valuuta eesliide STR_CURRENCY_SUFFIX :{LTBLUE}Järelliide: {ORANGE}{STRING} @@ -1238,6 +1265,7 @@ STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Ava kõi STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Sulge kõik STR_CONFIG_SETTING_RESET_ALL :{BLACK}Nulli kõik väärtused STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(seletus puudub) +STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR} STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Vaikeväärtus: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Seade liik: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Kliendiseade (ei salvestu koos mänguga; mõjutab kõiki mänge) @@ -1291,15 +1319,16 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Vasakul STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Keskel STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Paremal +STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}sekund{P 0 "" it} STR_CONFIG_SETTING_INFINITE_MONEY :Lõpmatu raha: {STRING} STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Võimaldab piiramatut kulutamist ja keelab ettevõtete pankrotid STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Stardilaenu ülempiirang: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Suurim summa, mida ettevõte saab laenata (arvestamata inflatsiooni) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Suurim summa, mida ettevõte saab laenata (arvestamata inflatsiooni). Kui on määratud "laenudeta", ei ole raha võimalik saada, kui seda GameScript ei anna, või ei ole "lõpmatu raha" seadistus. STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Laenudeta {RED}GameScript peab andma esmase rahastuse +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Laenudeta STR_CONFIG_SETTING_INTEREST_RATE :Intressimäär: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Laenu intressimäär; ühtlasi juhib inflatsiooni, kui inflatsioon on aktiveeritud @@ -1335,7 +1364,7 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Keela rongide STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Kui on aktiveeritud, siis ei pööra rongid vahejaamades ringi isegi siis kui ringi pööramisel oleks teekond järgmisse sihtpunkti lühem STR_CONFIG_SETTING_DISASTERS :Katastroofid: {STRING} -STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Lülita sisse/välja katastroofid, mis aeg-ajalt hävitavad sõidukeid ja taristut +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Vahelda katastroofe, mis mõnikord takistavad või hävitavad sõidukeid ja taristut STR_CONFIG_SETTING_CITY_APPROVAL :Kohaliku omavalitsuse suhtumine: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vali kui suurt mõju tekitavad müra ning keskkonna muudatused ettevõtte mainele ja edasistele ehitustoimingutele asulas @@ -1445,7 +1474,8 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Igas vaates STR_CONFIG_SETTING_BRIBE :Altkäemaksud kohalikele omavalitsustele: {STRING} ###length 2 -STR_CONFIG_SETTING_BRIBE_HELPTEXT :Võimaldab asulate omavalitsustele altkäemaksu pakkuda. Tabamise korral võetakse ettevõttelt kuueks kuuks ära õigus asulas tegutseda +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Võimaldab asulate omavalitsustele altkäemaksu pakkuda. Tabamise korral võetakse ettevõttelt kuueks kuuks õigus asulas tegutseda +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Võimaldab asulate omavalitsustele altkäemaksu pakkuda. Tabamise korral võetakse ettevõttelt kuueks minutiks õigus asulas tegutseda STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ainuveoõiguste ostmine: {STRING} ###length 2 @@ -1490,6 +1520,8 @@ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Taristuga kaasn STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Ettevõtte esialgne värv: {STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Vali ettevõttele esialgne värvus +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Alustava ettevõtte teine värv: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Vali alguse teine ettevõtte värv, kui kasutatav NewGRF seda toetab. STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aegumatud lennuväljad: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Selle seade sisse lülitamine jätab kõik lennujaamade tüübid avatuks lõpmata ajaks peale nende avanemist @@ -1507,19 +1539,29 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :Kõik sõidukid STR_CONFIG_SETTING_WARN_INCOME_LESS :Hoiata, kui sõiduk on miinuses: {STRING} ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Kui on aktiveeritud, siis teavitatakse mängijat sõidukitest mis ei ole viimase aasta jooksul suutnud kasumit teenida +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Kui aktiveeritud, saadetakse uudis, kui sõiduk ei ole ajavahemikus kasumit teeninud + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Sõidukid ei aegu: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kui on aktiveeritud, siis jäävad kõik sõidukite tüübid igavesti avatuks +STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Ajaarvamine: {STRING} +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Vali mängu ajaarvamise ühikud. Seda hiljem muuta ei saa.{}{}Kalendripõhine on traditsiooniline OpenTTD kogemus, kus aasta koosneb 12 kuust, ning igas kuus on 28-31 päeva.{}{}Seinakella-põhises ajas, veoste toodang ja raha põhinevad hoopis üheminutilistel järkudel, mis on umbes sama pikk, kui 30 päeva kalendripõhilises kuus. Need on jaotatud 12-minutilisteks ajavahemikeks, võrdne umbes kalendripõhise aastaga.{}{}Mõlemas on alati olemas traditsiooniline kalender, mida kasutatakse sõidukite esitluste kuupäevade, ehitiste ja muu taristu jaoks. ###length 2 +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalender +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Seinakell STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minuteid aastas: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Vali arv minuteid kalendriaastas. Vaikimisi 12 minutit. Valides 0 kalendriaeg ei muutu. Seade ei mõjuta mängu majandussimulatsiooni, ainult ajaarvamist. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Vali kalendriaasta pikkus minutites. Vaikimisi 12 minutit. Valides 0 kalendriaeg ei muutu. Seade ei mõjuta mängu majandussimulatsiooni, ainult ajaarvamist. STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (kalendriaeg külmutatud) +STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Skaleeri veosetoodangut linnades: {STRING} +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skaleeri veosetoodangut linnades selle protsendiga. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Skaleeri tööstuse veosetoodangut: {STRING} +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skaleeri tööstuste veosetoodangut selle protsendiga. STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Vananenud sõidukite uuendamine: {STRING} @@ -1558,7 +1600,7 @@ STR_CONFIG_SETTING_LANDSCAPE :Maastik: {STRIN STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Maastikud määravad põhilised mängustsenaariumid erinevate veoste ja nõuetega asulate kasvamiseks. NewGRF ja GameScript abil saab siiski täpsemalt kontrollida STR_CONFIG_SETTING_LAND_GENERATOR :Maatekituse meetod: {STRING} -STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Originaalne generaator sõltub lähtegraafikast ja tekitab kindlaksmääratud maastikuvorme. TerraGenesis on Perlini müral põhinev generaator, mida saab täpsemalt seadistada +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Originaalne generaator sõltub põhigraafika komplektist ja tekitab kindlaksmääratud maastikuvorme. TerraGenesis on Perlini müral põhinev generaator, mida saab täpsemalt seadistada ###length 2 STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Algupärane STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis @@ -1573,14 +1615,14 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimaalne kau STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Naftatöötlemistehased ehitatakse ainult kaardi piirile, see on rannikul saartega mängitaval kaardil. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Lumepiiri kõrgus: {STRING} -STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Määra, millisel kõrgusel algab lähisarktiline maastik. Lumi mõjutab ka tööstuste tekitamist ja asulate kasvuvajadusi. Saab muuta ainult stsenaariumiredaktoris, muidu arvutatakse «lumekatvusega». +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Vali, kui kõrgel algab lähisarktilisel maastikul lumi. Lumi mõjutab ka tööstuste tekitamist ja asulate kasvuvajadusi. Saab muuta ainult stsenaariumiredaktoris, muidu arvutatakse «lumekatvusega». STR_CONFIG_SETTING_SNOW_COVERAGE :Lumekatvus: {STRING} STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Mõjutab umbkaudset lume osakaalu lähisartikilisel maastikul. Lumi mõjutab ka tööstuste tekitamist ja asulate kasvuvajadusi. Kasutatakse vaid kaardi tekitamisel. Vahetult merepiiri kohal on maa alati lumevaba STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Kõrbekatvus: {STRING} -STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Mõjuta umbkaudset kõrbe osakaalu troopilisel maastikul. Kõrb mõjutab ka tööstuste tekitamist. Kasutatakse vaid kaardi tekitamisel +STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Mõjuta umbkaudset kõrbe osakaalu troopilisel maastikul. Kõrb mõjutab ka tööstuste tekitamist ja linnade kasvutingimusi. Kasutatakse vaid kaardi tekitamisel STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Maastiku järskus (ainult TerraGenesis) : {STRING} @@ -1612,6 +1654,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Vasakpoolne lii STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Parempoolne liiklus STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Kõrguskaardi pööre: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Vali, mis pidi kõrguskaardi pilti keeratakse, et mängumaailma mahutada ###length 2 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Vastupäeva STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Päripäeva @@ -1830,7 +1873,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Kui palju vahem STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Hooldusvälp protsentides: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Vali kas sõiduki hooldus käivitub vastavalt ajale mis on möödunud viimasest hooldusest või kui sõiduki usaldusväärsus langeb allapoole lubatud piiri sõiduki maksimaalsest usaldusväärsuse protsendist +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Kui on aktiveeritud, püüavad sõidukid käia hoolduses, kui nende vastupidavus langeb määratud protsendini suurimast vastupidavusest.{}{}Näiteks, kui sõiduki suurim vastupidavus on 90% ja hooldusvälp on 20%, püüab sõiduk käia hoolduses 72% vastupidavuse juures STR_CONFIG_SETTING_SERVINT_TRAINS :Rongide esialgne hooldusvälp: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Määrab uute rööbassõidukite hooldusvälba, kui sõidukile eraldi hooldusvälpa ei määrata @@ -1840,13 +1883,19 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Õhusõidukite STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Määrab uute õhusõidukite hooldusvälba, kui sõidukile eraldi hooldusvälpa ei määrata STR_CONFIG_SETTING_SERVINT_SHIPS :Laevade hooldusvälba vaikeväärtus: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Määrab uute laevade hooldusvälba, kui sõidukile eraldi hooldusvälpa ei määrata -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} päev{P 0 "" a}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Päev{P 0 "" a} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minut{P 0 "" it} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Väljas STR_CONFIG_SETTING_NOSERVICE :Hoolduse keelamine rikete väljalülitamisel: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Kui on aktiveeritud, siis ei teostata hooldust sõidukitele mille tõrkumine ei ole võimalik +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Laadimiskiiruse aeglustus rongidele, mis on jaamast pikemad: {STRING} +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Sisselülitatud olekus laadivad jaama jaoks liiga pikad rongid kauem kui rongid, mis jaama mahuvad. See seade ei mõjuta rajaleidmist. STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Vagunite kiiruspiirangud: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Kui on aktiveeritud siis kasutatakse rongi maksimaalse kiiruse arvutamiseks ka vagunite kiiruse piirangut @@ -1938,6 +1987,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Määra aasta a STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Vaheta signaalide liike: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Muuda valitavaid signaaliliike, kui «Ctrl»+klõpsu abil muudetakse ehitatud signaali liiki ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Ainult praegune rühm STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Kõik nähtavad STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Näita signaali tüüpe: {STRING} @@ -2035,6 +2085,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Mitte ühtegi STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Algne linnade suuruskordaja: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Keskmine linna suurus võrreldes tavalise asulaga mängu alguses +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Uuenda jaotusgraafikut iga {STRING} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Aeg järjestikkuste ühendusgraafiku uuestiarvutamiste vahel. Iga uuestiarvutamine arvutab ühe graafikuosa plaane. See tähendab, et väärtus X selles seades ei tähenda, et tervet graafikut uuendatakse iga X sekund. Ainult ühte osa sellest. Mida lühem see on, seda rohkem kasutab arvutamine protessorit. Mida kauem see on, seda kauem algab teenuste jaotamine uutel marsruutidel. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Võta {STRING} jaotusgraafiku uuestiarvutamiseks +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Aeg iga ühendusgraafiku osa uuestiarvutamiseks. Kui uuestiarvutamine algab, tekitatakse lõim, mis võib joosta see arv sekundeid. Mida lühem, seda tõenäolisem, et lõim ei jõua õigeks ajaks valmis. Siis mäng peatub, kuni see on valmis ("viivitus"). Mida pikem see on, seda kauem läheb jaotamise uuendamiseks marsruutide muutmisel. STR_CONFIG_SETTING_DISTRIBUTION_PAX :Reisijate jaotuse viis: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Kui jaamast A läheb jaama B umbes sama hulk reisijaid, kui jaamast B jaama A, siis jaotus on «Sümeetriline». Kui mõlemas suunas võib liikuda ükskõik, kui palju resijaid, siis jaotus on «Asümeetriline». Kui reisijate liikumist ei jaotata, siis jaotus on «Väljas». @@ -2060,11 +2114,15 @@ STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Kui väärtus o STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Liikluskoormus, et otsida kõrgema läbilaskevõimega rada: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Kauba vedamisel ühest jaamast teise saab kasutada mitu rada. Kaubajaotusel arvestatakse läbilaskevõimet ja liikluskoormust. Kui liikluskoormus on suurem kui läbilaskevõime, suunatakse kaup kõigepealt kõrgema läbilaskevõimega radadele. Läbilaskevõime arvutamine ei ole täpne; antud seaded määravad liikluskoormuse millal kaup suunatakse järgmisele rajale. Ülekoormuse vältimiseks on soovitatav liikluskoormus alla 100%. -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Kiirusühikud: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Kiirusühikud (maal): {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Kiirusühikud (merel): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Liideses näidatakse kiirust valitud mõõdustikus STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Inglise mõõdustik (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Meetermõõdustik (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI-süsteem (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Mängu ühikud (ruutu/päev) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Mängu ühikud (ruutu/sek) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Sõlme STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Võimsusühikud: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Liideses näidatakse võimsust valitud mõõdustikus @@ -2114,29 +2172,23 @@ STR_CONFIG_SETTING_ACCOUNTING :Arveldamine STR_CONFIG_SETTING_VEHICLES :Sõidukid STR_CONFIG_SETTING_VEHICLES_PHYSICS :Füüsika STR_CONFIG_SETTING_VEHICLES_ROUTING :Marsruutimine +STR_CONFIG_SETTING_VEHICLES_ORDERS :Korraldused STR_CONFIG_SETTING_LIMITATIONS :Piirangud STR_CONFIG_SETTING_ACCIDENTS :Katastroofid / Õnnetused STR_CONFIG_SETTING_GENWORLD :Maailma tekitamine STR_CONFIG_SETTING_ENVIRONMENT :Keskkond +STR_CONFIG_SETTING_ENVIRONMENT_TIME :Aeg STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Omavalitsus STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Asulad STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Tööstused STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Kaubajaotus +STR_CONFIG_SETTING_ENVIRONMENT_TREES :Puud STR_CONFIG_SETTING_AI :Konkurendid STR_CONFIG_SETTING_AI_NPC :Arvuti STR_CONFIG_SETTING_NETWORK :Võrk -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Rongide marsruudileidja: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Marsruudileidja rongide jaoks -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Maanteesõidukite marsruudileidja: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Marsruudileidja maanteesõidukite jaoks -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Laevade marsruudileidja: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Marsruudileidja veesõidukite jaoks STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automaatne tagasipööre signaalide juures: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Luba rongidel ümber pöörata kui nad on pikka aega foori taga oodanud -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(soovitatud) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Määra seade väärtus @@ -2154,15 +2206,16 @@ STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :Mitteühilduv s STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :tundmatu STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... tihendusaste «{STRING}» ei sobi STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... mängu salvestamise vormingut «{STRING}» ei ole. Taastatakse «{STRING}» -STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... eiratakse lähtegraafikakogu «{STRING}»: ei leitud -STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... eiratakse lähtehelikogu «{STRING}»: ei leitud -STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... eiratakse lähtemuusikakogu «{STRING}»: ei leitud +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... eiratakse põhigraafika komplekti «{STRING}»: ei leitud +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... eiratakse põhihelide komplekti «{STRING}»: ei leitud +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... eiratakse põhimuusika komplekti «{STRING}»: ei leitud STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Vahemälu on täis STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Pildipuhvri (ingl k «spritecache») suurendamine {BYTES} võrra ebaõnnestus. Pildipuhvri uus suurus on {BYTES}. Seetõttu on OpenTTD nüüd aeglasem. 32 bpp graafika keelamine ja suurendusastme ülempiirangu vähendamine piirab vahemälu tarbimist # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Videoseadete viga... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... ei leitud ühilduvat GPU-d. Riistvarakiirendus väljalülitatud +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... Mäng seiskus graafikadraiveri pärast. Riistvarakiirendus lülitati välja # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2176,6 +2229,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Mitmikm STR_INTRO_GAME_OPTIONS :{BLACK}Liidese seadistus STR_INTRO_HIGHSCORE :{BLACK}Edetabel +STR_INTRO_HELP :{BLACK}Abi & kasutusjuhendid STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Seaded STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-i seadistus STR_INTRO_ONLINE_CONTENT :{BLACK}Aineste allalaadimine @@ -2195,16 +2249,17 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vali 'l STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vali 'lähistroopiline' maastik STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vali 'mänguasjamaa' maastik -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Ava liidese seadistamine +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Ava liidese seadus STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Ava edetabel +STR_INTRO_TOOLTIP_HELP :{BLACK}Saa ligipääs dokumentatsioonile ja veebiressursidele STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Ava seaded -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Ava NewGRF-i seadistamine +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Ava NewGRF-i seadistus STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Otsi allalaadimiseks uusi ja uuendatud aineseid -STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Näita TI seadeid -STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Näita GameSript'i seadeid +STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Ava TI-seaded +STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Ava GameScript'i seaded STR_INTRO_TOOLTIP_QUIT :{BLACK}Välju 'OpenTTD'st -STR_INTRO_BASESET :{BLACK}Hetkel valitud lähtegraafikakogust puudub {NUM} sprite{P "" 'i}. Kontrolli, kas lähtekogule on uuendusi. +STR_INTRO_BASESET :{BLACK}Hetkel valitud põhigraafika komplektist puudub {NUM} sprite{P "" 'i}. Kontrolli, kas põhikomplektile on uuendusi. STR_INTRO_TRANSLATION :{BLACK}Puudub {NUM} tõlge{P "" t}. Aita teha OpenTTD paremaks, panusta tõlkimisega. Rohkem teavet leiad «readme.txt» failist. # Quit window @@ -2243,21 +2298,30 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Muuda ka STR_CHEAT_CHANGE_DATE :{LTBLUE}Muuda kuupäeva: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Muuda jooksvat aastaarvu STR_CHEAT_SETUP_PROD :{LTBLUE}Tootmisväärtuste muutmine: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Fikseeri 100% jaamahinnang: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Värvivalik -STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Näita üldiseid värvistikke -STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Näita rongide värvistikke -STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Näita mootorsõidukite värvistikke -STR_LIVERY_SHIP_TOOLTIP :{BLACK}Näita laevavärvistikke -STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Näita õhusõidukite värvistikke -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vali põhivärv värvistikule. Ctrl+Klikk valib selle värvi tervele värvistikule -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vali teine värv valitud värvistikule. Ctrl+Klõps valib selle värvi tervele värvistikule +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Näita üldiseid värvikavu +STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Näita rongide värvikavu +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Näita mootorsõidukite värvikavu +STR_LIVERY_SHIP_TOOLTIP :{BLACK}Näita laevade värvikavu +STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Näita õhusõidukite värvikavu +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Näita rongirühmade värve +STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Näita sõidukirühmade värve +STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Näita laevarühmade värve +STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Näita õhusõidukirühmade värve +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vali põhivärv värvikavale. Ctrl+Kklõps määrab selle värvi igale värvikavale +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vali teine värv valitud värvikavale. Ctrl+klõps määrab selle värvi igale värvikavale STR_LIVERY_PANEL_TOOLTIP :{BLACK}Vali muudetav värvivalik - või mitu Ctrl+klõps abil. Klõpsa kastil, et muuta värvivaliku kasutust +STR_LIVERY_TRAIN_GROUP_EMPTY :Rongirühmi ei ole seadistatud +STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :Sõidukirühmi ei ole seadistatud +STR_LIVERY_SHIP_GROUP_EMPTY :Laevarühmi ei ole seadistatud +STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Õhusõidukite rühmi ei ole seadistatud ###length 23 -STR_LIVERY_DEFAULT :Firmavärv +STR_LIVERY_DEFAULT :Vaikimisi värvikava STR_LIVERY_STEAM :Aurumootorvedur STR_LIVERY_DIESEL :Diiselmootorvedur STR_LIVERY_ELECTRIC :Elektrimootorvedur @@ -2444,7 +2508,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Hangin e STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Katkesta STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server on kaitstud. Sisesta salasõna -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Ettevõte on kaitstud. Sisesta salasõna # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Ühendatud mängijad @@ -2471,6 +2534,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Sinu mängija n STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Haldustegevused, mida teha selle ettevõtte peal STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Haldustegevused, mida teha selle ettevõtte peal STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Liitu selle ettevõttega +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Luba sellel kliendil oma ettevõttega liituda STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Saada sellele mängijale sõnum STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Saada sõnum igale selle ettevõtte mängijale STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Saada sõnum igale vaatlejale @@ -2480,6 +2544,7 @@ STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Loo uus STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}Tema oled sina STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Tema on mängu korraldaja STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} klient{P "" i} - {NUM}/{NUM} ettevõt{P e teid} +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}Hetkel ühendatud klientide arv, ettevõtete arv ja ettevõtete arvu ülempiir, mida serveriadministraator lubab # Matches ConnectionType ###length 5 @@ -2492,13 +2557,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Läbi va STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Viska välja STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Keela STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Kustuta -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Salasõnaga avamine STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Haldustoiming STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Kas oled kindel, et välja visata mängija '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Kas oled kindel, et sa tahad keelata mängija '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Kas oled kindel, et tahad kustutada ettevõtte '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Kas oled kindel, et soovid nullida ettevõtte '{COMPANY}' salasõna? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Kasuta vahendajat? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Ühenduse loomine sinu ja serveri '{STRING}' vahel ebaõnnestus .{}Kas sa soovid seda sesiooni vahendada läbi '{STRING}'? @@ -2506,22 +2569,18 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Ei STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Jah, ainult seekord STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}jah, ära küsi uuesti +STR_NETWORK_ASK_SURVEY_CAPTION :Osaleda automaatses uuringus? +STR_NETWORK_ASK_SURVEY_TEXT :Kas sooviksid osaleda automaatses uuringus?{}OpenTTD saadab uuringu mängust lahkumisel.{}Sa saad seda igal ajal "mängu seadistustes" muuta. +STR_NETWORK_ASK_SURVEY_PREVIEW :Vaata uuringutulemust +STR_NETWORK_ASK_SURVEY_LINK :Uuringust ja privaatsusest +STR_NETWORK_ASK_SURVEY_NO :Ei +STR_NETWORK_ASK_SURVEY_YES :Ja STR_NETWORK_SPECTATORS :Vaatlejad -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Sisestatud salasõna ei salvestata -STR_COMPANY_PASSWORD_OK :{BLACK}Määra ettevõtte uus salasõna -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Ettevõtte salasõna -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Esialgne ettevõtte salasõna -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Määra ettevõtte salasõna uute ettevõtete esialgseks salasõnaks - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Liitu STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Liitu ja mängi selle ettevõttena -STR_COMPANY_VIEW_PASSWORD :{BLACK}Salasõna -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Ettevõtte kaitsmine salasõnaga, et võõrad ei saaks ilma loata ühineda -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Vali ettevõttele salasõna # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Saada @@ -2550,6 +2609,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Sinu mä STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Sinu serverile ei ole nime antud. Nime saab määrata mitmikmägu akna ülaosas STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Kliendi osa ei vasta serveri osaga STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Vale salasõna +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Sa ei ole lubatud klientide nimekirjas STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Server on täis STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Sinu sisenemine siia serverisse on keelatud STR_NETWORK_ERROR_KICKED :{WHITE}Sind visati mängust välja @@ -2565,7 +2625,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Sinu mä STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Võimalik ühenduse katkemine STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Viimase {NUM} sekundi jooksul pole serverilt andmeid saabunud -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :üldine viga STR_NETWORK_ERROR_CLIENT_DESYNC :sünkroniseerimise viga STR_NETWORK_ERROR_CLIENT_SAVEGAME :ei saa kaarti laadida @@ -2577,6 +2637,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :saadud pakett o STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :vale osa STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nimi on juba kasutusel STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :vale salasõna +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :pole lubatute nimekirjas STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :vale ettevõtte id DoCommand-is STR_NETWORK_ERROR_CLIENT_KICKED :server viskas välja STR_NETWORK_ERROR_CLIENT_CHEATER :üritas pettust kasutada @@ -2669,14 +2730,14 @@ STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD STR_CONTENT_NO_ZLIB_SUB :{WHITE}... aineste allalaadimine pole võimalik! # Order of these is important! -STR_CONTENT_TYPE_BASE_GRAPHICS :Lähtegraafika +STR_CONTENT_TYPE_BASE_GRAPHICS :Põhigraafika STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI teek STR_CONTENT_TYPE_SCENARIO :Stsenaarium STR_CONTENT_TYPE_HEIGHTMAP :Kõrguskaart -STR_CONTENT_TYPE_BASE_SOUNDS :Lähtehelid -STR_CONTENT_TYPE_BASE_MUSIC :Lähtemuusika +STR_CONTENT_TYPE_BASE_SOUNDS :Põhihelid +STR_CONTENT_TYPE_BASE_MUSIC :Põhimuusika STR_CONTENT_TYPE_GAME_SCRIPT :Mängu skript STR_CONTENT_TYPE_GS_LIBRARY :GS teek @@ -2712,6 +2773,7 @@ STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Vaheta l STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Vaheta sildade läbipaistvust. Ctrl+klõps lukustab STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Vaheta läbipaistvust rajatistel, nagu majakad ja antennid. Ctrl+klõps lukustab STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Õhuliinide läbipaistvuse vahetamine. Ctrl+klõps lukustab +STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Vahelda laadimise ja kulu/tulu teksti läbipaistvust. Ctrl+klõps lukustab STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Muuda esemed nähtamatuks, mitte läbipaistvaks # Linkgraph legend window @@ -2736,7 +2798,7 @@ STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Keskmine sõi STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Mõjupiirkonna näitamine STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Väljas STR_STATION_BUILD_COVERAGE_ON :{BLACK}Sees -STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Lülita välja jaama mõjupiirkonna näitamine +STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Lülita välja jaama mõjupiirkonna esiletõstmine STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Lülita sisse jaama mõjupiirkonna näitamine STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Võtab vastu: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Tarnib: {GOLD}{CARGO_LIST} @@ -2759,15 +2821,15 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektriraudtee STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monorelsi ehitamine STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magnethõljuktee ehitamine -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Ehita raudteed. Ctrl vahetab ehitamise eemaldamise vastu. Shift valib ehitamise/hinna kuvamise režiimi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Rööbaste ehitamine kasutades Autotram režiimi. Ctrl valib rööbaste ehitamise/eemaldamise. Shift valib ehitamise/hinna kuvamise režiimi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Ehita rongidepoo (rongide ehitamiseks ja hoolduseks). Shift valib ehitamise/hinna kuvamise režiimi +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Ehita raudteed. Ctrl vahetab ehitamise eemaldamise vastu. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Rööbaste ehitamine kasutades Autotram režiimi. Ctrl+klõps kõrvaldab rööbastee. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Ehita rongidepoo (rongide ehitamiseks ja hoolduseks). Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Muuda rööpad meldepunktiks. Ctrl võimaldab meldepunkte ühendada. Shift valib ehitamise/hinna kuvamise režiimi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Ehita raudteejaam. Ctrl võimaldab jaamasid ühendada. Shift valib ehitamise/hinna kuvamise režiimi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Ehita rööbastee signaale. Ctrl valib semaforide ja fooride vahel{}Hiirega lohistades paigaldatakse foore sirgel teelõigul. Ctrl paigaldab foorid kuni järgmise jaamani{}Ctrl+klõps avab foori valikuakna. Shift valib ehitamise/hinna kuvamise režiimi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Ehita raudteesild. Shift valib ehitamise/hinna kuvamise režiimi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Ehita rongitunnel. Shift valib ehitamise/hinna kuvamise režiimi -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Vaheta rongitee, signaalide, meldepunktide ja jaamade ehitamise ja lammutamise vahel. Ctrl-klahviga eemaldatakse meldepunktid ja jaamad. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Ehita raudteejaam. Ctrl+klõps, et valida kokkuliitmiseks teine jaam. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Ehita rööbasteele signaal. Ctrl+klõps ehitab signaaliliike vahelduvalt{}Ctrl+lohistus täidab väljavalitud rööpavahemiku valitud vahedega signaalidega. Ctrl+klõps+lohistus täidab signaalidega kuni järgmise ristumiskohani, jaamani, või signaalini. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Ehita raudteesild. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Ehita rongitunnel. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Vahelda rongitee, signaalide, meldepunktide ja jaamade ehitamist ja lammutamist. Ctrl-klõps eemaldab meldepunktid ja jaamad. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Muuda/uuenda rööpaliiki. Shift valib ehitamise/hinna kuvamise režiimi STR_RAIL_NAME_RAILROAD :Raudtee @@ -2781,7 +2843,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Depoole # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Meldepunkt -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vali meldepunkti liik # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Raudteejaama valik @@ -2794,15 +2855,29 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Vali rau STR_STATION_BUILD_DRAG_DROP :{BLACK}Lohistamine STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Ehita jaam kasutades hiirega lohistamist -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vali näidatav jaamajärk -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vali näidatav jaamaliik +STR_PICKER_MODE_ALL :Kõik -STR_STATION_CLASS_DFLT :Esialgne jaam +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Vali, milliseid veoautojaamu näidatakse +STR_PICKER_HOUSE_CLASS_TOOLTIP :Vali näidatud asulaosa +STR_PICKER_HOUSE_TYPE_TOOLTIP :Vali, millist maja ehitada. Ctrl+ klõps lisab või eemaldab salvestatud asjadest + +STR_HOUSE_PICKER_CAPTION :Maja valik + +STR_HOUSE_PICKER_CLASS_ZONE1 :Äär +STR_HOUSE_PICKER_CLASS_ZONE2 :Äärealad +STR_HOUSE_PICKER_CLASS_ZONE3 :Äärelinnad +STR_HOUSE_PICKER_CLASS_ZONE4 :Eeslinnad +STR_HOUSE_PICKER_CLASS_ZONE5 :Kesklinn + +STR_STATION_CLASS_DFLT :Vaikimisi +STR_STATION_CLASS_DFLT_STATION :Vaikimisi jaam +STR_STATION_CLASS_DFLT_ROADSTOP :Vaikimisi peatus STR_STATION_CLASS_WAYP :Meldepunktid +STR_STATION_CLASS_WAYP_WAYPOINT :Vaikimisi punkt # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signaali valik -STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Lülita sisse keerukate signaalitüüpide näitamine +STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Vahelda täiustatud signaalitüüpide näitamist STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Läbisõidusignaal (semafor){}Signaale läheb tarvis vältimaks kokkupõrkeid enam kui ühe rongiga rööbasteedel STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sissesõidusignaal (semafor){}Roheline, kuni vähemalt üks väljasõidusignaal on roheline. Muudel juhtudel näitab punast STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Väljasõidusignaal (semafor){}Käitub samamoodi, nagu läbisõidusignaal, kuid läheb vaja et sissesõidu- ja mitmik-hoiatussignaalid näitaksid õiget värvi @@ -2815,7 +2890,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Väljas STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombineeritud signaal (elektriline){}Kombineeritud signaal toimib nii sisse-, kui ka väljasõidusignaalina. See võimaldab laialiulatuvaid eelsignaalide harusid ehitada STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Täiustatud signaal (elektriline){}Kui rongide tee kahe signaali vahel kordagi ei ristu, siis täiustatud signaalidega saab signaalivahedesse siseneda korraga mitu rongi. Täiustatud signaalidest saab tagant mööduda STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Ühesuunaline täiustatud signaal (elektriline){}Kui rongide tee kahe signaali vahel kordagi ei ristu, siis täiustatud signaalidega saab signaalivahedesse siseneda korraga mitu rongi. Ühesuunalistest täiustatud signaalidest ei saa tagant mööduda -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signaalide teisendamine{}Kui see on valitud, siis olemasoleval signaalil klõpsates teisendatakse see määratud signaalitüübiks ja -variandiks. Samal ajal Ctrl klahvi all hoides lülitutakse olemasoleva variandi vahel. Shift+klõps näitab teisendamise eeldatavat maksumust +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signaalide teisendamine{}Klõpsa olemasolevas signaalil, et teisendada see väljavalitud signaaliliigiks ja -variandiks. Ctrl+klõps vaheldab olemasolevat varianti. Shift+klõps näitab teisenduse eeldatavat maksumust STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Signaalide paigalduskaugus STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Kahanda signaalide paigaldustihedust STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Suurenda signaalide paigaldustihedust @@ -2851,8 +2926,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Ehita bu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Ehita reisitrammijaam. Ctrl võimaldab jaamasid ühendada. Shift valib ehitamise/hinna kuvamise režiimi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Ehita veokite laadimisplats. Ctrl võimaldab jaamasid ühendada. Shift valib ehitamise/hinna kuvamise režiimi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Ehita kaubatrammijaam. Ctrl võimaldab jaamasid ühendada. Shift valib ehitamise/hinna kuvamise režiimi -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Lülita ühesuunalised teed sisse/välja -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Ehita sild. Shift valib ehitamise/hinna kuvamise režiimi +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktiveeri/deaktiveeri ühesuunalised teed +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Ehita sild. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Ehita trammisild. Shift valib ehitamise/hinna kuvamise režiimi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Ehita tunnel. Shift valib ehitamise/hinna kuvamise režiimi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Ehita trammitunnel. Shift valib ehitamise/hinna kuvamise režiimi @@ -2883,14 +2958,14 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vali kau # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Veeteede ehitamine STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Veeteed -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Ehita kanaleid. Shift valib ehitamise/hinna kuvamise režiimi -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Lüüsi ehitamine. Shift valib ehitamise/hinna kuvamise režiimi -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Ehita laevaremonditehas (laevade ehitamiseks ja hoolduseks). Shift valib ehitamise/hinna kuvamise režiimi -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Ehita laevadokk. Ctrl võimaldab jaamu ühendada. Shift valib ehitamise/hinna kuvamise režiimi +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Ehita kanaleid. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Lüüsi ehitamine. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Ehita laevaremonditehas (laevade ehitamiseks ja hoolduseks). Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Ehita laevadokk. Ctrl+klõps, et valida liitmiseks teine jaam. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Paigalda poi, mis on kasutatav teemärgisena. Shift valib ehitamise/hinna kuvamise režiimi -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Ehita veesild. Shift valib ehitamise/hinna kuvamise režiimi -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Määratle veealad.{}Ehita kanal. Veekõrgusel Ctrl-klahvi all hoidmine ujutab ümbruskonna üle -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Jõgede paigutamine. Ctrl valib ala põiki +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Ehita veesild. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Ehita kanal. Ctrl+klõps merepinnal, et ujutada üle mereveega +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Paigalda jõgesid. Ctrl+klõps valib põigiti # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Laevaremonditehase suund @@ -2935,8 +3010,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Maa ostm # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objekti valik -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Vali ehitatav objekt. Ctrl valib ala diagonaaliti. Shift valib ehitamise/hinna kuvamise režiimi vahel -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Vali ehitatava objekti järk STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objekti eelvaade STR_OBJECT_BUILD_SIZE :{BLACK}Suurus: {GOLD}{NUM} x {NUM} ruutu @@ -3006,7 +3079,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 ruud STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Suvaline # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Uue tööstuse rahastamine +STR_FUND_INDUSTRY_CAPTION :{WHITE}Tööstuse rahastamine STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Vali siit nimistust sobiv tööstus STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Tekita suvalised tööstused STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Katab kaardi suvaliselt paigutatud tööstustega @@ -3022,8 +3095,8 @@ STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Kõrvald STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Kas oled kindel, et sa tahad kõrvaldada kõik tööstused? # Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Tööstuse {STRING} tööstusahel -STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Kauba {STRING} tööstusahel +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Tööstusahel - {STRING} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Kaubaahel - {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Tootvad tööstused STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Vastuvõtvad tööstused STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Majad @@ -3040,7 +3113,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vali tö # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Maa-ala andmed -STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Keskenda vaade ruudu asukohale. Ctrl+klõps avab asukohas uue vaate +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Keskenda põhivaade ruudu asukohale. Ctrl+klõps, et avada ruudu kohal uus vaade STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Tühjendamise kulu: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Tühjendamise kulu: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Tühjendamise tulu: {LTBLUE}{CURRENCY_LONG} @@ -3051,8 +3124,9 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trammite STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Raudtee omanik: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Kohalik omavalitsus: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :puudub -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinaadid: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Ehitatud: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinaadid: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Ruudu järjekorranumber: {LTBLUE}{NUM} ({HEX}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Ehitatud/renoveeritud: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Jaama järk: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Jaama liik: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Lennuvälja järk: {LTBLUE}{STRING} @@ -3280,6 +3354,7 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Vähenda STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Maapinna tüüp: STR_MAPGEN_SEA_LEVEL :{BLACK}Merepinna tase: +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Vali meretase STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Jõgesid: STR_MAPGEN_SMOOTHNESS :{BLACK}Laugus: STR_MAPGEN_VARIETY :{BLACK}Iseärasuste jaotus: @@ -3332,6 +3407,7 @@ STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Kõrgusk STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Kõrguskaardi nimi: STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}Kõrguskaardi pildifaili nimi STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Suurus: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}Kõrguskaardi lähtepildi suurus. Parima tulemuse saab, kui iga külg kattub mõne OpenTTD-s oleva kaardikülje pikkusega, nagu 256, 512, 1024, jne. STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Soovitud kõrgpunkt @@ -3346,6 +3422,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Tasane m STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Tekita tasane maa STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Suvaline maa STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Lameda maa kõrgus: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Vali maapinna kõrgus merepinnast STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Lameda maa kõrguse langetamine ühe võrra STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Lameda maa kõrguse tõstmine ühe võrra @@ -3359,10 +3436,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Kas sa STR_GENERATION_PROGRESS :{WHITE}{NUM}% valmis STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Maailma tekitamine +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Maastiku tekitamine STR_GENERATION_RIVER_GENERATION :{BLACK}Jõgede tekitamine -STR_GENERATION_TREE_GENERATION :{BLACK}Puude tekitamine -STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekti tekitamine STR_GENERATION_CLEARING_TILES :{BLACK}Mägise ja kivise maa-ala tekitamine +STR_GENERATION_TOWN_GENERATION :{BLACK}Asulate tekitamine +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Tööstuse tekitamine +STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekti tekitamine +STR_GENERATION_TREE_GENERATION :{BLACK}Puude tekitamine STR_GENERATION_SETTINGUP_GAME :{BLACK}Mängu seadistamine STR_GENERATION_PREPARING_TILELOOP :{BLACK}Ruudustiku töötlemine STR_GENERATION_PREPARING_SCRIPT :{BLACK}Täitmisel olev skript @@ -3396,8 +3476,8 @@ STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Nimekiri STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Vali parameetrid STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Näita parameetreid -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Vaheta paletti -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Vaheta valitud NewGRF-i paletti.{}Tee seda, kui NewGRF-i graafika paistab mängus roosa. +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Vahelda paletti +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Vahelda valitud NewGRF-i paletti.{}Tee seda, kui NewGRF-i graafika paistab mängus roosa. STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Rakenda muudatused STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Otsi internetist vajalike aineseid @@ -3432,6 +3512,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Salvesta STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Salvesta eelseadistus praegusele valitud nimele # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Muuda põhigraafika komplekti parameetreid STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Muuda NewGRF parameetreid STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Sulge STR_NEWGRF_PARAMETERS_RESET :{BLACK}Nulli @@ -3453,7 +3534,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tee tüüp STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF muutuf 60+x parameeter (kuueteistkümnendsüsteemis) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Järgmine sprait STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Jätka järgmise normaalse spraidini, Jättes vahele iga pseudo/taasvärvitud/fondi spraidid ja pakkides lõpu ümber STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mine spraidini @@ -3559,7 +3639,7 @@ STR_NEWGRF_SCAN_ARCHIVES :Arhiivide otsim # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Siltide register - {COMMA} silt{P "" i} STR_SIGN_LIST_MATCH_CASE :{BLACK}Tõstutundlik -STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Lülita sisse/välja tõstutundlikkuse kasutamine siltide filtreerimisel +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Vahelda tõstutundlikkust siltide filtreerimisel otsinguteksti järgi # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Sildi muutmine @@ -3570,7 +3650,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Mine eel STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Sisesta sildile nimi # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Asustused STR_TOWN_DIRECTORY_NONE :{ORANGE}- Puudub - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Linn){BLACK} ({COMMA}) @@ -3582,6 +3661,7 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Linn) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Rahvaarv: {ORANGE}{COMMA}{BLACK} Ehitisi: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} eelmisel kuul: {ORANGE}{COMMA}{BLACK} Kuni: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} eelmisel minutil: {ORANGE}{COMMA}{BLACK} kuni: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Asula kasvuks nõutud veosed: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} vajalik STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} on talvel vajalik @@ -3649,7 +3729,7 @@ STR_GOALS_TEXT :{ORANGE}{STRING STR_GOALS_NONE :{ORANGE}- Mitte ühtegi - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klõpsa eesmärgil, et liigutada vaateaken tööstuse/asula/ruudu asukohale. Ctrl+klõps avab uue vaateakna tööstuse/asula/ruudu asukohas +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klõpsa eesmärgil, et liigutada vaateaken tööstuse/asula/ruudu asukohale. Ctrl+klõps, et avada uus vaateaken tööstuse/asula/ruudu kohal # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Küsimus @@ -3686,6 +3766,8 @@ STR_SUBSIDIES_NONE :{ORANGE}Mitte STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Juba toetatavad veoteenused: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} kohast {STRING} kohta {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Vajuta pakkumisele, et keskendada vaade tööstusele/asustusele. Ctrl+klõps avab uue vaate ettevõtte/asustuse asukohas +STR_SUBSIDIES_OFFERED_EXPIRY_DATE :enne {DATE_SHORT} +STR_SUBSIDIES_OFFERED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} jooksul STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :kuni {DATE_SHORT} STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} jäänud @@ -3714,6 +3796,7 @@ STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Kõik veoseliig STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Mitu kaubaliiki STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Ilma kaubaliikideta STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :Ainult ilma kaubahinnanguta +STR_STATION_LIST_CARGO_FILTER_SELECT_ALL :Vali kõik ja ilma hinnanguta STR_STATION_LIST_CARGO_FILTER_NO_RATING :Ilma kaubahinnanguta STR_STATION_LIST_CARGO_FILTER_EXPAND :Näita rohkem... @@ -3785,7 +3868,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Keela õ STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Keskenda vaade teemärgisel. Ctrl+klõps avab teemärgisel uue vaate STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Muuda meldepunkti nime -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Keskenda vaade poile. Ctrl+klõps avab poil uue vaate +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Keskenda vaade poi kohale. Ctrl+klõps avab poi kohal uue vaateakna STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Muuda poi nime STR_EDIT_WAYPOINT_NAME :{WHITE}Muuda meldepunkti nime @@ -3793,6 +3876,8 @@ STR_EDIT_WAYPOINT_NAME :{WHITE}Muuda me # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} rahavoogude aruanne {BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_YEAR_CAPTION :{WHITE}Aasta +STR_FINANCES_PERIOD_CAPTION :{WHITE}Ajavahemik ###length 3 STR_FINANCES_REVENUE_TITLE :{WHITE}Tulu @@ -3828,9 +3913,9 @@ STR_FINANCES_MAX_LOAN :{WHITE}Laenulim STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BANK_BALANCE :{WHITE}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Laena {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Laena raha +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Suurenda laenu. Ctrl+klõps laenab nii palju, kui võimalik STR_FINANCES_REPAY_BUTTON :{BLACK}Tagasimakse {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Maksa laen osaliselt tagasi +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Maksa osa laenu tagasi. Ctrl+klõps maksab tagasi nii palju, kui võimalik STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Taristu # Company view @@ -3864,6 +3949,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Täpsust STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Vaata täpset taristu hulka STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Saada raha STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Saada sellele ettevõttele raha +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Vaenulik ülevõtmine +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Võta see ettevõte vaenulikult üle STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Uus nägu STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Vali presidendile uus nägu @@ -3879,6 +3966,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Presidendi nimi STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Sisesta saadetav rahasumma STR_BUY_COMPANY_MESSAGE :{WHITE}Otsime ettevõtet, kes võtaks meie firma üle.{}{}Kas soovite osta ettevõtte {COMPANY} {CURRENCY_LONG} eest? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Vaenulikus ettevõtte {COMPANY} ülevõtmiseks ostad sa kõik varad, maksad tagasi kõik laenud, ning tasud kahe aasta tulud.{}{}Kogusumma on hinnanguliselt {CURRENCY_LONG}.{}{}Kas tahad vaenulikku ülevõtmist jätkata? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE} {COMPANY} Taristu @@ -3895,7 +3983,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/ajavahemik # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Tööstused STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Puudub - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% äraveetud){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3912,8 +3999,9 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :Puudub # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Eelmise kuu toodang: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Toodang eelmisel minutil: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% veetud) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vaate keskendamine tööstusele +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vaate keskendamine tööstusele. Ctrl+klõps avab uue vaateakna tööstuse kohal STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Tootlikkuse tase: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Tööstus teatab kohesest sulgemisest! @@ -3951,7 +4039,9 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Halda re STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Saada juhised kõikidele selles nimekirjas olevatele veovahenditele STR_VEHICLE_LIST_REPLACE_VEHICLES :Asenda veovahendeid STR_VEHICLE_LIST_SEND_FOR_SERVICING :Saada hooldusesse +STR_VEHICLE_LIST_CREATE_GROUP :Loo rühm STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Selle aasta kasum: {CURRENCY_LONG} (eelneval: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Selle ajavahemiku kasum: {CURRENCY_LONG} (viimase ajavahemiku: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -3985,7 +4075,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Jagu - j STR_GROUP_CREATE_TOOLTIP :{BLACK}Klõpsa jao loomiseks STR_GROUP_DELETE_TOOLTIP :{BLACK}Eemalda valitud jagu STR_GROUP_RENAME_TOOLTIP :{BLACK}Ümbernimeta valitud jagu -STR_GROUP_LIVERY_TOOLTIP :{BLACK}Muuda valitud jao värvistikku +STR_GROUP_LIVERY_TOOLTIP :{BLACK}Muuda valitud jao värvikava STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klõpsa, et kaitsta seda jagu globaalse automaatasenduse eest. Ctrl+klõps kaitsmaks ka alamkategooriaid. STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Kõrvalda jagu @@ -4078,10 +4168,10 @@ STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Osta val STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valitud õhusõiduk. Shift+klõpsuga kuvatakse eeldatav ostuhind ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja ümberseadista valitud rööbassõiduk. Shift+klõps näitab eeldatava maksumuse ilma ostu sooritamata +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja ümberseadista valitud rööbassõiduk. Hoia all shift-klahvi, et näidata ainult hinnangulist maksumust STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja ümberseadista valitud maanteesõiduk. Shift+klõps näitab eeldatava maksumuse ilma ostu sooritamata STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja ümberseadista valitud laev. Shift+klõps näitab eeldatava maksumuse ilma ostu sooritamata -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja ümberseadista valitud õhusõiduk. Shift+klõps näitab eeldatava maksumuse ilma ostu sooritamata +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja ümberseadista valitud õhusõiduk. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Ümbernimeta @@ -4090,10 +4180,10 @@ STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Ümberni STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Ümbernimeta ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Ümbernimeta rööbassõiduki liik -STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Ümbernimeta maanteesõiduki liik -STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Ümbernimeta laeva liik -STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Ümbernimeta õhusõiduki liik +STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Nimeta rööbassõiduki liik ümber +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Nimeta maanteesõiduki liik ümber +STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Nimeta laeva liik ümber +STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Nimeta õhusõiduki liik ümber ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Peida @@ -4108,16 +4198,16 @@ STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Näita STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Näita ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Sätesta rongitüübi peitmine/kuvamine -STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Sätesta sõidukitüübi peitmine/kuvamine -STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Sätesta laevatüübi peitmine/kuvamine +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Vahelda rongitüübi peitmist/näitamist +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Vahelda sõidukitüübi peitmist/näitamist +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Vahelda laevatüübi peitmist/näitamist STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Vahelda õhusõiduki liigi peitmist/näitamist ###length VEHICLE_TYPES STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Ümbernimeta rööbassõiduki liik STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Ümbernimeta maanteesõiduki liik STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Ümbernimeta laeva liik -STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Ümbernimeta õhusõiduki liik +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Nimeta õhusõiduki liik ümber # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -4175,14 +4265,14 @@ STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klooni ###length VEHICLE_TYPES STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ostetakse samasugune rong koos kõikide vagunitega. Vajuta sellele nupule, ning seejärel rongile depoo sees või väljas. «Ctrl»+klõps jagab korraldusi. «Shift»+klõps näitab eeldatavat ostuhinda STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ostetakse samasugune mootorsõiduk. Vajuta sellele nupule, ning seejärel mootorsõidukil depoos või sellest väljas. «Ctrl»+klõps jagab korraldusi. «Shift»+klõps näitab eeldatavat ostuhinda -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ostetakse samasugune laev. Vajuta sellele nupule, ning seejärel laevale laevaremonditehase sees või väljas. «Ctrl»+klõps jagab korraldusi. «Shift»+klõps näitab eeldatavat ostuhinda +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ostetakse samasugune laev. Vajuta sellele nupule, ning seejärel laevale laevaremonditehase sees või väljas. «Ctrl»+klõps jagab korraldusi. Hoia all shift-klahvi, et näidata ainult hinnangulist maksumust STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ostetakse samasugune õhusõiduk. Vajuta sellele nupule, ning seejärel õhusõidukile angaari sees või väljas. «Ctrl»+klõps jagab korraldusi. «Shift»+klõps näitab eeldatavat ostuhinda ###length VEHICLE_TYPES STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Keskenda põhivaade rongidepoo kohale STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vii vaade garaažile. Ctrl+klõps avab garaažil uue vaate. STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vii pea vaade paadikuuri juurde -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vii vaade angaarile +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vii vaade angaarile. Ctrl+klõps avab angaari kohal uue vaateakna ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Koosta nimekiri kõikidest rongidest, mille korralduste hulgas on see depoo @@ -4220,10 +4310,14 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE :tramm STR_ENGINE_PREVIEW_AIRCRAFT :õhusõiduki STR_ENGINE_PREVIEW_SHIP :laeva +STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING} +STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING} STR_ENGINE_PREVIEW_COST_WEIGHT :Hind: {CURRENCY_LONG} Kaal: {WEIGHT_SHORT} STR_ENGINE_PREVIEW_COST_MAX_SPEED :Hind: {CURRENCY_LONG} Tippkiirus: {VELOCITY} STR_ENGINE_PREVIEW_SPEED_POWER :Tippkiirus: {VELOCITY} Võimsus: {POWER} STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Tippkiirus: {VELOCITY} Võimsus: {POWER} Veojõud: {FORCE} +STR_ENGINE_PREVIEW_TYPE :Õhusõiduki liik: {STRING} +STR_ENGINE_PREVIEW_TYPE_RANGE :Õhusõiduki liik: {STRING} Lennuulatus: {COMMA} ruutu STR_ENGINE_PREVIEW_RUNCOST_YEAR :Jooksvad kulud: {CURRENCY_LONG}/aasta STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Jooksvad kulud: {CURRENCY_LONG}/periood STR_ENGINE_PREVIEW_CAPACITY :Mahutavus: {CARGO_LONG} @@ -4290,16 +4384,16 @@ STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Keskenda STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Keskenda vaade õhusõiduki asukohale.Topeltklõps jälitab õhusõidukit põhivaates. Ctrl+klõps avab õhusõiduki asukohas uue vaate. ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada rong depoosse -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada sõiduk garaaži. Ctrl+klõps, et ainult teenindada -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada laev angaari. Ctrl+klõps ainult teenindab +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada rong depoosse. Ctrl+klõps ainult hooldab +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada sõiduk garaaži. Ctrl+klõps ainult hooldab +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada laev angaari. Ctrl+klõps, et ainult teenindada STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada õhusõiduk angaari. Ctrl + klõps ainult hooldab ###length VEHICLE_TYPES STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ostab samasuguse rongi koos kõikide vagunitega. «Ctrl»+klõps jagab korraldusi. «Shift»+klõps näitab eeldatavat ostuhinda -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ostab samasuguse maanteesõiduki. «Ctrl»+klõps jagab korraldusi. «Shift»+klõps näitab eeldatavat ostuhinda +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ostab samasuguse maanteesõiduki. «Ctrl»+klõps jagab korraldusi. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ostab samasuguse laeva. Vajuta sellele nuppule, ning seejärel laevale laevaremonditehase sees või väljas. «Ctrl»+klõps jagab korraldusi. «Shift»+klõps näitab eeldatavat ostuhinda -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ostab samasuguse õhusõiduki. Ctrl+klõpsuga jagatakse sihtpunkte. Shift+klõpsuga kuvatakse eeldatav ostuhind +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ostab samasuguse õhusõiduki. Ctrl+klõpsuga jagatakse sihtpunkte. Lisaks hoia all Shift-klahvi, et vaid näidata eeldatavat hinda STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Sunni rongi signaale eirama STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Pööra rong ümber @@ -4333,6 +4427,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Valitud # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Veose ümberlaadimine STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Lahkub +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Ootab hajutamist STR_VEHICLE_STATUS_CRASHED :{RED}Kokkupõrge! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Rike STR_VEHICLE_STATUS_STOPPED :{RED}Peatatud @@ -4341,16 +4436,17 @@ STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Vool puudu STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Vaba raja ootamine STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Liiga pikk vahemaa järgmise sihtpunktini -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Siht: {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Sihitu, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Suundub {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Suundub {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Järelevaatus: {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Suundub jaama {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Sihitu +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Suundub punkti {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Suundub depoosse {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Hooldus depoos {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Hajutamine ja hooldus depoos {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Ei leita teed jaama {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Ei leita teed sihtkohta {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Ei leita teed sihtkohta {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Ei leia teed sihtkohta {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Ei leia teed jaama {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Ei leie teed punkti {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Ei leie teed depoosse {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Ei leia teed depoosse {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4373,6 +4469,7 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nimeta STR_VEHICLE_INFO_AGE :{COMMA} aasta{P "" t} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} aasta{P "" t} ({COMMA}) STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Käituskulud: {LTBLUE}{CURRENCY_LONG}/a +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Käituskulud: {LTBLUE}{CURRENCY_LONG}/ajavahemik STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Tippkiirus: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Tippkiirus: {LTBLUE}{VELOCITY} {BLACK}Õhusõiduki liik: {LTBLUE}{STRING} @@ -4382,6 +4479,8 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Tühimas STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Kasum sel aastal: {LTBLUE}{CURRENCY_LONG} (eelmisel: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Kasum sellel aastal: {LTBLUE}{CURRENCY_LONG} (eelmisel aastal: {CURRENCY_LONG}) {BLACK}Min. jõudlus: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Kasum sellel perioodil: {LTBLUE}{CURRENCY_LONG} (eelmisel perioodil: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Kasum sellel perioodil: {LTBLUE}{CURRENCY_LONG} (eelmisel perioodil: {CURRENCY_LONG}) {BLACK}Min. jõudlus: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Tehnoseisund: {LTBLUE}{COMMA}% {BLACK}Rikkeid eelmisest hooldusest: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Valmistatud: {LTBLUE}{NUM}{BLACK} Väärtus: {LTBLUE}{CURRENCY_LONG} @@ -4393,12 +4492,21 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kandevõ STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Ülekantud tulu: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Hooldusvälp: {LTBLUE}{COMMA}päeva{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Hooldusvälp: {LTBLUE}{COMMA}{NBSP}minutit{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Hooldusvälp: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Viimane hooldus: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Viimane hooldus: {LTBLUE}{NUM} minutit tagasi +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Suurenda hooldusvälpa 10 päeva võrra. Ctrl+klõps suurendab hooldusvälpa 5 päeva võrra +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Suurenda hooldusvälpa 5 minuti võrra. Ctrl+klõps suurendab hooldusvälpa 1 minuti võrra +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Suurenda hooldusvälpa 10 protsendi võrra. Ctrl+klõps suurendab hooldusvälpa 5 protsendi võrra +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Vähenda hooldusvälpa 10 päeva võrra. Ctrl+klõps vähendab hooldusvälpa 5 päeva võrra +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Vähenda hooldusvälpa 5 minuti võrra. Ctrl+klõps vähendab hooldusvälpa 1 minuti võrra +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Vähenda hooldusvälpa 10 protsendi võrra. Ctrl+klõps vähendab hooldusvälpa 5 protsendi võrra STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Muuda hooldusvälba liiki STR_VEHICLE_DETAILS_DEFAULT :Esialgne +STR_VEHICLE_DETAILS_DAYS :Päeva +STR_VEHICLE_DETAILS_MINUTES :Minutit STR_VEHICLE_DETAILS_PERCENT :Protsendid ###length VEHICLE_TYPES @@ -4501,9 +4609,13 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Võimalikud kau STR_ORDER_DROP_GO_ALWAYS_DEPOT :Alati STR_ORDER_DROP_SERVICE_DEPOT :Vajadusel STR_ORDER_DROP_HALT_DEPOT :Peatu +STR_ORDER_DROP_UNBUNCH :Hajuta # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES +STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Vali tegevus selles depoos +STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Vali tegevus selles depoos +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Vali tegevus selles depoos STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Vali tegevus, mida selles angaaris teha ###next-name-looks-similar @@ -4574,6 +4686,7 @@ STR_ORDER_REFIT_ORDER :(Ümberseadista STR_ORDER_REFIT_STOP_ORDER :(Ümberseadista: {STRING}, peatu) STR_ORDER_STOP_ORDER :(Peatu) +STR_ORDER_WAIT_TO_UNBUNCH :(ootab hajutamist) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Ei saa jaama kasutada){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4654,22 +4767,25 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Graafiku STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}See graafik algab {STRING} STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}See graafik algab {COMMA}. sekundi pärast +STR_TIMETABLE_START :{BLACK}Alusta graafikut +STR_TIMETABLE_START_TOOLTIP :{BLACK}Vali, millal see graafik algab. Ctrl+klõps hajutab võrdselt kõikide sõidukite alustamise nende suhtelise järjestuse põhjal, kui korraldus on täielikult ajastatud +STR_TIMETABLE_START_SECONDS_QUERY :Sekundeid kuni graafik algab STR_TIMETABLE_CHANGE_TIME :{BLACK}Muuda aega STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Muuda märgitud korraldusele määratud aega. Ctrl+klõps seab aja kõigile korraldustele STR_TIMETABLE_CLEAR_TIME :{BLACK}Tühista aeg -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Tühista korralduse täitmiseks määratud aeg. Ctrl+klõps tühistab kõik korraldustele määratud ajad +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Tühista korralduse täitmiseks määratud aeg. Ctrl+klõps, et tühistada kõik korraldustele määratud ajad STR_TIMETABLE_CHANGE_SPEED :{BLACK}Muuda kiiruspiirangut STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Muuda märgitud korralduse kiiruspiirangut. Ctrl+klõps seab kiiruspiirangu kõigile korraldustele STR_TIMETABLE_CLEAR_SPEED :{BLACK}Kustuta kiiruspiirang -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Eemalda märgitud korralduse kiiruspiirang. Ctrl+klõps tühistab kõik korraldustele määratud kiiruspiirangud +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Eemalda märgitud korralduse kiiruspiirang. Ctrl+klõps, et tühistada kõik korraldustele määratud kiiruspiirangud STR_TIMETABLE_RESET_LATENESS :{BLACK}Nulli hilinemisarvesti -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Nulli hilinemisarvesti, nii et sõiduk oleks graafikus +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Nulli hilinemisarvesti, nii et sõiduk oleks graafikus. Ctrl+klõps nullib terve rühma, nii et viimane sõiduk on õigeaegne ja kõik teised on varajased STR_TIMETABLE_AUTOFILL :{BLACK}Isetäituv STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Kasuta liiniplaani täitmiseks järgmise sõidu andmeid. Ctrl+klõps proovib säilitab ooteajad @@ -4709,9 +4825,9 @@ STR_AI_DEBUG_MATCH_CASE :{BLACK}Tõstutu STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Vaheldab tõstutundlikkust, kui AI debug-sõnumeid võrreldakse peatamiskirjega STR_AI_DEBUG_CONTINUE :{BLACK}Jätka STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Lõpeta paus ja jätka AI-d -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vaata selle AI debug-väljundit +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vaata selle AI debug-väljundit. Ctrl+klõps avab uues aknas STR_AI_GAME_SCRIPT :{BLACK}GameScript -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Kontrolli GameScripti logi +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Kontrolli GameScripti logi. Ctrl+klõps avab uues aknas STR_ERROR_AI_NO_AI_FOUND :Laadimiseks sobivat AI-d ei leitud.{}See AI on makett, ning ei tee midagi.{}AI-sid alla saab laadida kasutades 'aineste allalaadimise' süsteemi. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Üks skriptidest jooksis kokku. Palun teatada sellest skripti autorit koos ekraanipildiga AI/GamesScripti debugimise aknast @@ -4775,21 +4891,28 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :GameScript STR_AI_SETTINGS_CLOSE :{BLACK}Sulge STR_AI_SETTINGS_RESET :{BLACK}Nulli STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window +STR_TEXTFILE_JUMPLIST :{WHITE}Sisukord +STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Mine kiirelt näidatud faili jaotisse selle loendi kaudu +STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} +STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Mine navigeerimisajaloos tagasi +STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Mine navigeerimisajaloos jälle edasi STR_TEXTFILE_WRAP_TEXT :{WHITE}Tekstiridade murdmine STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Murrab tekstirida, et lugeda vaadet liigutamata -STR_TEXTFILE_VIEW_README :{BLACK}Vaata abi +STR_TEXTFILE_VIEW_README :{BLACK}Readme +STR_TEXTFILE_VIEW_README_TOOLTIP :Vaata selle sisu readme'd STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Muudatuste logi +STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Vaata selle sisu muudatuste ajalugu STR_TEXTFILE_VIEW_LICENCE :{BLACK}Litsents +STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Vaata selle sisu litsentsi ###length 5 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} abi. STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} muudatuste logi {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} litsents {STRING} STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Uuringutulemuse eelvaade +STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD dokument '{STRING}' # Vehicle loading indicators @@ -4820,9 +4943,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Eeldatav STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ikka salvestamisel,{}palun oota salvestuse lõpuni! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Välpsalvestus ebaõnnestus STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ei suuda kettalt lugeda -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Mängu salvestamine nurjus{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Mängu salvestamine nurjus... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Faili ei saa kustutada -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Mängu laadimine nurjus{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Mängu laadimine nurjus... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Süsteemi viga: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Katkine salvestus - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvestus on tehtud uuemas osas @@ -4927,6 +5050,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... pole STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Teede ehitamine STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Seda asulat ei saa kõrvaldada...{}Jaam või depoo viitab asulale, või asulale kuuluvat ruutu ei saa kõrvaldada STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... asula keskuses ei leidu kujule sobivat kohta +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Maja ei saa ehitada... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... liiga palju tööstuseid @@ -5034,6 +5158,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Ei leia STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Vale depootüüp # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... võib omada ainult ühte hajutuskorraldust +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... täislaadimise korraldust ei saa kasutada, kui sõidukil on hajutuskorraldus +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... täislaadimise korraldusega sõidukit ei saa hajutada +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... tinglikke korraldusi ei saa kasutada, kui sõidukil on hajutuskorraldus +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... tingliku korraldusega sõidukit ei saa hajutada # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} on pärast asendamist liiga pikk @@ -5199,6 +5328,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Muuda Ne STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Sõidukeid ei ole veel saadaval STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Alusta mängu pärast {DATE_SHORT} või kasuta NewGRF-i, milles on varasemaid sõidukeid +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Linnas ehitatavaid maanteeliike pole saadaval +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Muuda oma NewGRF-i seadistust +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Linnas ehitatavaid maanteeliike pole veel saadaval +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Alusta uus mäng pärast {DATE_SHORT} või kasuta NewGRF-i, milles on varajasi linnas ehitatavaid maanteeliike + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Rongi ei saa ohu korral sundida signaale eirama... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ei saa rongi ümber pöörata. @@ -5238,6 +5372,8 @@ STR_ERROR_NO_AIRPORT :{WHITE}Ei ole STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Ei ole ühtegi peatust, mis on ühilduva teeliigiga STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Ei ole ühtegi peatust, mis on ühilduva trammiliigiga STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Ei ole ühtegi peatust, mis sobiks liigendsõidukitele.{}Liigendsõiduk nõuab platsi asemel läbisõidupeatust +STR_ERROR_AIRPORT_NO_PLANES :{WHITE}See lennuk ei saa maanduda sellel kopteriplatsil +STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}See helikopter ei saa maanduda selles lennujaamas STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Ei ole ühtegi rongitee meldepunkti STR_ERROR_NO_BUOY :{WHITE}Ei ole ühtegi poid @@ -5245,6 +5381,8 @@ STR_ERROR_NO_BUOY :{WHITE}Ei ole STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Sõidukile ei saa graafikut määrata... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Sõidukid saavad ainult peatustes oodata STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}See sõiduk ei peatu selles jaamas +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... graafik on puudulik +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... graafik pole veel alustatud # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... liiga palju silte @@ -5690,6 +5828,7 @@ STR_UNKNOWN_STATION :tundmatu jaam STR_DEFAULT_SIGN_NAME :Silt STR_COMPANY_SOMEONE :keegi +STR_SAVEGAME_DURATION_REALTIME :{NUM}t {NUM}m STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Vaatleja, {1:STRING} @@ -5723,18 +5862,27 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}mln +STR_CURRENCY_SHORT_GIGA :{NBSP}mld +STR_CURRENCY_SHORT_TERA :{NBSP}tn + STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} +STR_JUST_DECIMAL :{DECIMAL} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index 59546002ba..8964c9b2d9 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -360,6 +360,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Far frá tilbur STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Gevst + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Spæl møguleikar @@ -825,7 +826,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldsoy STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Úrval av gjaldsoyra eindum -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Bretsk Pund STR_GAME_OPTIONS_CURRENCY_USD :Dollarar STR_GAME_OPTIONS_CURRENCY_EUR :Evrir @@ -904,6 +905,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Meira ku + STR_ERROR_FULLSCREEN_FAILED :{WHITE}Eydnaðist ikki at brúka fullan skerm # Custom currency window @@ -914,6 +916,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Minka um STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Vaks um hvussu nógv av tínum gjaldoyra skal til fyri at keypa eitt pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Set gjaldsoyra kursin av tínum gjaldsoyra fyri eitt pund (£) + STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Set prefiksi fyri títt gjaldsoyra STR_CURRENCY_SUFFIX :{LTBLUE}Suffiks: {ORANGE}{STRING} @@ -1239,6 +1242,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Ávara um eitt ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Um gilda, fær tú boð tá eitt flutningstól ikki hevur havt nakran vinning í eitt kalendara ár + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Flutningstól ganga ongantíð út: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Um gilda, eru øll sløg av flutningstólum altíð tøk eftir tey eru komin í nýtslu @@ -1502,7 +1506,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Vanligur eftirl STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjumf logførum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli STR_CONFIG_SETTING_SERVINT_SHIPS :Vanligur eftirlits títtleiki fyri skip: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjum skipum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" ar}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Ikki sligi til @@ -1670,15 +1675,6 @@ STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Ídnaðir STR_CONFIG_SETTING_AI :Kappingarneytar STR_CONFIG_SETTING_AI_NPC :Teldu spælarir -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Leiðbeinari fyri tok: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Leið beinari at nýta til tok -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Leiðbeinari fyri akfør: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Leið beinari at nýta fyri akfør -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Leiðbeinari fyri skip: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Leið beinari at nýta fyri skip -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Viðmældur) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Broyt ásetings virði @@ -1932,7 +1928,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fær kun STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Slít samband STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servarin er vardur. Skriva loyniorð -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Fyritøka er vard. Skriva loyniorð # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Listi yvir klientar @@ -1948,19 +1943,9 @@ STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Listi yvir klie STR_NETWORK_SPECTATORS :Eygleiðarar -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Goym ikki skrivaða loyniorðið -STR_COMPANY_PASSWORD_OK :{BLACK}Gev fyritøkuni tað nýggja loyniorðið -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Fyritøku loyniorð -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Vanligt fyritøku loyniorð -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Nýt hetta fyritøku loyniorðið sum vanligt fyri nýggjar fyritøkur - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Tak lut STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Tak lut og spæl sum hendan fyritøkan -STR_COMPANY_VIEW_PASSWORD :{BLACK}Loyniorð -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Verj tína fyritøku við einum loyniorðið so eingin óynsktur tekur lut í henni -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Áset fyritøku loyniorð # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send @@ -1999,7 +1984,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Tín tel STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Møguligt sambands slit STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Tey síðstu {NUM} sekundini eru eingin dáta komin fram frá seraranum -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :almenn villa STR_NETWORK_ERROR_CLIENT_DESYNC :desync villa STR_NETWORK_ERROR_CLIENT_SAVEGAME :eydnaðist ikki at heinta kort @@ -2175,7 +2160,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Vel hvø # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Waypoint -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vel waypoint slag # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Tok støðs úrval @@ -2188,8 +2172,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Vel hvus STR_STATION_BUILD_DRAG_DROP :{BLACK}Toga & Slepp STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bygg eina støð vi at nýta toga & slepp -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vel ein klassa av støð at vísa -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vel hvat slag av støð skal byggjast + + + STR_STATION_CLASS_DFLT :Vanlig støð STR_STATION_CLASS_WAYP :Waypoint @@ -2364,7 +2349,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Sporvogn STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Jarnbreyta eigari: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Mynduleikar á staðnum: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Eingin -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatar: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Bygt: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Støð klassi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Støð slag: {LTBLUE}{STRING} @@ -2583,9 +2567,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% l STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Heims framleiðsla STR_GENERATION_RIVER_GENERATION :{BLACK}Løks framleiðsla -STR_GENERATION_TREE_GENERATION :{BLACK}Træ framleiðsla -STR_GENERATION_OBJECT_GENERATION :{BLACK}Luta framleiðsla STR_GENERATION_CLEARING_TILES :{BLACK}Framleiðsa av harrendum og grýtutum øki +STR_GENERATION_OBJECT_GENERATION :{BLACK}Luta framleiðsla +STR_GENERATION_TREE_GENERATION :{BLACK}Træ framleiðsla STR_GENERATION_SETTINGUP_GAME :{BLACK}Ger spæli klárt STR_GENERATION_PREPARING_TILELOOP :{BLACK}Koyrir punta sloyfu STR_GENERATION_PREPARING_SCRIPT :{BLACK}Koyrir skript @@ -2659,7 +2643,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Breyta slag STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite ###length 2 @@ -2714,7 +2697,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Far til STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Skriva eitt navn fyri skelti # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bygdir STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ongar - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bygda nøvn - trýst á eitt navn fyri at savna høvuðs sýni á bygdina. Ctrl+trýst letur upp ein nýggjan sýnisglugga á bygdina @@ -2955,7 +2937,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Støð p STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Floghavnir # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Ídnaðir STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Einki - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ídnaðar nøvn - trýst á eitt navn fyri at savna høvuðs sýni á ídnað. Ctrl+trýst letur ein nýggjan sýnisglugga upp á ídnaðin @@ -3673,9 +3654,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Inntøku STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Goyming er enn í gongd,{}vinarliga bíða til ta er liðugt! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Sjálvgoymsla eydnaðist ikki STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ikki ført fyri at lesa drev -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Eydnaðist ikki at goyma spæl{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ikki ført fyri at strika fílu -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Eydnaðist ikki at heinta spæl{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Innanhýsis villa: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Goymda spæli er broti - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Goymda spæli er frá nýggjari útgávu @@ -4027,6 +4006,7 @@ STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... akfa + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kann ikki fáa tok at fara framvið jarnbreytatekin tá vandi er... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kann ikki venda toki vi... @@ -4527,6 +4507,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 12065da4e4..79bbebfc28 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -289,7 +289,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Napsauta STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Suurenna/pienennä ikkuna STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Vierityspalkki – luettelon vieritys ylös/alas STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Vierityspalkki – luettelon vieritys vasemmalle/oikealle -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Tuhoa rakennuksia jne. ruudulta. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä näyttääksesi vain kustannusarvion +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Tuhoa rakennuksia jne. ruudulta. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion # Show engines button ###length VEHICLE_TYPES @@ -308,11 +308,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Kun otat STR_BUTTON_DEFAULT :{BLACK}Oletus STR_BUTTON_CANCEL :{BLACK}Peruuta STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Varoitus: Palvelimen ylläpitäjät saattavat nähdä kaiken tähän kirjoittamasi. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :§1234567890+´ qwertyuiopå¨asdfghjklöä' zxcvbnm,.- . -STR_OSK_KEYBOARD_LAYOUT_CAPS :½!"#¤%&/()=?` QWERTYUIOPÅ^ASDFGHJKLÖÄ* ZXCVBNM;:_ . +STR_OSK_KEYBOARD_LAYOUT :§1234567890+´ qwertyuiopå¨asdfghjklöä'ZXCVBNM;:_ . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Pituus: {NUM} @@ -397,7 +396,7 @@ STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Avaa teo STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Avaa luettelo yhtiön junista. Ctrl+napsautus näyttää tai piilottaa kulkuneuvoryhmät päinvastoin kuin valitussa asetuksessa. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Avaa luettelo yhtiön ajoneuvoista. Ctrl+napsautus näyttää tai piilottaa ajoneuvoryhmät päinvastoin kuin valitussa asetuksessa STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Avaa luettelo yhtiön laivoista. Ctrl+napsautus näyttää tai piilottaa kulkuneuvoryhmät, päinvastoin kuin valitussa asetuksessa -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Näytä luettelo yhtiön ilma-aluksista. Ctrl+napsautus näyttääksesi näyttää tai piilottaa ajoneuvoryhmiä, päinvastoin kuin valitussa asetuksessa +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Näytä luettelo yhtiön ilma-aluksista. Ctrl+napsautus näyttää tai piilottaa kulkuneuvoryhmät päinvastoin kuin valitussa asetuksessa STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Lähennä STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Loitonna STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Rakenna rautatieinfrastruktuuria @@ -424,9 +423,9 @@ STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Kuntien STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Rakenna tai luo teollisuutta STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Tieinfrastruktuurin rakentaminen STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Raitiotieinfrastruktuurin rakentaminen -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Istuta puita. Ctrl+napsautus+veto valitaksesi alueen vinottain. Painettaessa Shift näyttää vain kustannusarvion +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Istuta puita. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Sijoita kyltti -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Sijoita objekti. Ctrl+napsautus+vedä valitsee alueen vinottain. Painettaessa Shit näyttää vain kustannusarvion +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Sijoita objekti. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion # Scenario editor file menu ###length 7 @@ -438,6 +437,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Sulje skenaario STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Lopeta +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Luo kuntia +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Sijoita taloja + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Pelin valinnat @@ -621,14 +623,14 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Poista kaikki käytöstä STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Näytä kaikki rahdit rahtitaksojen kaaviossa STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Älä näytä mitään rahteja rahtitaksojen kaaviossa -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Rahtityypin kuvaaja päälle/pois +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Valitse, näytetäänkö tämän rahdin kuvaaja STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Näytä tarkat suorituskykyarviot # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Selite yhtiön kuvaajiin -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Napsauta tätä vaihtaaksesi yhtiön merkinnän kuvaajassa päälle/pois +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Valitse, näytetäänkö tämän yhtiön kuvaaja # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Yhtiökilpataulukko @@ -708,7 +710,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Valitse STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Valitse ”Ezy Street” -tyylin musiikki STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Valitse ”oma 1” (käyttäjän määritettävissä) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Valitse ”oma 2” (käyttäjän määritettävissä) -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Sekoittaminen päälle/pois +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Valitse, sekoitetaanko soittojärjestys STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Näytä musiikkiraitojen valintaikkuna # Playlist window @@ -791,7 +793,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Aavikko STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Lunta -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Näytä kuntien nimet kartalla +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Valitse, näytetäänkö kuntien nimet STR_SMALLMAP_CENTER :{BLACK}Keskitä pieni kartta tähän paikkaan STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -800,9 +802,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Kaikki pois päältä STR_SMALLMAP_ENABLE_ALL :{BLACK}Kaikki päälle STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Näytä korkeus +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Näytä laitosten nimet STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Älä näytä teollisuuslaitoksia kartalla STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Näytä kaikki teollisuuslaitokset kartalla STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Valitse, näytetäänkö korkeuskartta +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Valitse, näytetäänkö teollisuuslaitosten nimet STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Älä näytä yhtiöiden omaisuutta kartalla STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Näytä kaikki yhtiöiden omaisuus kartalla STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Älä näytä mitään rahtia kartalla @@ -920,7 +924,7 @@ STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Tukitarjous päättynyt:{}{}{STRING} välillä {STRING} – {STRING} ei enää tulla tukemaan STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Tuki vedetty pois:{}{}{STRING} välillä {STRING}-{STRING} ei enää tueta -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Tuki tarjolla:{}{}Paikallisviranomaiset tukevat ensimmäistä {STRING} välillä {STRING} – {STRING} {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Tuki tarjolla:{}{}{STRING} välillä {STRING} – {STRING} ensimmäisenä kuljettava yhtiö saa kunnalta tuen, jonka kesto on {UNITS_YEARS_OR_MINUTES}! ###length 4 STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{STRING} sai tuen!{}{}{STRING} välillä {STRING} – {STRING} tuottaa puolitoistakertaisesti seuraavat {UNITS_YEARS_OR_MINUTES}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}{STRING} sai tuen!{}{}{STRING} välillä {STRING} – {STRING} tuottaa kaksinkertaisesti seuraavat {UNITS_YEARS_OR_MINUTES}! @@ -956,18 +960,14 @@ STR_GAME_OPTIONS_VOLUME :Äänenvoimakku STR_GAME_OPTIONS_SFX_VOLUME :Äänitehosteet STR_GAME_OPTIONS_MUSIC_VOLUME :Musiikki -STR_GAME_OPTIONS_VOLUME_0 :0{NBSP}% -STR_GAME_OPTIONS_VOLUME_25 :25{NBSP}% -STR_GAME_OPTIONS_VOLUME_50 :50{NBSP}% -STR_GAME_OPTIONS_VOLUME_75 :75{NBSP}% -STR_GAME_OPTIONS_VOLUME_100 :100{NBSP}% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}{NBSP}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Rahayksikkö STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Rahayksikön valinta STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Englannin punta STR_GAME_OPTIONS_CURRENCY_USD :Yhdysvaltain dollari STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1011,6 +1011,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Intian rupia STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian rupia STR_GAME_OPTIONS_CURRENCY_MYR :Malesian ringgit STR_GAME_OPTIONS_CURRENCY_LVL :Latvian lati +STR_GAME_OPTIONS_CURRENCY_PTE :Portugalin escudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automaattitallennus STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Valitse aikaväli automaattisille pelitallennuksille @@ -1053,15 +1054,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaalaa STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Valitse tämä ruutu reunusten skaalaamiseksi käyttöliittymän koon mukaan STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Käytä perinteistä sprite-fonttia -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Valitse tämä ruutu käyttääksesi perinteistä kiinteäkokoista sprite-kirjasintyyppiä. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Valitse tämä ruutu käyttääksesi perinteistä kiinteäkokoista sprite-kirjasintyyppiä STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Pehmennä kirjasinten reunoja -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Valitse tämä ruutu pehmentääksesi muuttuvan kokoisten fonttien reunoja. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Valitse tämä ruutu pehmentääksesi muuttuvan kokoisten fonttien reunoja -STR_GAME_OPTIONS_GUI_SCALE_1X :1× -STR_GAME_OPTIONS_GUI_SCALE_2X :2× -STR_GAME_OPTIONS_GUI_SCALE_3X :3× -STR_GAME_OPTIONS_GUI_SCALE_4X :4× -STR_GAME_OPTIONS_GUI_SCALE_5X :5× +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}× STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatisoitu tutkimus STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Osallistu automatisoituun tutkimukseen @@ -1090,6 +1087,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musiikki STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Valitse käytettävä musiikkipaketti STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Lisätietoja musiikkipaketista +STR_GAME_OPTIONS_ONLINE_CONTENT :Hae sisältöä +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Tarkista, onko ladattavissa uutta tai päivitettyä sisältöä + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(ei sosiaalisten alustojen integroinnin liitännäisiä asennettuna) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1117,6 +1117,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Pienenn STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Suurenna vaihtokurssia verrattuna puntaan (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Aseta vaihtokurssi valuutallesi verrattuna puntaan (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Erotin: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Valitse erotin valuutallesi + STR_CURRENCY_PREFIX :{LTBLUE}Etuliite: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Valitse alkuliite valuutallesi STR_CURRENCY_SUFFIX :{LTBLUE}Jälkiliite: {ORANGE}{STRING} @@ -1176,10 +1179,10 @@ STR_DISASTER_REDUCED :Vähennetty STR_DISASTER_NORMAL :Tavallinen ###length 4 -STR_SUBSIDY_X1_5 :x1.5 -STR_SUBSIDY_X2 :x2 -STR_SUBSIDY_X3 :x3 -STR_SUBSIDY_X4 :x4 +STR_SUBSIDY_X1_5 :× 1,5 +STR_SUBSIDY_X2 :× 2 +STR_SUBSIDY_X3 :× 3 +STR_SUBSIDY_X4 :× 4 ###length 4 STR_CLIMATE_TEMPERATE_LANDSCAPE :lauhkea maasto @@ -1271,10 +1274,10 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Loputon raha: { STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Salli rajaton rahankäyttö ja estä yritysten konkurssit STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Suurin mahdollinen laina alussa: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Suurin mahdollinen yhtiön ottama laina (ottamatta huomioon inflaatiota) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Enimmäissumma, jonka yritys voi lainata (ottamatta huomioon inflaatiota). Jos tämä on ”ei lainaa”, rahaa ei ole käytettävissä ilman peliskriptiä tai ”loputon raha” -asetusta STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Ei lainaa {RED}Vaatii peliskriptin, joka tarjoaa alkupääoman +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Ei lainaa STR_CONFIG_SETTING_INTEREST_RATE :Korko: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lainan korko; ohjaa myös inflaatiota mikäli käytössä @@ -1307,7 +1310,7 @@ STR_CONFIG_SETTING_RECESSIONS :Lamat: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Mikäli käytössä, taloudellinen lama voi ilmaantua ajoittain. Laman aikana kaikki tuotanto on huomattavasti alhaisempaa (palautuu normaalille tasolle laman päätyttyä) STR_CONFIG_SETTING_TRAIN_REVERSING :Estä junien kääntyminen asemilla: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Mikäli käytössä, junat eivät käänny läpiajettavilla asemilla vaikka kääntymisen jälkeen saatavilla olisi lyhempi reitti +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Mikäli käytössä, junat eivät käänny läpiajettavilla asemilla vaikka kääntymisen jälkeen tarjolla olisi lyhempi reitti STR_CONFIG_SETTING_DISASTERS :Onnettomuudet: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ottaa käyttöön onnettomuudet jotka saattavat ajoittain estää tai tuhota liikennettä tai infrastruktuuria @@ -1355,7 +1358,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Mäkien jyrkkyy STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Mäkien jyrkkyys ajoneuvoille. Korkeammat arvot tekevät mäkien nousemisesta vaikeampaa STR_CONFIG_SETTING_FORBID_90_DEG :90 asteen käännökset kielletty junilta: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 asteen käännöksiä esiintyy kun vaakasuuntaista rataa seuraa pystysuuntainen rata viereisellä ruudulla, tämä vaatii junan kääntymään 90 astetta ruutujen reunalla normaalin 45 asteen sijasta. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 asteen käännöksiä esiintyy, kun vaakasuuntaista raidetta seuraa välittömästi pystysuuntainen raidepala viereisessä ruudussa, jolloin juna joutuu kääntymään 90 astetta kulkiessaan ruudun reunan yli muiden raideyhdistelmien tavanomaisen 45 asteen sijaan STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Salli ei-vierekkäisten asemien yhdistäminen: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Mahdollistaa aseman osien rakentamisen vaikka ne eivät olisi kosketuksissa olemassaoleviin aseman osiin painamalla Ctrl-näppäintä rakennettaessa @@ -1467,7 +1470,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Yhtiön väri a STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Valitse yhtiön aloitusväri STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Yhtiön toissijainen väri alussa: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Valitse yhtiön toissijainen aloitusväri käytettäessä NewGRF:ää, joka mahdollistaa sen. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Valitse yhtiön toissijainen aloitusväri käytettäessä NewGRF:ää, joka mahdollistaa sen STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Lentokentät eivät vanhene: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Mikäli käytössä, kaikki lentokenttätyypit ovat saatavilla ikuisesti niiden julkistamisen jälkeen @@ -1487,30 +1490,33 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Varoita, jos ku STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Mikäli käytössä, uutisviesti lähetetään, jos kulkuneuvo ei ole tuottanut rahaa vuoden aikana STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Mikäli käytössä, uutisviesti lähetetään, jos kulkuneuvo ei ole tuottanut rahaa jakson aikana +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Varoita, jos kulkuneuvo on tulossa vanhaksi: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Mikäli käytössä, uutisviesti lähetetään, jos kulkuneuvo on tulossa vanhaksi + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Kulkuneuvot eivät vanhene: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Mikäli käytössä, kaikki kulkuneuvot ovat saatavilla ikuisesti niiden julkistamisen jälkeen STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Ajanlasku: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Valitse pelin aikayksiköt. Tätä ei voi muuttaa myöhemmin.{}{}Kalenteripohjainen on klassinen OpenTTD-kokemus, jossa vuosi koostuu 12 kuukaudesta ja jokaisessa kuukaudessa on 28–31 päivää.{}{}Seinäkellopohjaisessa ajassa sen sijaan kulkuneuvojen liikkuminen, rahdin tuotanto ja talous perustuvat yhden minuutin askeliin, mikä on suunnilleen yhtä pitkä aika kuin 30 päivän kuukausi kalenteripohjaisessa tilassa. Nämä on ryhmitelty 12 minuutin jaksoihin, jotka vastaavat vuotta kalenteripohjaisessa tilassa.{}{}Kummassakin tilassa on aina myös klassinen kalenteri, jota käytetään kulkuneuvojen sekä talojen ja muun infrastruktuurin käyttöönottoajankohtiin. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Valitse pelin aikayksiköt. Tätä ei voi muuttaa myöhemmin.{}{}Kalenteripohjainen on klassinen OpenTTD-kokemus, jossa vuosi koostuu 12 kuukaudesta ja jokaisessa kuukaudessa on 28–31 päivää.{}{}Seinäkellopohjaisessa ajassa sen sijaan rahdin tuotanto ja talous perustuvat yhden minuutin askeliin, mikä on suunnilleen yhtä pitkä aika kuin 30 päivän kuukausi kalenteripohjaisessa tilassa. Nämä on ryhmitelty 12 minuutin jaksoihin, jotka vastaavat vuotta kalenteripohjaisessa tilassa.{}{}Kummassakin tilassa on aina myös klassinen kalenteri, jota käytetään kulkuneuvojen sekä talojen ja muun infrastruktuurin käyttöönottoajankohtiin ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalenteri STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Seinäkello STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minuuttia vuodessa: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Valitse minuuttien määrä kalenterivuodessa. Oletusarvo on 12 minuuttia. Aseta arvoksi 0, jos et halua kalenteriajan muuttuvan. Tämä asetus ei vaikuta pelin taloussimulaatioon, ja se on valittavissa vain seinäkelloaikaa käytettäessä. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Valitse minuuttien määrä kalenterivuodessa. Oletusarvo on 12 minuuttia. Aseta arvoksi 0, jos et halua kalenteriajan muuttuvan. Kalenterivuoden pidentäminen hidastaa kulkuneuvojen, talojen ja muun infrastruktuurin käyttöönottoa. Se ei vaikuta kulkuneuvojen nopeuteen eikä taloussimulaatioon inflaatiota lukuun ottamatta. Tämä asetus on valittavissa vain seinäkelloaikaa käytettäessä STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (kalenteriaika jäädytetty) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Skaalaa taajamarahdin tuotantoa: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skaalaa kuntien tuottaman rahdin määrää tällä prosenttiluvulla. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skaalaa kuntien tuottaman rahdin määrää tällä prosenttiluvulla STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Skaalaa teollisuusrahdin tuotantoa: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skaalaa tuotantolaitosten tuottaman rahdin määrää tällä prosenttiluvulla. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skaalaa tuotantolaitosten tuottaman rahdin määrää tällä prosenttiluvulla STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}{NBSP}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Uudista kulkuneuvo automaattisesti, kun se vanhenee: {STRING} -STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Mikäli käytössä, lähellä käyttöikänsä loppua oleva kulkuneuvo korvataan automaattisesti +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Mikäli käytössä, lähellä käyttöikänsä loppua oleva kulkuneuvo korvataan automaattisesti uudistamisehtojen täyttyessä STR_CONFIG_SETTING_AUTORENEW_MONTHS :Uudista automaattisesti {STRING} STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Suhteellinen ikä, jonka jälkeen kulkuneuvo voidaan uudistaa automaattisesti @@ -1522,10 +1528,10 @@ STR_CONFIG_SETTING_AUTORENEW_MONEY :Vähimmäisraha STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Vähimmäisrahamäärä, jonka on jäätävä pankkiin kulkuneuvoja automaattisesti uudistettaessa STR_CONFIG_SETTING_ERRMSG_DURATION :Virheilmoitusten näyttöaika: {STRING} -STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Aika virheilmoitusten näyttämiseen punaisessa ikkunassa. Huomaa, että jotkut (kriittiset) virheilmoitukset eivät sulkeudu automaattisesti tämän ajan jälkeen, vaan ne on suljettava käsin +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Aika virheilmoitusten näyttämiseen punaisessa ikkunassa. Huomaa, että jotkin (kriittiset) virheilmoitukset eivät sulkeudu automaattisesti tämän ajan jälkeen, vaan ne on suljettava käsin STR_CONFIG_SETTING_HOVER_DELAY :Näytä työkaluvihjeet: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Viive ennen työkaluvihjeen näyttämistä, kun hiiren kursoria pidetään käyttöliittymäelementin päällä. Vaihtoehtoisesti työkaluvihjeen saa myös näkymiin painamalla hiiren oikeata painiketta, kun arvoksi on määritetty 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Viive ennen työkaluvihjeen näyttämistä, kun hiiren osoitinta pidetään käyttöliittymäelementin päällä. Vaihtoehtoisesti työkaluvihjeen saa myös näkyviin painamalla hiiren oikeaa painiketta, kun arvoksi on määritetty 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Pidä hiirtä päällä {COMMA} millisekunti{P 0 "" a} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Hiiren oikea painike @@ -1537,8 +1543,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Viivojen paksuu STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Viivan leveys kuvaajissa. Ohut viiva on tarkasti luettavissa kun taas paksumpi viiva on helpompi nähdä ja sen värit ovat helpommin havaittavissa STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Näytä NewGRF:n nimi kulkuneuvoikkunassa: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Lisää kulkuneuvovalikoimaikkunaan rivin, joka kertoo mistä NewGRF:stä valittu kulkuneuvo on peräisin. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Näytä kulkuneuvojen kuljetettavissa olevat rahdit listaikkunoissa {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Lisää kulkuneuvovalikoimaikkunaan rivin, joka kertoo mistä NewGRF:stä valittu kulkuneuvo on peräisin +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Näytä kulkuneuvojen kuljetettavissa olevat rahdit listaikkunoissa: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Mikäli käytössä, kuljetettavissa oleva rahti näytetään kulkuneuvolistoissa kulkuneuvon yllä STR_CONFIG_SETTING_LANDSCAPE :Maasto: {STRING} @@ -1557,13 +1563,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Teollisuuden m STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Määritä, kuinka paljon teollisuutta tulisi luoda ja millä tasolla teollisuuden tulisi pysytellä pelin aikana STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Suurin sallittu etäisyys kartan reunoilta öljyteollisuudelle: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Öljynjalostamojen ja öljynporauslauttojen suurin etäisyys kartan reunasta. Saarikartoilla tämä takaa sen, että ne ovat lähellä rannikkoa. Yli 256 ruudun kartoilla tämä arvo suhteutetaan kartan kokoon. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Öljynjalostamojen ja öljynporauslauttojen suurin etäisyys kartan reunasta. Saarikartoilla tämä takaa sen, että ne ovat lähellä rannikkoa. Yli 256 ruudun kartoilla tämä arvo suhteutetaan kartan kokoon STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Lumirajan korkeus: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Säätää lumirajan korkeutta pohjoisessa maastossa. Lumi vaikuttaa myös teollisuuslaitosten luontiin ja kuntien kasvuedellytyksiin. Voidaan muuttaa vain skenaariomuokkaimessa, lasketaan muutoin ”lumen peiton” perusteella STR_CONFIG_SETTING_SNOW_COVERAGE :Lumen peitto: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Säätää lumen määrän suuruusluokkaa pohjoisessa maastossa. Lumi vaikuttaa myös teollisuuslaitosten luontiin ja kuntien kasvuedellytyksiin. Käytetään vain karttaa luotaessa. Merenpinnan tasolla sijaitsevat ruudut ja rannikkoruudut ovat aina lumettomat. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Säätää lumen määrän suuruusluokkaa pohjoisessa maastossa. Lumi vaikuttaa myös teollisuuslaitosten luontiin ja kuntien kasvuedellytyksiin. Käytetään vain karttaa luotaessa. Merenpinnan tasolla sijaitsevat ruudut ja rannikkoruudut ovat aina lumettomat STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}{NBSP}% STR_CONFIG_SETTING_DESERT_COVERAGE :Aavikon peitto: {STRING} @@ -1571,7 +1577,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Säätele aavik STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}{NBSP}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Maaston epätasaisuus: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Määritä mäkien muoto ja tiheys. Tasaisessa maastossa mäkiä on vähemmän ja ne ovat laajempia, kun taas epätasaisessa maastossa on useampia pienempiä mäkiä. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Määritä mäkien muoto ja tiheys. Tasaisessa maastossa mäkiä on vähemmän ja ne ovat laajempia, kun taas epätasaisessa maastossa on useampia pienempiä mäkiä ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Erittäin tasainen STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Tasainen @@ -1579,7 +1585,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Epätasainen STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Erittäin epätasainen STR_CONFIG_SETTING_VARIETY :Maaston vaihtelu: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Valitse, onko kartalla sekä vuoristoisia että tasaisia alueita. Mitä suurempi on vaihtelu, sitä suurempia ovat korkeuserot vuoristoisten ja tasaisten alueiden välillä. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Valitse, onko kartalla sekä vuoristoisia että tasaisia alueita. Mitä suurempi on vaihtelu, sitä suurempia ovat korkeuserot vuoristoisten ja tasaisten alueiden välillä STR_CONFIG_SETTING_RIVER_AMOUNT :Jokien määrä: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Valitse, kuinka paljon jokia luodaan @@ -1626,7 +1632,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tummanvihreä STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violetti STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Rahtivirtapeitteen värit: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Aseta rahtivirtapeitteen väriteema. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Aseta rahtivirtapeitteen väriteema ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Vihreästä punaiseen (alkup.) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Vihreästä siniseen @@ -1673,7 +1679,7 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Valitse tapa, j STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Pois käytöstä STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Kaksoisnapsautus STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Yksi napsautus (kun kohdistettuna) -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Yksi napsautus (välitön) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Yksi napsautus (välittömästi) STR_CONFIG_SETTING_USE_RELAY_SERVICE :Käytä välityspalvelua: {STRING} STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Jos yhteyden muodostaminen palvelimeen epäonnistuu, yhteys voidaan muodostaa välityspalvelun kautta. ”Ei koskaan” estää tämän, ”kysy” kysyy ensin, ”salli” sallii kysymättä. @@ -1747,10 +1753,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pidä rakennust STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Pidä siltojen, tunneleiden, jne. rakennustyökalut käytössä käytön jälkeen STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Poista automaattisesti opastimia rautateitä rakennettaessa: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Poista automaattisesti opastimia, jos ne ovat rautatien rakentamisen tiellä. Huomaa, että tämä saattaa johtaa junien yhteentörmäyksiin. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Poista automaattisesti opastimia, jos ne ovat rautatien rakentamisen tiellä. Huomaa, että tämä saattaa johtaa junien yhteentörmäyksiin STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Nopeutetun pelin enimmäisnopeus: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Yläraja pelin nopeudelle, kun pelin nopeutus on käytössä. 0 = ei rajoitusta (niin nopeasti kuin tietokoneesi sallii). Alle 100 %:n arvot hidastavat peliä. Yläraja riippuu tietokoneesi ominaisuuksista ja voi vaihdella pelistä riippuen. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Yläraja pelin nopeudelle, kun pelin nopeutus on käytössä. 0 = ei rajoitusta (niin nopeasti kuin tietokoneesi sallii). Alle 100 %:n arvot hidastavat peliä. Yläraja riippuu tietokoneesi ominaisuuksista ja voi vaihdella pelistä riippuen STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM} % pelin normaalinopeudesta ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Ei rajoitusta (niin nopeasti kuin koneesi sallii) @@ -1814,11 +1820,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Sallii tietokon STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Operaatiokoodien määrä ennen skriptin pysäyttämistä: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Suurin sallittu määrä laskutoimituksia, jonka skripti voi suorittaa yhden vuoron aikana STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Skriptikohtainen muistinkäyttö enintään: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Kuinka paljon muistia yksittäinen skripti saa käyttää, ennen kuin se pakotetaan lopettamaan. Jos kartta on iso, tätä arvoa voi joutua suurentamaan. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Kuinka paljon muistia yksittäinen skripti saa käyttää, ennen kuin se pakotetaan lopettamaan. Jos kartta on iso, tätä arvoa voi joutua suurentamaan STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Huoltovälit ovat prosentteina: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Kun tämä on valittuna, kulkuneuvot yrittävät mennä huoltoon niiden luotettavuuden laskettua annetun prosenttiosuuden verran enimmäisluotettavuudesta.{}{}Jos esimerkiksi kulkuneuvon enimmäisluotettavuus on 90 % ja huoltoväli 20 %, kulkuneuvo pyrkii huoltoon luotettavuuden laskettua 72 %:iin. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Kun tämä on valittuna, kulkuneuvot yrittävät mennä huoltoon niiden luotettavuuden laskettua annetun prosenttiosuuden verran enimmäisluotettavuudesta.{}{}Jos esimerkiksi kulkuneuvon enimmäisluotettavuus on 90 % ja huoltoväli 20 %, kulkuneuvo pyrkii huoltoon luotettavuuden laskettua 72 %:iin STR_CONFIG_SETTING_SERVINT_TRAINS :Junien oletushuoltoväli: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Määritä oletushuoltoväli uusille junille, mikäli kulkuneuvolle ei ole määritelty erillistä huoltoväliä @@ -1828,7 +1834,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Lentokoneiden o STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Määritä oletushuoltoväli uusille lentokoneille, mikäli kulkuneuvolle ei ole määritelty erillistä huoltoväliä STR_CONFIG_SETTING_SERVINT_SHIPS :Laivojen oletushuoltoväli: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Määritä oletushuoltoväli uusille laivoille, mikäli kulkuneuvolle ei ole määritelty erillistä huoltoväliä -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Päivä{P 0 "" s}/Minuutti{P 0 "" s}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}vuorokau{P 0 si tta} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}minuutti{P 0 "" a} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Pois käytöstä @@ -1836,7 +1846,7 @@ STR_CONFIG_SETTING_NOSERVICE :Poista huollot STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Mikäli käytössä, kulkuneuvoja ei huolleta, jos ne eivät voi rikkoutua STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Alennettu lastausnopeus asemaa pitemmille junille: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Mikäli käytössä, rautatieasemaa pitemmät junat kuormataan asemalle kokonaan mahtuvia hitaammin. Tämä asetus ei vaikuta reittien laskentaan. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Mikäli käytössä, rautatieasemaa pitemmät junat kuormataan asemalle kokonaan mahtuvia hitaammin. Tämä asetus ei vaikuta reittien laskentaan STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ota käyttöön vaunujen nopeusrajoitukset: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Mikäli käytössä, vaunujen nopeusrajoitusta käytetään junan maksiminopeuden määrittämisessä @@ -1901,13 +1911,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Vuosi, josta al STR_CONFIG_SETTING_STARTING_YEAR :Aloitusvuosi: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Pistelaskun päättymisvuosi: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Pelin päättymisvuosi pisteiden laskemista varten. Tämän vuoden lopussa talletetaan yhtiön pistemäärä ja näytetään ennätysluettelo; pelaajat voivat jatkaa pelaamista tämän jälkeenkin.{}Jos päättymisvuosi on ennen alkamisvuotta, ennätyksiä ei näytetä koskaan. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Pelin päättymisvuosi pisteiden laskemista varten. Tämän vuoden lopussa talletetaan yhtiön pistemäärä ja näytetään ennätysluettelo; pelaajat voivat jatkaa pelaamista tämän jälkeenkin.{}Jos päättymisvuosi on ennen alkamisvuotta, ennätyksiä ei näytetä koskaan STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Ei koskaan STR_CONFIG_SETTING_ECONOMY_TYPE :Talouden laji: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Tasaisessa taloudessa tuotanto muuttuu useammin, ja pienemmissä askeleissa, kuin alkuperäisessä. Jäädytetty talous estää tuotantomuutokset ja laitosten sulkeutumiset. Tämä asetus ei välttämättä vaikuta, jos teollisuustyypit tulevat NewGRF:stä. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Tasaisessa taloudessa tuotanto muuttuu useammin, ja pienemmissä askeleissa, kuin alkuperäisessä. Jäädytetty talous estää tuotantomuutokset ja laitosten sulkeutumiset. Tämä asetus ei välttämättä vaikuta, jos teollisuustyypit tulevat NewGRF:stä ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Alkuperäinen STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Tasainen @@ -1962,7 +1972,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Sallittu STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Sallittu, oma tiekaava STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Taajamarahdin luonti: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Talojen tuottaman rahdin määrä suhteessa kunnan asukaslukuun.{}Neliöllinen kasvu: Kaksinkertainen asukasmäärä tuottaa matkustajia nelinkertaisesti.{}Lineaarinen kasvu: Kaksinkertainen asukasmäärä tuottaa matkustajia kaksinkertaisesti. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Talojen tuottaman rahdin määrä suhteessa kunnan asukaslukuun.{}Neliöllinen kasvu: Kaksinkertainen asukasmäärä tuottaa matkustajia nelinkertaisesti.{}Lineaarinen kasvu: Kaksinkertainen asukasmäärä tuottaa matkustajia kaksinkertaisesti ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Neliöllinen (alkuperäinen) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineaarinen @@ -2003,7 +2013,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Korkein käytettävä sprite-resoluutio: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Rajoita suurinta spriteille käytettävää resoluutiota. Resoluution rajoittaminen estää korkean tarkkuuden grafiikoiden käyttämisen vaikka niitä olisi saatavilla. Tämä voi auttaa pitämään pelin ulkoasun yhtenäisenä käytettäessä sekaisin GRF-tiedostoja, joista osalla on ja osalla ei ole korkean tarkkuuden grafiikoita. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Rajoita suurinta spriteille käytettävää resoluutiota. Resoluution rajoittaminen estää korkean tarkkuuden grafiikoiden käyttämisen, vaikka niitä olisi saatavilla. Tämä voi auttaa pitämään pelin ulkoasun yhtenäisenä käytettäessä sekaisin GRF-tiedostoja, joista osassa on ja osassa ei ole korkean tarkkuuden grafiikoita ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4× STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2× @@ -2027,33 +2037,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Kasvukerroin al STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Kaupunkien keskimääräinen koko suhteessa muihin kuntiin pelin alussa STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Yhteyskuvaajan päivitysväli: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Yhteyskuvaajan uudelleenlaskentojen välinen aika. Jokainen uudelleenlaskenta laskee suunnitelmat kuvaajan yhdelle osalle. Tämän asetuksen arvo X ei siis tarkoita, että koko kuvaaja päivittyisi X sekunnin välein, vaan ainoastaan sen yksi osa. Mitä lyhyemmäksi asetat tämän ajan, sitä enemmän suoritinaikaa kuluu laskentaan. Mitä pitemmäksi asetat ajan, sitä pitempään kestää rahdin jakautumisen alkaminen uusille reiteille. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Yhteyskuvaajan uudelleenlaskentojen välinen aika. Jokainen uudelleenlaskenta laskee suunnitelmat kuvaajan yhdelle osalle. Tämän asetuksen arvo X ei siis tarkoita, että koko kuvaaja päivittyisi X sekunnin välein, vaan ainoastaan sen yksi osa. Mitä lyhyemmäksi asetat tämän ajan, sitä enemmän suoritinaikaa kuluu laskentaan. Mitä pitemmäksi asetat ajan, sitä pitempään kestää rahdin jakautumisen alkaminen uusille reiteille STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Käytä {STRING} yhteyskuvaajan uudelleenlaskentaan -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Yhteyskuvaajan kunkin osan uudelleenlaskentaan käytettävä aika. Uudelleenlaskennan alkaessa käynnistetään säie, jonka annetaan toimia näin monta sekuntia. Mitä lyhyemmäksi asetat tämän ajan, sitä todennäköisemmin säie ei ehdi päättymään ajoissa, jolloin peli pysähtyy (”jumii”) säikeen valmistumiseen asti. Mitä pitemmäksi asetat ajan, sitä pitempään rahdin jakautumisen päivittyminen kestää reittien muuttuessa. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Yhteyskuvaajan kunkin osan uudelleenlaskentaan käytettävä aika. Uudelleenlaskennan alkaessa käynnistetään säie, jonka annetaan toimia näin monta sekuntia. Mitä lyhyemmäksi asetat tämän ajan, sitä todennäköisemmin säie ei ehdi päättymään ajoissa, jolloin peli pysähtyy (”jumii”) säikeen valmistumiseen asti. Mitä pitemmäksi asetat ajan, sitä pitempään rahdin jakautumisen päivittyminen kestää reittien muuttuessa STR_CONFIG_SETTING_DISTRIBUTION_PAX :Matkustajien jakautuminen: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :”Symmetrinen” tarkoittaa, että suunnilleen sama määrä matkustajia kulkee asemalta A asemalle B kuin asemalta B asemalle A. ”Epäsymmetrinen” tarkoittaa, että matkustajia voi kulkea mielivaltainen määrä kumpaankin suuntaan. ”Manuaalinen” tarkoittaa, että automaattista jakautumista ei sovelleta matkustajiin. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :”Symmetrinen” tarkoittaa, että suunnilleen sama määrä matkustajia kulkee asemalta A asemalle B kuin asemalta B asemalle A. ”Epäsymmetrinen” tarkoittaa, että matkustajia voi kulkea mielivaltainen määrä kumpaankin suuntaan. ”Manuaalinen” tarkoittaa, että automaattista jakautumista ei sovelleta matkustajiin STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Postin jakautuminen: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :”Symmetrinen” tarkoittaa, että suunnilleen sama määrä postia kulkee asemalta A asemalle B kuin asemalta B asemalle A. ”Epäsymmetrinen” tarkoittaa, että postia voi kulkea mielivaltainen määrä kumpaankin suuntaan. ”Manuaalinen” tarkoittaa, että automaattista jakautumista ei sovelleta postiin. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :”Symmetrinen” tarkoittaa, että suunnilleen sama määrä postia kulkee asemalta A asemalle B kuin asemalta B asemalle A. ”Epäsymmetrinen” tarkoittaa, että postia voi kulkea mielivaltainen määrä kumpaankin suuntaan. ”Manuaalinen” tarkoittaa, että automaattista jakautumista ei sovelleta postiin STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Arvokuljetusten jakautuminen: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Arvokuljetuksiin kuuluvat arvotavarat lauhkeassa ilmastossa, timantit subtrooppisessa ilmastossa ja kulta pohjoisessa ilmastossa. NewGRF:t voivat kuitenkin muuttaa näitä rahteja. ”Symmetrinen” tarkoittaa, että suunnilleen sama määrä rahtia lähetetään asemalta A asemalle B kuin asemalta B asemalle A. ”Epäsymmetrinen” tarkoittaa, että tätä rahtia lähetetään mielivaltainen määrä kumpaankin suuntaan. ”Manuaalinen” tarkoittaa, että automaattista jakautumista ei sovelleta tähän rahtiin. Suositeltavia asetuksia ovat ”epäsymmetrinen” tai ”manuaalinen” pelattaessa pohjoisessa tai subtrooppisessa ilmastossa, sillä näissä pankit ottavat ainoastaan vastaan rahtia. Lauhkeassa ilmastossa pelatessa voidaan myös valita ”symmetrinen”, sillä pankit myös lähettävät arvotavaroita takaisin lähtöpankille. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Arvokuljetuksiin kuuluvat arvotavarat lauhkeassa ilmastossa, timantit subtrooppisessa ilmastossa ja kulta pohjoisessa ilmastossa. NewGRF:t voivat kuitenkin muuttaa näitä rahteja. ”Symmetrinen” tarkoittaa, että suunnilleen sama määrä rahtia lähetetään asemalta A asemalle B kuin asemalta B asemalle A. ”Epäsymmetrinen” tarkoittaa, että tätä rahtia voidaan lähettää mielivaltainen määrä kumpaankin suuntaan. ”Manuaalinen” tarkoittaa, että automaattista jakautumista ei sovelleta tähän rahtiin. Suositeltavia asetuksia ovat ”epäsymmetrinen” tai ”manuaalinen” pelattaessa pohjoisessa tai subtrooppisessa ilmastossa, sillä näissä pankit ottavat ainoastaan vastaan rahtia. Lauhkeassa ilmastossa pelatessa voidaan myös valita ”symmetrinen”, sillä pankit myös lähettävät arvotavaroita takaisin lähtöpankille STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Muiden rahtityyppien jakautuminen: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :”Epäsymmetrinen” tarkoittaa, että rahtia lähetetään mielivaltainen määrä kumpaankin suuntaan. ”Manuaalinen” tarkoittaa, että automaattista jakautumista ei sovelleta näihin rahteihin. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :”Epäsymmetrinen” tarkoittaa, että rahtia voidaan lähettää mielivaltainen määrä kumpaankin suuntaan. ”Manuaalinen” tarkoittaa, että automaattista jakautumista ei sovelleta näihin rahteihin ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuaalinen STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :epäsymmetrinen STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrinen STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Jakautumisen tarkkuus: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mitä suuremmaksi tämä asetus on määritetty, sitä enemmän prosessoriaikaa yhteyskuvaajan laskemiseen kuluu. Mikäli tähän kuluu liian paljon aikaa, saatat havaita pelin nykimistä. Jos arvo on määritetty liian pieneksi, jakauman laskeminen ei ole tarkka ja rahtia ei välttämättä lähetetä odotetuille asemille. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mitä suuremmaksi tämä asetus on määritetty, sitä enemmän prosessoriaikaa yhteyskuvaajan laskemiseen kuluu. Mikäli tähän kuluu liian paljon aikaa, saatat havaita pelin nykimistä. Jos arvo on määritetty liian pieneksi, jakauman laskeminen ei ole tarkkaa, ja rahtia ei välttämättä lähetetä odotettuihin paikkoin STR_CONFIG_SETTING_DEMAND_DISTANCE :Välimatkan vaikutus kysyntään: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Mikäli asetuksen arvo on määritelty suuremmaksi kuin 0, alkuperäisen aseman A ja mahdollisen määränpään B välimatkalla on vaikutus A:sta B:hen lähetetyn rahdin määrään. Mitä kauempana B on A:sta, sitä vähemmän rahtia lähetetään. Mitä suuremmaksi tämä asetus on määritetty, sitä vähemmän rahtia lähetetään kaukana oleville ja enemmän lähellä oleville asemille. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Mikäli tämä arvo on asetettu suuremmaksi kuin 0, rahdin lähtöaseman A ja mahdollisen määränpään B välimatka vaikuttaa A:sta B:hen lähetetyn rahdin määrään. Mitä kauempana B on A:sta, sitä vähemmän rahtia lähetetään. Mitä suurempi tämän asetuksen arvo on, sitä vähemmän rahtia lähetetään kaukana oleville asemille ja sitä enemmän lähellä oleville STR_CONFIG_SETTING_DEMAND_SIZE :Palautettavan rahdin määrä symmetrisessä tilassa: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Mikäli asetuksen arvoksi on määritetty alle 100{NBSP}%, symmetrinen jakauma toimii enemmän epäsymmetrisen jakauman tavoin, ja vähemmän rahtia pakotetaan lähetettäväksi takaisin alkuperäiselle asemalle. Jos arvoksi määritetään 0{NBSP}%, symmetrinen jakauma toimii täysin epäsymmetrisen jakauman tavoin. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Mikäli asetuksen arvoksi on määritetty alle 100{NBSP}%, symmetrinen jakauma toimii enemmän epäsymmetrisen jakauman tavoin, ja vähemmän rahtia pakotetaan lähetettäväksi takaisin alkuperäiselle asemalle. Jos arvoksi määritetään 0{NBSP}%, symmetrinen jakauma toimii täysin epäsymmetrisen jakauman tavoin STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Lyhyiden reittien kuormittuminen ennen vapaampien reittien käyttämistä: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Kahden aseman välillä on usein useita reittejä. Lyhintä reittiä käytetään ensisijaisesti, toiseksi lyhintä ensimmäisen kuormittuessa ja niin edelleen. Kuormitus määritellään arvioidun kapasiteetin ja suunnitellun käytön mukaan. Kaikkien reittien ollessa kuormittuneita reittejä aletaan ylikuormittaa, suurimman kapasiteetin omaavista reiteista aloittaen. Algoritmi ei kuitenkaan aina arvioi kapasiteettia oikein. Tämä asetus mahdollistaa reitin kuormitustason määrittämisen ennen seuraavan reitin käyttämistä. Määritä arvoksi vähemmän kuin 100{NBSP}% välttääksesi ylikuormittuneita asemia, jos kapasiteetti yliarvioidaan. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Kahden aseman välillä on usein useita reittejä. Lyhintä reittiä käytetään ensisijaisesti, toiseksi lyhintä ensimmäisen kuormittuessa ja niin edelleen. Kuormitus määritellään arvioidun kapasiteetin ja suunnitellun käytön mukaan. Kaikkien reittien ollessa kuormittuneita reittejä aletaan ylikuormittaa, suurimman kapasiteetin omaavista reiteistä aloittaen. Useimmiten algoritmi ei kuitenkaan arvioi kapasiteettia tarkasti. Tämä asetus mahdollistaa reitin kuormitustason määrittämisen ennen seuraavan reitin käyttämistä. Määritä arvoksi vähemmän kuin 100{NBSP}% välttääksesi ylikuormittuneita asemia, jos kapasiteetti yliarvioidaan STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Nopeuden yksikkö (maaliikenne): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Nopeuden yksikkö (vesiliikenne): {STRING} @@ -2128,17 +2138,8 @@ STR_CONFIG_SETTING_AI :Kilpailijat STR_CONFIG_SETTING_AI_NPC :Tietokonepelaajat STR_CONFIG_SETTING_NETWORK :Verkko -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Junien käyttämä reitinetsijä: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Junien käyttämä reitinetsijä -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Ajoneuvojen käyttämä reitinetsijä: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Ajoneuvojen käyttämä reitinetsijä -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Laivojen käyttämä reitinetsijä: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Laivojen käyttämä reitinetsijä STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automaattinen kääntyminen opastimilla: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Sallii junien kääntymisen opastimen edessä pitkän odotusajan jälkeen -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Suositeltu) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Muuta asetusarvo @@ -2204,7 +2205,7 @@ STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Avaa pis STR_INTRO_TOOLTIP_HELP :{BLACK}Tutustu dokumentaatioon ja online-resursseihin STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Avaa asetukset STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Avaa NewGRF-asetukset -STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tarkista uutta ja päivitettyä sisältöä ladattavaksi +STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tarkista, onko ladattavissa uutta tai päivitettyä sisältöä STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Avaa tekoälyasetukset STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Avaa peliskriptiasetukset STR_INTRO_TOOLTIP_QUIT :{BLACK}Lopeta OpenTTD @@ -2362,7 +2363,7 @@ STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY :Vain kutsutut # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Moninpeli STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Pelaajan nimi -STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Pelaajat tunnistetaan ja erotetaan toisistaan nimien avulla +STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Nimi, jolla muut pelaajat tunnistavat sinut STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nimi STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Pelin nimi @@ -2374,9 +2375,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kartan k STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kartan koko{}Valitse lajitellaksesi koon mukaan STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Päiväys STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Nykyinen päivämäärä -STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}h {NUM}min +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}{NBSP}h {NUM}{NBSP}min STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Peliaika -STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Peliaika, kun peli{}ei ollut pysäytettynä +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Pelaamisaika, kun{}peli ei ole ollut pysäytettynä STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Kieli, palvelimen versio, jne. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Napsauta peliä luettelossa valitaksesi @@ -2392,7 +2393,7 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Palveli STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Kutsukoodi: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Aloitusvuosi: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Päivämäärä: {WHITE}{DATE_SHORT} -STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Peliaika: {WHITE}{NUM}h {NUM}min +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Peliaika: {WHITE}{NUM}{NBSP}h {NUM}{NBSP}min STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Peliskripti: {WHITE}{STRING} (v.{NBSP}{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Salasanasuojattu! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}PALVELIN KIINNI @@ -2457,7 +2458,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Haetaan STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Pura yhteys STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Palvelin on suojattu. Anna salasana -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Yhtiö on suojattu. Anna salasana # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Kytkeytyneet pelaajat @@ -2484,6 +2484,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Pelaajanimesi STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Tähän asiakkaaseen kohdistettavat ylläpitotoiminnot STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Tähän yhtiöön kohdistettavat ylläpitotoiminnot STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Liity tähän yhtiöön +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Salli tämän asiakkaan liittyä yhtiöösi STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Lähetä tälle pelaajalle viesti STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Lähetä viesti kaikille tämän yhtiön pelaajille STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Lähetä viesti kaikille katsojille @@ -2506,13 +2507,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Välitys STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Potki STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Estä STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Poista -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Poista salasanalukitus STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Ylläpitäjän toiminta STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Haluatko varmasti potkia pelaajan ”{STRING}” pelistä? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Haluatko varmasti estää pelaajan ”{STRING}”? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Haluatko varmasti poistaa yhtiön ”{COMPANY}”? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Haluatko varmasti nollata yhtiön ”{COMPANY}” salasanan? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Käytetäänkö välityspalvelua? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Yhteyden muodostaminen sinun ja palvelimen ”{STRING}” välille epäonnistui.{}Haluatko, että tämä istunto välitetään välityspalvelimen ”{STRING}” kautta? @@ -2529,19 +2528,9 @@ STR_NETWORK_ASK_SURVEY_YES :Osallistun STR_NETWORK_SPECTATORS :Katsojat -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Älä tallenna syötettyä salasanaa -STR_COMPANY_PASSWORD_OK :{BLACK}Anna yhtiölle uusi salasana -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Yhtiön salasana -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Yhtiön oletussalasana -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Käytä tätä yhtiön salasanaa oletuksena uusissa yhtiöissä - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Liity STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Liity ja pelaa tässä yhtiössä -STR_COMPANY_VIEW_PASSWORD :{BLACK}Salasana -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Salasanalla voit suojata yhtiösi, jotta kukaan vieras ei pääse liittymään -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Aseta yhtiön salasana # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Lähetä @@ -2570,6 +2559,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Et ole a STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Et ole asettanut palvelimesi nimeä. Nimen voi asettaa moninpeli-ikkunan ylälaidassa. STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Tämän asiakkaan versio ei vastaa palvelimen versiota STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Väärä salasana +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Et ole sallittujen asiakkaiden listalla STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Palvelin on täynnä STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Sinut on estetty palvelimelta STR_NETWORK_ERROR_KICKED :{WHITE}Sinut potkittiin pihalle palvelimelta @@ -2585,7 +2575,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Pelaajan STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mahdollinen yhteyden menetys STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Viimeisen {NUM} sekunnin{P "" ""} aikana palvelimelta ei ole vastaanotettu tietoja -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :yleinen virhe STR_NETWORK_ERROR_CLIENT_DESYNC :tahdistusvirhe STR_NETWORK_ERROR_CLIENT_SAVEGAME :karttaa ei voitu ladata @@ -2597,6 +2587,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :vastaanotettiin STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :väärä revisio STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nimi on jo käytössä STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :väärä salasana +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :ei sallittujen listalla STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :väärä company-id DoCommandissa STR_NETWORK_ERROR_CLIENT_KICKED :palvelin potki pihalle STR_NETWORK_ERROR_CLIENT_CHEATER :yritti käyttää huijausta @@ -2781,15 +2772,15 @@ STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Yksiraiteisen r STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglevin rakentaminen STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Rakenna rautatietä. Ctrl+napsautus poistaa rautatietä. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Rakenna rautatietä automaattisesti valittuun suuntaan. Ctrl+napsautus poistaaksesi rautatietä. Paina lisäksi vaihtonäppäintä näyttääksesi vain kustannusarvion +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Rakenna rautatietä automaattisesti valittuun suuntaan. Ctrl+napsautus poistaaksesi rautatietä. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Rakenna junavarikko (junien ostamista ja huoltoa varten). Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Rakenna reittipiste rautatielle. Ctrl+napsautus valitsee toisen reittipisteen, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Rakenna reittipiste rautatielle. Ctrl+napsautus valitsee toisen reittipisteen, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Rakenna rautatieasema. Ctrl+napsautus valitsee toisen aseman, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Rakenna opastin rautatielle. Ctrl+napsautus rakentaa vaihtoehtoista opastintyyliä{}Napsautus+veto täyttää valitun rataosuuden opastimilla määrätyin välein. Ctrl+napsautus+veto täyttää seuraavaan risteykseen, asemaan tai opastimeen asti. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Rakenna rautatiesilta. Painettaessa Shift näyttää vain kustannusarvion +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Rakenna rautatiesilta. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Rakenna rautatietunneli. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Rautatien, opastimien, reittipisteiden ja asemien rakentaminen/poisto päälle/pois. Ctrl+napsautus poistaa myös reittipisteiden ja asemien raiteet -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Muunna/päivitä raidetyyppi. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Muunna tai päivitä raidetyyppi. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_RAIL_NAME_RAILROAD :Rautatie STR_RAIL_NAME_ELRAIL :Sähköistetty rautatie @@ -2802,7 +2793,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Valitse # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Reittipiste -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Valitse reittipisteen tyyppi # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Rautatieaseman valinta @@ -2815,8 +2805,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Valitse STR_STATION_BUILD_DRAG_DROP :{BLACK}Vedä ja pudota STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Rakenna asema vetämällä ja pudottamalla -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Valitse asemaluokka -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Valitse asematyyppi +STR_PICKER_MODE_ALL :Kaikki +STR_PICKER_MODE_ALL_TOOLTIP :Valitse, näytetäänkö kohteet kaikista luokista +STR_PICKER_MODE_USED :Käytössä +STR_PICKER_MODE_USED_TOOLTIP :Valitse, näytetäänkö vain olemassa olevat kohteet +STR_PICKER_MODE_SAVED :Tallennettu +STR_PICKER_MODE_SAVED_TOOLTIP :Valitse, näytetäänkö vain tallennetut kohteet + +STR_PICKER_STATION_CLASS_TOOLTIP :Valitse näytettävä asemien luokka +STR_PICKER_STATION_TYPE_TOOLTIP :Valitse rakennettavan aseman tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Valitse näytettävä reittipisteiden luokka +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Valitse rakennettava reittipiste. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Valitse näytettävä linja-autopysäkkien luokka +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Valitse rakennettavan linja-autopysäkin tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Valitse näytettävä lastauslaitureiden luokka +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Valitse rakennettavan lastauslaiturin tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista +STR_PICKER_OBJECT_CLASS_TOOLTIP :Valitse näytettävä objektien luokka +STR_PICKER_OBJECT_TYPE_TOOLTIP :Valitse rakennettavan objektin tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_PICKER_HOUSE_CLASS_TOOLTIP :Valitse näytettävä kunnan vyöhyke +STR_PICKER_HOUSE_TYPE_TOOLTIP :Valitse rakennettavan talon tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista + +STR_HOUSE_PICKER_CAPTION :Talojen valinta + +STR_HOUSE_PICKER_CLASS_ZONE1 :Reuna-alueet +STR_HOUSE_PICKER_CLASS_ZONE2 :Laitamat +STR_HOUSE_PICKER_CLASS_ZONE3 :Ulommat lähiöt +STR_HOUSE_PICKER_CLASS_ZONE4 :Sisemmät lähiöt +STR_HOUSE_PICKER_CLASS_ZONE5 :Keskusta STR_STATION_CLASS_DFLT :Oletus STR_STATION_CLASS_DFLT_STATION :Oletusasema @@ -2865,25 +2880,27 @@ STR_BRIDGE_TUBULAR_SILICON :Putkirakenne, p # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Tien rakentaminen STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Raitiotien rakentaminen -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Rakenna tieosuus. Ctrl+napsautus poistaa tieosuuden. Paina lisäksi vaihtonäppäintä näyttääksesi vain kustannusarvion -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Rakenna raitiotietä. Ctrl+napsautus poistaa raitiotieosuuden. Paina lisäksi vaihtonäppäintä näyttääksesi vain kustannusarvion. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Rakenna tieosuus automaattisesti valittuun suuntaan. Ctrl vaihtaa rakennus-/poistotilan välillä. Shift vaihtaa rakennustilan ja kustannusarvion välillä -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Rakenna raitiotieosuus automaattisesti valittuun suuntaan. Ctrl+napsautus poistaa raitiotieosuuden. Paina lisäksi vaihtonäppäintä näyttääksesi vain kustannusarvion -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Rakenna ajoneuvovarikko (ajoneuvojen ostamista ja huoltoa varten). Painettaessa Shift näyttää vain kustannusarvion -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Rakenna raitiotievarikko (vaunujen ostamiseen ja korjaamiseen). Painettaessa Shift näyttää vain kustannusarvion -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Rakenna linja-autoasema. Ctrl+napsautus liittää asemat. Painettaessa Shift näyttää vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Rakenna tieosuus. Ctrl+napsautus poistaa tieosuuden. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Rakenna raitiotietä. Ctrl+napsautus poistaa raitiotieosuuden. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Rakenna tieosuus automaattisesti valittuun suuntaan. Ctrl+napsautus poistaa tieosuuden. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Rakenna raitiotieosuus automaattisesti valittuun suuntaan. Ctrl+napsautus poistaa raitiotieosuuden. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Rakenna ajoneuvovarikko (ajoneuvojen ostamista ja huoltoa varten). Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Rakenna raitiovaunuvarikko (vaunujen ostamista ja huoltoa varten). Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Rakenna tielle reittipiste. Ctrl+napsautus valitsee toisen reittipisteen, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Rakenna reittipiste raitiotielle. Ctrl+napsautus valitsee toisen reittipisteen, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Rakenna linja-autoasema. Ctrl+napsautus valitsee toisen aseman, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Rakenna raitiotien matkustaja-asema. Ctrl+napsautus valitsee toisen aseman, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Rakenna lastauslaituri. Ctrl+napsautus valitsee toisen aseman, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Rakenna raitiotien rahtiasema. Ctrl+napsautus valitaksesi toisen aseman, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Rakenna lastauslaituri. Ctrl+napsautus valitsee toisen aseman, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Rakenna raitiotien rahtiasema. Ctrl+napsautus valitaksesi toisen aseman, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Ota yksisuuntaiset tiet käyttöön/pois käytöstä STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Rakenna maantiesilta. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Rakenna raitiotiesilta. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Rakenna maantietunneli. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Rakenna raitiotietunneli. Painettaessa Shift näyttää vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Rakenna raitiotietunneli. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Tien rakentaminen/siirtäminen päälle/pois STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Vaihda raitiotien rakentamisen ja purkamisen välillä STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Muunna tai päivitä tien tyyppi. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Muunna tai päivitä raitiotien tyyppi. Painettaessa Shift näyttää vain kustannusarvion +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Muunna tai päivitä raitiotien tyyppi. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_ROAD_NAME_ROAD :Tie STR_ROAD_NAME_TRAM :Raitiotie @@ -2925,7 +2942,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Satama # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Lentokentät -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Rakenna lentokenttä. Ctrl+napsautus valitsee toisen aseman, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Rakenna lentokenttä. Ctrl+napsautus valitsee toisen aseman, johon haluat tämän liitettävän. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Lentokentän valinta @@ -2952,15 +2969,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Aiheutet # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Maastonmuokkaus -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Laske maaruudun kulmaa. Napsautus+veto laskee ensimmäisenä valittua kulmaa ja tasaa valitun alueen tämän kulman uudelle korkeudelle. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä näyttääksesi vain kustannusarvion -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Nosta maaruudun kulmaa. Napsautus+veto nostaa ensimmäisenä valittua kulmaa ja tasaa valitun alueen tämän kulman uudelle korkeudelle. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä näyttääksesi vain kustannusarvion -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Tasoita maata ensimmäisen valitun kulman korkeudelle. Ctrl+napsautus+veto valitsee alueen vinottain. Painettaessa Shift näyttää vain kustannusarvion +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Laske maaruudun kulmaa. Napsautus+veto laskee ensimmäisenä valittua kulmaa ja tasaa valitun alueen tämän kulman uudelle korkeudelle. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Nosta maaruudun kulmaa. Napsautus+veto nostaa ensimmäisenä valittua kulmaa ja tasaa valitun alueen tämän kulman uudelle korkeudelle. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Tasoita maata ensimmäisen valitun kulman korkeudelle. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Osta maata tulevaa käyttöä varten. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektin valinta -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Valitse rakennettava objekti. Ctrl+napsautus+veto valitaksesi alueen vinottain. Painettaessa Shift näyttää vain kustannusarvion -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Valitse rakennettavan objektin luokka STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objektin esikatselu STR_OBJECT_BUILD_SIZE :{BLACK}Koko: {GOLD}{NUM}×{NUM} ruutua @@ -2975,11 +2990,11 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Istuta s STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Satunnaisia puita. STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Istuta puita satunnaisesti maastoon STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Tavallinen -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Istuta yksittäisiä puita vetämällä. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Istuta yksittäisiä puita vetämällä pitkin maisemaa STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Metsikkö -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Istuta pieniä metsiä vetämällä. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Istuta pieniä metsiä vetämällä pitkin maisemaa STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Metsä -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Istuta isoja metsiä vetämällä. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Istuta isoja metsiä vetämällä pitkin maisemaa # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Maanrakennus @@ -3075,7 +3090,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Raitioti STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Rautatien omistaja: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Kunta: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ei mitään -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinaatit: {LTBLUE}{NUM}×{NUM}×{NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinaatit: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Ruudun indeksi: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Rakennettu/peruskorjattu: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Aseman luokka: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Aseman tyyppi: {LTBLUE}{STRING} @@ -3386,10 +3402,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Haluatk STR_GENERATION_PROGRESS :{WHITE}{NUM}{NBSP}% valmiina STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM}/{NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Maailman luominen +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Maaston luominen STR_GENERATION_RIVER_GENERATION :{BLACK}Jokien luominen -STR_GENERATION_TREE_GENERATION :{BLACK}Puiden luominen -STR_GENERATION_OBJECT_GENERATION :{BLACK}Siirtämättömän luominen STR_GENERATION_CLEARING_TILES :{BLACK}Karun ja kivisen alueen luominen +STR_GENERATION_TOWN_GENERATION :{BLACK}Kuntien luominen +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Tuotantolaitosten luominen +STR_GENERATION_OBJECT_GENERATION :{BLACK}Siirtämättömän luominen +STR_GENERATION_TREE_GENERATION :{BLACK}Puiden luominen STR_GENERATION_SETTINGUP_GAME :{BLACK}Valmistellaan peliä STR_GENERATION_PREPARING_TILELOOP :{BLACK}Ajetaan tile-loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Suoritetaan skriptiä @@ -3428,7 +3447,7 @@ STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Käytä STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Ota käyttöön STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Etsi puuttuvaa sisältöä online-palvelusta -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Tarkista löytyykö puuttuvaa sisältöä online-palvelusta +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Tarkista, löytyykö puuttuvaa sisältöä online-palvelusta STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Tiedostonimi: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} @@ -3481,7 +3500,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tien tyyppi STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF muuttujan 60+x parametri (heksadesimaali) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Kohdistetaan spriteä {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Kohdistettava sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Kohdistettava sprite: Toimenpide 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Kohdistettava sprite: Toimenpide 0x5, tyyppi {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Seuraava sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Siirry seuraavaan tavalliseen spriteen; mahdolliset pseudo-, uudelleenväritys- ja fonttispritet ohitetaan; viimeisen spriten jälkeen siirrytään ensimmäiseen STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mene spriteen @@ -3490,6 +3511,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Edelline STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Jatka edelliseen tavalliseen spriteen ja hyppää yli kaikki pseudo-/uudelleenväritetyt/fontti- spritet ja mene loppuun kun päästään ensimmäiseen STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Valitun spriten esitys. Siirrosta ei huomioida tätä spriteä piirrettäessä STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Liikuta spriteä ympäriinsä, muuttaen X- ja Y-sijainteja. Ctrl+napsautus siirtää spriteä kahdeksan yksikköä kerralla. +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Siirros keskitetty @@ -3524,10 +3546,10 @@ STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF-tiedosto, j STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Liian monta NewGRF:ää on ladattu STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Lisäosan {1:STRING} lataaminen staattisena NewGRF:nä lisäosan {2:STRING} kanssa voi johtaa tahdistusvirheisiin STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Odottamaton sprite (sprite {3:NUM}) -STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Tuntematon Action 0-ominaisuus {4:HEX} (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Tuntematon toimenpiteen 0 ominaisuus {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Yritys käyttää virheellistä ID:tä (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sisältää korruptoituneen spriten. Kaikki korruptoituneet spritet näkyvät punaisina kysymysmerkkeinä (?) -STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sisältää useita Action 8-merkintöjä (sprite {3:NUM}) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Toimenpide 8 esiintyy moneen kertaan (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Luku pseudo-spriten ohi (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Pyydetyt GRF-resurssit eivät ole saatavilla (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{2:STRING} poisti käytöstä NewGRF:n {1:STRING} @@ -3598,7 +3620,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Siirry e STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Syötä kyltin nimi # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Kunnat +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Kunnat ({COMMA}/{COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ei mitään - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (kaupunki){BLACK} ({COMMA}) @@ -3678,7 +3700,7 @@ STR_GOALS_TEXT :{ORANGE}{STRING STR_GOALS_NONE :{ORANGE}- Ei mitään - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Keskitä päänäkymä laitokseen/kuntaan/ruutuun napsauttamalla tavoitetta. Ctrl+napsautus avaa uuden näkymäikkunan laitoksen/kunnan/ruudun sijaintiin. +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Keskitä päänäkymä laitokseen/kuntaan/ruutuun napsauttamalla tavoitetta. Ctrl+napsautus avaa uuden näkymäikkunan laitoksen/kunnan/ruudun sijaintiin # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Kysymys @@ -3713,8 +3735,8 @@ STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Tarjotut STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} välille {STRING} – {STRING}{YELLOW} ({STRING}) STR_SUBSIDIES_NONE :{ORANGE}- Ei mitään - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Käytetyt tuet: -STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} kohteesta {STRING} kohteeseen {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Napsauta kuljetusyhteyttä keskittääksesi päänäkymän tuotantolaitokseen tai kuntaan. Ctrl+napsautus avaa uuden näkymäikkunan laitoksen tai kunnan sijaintiin. +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} välillä {STRING} – {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Napsauta kuljetusyhteyttä keskittääksesi päänäkymän tuotantolaitokseen tai kuntaan. Ctrl+napsautus avaa uuden näkymäikkunan laitoksen tai kunnan sijaintiin STR_SUBSIDIES_OFFERED_EXPIRY_DATE :viimeistään {DATE_SHORT} STR_SUBSIDIES_OFFERED_EXPIRY_TIME :jäljellä {UNITS_MONTHS_OR_MINUTES} STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :{DATE_SHORT} asti @@ -3817,7 +3839,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Estä il STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä reittipisteen sijaintiin. Ctrl+napsautus avaa uuden näkymäikkunan reittipisteen sijaintiin. STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Muuta reittipisteen nimeä -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä poijun sijaintiin. Ctrl+napsautus avaa uuden näkymäikkunan poijun sijaintiin. +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä poijun sijaintiin. Ctrl+napsautus avaa uuden näkymäikkunan poijun sijaintiin STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Vaihda poijun nimeä STR_EDIT_WAYPOINT_NAME :{WHITE}Muokkaa reittipisteen nimeä @@ -3932,7 +3954,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/jakso # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Teollisuuslaitokset +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Laitokset ({COMMA}/{COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ei mitään - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% kuljetettu){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3940,7 +3962,7 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} ja {NUM} muuta -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Teollisuushaarojen nimet – kohdista päänäkymä tuotantolaitokseen napsauttamalla nimeä. Ctrl+napsautus avaa uuden näkymäikkunan laitoksen sijaintiin. +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Teollisuushaarojen nimet – kohdista päänäkymä tuotantolaitokseen napsauttamalla nimeä. Ctrl+napsautus avaa uuden näkymäikkunan laitoksen sijaintiin STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Vastaanotettava rahti: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Tuotettu rahti: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Kaikki rahtityypit @@ -3951,7 +3973,7 @@ STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTR STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Tuotanto viime kuussa: STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Tuotanto viime minuutissa: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}{NBSP}% kuljetettu) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Keskitä päänäkymä tuotantolaitoksen sijaintiin. Ctrl+napsautus avataksesi uuden näkymäikkunan laitoksen sijaintiin. +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Keskitä päänäkymä tuotantolaitoksen sijaintiin. Ctrl+napsautus avataksesi uuden näkymäikkunan laitoksen sijaintiin STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Tuotantotaso: {YELLOW}{COMMA}{NBSP}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Teollisuuslaitos ilmoittaa välittömästä lakkautuksesta! @@ -4021,12 +4043,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Muut ilma-aluks STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Ryhmät – napsauta ryhmää nähdäksesi kaikki kulkuneuvot tässä ryhmässä. Järjestä ryhmiä vetämällä ja pudottamalla. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Ryhmät – napsauta ryhmää nähdäksesi kaikki kulkuneuvot tässä ryhmässä. Järjestä hierarkia vetämällä ja pudottamalla ryhmiä STR_GROUP_CREATE_TOOLTIP :{BLACK}Luo ryhmä STR_GROUP_DELETE_TOOLTIP :{BLACK}Poista valittu ryhmä STR_GROUP_RENAME_TOOLTIP :{BLACK}Nimeä valittu ryhmä STR_GROUP_LIVERY_TOOLTIP :{BLACK}Muuta valitun ryhmän väritystä -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Napsauta suojataksesi tämä ryhmä yleiseltä automaattikorvaukselta. Ctrl+napsautus suojaa myös aliryhmät. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Napsauta suojataksesi tämä ryhmä yleiseltä automaattikorvaukselta. Ctrl+napsautus suojaa myös aliryhmät STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Poista ryhmä STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Haluatko varmasti poistaa tämän ryhmän ja sen alaryhmät? @@ -4113,15 +4135,15 @@ STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Osta ja ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu raideliikenneväline. Vaihto+napsautus näyttää vain kustannusarvion -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu ajoneuvo. Painettaessa Shift näyyää vain kustannusarvion. -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu laiva. Paina lisäksi vaihtonäppäintä näyttääksesi vain kustannusarvion -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu ilma-alus. Painettaessa Shift näyttää vain kustannusarvion +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu ajoneuvo. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu laiva. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu ilma-alus. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu raideliikenneväline. Painettaessa Shift näyttää vain kustannusarvion +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu raideliikenneväline. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu ajoneuvo. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion -STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu laiva. Paina lisäksi vaihtonäppäintä näyttääksesi vain kustannusarvion -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu ilma-alus. Shift+napsautus näyttää vain kustannusarvion +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu laiva. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu ilma-alus. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Nimeä @@ -4214,15 +4236,15 @@ STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kloonaa ###length VEHICLE_TYPES STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Osta kopio junasta kaikkine vaunuineen. Napsauta tätä painiketta ja sen jälkeen junaa varikon sisä- tai ulkopuolella. Ctrl+napsautus jakaa käskyt. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Tämä ostaa kopion ajoneuvosta. Napsauta tätä painiketta ja sen jälkeen ajoneuvoa varikon sisä- tai ulkopuolella. Ctrl+napsautus jakaa käskyt. Painettaessa Shift näyttää vain kustannusarvion +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Tämä ostaa kopion ajoneuvosta. Napsauta tätä painiketta ja sen jälkeen ajoneuvoa varikon sisä- tai ulkopuolella. Ctrl+napsautus jakaa käskyt. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Osta laivan kopio. Napsauta tätä painiketta ja sitten laivaa telakan sisä- tai ulkopuolella. Ctrl+napsautus jakaa komennot. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Osta ilma-aluksen kopio. Napsauta tätä painiketta ja sitten ilma-alusta lentokonehallin sisä- tai ulkopuolella. Ctrl+napsautus jakaa komennot. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion. ###length VEHICLE_TYPES STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Keskitä päänäkymä veturitallin sijaintiin. Ctrl+napsautus avaa uuden näkymäikkunan veturitallin sijaintiin -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Keskitä päänäkymä ajoneuvovarikon sijaintiin. Ctrl+napsautus avaa uuden näkymäikkunan varikon sijaintiin. +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Keskitä päänäkymä ajoneuvovarikon sijaintiin. Ctrl+napsautus avaa uuden näkymäikkunan varikon sijaintiin STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Keskitä päänäkymä telakan sijaintiin. Ctrl+napsautus avaa uuden näkymäikkunan telakan sijaintiin -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Keskitä päänäkymä lentokonehallin sijaintiin. Ctrl+napsautus avaa uuden näkymäikkunan lentokonehallin sijaintiin. +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Keskitä päänäkymä lentokonehallin sijaintiin. Ctrl+napsautus avaa uuden näkymäikkunan lentokonehallin sijaintiin ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Näytä tällä asemalla olevien junien käskyt @@ -4328,10 +4350,10 @@ STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Ctrl+ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä junan sijaintiin. Kaksoisnapsauta seurataksesi junaa päänäkymässä. Ctrl+napsautus avaa uuden näkymäikkunan junan sijaintiin. -STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä ajoneuvon sijaintiin. Kaksoisnapsauta seurataksesi ajoneuvoa päänäkymässä. Ctrl+napsautus avaa uuden näkymäikkunan ajoneuvon sijaintiin. -STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä laivan sijaintiin. Kaksoisnapsauta seurataksesi laivaa päänäkymässä. Ctrl+napsautus avaa uuden näkymäikkunan laivan sijaintiin. -STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä ilma-aluksen sijaintiin. Kaksoisnapsauta seurataksesi ilma-alusta päänäkymässä. Ctrl+napsautus avaa uuden näkymäikkunan ilma-aluksen sijaintiin. +STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä junan sijaintiin. Kaksoisnapsauta seurataksesi junaa päänäkymässä. Ctrl+napsautus avaa uuden näkymäikkunan junan sijaintiin +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä ajoneuvon sijaintiin. Kaksoisnapsauta seurataksesi ajoneuvoa päänäkymässä. Ctrl+napsautus avaa uuden näkymäikkunan ajoneuvon sijaintiin +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä laivan sijaintiin. Kaksoisnapsauta seurataksesi laivaa päänäkymässä. Ctrl+napsautus avaa uuden näkymäikkunan laivan sijaintiin +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Keskitä päänäkymä ilma-aluksen sijaintiin. Kaksoisnapsauta seurataksesi ilma-alusta päänäkymässä. Ctrl+napsautus avaa uuden näkymäikkunan ilma-aluksen sijaintiin ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä juna veturitalliin. Ctrl+napsautus suorittaa vain huollon. @@ -4358,9 +4380,9 @@ STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Sovita i ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Näytä junan käskyt. Ctrl+napsautus näyttää junan aikataulun. -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Näytä ajoneuvon käskyt. Ctrl+napsautus näyttää ajoneuvon aikataulun. -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Näytä laivan käskyt. Ctrl+Click näyttää laivan aikataulun -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Näytä ilma-aluksen käskyt. Ctrl+napsautus näyttää ilma-aluksen aikataulun. +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Näytä ajoneuvon käskyt. Ctrl+napsautus näyttää ajoneuvon aikataulun +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Näytä laivan käskyt. Ctrl+napsautus näyttää laivan aikataulun +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Näytä ilma-aluksen käskyt. Ctrl+napsautus näyttää ilma-aluksen aikataulun ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Näytä junan tiedot @@ -4442,10 +4464,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Siirron arvo: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Huoltoväli: {LTBLUE}{COMMA}{NBSP}vrk{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Huoltoväli: {LTBLUE}{COMMA}{NBSP}minuuttia{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Huoltoväli: {LTBLUE}{COMMA}{NBSP}minuutti{P "" a}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Huoltoväli: {LTBLUE}{COMMA}{NBSP}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Viimeksi huollettu: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Viimeksi huollettu: {LTBLUE}{NUM} minuuttia sitten +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Viimeksi huollettu: {LTBLUE}{NUM} minuutti{P "" a} sitten STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Pidennä huoltoväliä 10 vuorokaudella. Ctrl+napsautus pidentää väliä 5 vuorokaudella STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Pidennä huoltoväliä 5 minuutilla. Ctrl+napsautus pidentää väliä 1 minuutilla STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Pidennä huoltoväliä 10 prosentilla. Ctrl+napsautus pidentää väliä 5 prosentilla @@ -4455,7 +4477,7 @@ STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Lyhennä STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Muuta huoltovälien tyyppiä STR_VEHICLE_DETAILS_DEFAULT :Oletus -STR_VEHICLE_DETAILS_DAYS :Päiviä +STR_VEHICLE_DETAILS_DAYS :Vuorokausia STR_VEHICLE_DETAILS_MINUTES :Minuutteja STR_VEHICLE_DETAILS_PERCENT :Prosentteja @@ -4636,7 +4658,7 @@ STR_ORDER_REFIT_ORDER :(Sovita {STRING STR_ORDER_REFIT_STOP_ORDER :(Sovita rahtityypille {STRING} ja pysähdy) STR_ORDER_STOP_ORDER :(Pysähdy) -STR_ORDER_WAIT_TO_UNBUNCH :(odota suman purkamiseksi) +STR_ORDER_WAIT_TO_UNBUNCH :(Odota suman purkamiseksi) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Asema ei käytettävissä){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4840,8 +4862,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Peliskripti STR_AI_SETTINGS_CLOSE :{BLACK}Sulje STR_AI_SETTINGS_RESET :{BLACK}Palauta STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4894,9 +4914,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Arvioitu STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Tallentaminen käynnissä,{}odota, kunnes se päättyy! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automaattitallennus epäonnistui. STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Asemaa ei voi lukea. -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Tallennus epäonnistui.{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Pelin tallennus epäonnistui… STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Tiedostoa ei voi poistaa. -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Lataus epäonnistui.{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Pelin lataus epäonnistui… STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Sisäinen virhe: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Viallinen tallennus – {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Tallennus on tehty uudemmalla versiolla @@ -4908,7 +4928,7 @@ STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Peli tallennettiin versiossa, joka ei tue raitiovaunuja. Kaikki raitiovaunut on poistettu # Map generation messages -STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Kartan generointi peruutettu...{}... ei kelvollisia kuntien sijainteja +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Kartan luominen peruutettu…{}… ei kelvollisia kuntien sijainteja STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... tässä skenaariossa ei ole yhtään kuntaa STR_ERROR_PNGMAP :{WHITE}Maastoa ei voida ladata PNG-tiedostosta... @@ -4990,7 +5010,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Yhtiöt STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Yhtiön päärakennusta ei voi rakentaa... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kuntia ei voi luoda +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kuntia ei voida luoda… STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kunnan nimeä ei voi vaihtaa... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kuntaa ei voi perustaa tähän... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kuntaa ei voi laajentaa... @@ -5001,6 +5021,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... kart STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Tietyöt ovat käynnissä. STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kuntaa ei voida poistaa...{}Asema tai varikko viittaa kuntaan tai kunnan omistamaa ruutua ei voida poistaa STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... tämän kunnan keskustassa ei ole sopivaa paikkaa patsaalle +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Taloa ei voida rakentaa… # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... liikaa teollisuuslaitoksia @@ -5038,6 +5059,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Lentoken STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Vieressä on useampi kuin yksi olemassaoleva asema tai kuormausalue. STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... asema liian levittäytynyt +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}… raiteiden lukumäärää ei tueta +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}… pituutta ei tueta STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Liian monta asemaa ja lastausaluetta. STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Rautatieasema on jakautunut liian moneen osaan STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Liian monta linja-autopysäkkiä. @@ -5073,11 +5096,14 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Vieress STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Liian lähellä toista reittipistettä STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Junien reittipistettä ei voi rakentaa tähän... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Tien reittipistettä ei voi rakentaa tähän… STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Poijua ei voi sijoittaa tähän... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Reittipisteen nimeä ei voi muuttaa... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Junien reittipistettä ei voi poistaa... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Tien reittipistettä ei voi poistaa tästä… STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Rautatien reittipiste täytyy poistaa ensin +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Tien reittipiste täytyy poistaa ensin STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... poiju on tiellä STR_ERROR_BUOY_IS_IN_USE :{WHITE}... poiju on toisen yhtiön käytössä! @@ -5273,10 +5299,15 @@ STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... kulk STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}… kaikki kulkuneuvot eivät ole identtisiä -STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Yhtään kulkuneuvoa ei ole saatavilla +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Yhtään kulkuneuvoa ei ole käytettävissä STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Muuta NewGRF-asetuksiasi STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Kulkuneuvoja ei ole vielä saatavilla -STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Aloita peli {DATE_SHORT} jälkeen tai käytä NewGRF:ää joka tarjoaa aikaisempia kulkuneuvoja +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Aloita uusi peli {DATE_SHORT} jälkeen tai käytä NewGRF:ää, joka tarjoaa varhaisia kulkuneuvoja + +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Yhtään kunnan rakennettavissa olevaa tietyyppiä ei ole käytettävissä +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Muuta NewGRF-asetuksia +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Kunnan rakennettavissa olevia tietyyppejä ei ole vielä saatavilla +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Aloita uusi peli {DATE_SHORT} jälkeen tai käytä NewGRF:ää, joka tarjoaa varhaisia kunnan rakennettavissa olevia tietyyppejä # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Junaa ei voi pakottaa jatkamaan punaisen opastimen ohi... @@ -5320,6 +5351,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Ei ole n STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Tämä lentokone ei voi laskeutua tälle helikopterikentälle STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Tämä helikopteri ei voi laskeutua tälle lentokentälle STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Rautatien reittipistettä ei ole +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Tien reittipistettä ei ole STR_ERROR_NO_BUOY :{WHITE}Poijua ei ole # Timetable related errors @@ -5807,6 +5839,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}000 +STR_CURRENCY_SHORT_MEGA :{NBSP}milj. +STR_CURRENCY_SHORT_GIGA :{NBSP}mrd. +STR_CURRENCY_SHORT_TERA :{NBSP}bilj. + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5823,6 +5860,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/french.txt b/src/lang/french.txt index c998cbc777..0dc6089eb3 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -309,7 +309,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}En activ STR_BUTTON_DEFAULT :{BLACK}Défaut STR_BUTTON_CANCEL :{BLACK}Annuler STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Attention{NBSP}: Les administrateurs du serveur pourraient lire tout texte entré ici. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :²&é"'(-è_çà)= azertyuiop^$qsdfghjklmù*? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Lonxitude: {NUM} @@ -439,6 +438,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Saír do editor STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Saír +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Xerar vilas +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Colocar casas + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Opcións do xogo @@ -629,7 +631,7 @@ STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Amosar p # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Lenda das gráficas da compañía -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Pincha aquí para amosar/ocultar a entrada da compañía na gráfica +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Amosar/ocultar o gráfico desta compañía # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Cadro da liga de compañías @@ -792,7 +794,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Deserto STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Neve -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Amosar/ocultar nomes das cidades no mapa +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Amosar/ocultar nomes das vilas no mapa STR_SMALLMAP_CENTER :{BLACK}Centrar o minimapa na posición actual STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -801,9 +803,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Desactivar todo STR_SMALLMAP_ENABLE_ALL :{BLACK}Activar todo STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostrar cota +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Amosar nomes das industrias STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Non mostrar industrias no mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostrar tódalas industrias no mapa STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Amosar/ocultar mapa de cotas do terreo +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Alternar a visibilidade dos nomes das industrias STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Non amosar as propiedades de ningunha compañía no mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Amosar as propiedades de tódalas compañías no mapa STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Non amosa ningunha carga no mapa @@ -957,18 +961,14 @@ STR_GAME_OPTIONS_VOLUME :Volume STR_GAME_OPTIONS_SFX_VOLUME :Efectos de son STR_GAME_OPTIONS_MUSIC_VOLUME :Música -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades monetarias STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selección de unidades monetarias STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Libra esterlina STR_GAME_OPTIONS_CURRENCY_USD :Dólar americano STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1012,6 +1012,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Rupia India STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonesia STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malaio STR_GAME_OPTIONS_CURRENCY_LVL :Lats letón +STR_GAME_OPTIONS_CURRENCY_PTE :Escudo portugués STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autogravado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecciona o intervalo entre autogravados @@ -1054,15 +1055,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marca esta caixa para escalar os biseles segundo o tamaño da interface STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Usar a fonte tradicional dos sprites -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marca esta opción se prefires usar a fonte tradicional de tamaño fixo dos sprites. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marca esta opción se prefires usar a fonte tradicional de tamaño fixo dos sprites STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Suavizar fontes -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marca esta opción para suavizar as fontes redimensionables. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marca esta opción para suavizar as fontes redimensionables -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Enquisa automática STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participar nunha enquisa automática @@ -1091,6 +1088,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conxunto STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecciona o conxunto de música base a empregar STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre o conxunto de música base +STR_GAME_OPTIONS_ONLINE_CONTENT :Obter contido +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Comprobar contido novo e actualizado para descargar + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(non hai instalado ningún complemento para integrar con plataformas sociais) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1118,6 +1118,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Disminu STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Incrementa-la cantidade da túa moeda por unha Libra esterlina (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{G=n}{BLACK}Configura-lo cambio da túa moeda por unha Libra esterlina (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Separador: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Configurar o separador da túa moeda + STR_CURRENCY_PREFIX :{LTBLUE}Prefixo: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Configura-lo prefixo para a túa moeda STR_CURRENCY_SUFFIX :{LTBLUE}Sufixo: {ORANGE}{STRING} @@ -1272,10 +1275,10 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Cartos infinito STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Permite o gasto ilimitado e desactiva a bancarrota das compañías STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Crédito máximo inicial: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Cantidade máxima de cartos que unha compañía pode pedir (sen ter en conta a inflación) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Cantidade máxima de cartos que unha compañía pode pedir (sen ter en conta a inflación). Se se configura "Sen prestamo", non haberá cartos dispoñibles a non ser que os proporcione un script de xogo ou a configuración de "cartos infinitos" STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Non hai empréstitos. {RED}Require dun script do xogo para ter fondos iniciais +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Sen empréstitos. STR_CONFIG_SETTING_INTEREST_RATE :Taxa de interés: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :A taxa de interés do préstamo; controla tamén a inflación, se está activada @@ -1356,7 +1359,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Inclinación da STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Inclinación dun cadro en pendente para un vehículo de carretera. Valores máis elevados dificultan ascender unha colina STR_CONFIG_SETTING_FORBID_90_DEG :Prohibir xiros de 90° a trens: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Os xiros de 90 graos ocorren cando unha vía horizontal vai seguida directamente dun tramo vertical no cadro adxancete, facendo que o tren vire 90 graos cando pasa o límite do cadro en vez dos 45 graos habituais noutras combinacións de vías. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Os xiros de 90 graos ocorren cando unha vía horizontal vai seguida directamente dun tramo vertical no cadro adxancete, facendo que o tren vire 90 graos cando pasa o límite do cadro en vez dos 45 graos habituais noutras combinacións de vías STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permitir a unión de estacións non adxacentes {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite engadir partes a unha estación sen que estén en contacto directo coas partes existente facendo Ctrl+Clic ao colocar as partes novas @@ -1468,7 +1471,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Cor inicial da STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Escolle a cor inicial da túa compañía STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Cor secundaria inicial da compañía: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Escoller a cor secundaria de inicio da compañía, se utilizas un NewGRF que o permita. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Escoller a cor secundaria de inicio da compañía, se utilizas un NewGRF que o permita STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Os aeroportos nunca caducan: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Activar esta opción fai que cada tipo de aeroporto siga estando dispoñíbel para sempre dende a súa aparición @@ -1488,26 +1491,29 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisar se os in STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Cando se activa, envíase unha mensaxe cando un vehículo non xerou ningún beneficio durante un ano STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Cando se activa, envíase unha mensaxe cando un vehículo non xerou ningún beneficio durante un período +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Avisar se un vehículo está envellecendo: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Cando se activa, envíase unha mensaxe de novas cando un vehículo vaia envellecendo + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Os vehículos nunca caducan: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Cando se activa, tódolos modelos de vehículos seguen a estar dispoñíbeis para sempre dende a súa aparición STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Cronometraxe: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Selecciona as unidades de cronometraxe do xogo. Isto non se pode mudar despois.{}{}A experiencia clásica de OpenTTD é basada en calendario, cun ano que consite de 12 meses e cada mes ten 28-31 días.{}{}No tempo baseado no reloxo, o movemento dos vehículos, producción de mercadorías e as finanzas baseanse en minutos, sendo o que dura aproximadamente un mes de 30 días no modo de Calendario. Estes agrúpanse en períodos de 12 minutos, equivalente o ano no modo de Calendario.{}{}En ambos modos hai sempre un calendario clásico, que se utiliza para a data de introdución de vehículos, casas e outras infraestruturas. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Selecciona as unidades de cronometraxe do xogo. Isto non se pode mudar despois.{}{}A experiencia clásica de OpenTTD é basada en calendario, cun ano que consite de 12 meses e cada mes ten 28-31 días.{}{}No tempo baseado no reloxo, a producción de mercadorías e as finanzas baseanse en minutos, sendo o que dura aproximadamente un mes de 30 días no modo de Calendario. Estes agrúpanse en períodos de 12 minutos, equivalente o ano no modo de Calendario.{}{}En ambos modos hai sempre un calendario clásico, que se utiliza para a data de introdución de vehículos, casas e outras infraestruturas ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Calendario STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Reloxo STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minutos por ano: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Selecciona o número de minutos dun ano do calendario. Por defecto son 12 minutos. Fíxao en 0 para para conxelar o calendario. Este axuste non afecta a simulación da economía do xogo, e só está dispoñible cando se usa o modo reloxo de cronometraxe. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Selecciona o número de minutos dun ano do calendario. Por defecto son 12 minutos. Fíxao en 0 para para conxelar o calendario. Increemntar a duración do ano do calendario ralentiza a introdución de vehículos, casas e outra infraestrutura. Non afecta a velocidade dos vehículos ou a simulación económica excepto pola inflación. Este axuste só está dispoñible cando se usa o modo reloxo de cronometraxe STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (calendario conxelado) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Escala da produción de mercadorías das vilas: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Escala a produción de mercadorías das vilas nesta porcentaxe. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Escala a produción de mercadorías das vilas nesta porcentaxe STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Escala da produción industrial de mercadorías: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Escala a produción de mercadorías das industrias nesta porcentaxe. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Escala a produción de mercadorías das industrias nesta porcentaxe STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenova-los vehículos cando vaian vellos: {STRING} @@ -1538,8 +1544,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grosor das liñ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Ancho de liña nos gráficos. Unha liña fina lese con máis precisión, unha liña grosa é máis doada de ver e as cores son máis fáciles de distinguir STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Amosar o nome do NewGRF na fiestra de comprar vehículos: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Engade unha liña a fiestra de compra de vehículos, amosando de que NewGRF ven o vehículo. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Amosa as cargas que os vehículos poden levar nas fiestras de listas {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Engade unha liña a fiestra de compra de vehículos, amosando de que NewGRF ven o vehículo +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Amosa as cargas que os vehículos poden levar nas fiestras de listas: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Cando se activa, a carga transportable polo vehículo aparece enriba súa na lista de vehículos STR_CONFIG_SETTING_LANDSCAPE :Paisaxe: {STRING} @@ -1558,13 +1564,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densidade indus STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Establece cantas industrias deben xerarse e que nivel se debe manter durante o xogo STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distancia máxima das refinarías ao borde do mundo: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limita a qué distancia dos bordes do mundo as refinerías e pozos petrolíferos poden construirse. En mapas con illas asegura que estean situadas preto da costa. En mapas maiores de 256 unidades, o valor escálase acorde ao tamaño do mapa. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limita a qué distancia dos bordes do mundo as refinerías e pozos petrolíferos poden construirse. En mapas con illas asegura que estean situadas preto da costa. En mapas maiores de 256 unidades, o valor escálase acorde ao tamaño do mapa STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Cota de neve: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Escolle a que altitude comeza a nevar en paisaxes subárticas. A neve afecta tamén á xeración industrial e aos requirimentos de crecemento dos pobos. Só se pode modificar no Editor de Escenarios ou se non calcúlase a través da "cobertura de neve". STR_CONFIG_SETTING_SNOW_COVERAGE :Cobertura de neve: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Escolle a cantidade aproximada de neve nas paisaxes subárticas. A neve afecta tamén á xeración industrial e aos requirimentos de crecemento dos pobos. Só se usa durante a xeración do mapa. O terreo costeiro e o nivel do mar nunca ten neve. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Escolle a cantidade aproximada de neve nas paisaxes subárticas. A neve afecta tamén á xeración industrial e aos requirimentos de crecemento dos pobos. Só se usa durante a xeración do mapa. O terreo costeiro e o nivel do mar nunca ten neve STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Cobertura do deserto: {STRING} @@ -1572,7 +1578,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Controla a cant STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Desigualdade do terreo (só TerraGenesis) : {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Escolle a forma e frequencia de montes: As paixases suaves teñen menos montes e máis españñados, mentres que as escarpadas teñen máis e pequenos outeiros. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Escolle a forma e frequencia de montes: As paixases suaves teñen menos montes e máis españñados, mentres que as escarpadas teñen máis e pequenos outeiros ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Moi suave STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Suave @@ -1580,7 +1586,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Escabroso STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Moi escabroso STR_CONFIG_SETTING_VARIETY :Distribución da variedade: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Escolle se o mapa contén áreas montañosas ou chás. Canta máis variedade, maiores diferencias en elevación entre as zonas montañosas e chás. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Escolle se o mapa contén áreas montañosas ou chás. Canta máis variedade, maiores diferencias en elevación entre as zonas montañosas e chás STR_CONFIG_SETTING_RIVER_AMOUNT :Cantidade de ríos: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Escolle cantos ríos xerar @@ -1627,7 +1633,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde escuro STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Cores superpostas do fluxo de carga: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Fixa o esquema de cor utilizado para a superposición do fluxo de carga. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Fixa o esquema de cor utilizado para a superposición do fluxo de carga ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Verde a vermello(orixinal) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Verde a azul @@ -1748,10 +1754,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mante-las ferra STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mante-las ferramentas de construción abertas para pontes, túneis, etc. tralo uso STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :orrar automáticamente as sinais durante a construción de ferrocarrís: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Borrar automáticamente as sinais durante a construción de ferrocarrís se as sinais están no medio. Teña en conta que isto pode levar a accidentes de tren. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Borrar automáticamente as sinais durante a construción de ferrocarrís se as sinais están no medio. Teña en conta que isto pode levar a accidentes de tren STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Límite de velocidade do avance rápido: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limite o rápido que vai o xogo cando se activa o avance rápido. 0 = sen límite (tanto como permita o teu equipo). Os valores por debaixo do 100% ralentizan o xogo. O límite superior depende das especificacións do teu ordenador e pode variar dependendo do xogo. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limite o rápido que vai o xogo cando se activa o avance rápido. 0 = sen límite (tanto como permita o teu equipo). Os valores por debaixo do 100% ralentizan o xogo. O límite superior depende das especificacións do teu ordenador e pode variar dependendo do xogo STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% velocidade normal de xogo ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Sen límite (tan rápido como permita o teu equipo) @@ -1829,7 +1835,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo de ma STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Fixa o intervalo de mantemento por defecto para avións novos, o cal se empregará no caso de que non se defina explicitamente un novo intervalo de mantemento para o vehículo STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo de mantemento por defecto para navíos: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Fixa o intervalo de mantemento por defecto para navíos novos, o cal se empregará no caso de que non se defina explicitamente un novo intervalo de mantemento para o vehículo -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Día{P 0 "" s}/Minuto{P 0 "" s}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Día{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minuto{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Desactivado @@ -1837,7 +1847,7 @@ STR_CONFIG_SETTING_NOSERVICE :Deshabilita-lo STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Cando estea activado, os vehículos non teñen mantemento no caso de que non poidan ter avarías STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Penalización na velocidade de carga dos trens máis longos que a estación: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Cando se habilita, os trens que son demasiados longos para a estación cargaranse máis lentamente que un tren que entra na estación. Este axuste non afecta a búsqueda de rutas. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Cando se habilita, os trens que son demasiados longos para a estación cargaranse máis lentamente que un tren que entra na estación. Este axuste non afecta a búsqueda de rutas STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Activa-los límites de velocidade dos vagóns: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Cando estea activado, usar tamén os límites de velocidade dos vagóns para decidir a máxima velocidade do tren @@ -1902,13 +1912,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Ano no que os a STR_CONFIG_SETTING_STARTING_YEAR :Data de comezo: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Ano da puntuación final: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :O ano no que remate o xogo a efectos de puntiacións. Ao final deste ano, gárdase cal é a compañía con máis puntuación e amosase a pantalla de puntuacións, pero os xogadores poden seguir xogando despois disto.{}Se é anterior a data de inicio, a pantalla de puntuacións nunca se amosa. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :O ano no que remate o xogo a efectos de puntiacións. Ao final deste ano, gárdase cal é a compañía con máis puntuación e amosase a pantalla de puntuacións, pero os xogadores poden seguir xogando despois disto.{}Se é anterior a data de inicio, a pantalla de puntuacións nunca se amosa STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nunca STR_CONFIG_SETTING_ECONOMY_TYPE :Tipo de economía: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :A economía suave fai cambios de produción máis a miúdo, e en pequenos pasos. As economías conxeladas paran os cambios de produción e as industrias pechan. Esta configuración non ten efecto se non se provén industrias por un NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :A economía suave fai cambios de produción máis a miúdo, e en pequenos pasos. As economías conxeladas paran os cambios de produción e as industrias pechan. Esta configuración non ten efecto se non se provén industrias por un NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Orixinal STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Suave @@ -1963,7 +1973,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permitido, patrón de estradas personalizado STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Xeración de mercadorías da vila: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Cantidade de mercadorías producidas nas casas da vila, segundo a poboación total da mesma.{}Crecemento cadrático: Unha vila o dobre de grande produce catro veces máis pasaxeiros.{}Linear growth: Unha vila o dobre de grande produce dúas veces máis pasaxeiros. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Cantidade de mercadorías producidas nas casas da vila, segundo a poboación total da mesma.{}Crecemento cadrático: Unha vila o dobre de grande produce catro veces máis pasaxeiros.{}Linear growth: Unha vila o dobre de grande produce dúas veces máis pasaxeiros ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Cadrático (orixinal) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineal @@ -2004,7 +2014,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Resolución máis alta a usar nos sprites: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limite a resolución máxima a usar nos sprites. Limitar a resolución dos sprites impide que se usen os gráficos de alta resolución incluso cando están dispoñibles. Isto axuda o xogo a manter unha apariencia unificada cando se usan distintos arquivos GRF con e sen gráficos de alta resolución. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limite a resolución máxima a usar nos sprites. Limitar a resolución dos sprites impide que se usen os gráficos de alta resolución incluso cando están dispoñibles. Isto axuda o xogo a manter unha apariencia unificada cando se usan distintos arquivos GRF con e sen gráficos de alta resolución ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2028,33 +2038,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador i STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Relación entre o tamaño medio das cidades e o dos pobos ao inicio da partida STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Actualizar o grafo de distribución cada {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tempo entre recálculos sucesivos do grafo de ligazóns. Cada recálculo calcula os plans para un compoñente do grafo. Iso significa que un valor X para esta configuración non significa que o grafo completo sexa actualizado cada X segundos. Só algúns compoñentes o serán. Canto máis curto sexa o tempo establecido, máis tempo de CPU será necesario para calculalo. Canto máis longo sexa o tempo establecido, máis tempo levará ata que a distribución de carga comece a percorrer novas rutas. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tempo entre recálculos sucesivos do grafo de ligazóns. Cada recálculo calcula os plans para un compoñente do grafo. Iso significa que un valor X para esta configuración non significa que o grafo completo sexa actualizado cada X segundos. Só algúns compoñentes o serán. Canto máis curto sexa o tempo establecido, máis tempo de CPU será necesario para calculalo. Canto máis longo sexa o tempo establecido, máis tempo levará ata que a distribución de carga comece a percorrer novas rutas STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Toma {STRING} para o recálculo do gráfico de distribución. -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tempo necesario para cada recalculación dun compoñente do grafo de ligazóns. Cando se inicia unha recalculación, abrese un fío que se pode executar durante este número de segundos. Canto máis curto o establezas, máis probable é que o fío non remate cando se supón que debe facelo. Entón, o xogo detense ata que o fío remata («lag»). Canto máis longo o estabelezas, máis tempo levará actualizar a distribución cando cambien as rutas. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tempo necesario para cada recalculación dun compoñente do grafo de ligazóns. Cando se inicia unha recalculación, abrese un fío que se pode executar durante este número de segundos. Canto máis curto o establezas, máis probable é que o fío non remate cando se supón que debe facelo. Entón, o xogo detense ata que o fío remata («lag»). Canto máis longo o estabelezas, máis tempo levará actualizar a distribución cando cambien as rutas STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modo de distribución para pasaxeiros: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simétrico" significa que máis ou menos o mesmo número de pasaxeiros irán dende a estación A cada a estación B e tamén da B cara a A. "Asimétrico" significa que calquera número de pasaxeiros pode ir en calquera dirección. "manual" significa que non haberá distribución automática para os pasaxeiros. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simétrico" significa que máis ou menos o mesmo número de pasaxeiros irán dende a estación A cada a estación B e tamén da B cara a A. "Asimétrico" significa que calquera número de pasaxeiros pode ir en calquera dirección. "manual" significa que non haberá distribución automática para os pasaxeiros STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modo de distribución para correo: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simétrico" significa que máis ou menos a mesma cantidade de correo vai ser enviada da estación A cara a estación B como da estación B cara a A. "Asimétrico" signigica que calquera cantidade de correo pode ser enviado en calquera dirección. "Manual" significa que non hai distribución automática para o correo. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simétrico" significa que máis ou menos a mesma cantidade de correo vai ser enviada da estación A cara a estación B como da estación B cara a A. "Asimétrico" signigica que calquera cantidade de correo pode ser enviado en calquera dirección. "Manual" significa que non hai distribución automática para o correo STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modo de disitribución para o tipo de mercadoría BLINDADO: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A clase de mercadoría BLINDADA contén obxectos de valor nos clima morno, diamantes no subtropical ou ouro no clima subártico. Os NewGRFs poden cambiar isto. "Simétrico" significa que máis ou menos a mesma cantidade de esta mercadoría será enviadas dende a estación A cara a estación B así como da estación B para a A. "Asimétrico" significa que calquera cantidade de esta mercadoría pode ser enviada en calquera dirección. "manual" significa que non haberá distribución automática para esta mercadoría. Recoméndase elixir asimétrico ou manual cando se xoguen mapas subárticos ou subtropicais, xa que os bancos só reciben carga nestos climas. Para os climas mornos podes escoller simétrico xa que os bancos enviarán carga de volta o banco orixinal. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A clase de mercadoría BLINDADA contén obxectos de valor nos clima morno, diamantes no subtropical ou ouro no clima subártico. Os NewGRFs poden cambiar isto. "Simétrico" significa que máis ou menos a mesma cantidade de esta mercadoría será enviadas dende a estación A cara a estación B así como da estación B para a A. "Asimétrico" significa que calquera cantidade de esta mercadoría pode ser enviada en calquera dirección. "manual" significa que non haberá distribución automática para esta mercadoría. Recoméndase elixir asimétrico ou manual cando se xoguen mapas subárticos ou subtropicais, xa que os bancos só reciben carga nestos climas. Para os climas mornos podes escoller simétrico xa que os bancos enviarán carga de volta o banco orixinal STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Xeito de distribución para outros tipos de mercadoría: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimétrico" significa que calquera cantidade de mercadorías pode ser enviada en calquera dirección. "Manual" significa que non haberá distribución automática para estas mercadorías. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimétrico" significa que calquera cantidade de mercadorías pode ser enviada en calquera dirección. "Manual" significa que non haberá distribución automática para estas mercadorías ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimétrica STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simétrica STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisión da distribución: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Canto máis alto sexa o valor, máis tempo de CPU levará o cálculo de distribución. Se leva demasiado tempo podes experimentar retraso. Se sen embargo o fixas nun valor baixo, a distribución será imprecisa, e pode que a carga non sexa enviada aos destinos que ti queres. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Canto máis alto sexa o valor, máis tempo de CPU levará o cálculo de distribución. Se leva demasiado tempo podes experimentar retraso. Se sen embargo o fixas nun valor baixo, a distribución será imprecisa, e pode que a carga non sexa enviada aos destinos que ti queres STR_CONFIG_SETTING_DEMAND_DISTANCE :Efecto da distancia na demanda: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se o fixas nunha cantidade maior que 0, a distancia entre a estación de orixe A dalgunha carga e o posíbel destino B influirá na cantidade de carga enviada de A a B. Canto máis lonxe estea B de A, menos carga será enviada. Canto máis alto sexa o valor, menos carga será enviada a estacións lonxanas e máis a estacións cercanas. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se o fixas nunha cantidade maior que 0, a distancia entre a estación de orixe A dalgunha carga e o posíbel destino B influirá na cantidade de carga enviada de A a B. Canto máis lonxe estea B de A, menos carga será enviada. Canto máis alto sexa o valor, menos carga será enviada a estacións lonxanas e máis a estacións cercanas STR_CONFIG_SETTING_DEMAND_SIZE :Cantidade de carga a retornar en modo simétrico: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Fixar esta opción a menos do 100% fai que a distribución simétrica se comporte máis coma a asimétrica. Enviarase menos cantidade de carga de volta á forza se unha certa cantidade se envía a unha estación. Se o fixas no 0% a distribución simétrica compórtase coma a asimétrica. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Fixar esta opción a menos do 100% fai que a distribución simétrica se comporte máis coma a asimétrica. Enviarase menos cantidade de carga de volta á forza se unha certa cantidade se envía a unha estación. Se o fixas no 0% a distribución simétrica compórtase coma a asimétrica STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturación de rutas curtas antes de empregar rutas con capacidade: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frecuentemente hai múltiples rutas posíbeis entre dúas estacións dadas. En primero lugar intentarase satura-la ruta máis curta, para posteriormente satura-la segunda máis curta e así sucesivamente. A saturación está determinada por unha estimación de capacidade e uso planificado. Unha vez saturadas tódalas rutas, se aínda queda demanda, sobrecargaranse as rutas comezando por aquelas de maior capacidade. A maior parte das veces, o algoritmo non estimará a capacidade con precisión. Esta opción permite especificar ata que porcentaxe de saturación pode ter unha ruta curta na primeira volta do algoritmo antes de escolle-la seguinte máis curta. Fíxao en menos do 100% para evitar estacións sobrecargadas no caso de que se sobreestime a capacidade. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frecuentemente hai múltiples rutas posíbeis entre dúas estacións dadas. En primero lugar intentarase satura-la ruta máis curta, para posteriormente satura-la segunda máis curta e así sucesivamente. A saturación está determinada por unha estimación de capacidade e uso planificado. Unha vez saturadas tódalas rutas, se aínda queda demanda, sobrecargaranse as rutas comezando por aquelas de maior capacidade. A maior parte das veces, o algoritmo non estimará a capacidade con precisión. Esta opción permite especificar ata que porcentaxe de saturación pode ter unha ruta curta na primeira volta do algoritmo antes de escolle-la seguinte máis curta. Fíxao en menos do 100% para evitar estacións sobrecargadas no caso de que se sobreestime a capacidade STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unidades de velocidade (terra): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Unidade de velocidade (náutica): {STRING} @@ -2129,17 +2139,8 @@ STR_CONFIG_SETTING_AI :Competidores STR_CONFIG_SETTING_AI_NPC :Xogadores da computadora STR_CONFIG_SETTING_NETWORK :Rede -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Buscador de ruta para trens: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Buscador de ruta empregado polos trens -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Buscador de ruta para vehículos de estrada: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Buscador de ruta empregado polos vehículos de estrada -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Buscador de ruta para barcos: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Buscador de ruta empregado polos barcos STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Cambio de sentido automático nos sinais: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permite aos trens cambiar de sentido nun sinal, se agardaron durante moito tempo -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recomendado) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Cambia-lo valor @@ -2458,7 +2459,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Descarga STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconectar STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}O servidor está protexido. Introduce o contrasinal -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A compañía está protexida. Introduce o contrasinal # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Xogadores en liña @@ -2485,6 +2485,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :O teu nome de x STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Accións administrativas a executar neste cliente STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Accións administrativas a executar para esta compañía STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Unirse a esta compañía +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Autorizar a este cliente a unirse a túa compañía STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Envía unha mensaxe a este xogador STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Envía unha mensaxe a todos os xogadores desta compañía STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Enviar unha mensaxe a todos os espectadores @@ -2507,13 +2508,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Vía rel STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Expulsar STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Expulsar permanentemente STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Eliminar -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Desbloquear contrasinal STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Acción administrativa STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Estás seguro de que queres expulsar o xogador '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Estás seguro de que queres expulsar permanentemente o xogador '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Estás seguro de querer borrar a compañía '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Estás seguro de querer restablecer o contrasinal da compañía '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Utilizar relé? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Fallou o establecemento da conexión entre ti e o servidor '{STRING}'.{}Gustaríache retransmitir esta sesión vía '{STRING}'? @@ -2530,19 +2529,9 @@ STR_NETWORK_ASK_SURVEY_YES :Si STR_NETWORK_SPECTATORS :Espectadores -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Non grava-lo contrasinal introducido -STR_COMPANY_PASSWORD_OK :{BLACK}Asignar á compañía o novo contrasinal -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Contrasinal da compañía -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Contrasinal por defecto para a compañía -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Usar o contrasinal desta compañía por defecto para as novas compañías - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Unirse STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Unirse e xogar coma esta compañía -STR_COMPANY_VIEW_PASSWORD :{BLACK}Contrasinal -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Protexe a túa compañía cun contrasinal para evitar que usuarios non autorizados se unan -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Establece o contrasinal da compañía # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Enviar @@ -2571,6 +2560,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Non se e STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Non se estableceu o nome do teu servidor. O nome pode establecerse na parte superior da fiestra de multixogador. STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}A revisión deste cliente non é igual ca revisión do servidor STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Contrasinal incorrecto +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Non estás na lista de clientes permitidos STR_NETWORK_ERROR_SERVER_FULL :{WHITE}O servidor está cheo STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Non se che permite o acceso a este servidor STR_NETWORK_ERROR_KICKED :{WHITE}Chimpáronte da partida @@ -2586,7 +2576,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}O teu no STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Posible perda da conexión STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Nos últimos {NUM} segundo{P "" s} non chegaron datos do servidor -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :erro xeral STR_NETWORK_ERROR_CLIENT_DESYNC :erro de descincronización STR_NETWORK_ERROR_CLIENT_SAVEGAME :no se puido carga-lo mapa @@ -2598,6 +2588,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :recibiuse un pa STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :revisión errónea STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :o nome xa está en uso STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :contrasinal incorrecto +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :non na lista permitida STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :compañía errónea nun DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :chimpado polo servidor STR_NETWORK_ERROR_CLIENT_CHEATER :intentaba usar unha trampa @@ -2803,7 +2794,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Seleccio # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Punto de ruta -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Selecciona-lo tipo de punto de ruta # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Selección da estación @@ -2816,8 +2806,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Seleccio STR_STATION_BUILD_DRAG_DROP :{BLACK}Arrastrar e soltar STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construír estación arrastrando e soltando -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Selecciona a clase de estación a mostrar -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Selecciona o tipo da estación a construir +STR_PICKER_MODE_ALL :Todo +STR_PICKER_MODE_ALL_TOOLTIP :Alternar amosar elementos de todas as clases +STR_PICKER_MODE_USED :Usado +STR_PICKER_MODE_USED_TOOLTIP :Alternar amosar só elementos existentes +STR_PICKER_MODE_SAVED :Gardados +STR_PICKER_MODE_SAVED_TOOLTIP :Alternar amosar só elementos gardados + +STR_PICKER_STATION_CLASS_TOOLTIP :Selecciona unha clase de estación para amosar +STR_PICKER_STATION_TYPE_TOOLTIP :Selecciona un tipo de estación a construír. Ctrl+Click para engadir ou eliminar nos elementos gardados. +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Selecciona unha clase de punto de ruta para amosar +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Selecciona un punto de ruta a construír. Ctrl+Click para engadir ou eliminar nos elementos gardados. +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Selecciona unha clase de estación de autobús para amosar +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Selecciona o tipo de estación de autobuses a construír. Ctrl+Click para engadir ou eliminar nos elementos gardados. +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Selecciona unha clase de estación de carga de camións para amosar. +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Selecciona un tipo de estación de camións a construír. Ctrl+Click para engadir ou eliminar nos elementos gardados. +STR_PICKER_OBJECT_CLASS_TOOLTIP :Selecciona unha clase de obxecto para amosar +STR_PICKER_OBJECT_TYPE_TOOLTIP :Selecciona un tipo de obxecto a construír. Ctrl+Click para engadir ou eliminar nos elementos gardados. Ctrl+Click+Arrastrar para seleccionar a área diagonalmente. Tamén podes premer Shift para amosar unha estimación do custo +STR_PICKER_HOUSE_CLASS_TOOLTIP :Selecciona unha zona da vila para amosar +STR_PICKER_HOUSE_TYPE_TOOLTIP :Selecciona un tipo de casa a construír. Ctrl+Click para engadir ou eliminar nos elementos gardados. + +STR_HOUSE_PICKER_CAPTION :Selección de casas + +STR_HOUSE_PICKER_CLASS_ZONE1 :Borde +STR_HOUSE_PICKER_CLASS_ZONE2 :Periferia +STR_HOUSE_PICKER_CLASS_ZONE3 :Suburbios da periferia +STR_HOUSE_PICKER_CLASS_ZONE4 :Suburbios interiores +STR_HOUSE_PICKER_CLASS_ZONE5 :Centro da vila STR_STATION_CLASS_DFLT :Por defecto STR_STATION_CLASS_DFLT_STATION :Estación por defecto @@ -2872,6 +2887,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Constru STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Construír sección de tranvía usando o modo Auto-tranvía. Ctrl+Click para eliminar o tranvía. Tamén podes premer Shift para amosar unha estimación do custo STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construír depósito de vehículos de estrada (para comprar e dar servizo aos vehículos de estrada). Tamén podes premer Shift para amosar unha estimación do custo STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construír depósito de tranvías (para comprar e dar servizo aos vehículos). Tamén podes premer Shift para amosar unha estimación do custo +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Construír un punto de ruta na estrada. Ctrl+Click para seleccionar outro punto de ruta ao que xuntalo. Tamén podes premer Shift para amosar unha estimación do custo +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Construír un punto de ruta no tranvía. Ctrl+Click para seleccionar outro punto de ruta ao que xuntalo. Tamén podes premer Shift para amosar unha estimación do custo STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Construír estación de autobuses. Ctrl+Clic para seleccionar outra estación a que xuntala. Tamén podes premer Shift para amosar unha estimación do custo STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construír estación de tranvía de pasaxeiros. Ctrl+Clic para seleccionar outra estación a que xuntala. Tamén podes premer Shift para amosar unha estimación do custo STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construír estación de carga de camións. Ctrl+Clic para seleccionar outra estación a que xuntala. Tamén podes premer Shift para amosar unha estimación do custo @@ -2960,8 +2977,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Selección de obxectos -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selecciona o obxecto a construír. Ctrl+Clic+Arrastrar para seleccionar a área diagonalmente. Tamén podes premer Shift para amosar unha estimación do custo -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Selecciona a clase de obxecto a construír STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Previsualización do obxecto STR_OBJECT_BUILD_SIZE :{BLACK}Tamaño: {GOLD}{NUM} x {NUM} cadros @@ -2976,11 +2991,11 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Colocar STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Árbores aleatorias STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantar árbores aleatoriamente sobre a paisaxe STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Planta árbores individuais arrastrando sobre a paisaxe. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Planta árbores individuais arrastrando sobre a paisaxe STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Arboreda -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Planta pequenos bosques arrastrando sobre a paisaxe. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Planta pequenos bosques arrastrando sobre a paisaxe STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Bosque -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantar bosques arrastrando sobre a paisaxe. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantar bosques arrastrando sobre a paisaxe # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Xeración de terreo @@ -3076,7 +3091,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietario da vía ferroviaria: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoridade local: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ningunha -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordeadas: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Índice de cadro: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construído/anovado: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clase de estación: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estación: {LTBLUE}{STRING} @@ -3194,11 +3210,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Imaxes por segundo STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Velocidade de simulación: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Número de ticks do xogo simulados por segundo. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Número de ticks do xogo simulados por segundo STR_FRAMERATE_RATE_BLITTER :{BLACK}Imaxes por segundo: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Número de frames renderizados por segundo. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Número de frames renderizados por segundo STR_FRAMERATE_SPEED_FACTOR :{BLACK}Factor de velocidade do xogo actual: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Como de rápido está a correr o xogo, comparado coa velocidade esperada a unha velocidade de simulación normal. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Como de rápido está a correr o xogo, comparado coa velocidade esperada a unha velocidade de simulación normal STR_FRAMERATE_CURRENT :{WHITE}Actual STR_FRAMERATE_AVERAGE :{WHITE}Media STR_FRAMERATE_MEMORYUSE :{WHITE}Memoria @@ -3387,10 +3403,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Estás STR_GENERATION_PROGRESS :{WHITE}{NUM}% completado STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Xeración do mundo +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Xeración da paisaxe STR_GENERATION_RIVER_GENERATION :{BLACK}Xeración de ríos -STR_GENERATION_TREE_GENERATION :{BLACK}Xeración de árbores -STR_GENERATION_OBJECT_GENERATION :{BLACK}Xeración de obxectos STR_GENERATION_CLEARING_TILES :{BLACK}Xeración de áreas rochosas e escarpadas +STR_GENERATION_TOWN_GENERATION :{BLACK}Xeración de vilas +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Xeración da industria +STR_GENERATION_OBJECT_GENERATION :{BLACK}Xeración de obxectos +STR_GENERATION_TREE_GENERATION :{BLACK}Xeración de árbores STR_GENERATION_SETTINGUP_GAME :{BLACK}Configurando partida STR_GENERATION_PREPARING_TILELOOP :{BLACK}Executando bucle de cadros STR_GENERATION_PREPARING_SCRIPT :{BLACK}Executando script @@ -3482,7 +3501,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de estrada STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parámetro de variable NewGRF 60+x (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aliñar sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Aliñación de sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Aliñación de sprite: Action 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Aliñación de sprite: Action 0x5, type {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Seguinte sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Ir ao sprite seguinte, ignorando pseudosprites, sprites recoloreados e sprites de fonte, e volvendo a empezar ao chegar á fin STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir a sprite @@ -3491,6 +3512,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite a STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ir ao sprite anterior, ignorando pseudosprites, sprites recoloreados e sprites de fonte, e volvendo a empezar ao chegar ao inicio STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representación do sprite seleccionado. A aliñación ignórase ao debuxar este sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move-lo sprite, cambiando os valores de X e Y. Ctrl+Click para movelo sprite oito unidades de golpe. +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Desfase centrado @@ -3599,7 +3621,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir ao r STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Escribe un nome para o rótulo # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Cidades +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Vilas ({COMMA} de {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ningunha - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Vila){BLACK} ({COMMA}) @@ -3727,7 +3749,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Historia STR_STORY_BOOK_SPECTATOR :Álbum global STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Páxina {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Vai a unha páxina específica seleccionandoa nesta lista despregable. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Vai a unha páxina específica seleccionandoa nesta lista despregable STR_STORY_BOOK_PREV_PAGE :{BLACK}Anterior STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ir á páxina anterior STR_STORY_BOOK_NEXT_PAGE :{BLACK}Seguinte @@ -3933,7 +3955,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/período # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrias +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrias ({COMMA} de {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ningunha - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transportado){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4027,7 +4049,7 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}Pincha p STR_GROUP_DELETE_TOOLTIP :{BLACK}Borrar o grupo seleccionado STR_GROUP_RENAME_TOOLTIP :{BLACK}Renomear o grupo seleccionado STR_GROUP_LIVERY_TOOLTIP :{BLACK}Mudar o deseño do grupo seleccionado -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Pincha para protexer a este grupo da autosubstitución global. Ctrl+Click para protexer tamén os subgrupos. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Pincha para protexer a este grupo da autosubstitución global. Ctrl+Click para protexer tamén os subgrupos STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Borrar Grupo STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Seguro que queres borrar este grupo e calquera descendente? @@ -4382,22 +4404,22 @@ STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Esperan STR_VEHICLE_STATUS_CRASHED :{RED}Estrelado! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Avariado STR_VEHICLE_STATUS_STOPPED :{RED}Parado -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Parando, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Parando STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Sen enerxía STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Esperando camiño libre STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Demasiado lonxe do próximo destino -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Dirixíndose a {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Sen ordes, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dirixíndose a {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Dirixíndose a {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Servizo en {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Desamontoarse e ir o servizo en {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Dirixíndose a {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Sen ordes +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Dirixíndose a {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Dirixíndose a {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Servizo en {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Desamontoarse e ir o servizo en {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Non pode chegar a {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Non pode chegar a {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Non pode chegar a {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Non pode chegar a {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Non pode chegar a {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Non pode chegar a {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Non pode chegar a {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Non pode chegar a {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4443,10 +4465,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacida STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Créditos de transferencia: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de servizo: {LTBLUE}{COMMA}{NBSP}días{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Intervalo de servizo: {LTBLUE}{COMMA}{NBSP}minutos{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Intervalo de servizo: {LTBLUE}{COMMA}{NBSP}minuto{P "" s}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalo de servizo: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Último servizo: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Último servizo: {LTBLUE}fai {NUM} minutos +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Último servizo: {LTBLUE}Fai {NUM} minuto{P "" s} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Incrementar o intervalo de servizo en 10 días. Ctrl+Click para incrementar o intervalo de servizo en 5 días. STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Incrementar o intervalo de servizo en 5 minutos. Ctrl+Click para incrementar o intervalo de servizo en 1 minuto STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Incrementar o intervalo de servizo nun 10%. Ctrl+Click para incrementar o intervalo de servizo en 5%. @@ -4611,7 +4633,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Ir ó depósito STR_ORDER_GO_TO_NEAREST_HANGAR :Ir ó hangar máis cercano STR_ORDER_CONDITIONAL :Salto de orde condicional STR_ORDER_SHARE :Comparte as ordes -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Engadir unha nova orde antes da seleccionada ou engadi-la ao final da lista. Ctrl+Clic sobre estacións ordea “Cargar completamente calquera carga”, sobre puntos de ruta ordea sen paradas e sobre depósitos ordea mantemento. Clic noutro vehículo copia as ordes e Ctr+clic as comparte. Unha orde de depósito desactiva o mantemento automático do vehículo +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Engadir unha nova orde antes da seleccionada ou engadi-la ao final da lista. Ctrl+Clic sobre estacións ordea “Cargar completamente calquera carga”, sobre puntos de ruta para invertir a opción "sen paradas por defecto" ou sobre depósitos para "desamontoar". Clic noutro vehículo copia as ordes e Ctr+clic as comparte. Unha orde de depósito desactiva o mantemento automático do vehículo STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Mostrar tódolos vehículos que comparten esta planificación @@ -4841,8 +4863,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script do xogo STR_AI_SETTINGS_CLOSE :{BLACK}Pechar STR_AI_SETTINGS_RESET :{BLACK}Restablecer STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4895,9 +4915,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingreso STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravación en progreso,{}por favor agarda ata que remate! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autogravado fallido STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}No se pode lee-la unidade -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Gravación da partida fallida{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Fallou o gardado da partida... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Non se pode borra-lo arquivo -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Carga da partida fallida{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fallou a carga da partida... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Partida gravada corrupta - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A partida gravouse cunha versión máis nova do xogo @@ -4991,7 +5011,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Non se p STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Non se pode construí-la sede # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Non se poden construír cidades +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Non se poden construír cidades... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Non se pode renomear a cidade... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Non se pode construír a cidade aquí... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Non se pode expandi-la vila @@ -5002,6 +5022,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... non STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obras na estrada en curso STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Non se pode borrar esta vila...{}Unha estación ou depósito está relacionado coa vila ou un cadro propiedade da vila non pode ser eliminado STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... non hai ningún sitio adecuado para unha estatua no centro desta vila +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Non se pode construír a casa... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... demasiadas industrias @@ -5039,6 +5060,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Non se p STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Xunta máis dunha estación/área de carga existente STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... a estación ocupa demasiado +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... número de vías non soportado +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... lonxitude non soportada STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Demasiadas estacións/áreas de carga STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Demasiadas partes de estación de tren STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Demasiadas paradas de autobús @@ -5074,11 +5097,14 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Une mái STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Demasiado preto doutro punto de ruta STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Non se pode construír un punto ruta de tren aí... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Non se poden construír puntos de ruta de estrada aquí... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Non se pode coloca-la boia aquí... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Non se pode cambia-lo nome do punto de ruta... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Non se pode eliminar-lo punto de ruta aquí... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Non se pode eliminar o punto de ruta da estrada de aquí... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Débese retirar primeiro o punto de ruta para trenes +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Debes eliminar o punto de ruta da estrada primeiro STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boia no camiño STR_ERROR_BUOY_IS_IN_USE :{WHITE}... a boia está en uso por outra compañía! @@ -5279,6 +5305,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Cambia a STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Aínda non hai vehículos dispoñíbeis STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Comezar unha partida nova a partires de {DATE_SHORT} ou empregar un NewGRF que proporcione vehículos antigos +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Non hai estradas dispoñibles que as vilas podan construír +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Cambia a túa configuración NewGRF +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Aínda non hai estradas dispoñibles que as vilas podan construír +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Comeza unha nova partida despois do {DATE_SHORT} ou utiliza NewGRF que engadan tipos de estradas que as vilan podan construír antes + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Non se pode facer que o tren rebase un sinal en perigo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}No se pode cambia-lo sentido do tren... @@ -5321,6 +5352,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Non hai STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Este avión non pode aterrar neste heliporto STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Este helicóptero non pode aterrar neste aeroporto STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Non hai punto de ruta da liña férrea +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Non hai punto de ruta na estrada STR_ERROR_NO_BUOY :{WHITE}Non hai boia # Timetable related errors @@ -5808,6 +5840,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}m +STR_CURRENCY_SHORT_GIGA :{NBSP}bn +STR_CURRENCY_SHORT_TERA :{NBSP}tn + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5824,6 +5861,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/german.txt b/src/lang/german.txt index dd691147da..446cc21979 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -265,7 +265,7 @@ STR_UNITS_MONTHS :{NUM}{NBSP}Mona STR_UNITS_MINUTES :{NUM}{NBSP}minute{P "" n} STR_UNITS_YEARS :{NUM}{NBSP}Jahr{P "" e} -STR_UNITS_PERIODS :{NUM}{NBSP}Zeitr{P "aum" "äume"} +STR_UNITS_PERIODS :{NUM}{NBSP}Zykl{P "us" "en"} # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filter: @@ -309,7 +309,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Zeigt au STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Abbrechen STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Warnung: Serveradministratoren können diesen Text einsehen. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :^1234567890ß'€qwertzuiopü+asdfghjklöä#? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Μήκος: {NUM} @@ -364,7 +392,9 @@ STR_SORT_BY_TYPE :Τύπος STR_SORT_BY_TRANSPORTED :Μεταφέρθηκαν STR_SORT_BY_NUMBER :Αριθμός STR_SORT_BY_PROFIT_LAST_YEAR :Κέρδος προηγούμενου χρόνου +STR_SORT_BY_PROFIT_LAST_PERIOD :Κέρδος προηγούμενης περιόδου STR_SORT_BY_PROFIT_THIS_YEAR :Κέρδος τρέχοντος έτους +STR_SORT_BY_PROFIT_THIS_PERIOD :Κέρδος τρέχουσας περιόδου STR_SORT_BY_AGE :Ηλικία STR_SORT_BY_RELIABILITY :Αξιοπιστία STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Συνολική χωρητικότητα ανά τύπο φορτίου @@ -392,9 +422,13 @@ STR_SORT_BY_POPULATION :Πληθυσμ STR_SORT_BY_RATING :Εκτίμηση STR_SORT_BY_NUM_VEHICLES :Αριθμός οχημάτων STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Συνολικό κέρδος προηγούμενου έτους +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Συνολικό κέρδος προηγούμενου έτους STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Συνολικό κέρδος τρέχοντος έτους -STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Μέσο κέρδος τελευταίου έτους +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Συνολικό κέρδος τρέχοντος έτους +STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Μέσος όρος κέρδους τελευταίου έτους +STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Μέσος όρος κέρδους προηγούμενης περιόδου STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Μέσος όρος κέρδους τρέχοντος έτους +STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Μέσος όρος κέρδους τρέχουσας περιόδου # Group by options for vehicle list STR_GROUP_BY_NONE :Καμία @@ -408,34 +442,34 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Ανοί ###length 31 STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Παύση παιχνιδιού STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Γρήγορη ταχύτητα παιχνιδιού -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Επιλογές -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Αποθήκευση, εγκατάλειψη, έξοδος -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Εμφάνιση χάρτη -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Εμφάνιση του καταλόγου πόλεων -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Εμφάνιση χρηματοδοτήσεων +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Επιλογές και ρυθμίσεις +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Αποθήκευση, φόρτωση ή εγκατάλειψη παιχνιδιού, έξοδος από το πρόγραμμα +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Εμφάνιση χάρτη, επιπλέον παραθύρου προβολής, ροής εμπορευμάτων ή λίστας πινακίδων +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Εμφάνιση καταλόγου πόλεων ή ίδρυση πόλης +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Εμφάνιση λίστας χρηματοδοτήσεων STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Εμφάνιση λίστας σταθμών της εταιρίας STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Εμφάνιση οικονομικών πληροφοριών εταιρίας STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Εμφάνιση γενικών πληροφοριών της εταιρίας STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Εμφάνιση βιβλίου ιστορίας STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Εμφάνιση λίστας στόχων -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Εμφάνιση γραφημάτων +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Εμφάνιση εταιρικών γραφημάτων και ποσοστών πληρωμής φορτίου STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Εμφάνιση πίνακα κατάταξης των εταιριών -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Χρηματοδοτήστε την κατασκευή νέας βιομηχανίας -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Εμφάνιση λίστας τρένων της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα της λίστας ομάδων/οχημάτων -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Εμφάνιση λίστας με τα οδικά οχήματα της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα της λίστας ομάδων/οχημάτων -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Εμφάνιση λίστας με τα πλοία της εταιρίας. Με Ctrl+Κλικ εναλλάσσει το άνοιγμα της λίστας ομάδων/οχημάτων -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Εμφανίστε λίστα με τα αεροσκάφη της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα της λίστας ομάδων/οχημάτων +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Εμφάνιση λίστας βιομηχανιών ή χρηματοδότηση κατασκευής νέας βιομηχανίας +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Εμφάνιση λίστας με τα τραίνα της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται η εμφάνιση/απόκρυψη των ομάδων οχημάτων +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Εμφάνιση λίστας με τα οδικά οχήματα της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται η εμφάνιση/απόκρυψη των ομάδων οχημάτων +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Εμφάνιση λίστας με τα πλοία της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται η εμφάνιση/απόκρυψη των ομάδων οχημάτων +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Εμφάνιση λίστας με τα αεροσκάφη της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται η εμφάνιση/απόκρυψη των ομάδων οχημάτων STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Μεγέθυνση εικόνας STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Σμίκρυνση εικόνας STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Κατασκευή σιδηροτροχιάς -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Κατασκευάστε δρόμους -STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Κτίσιμο τραχιοδρόμων -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Κατασκευή λιμένων -STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Κατασκευάστε αεροδρόμια -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Ανοίξτε την μπάρα εργαλείων μορφοποίησης εδάφους για ανύψωση/βύθιση γης, δενδροφύτευση, κλπ. +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Κατασκευή δρόμου +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Κατασκευή τροχιοδρόμων +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Κατασκευή υδάτινης διαδρομής +STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Κατασκευή αεροδρομίου +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Ανοίξτε την μπάρα εργαλείων μορφοποίησης εδάφους, δενδροφύτευσης ή τοποθέτησης σήματος STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Εμφάνιση παραθύρου ήχου/μουσικής -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Εμφάνιση τελευταίου μηνύματος/αναφοράς ειδήσεων, επιλογές μηνυμάτων -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Πληροφορίες περιοχής, κονσόλα, αποσφαλμάτωση δέσμης ενεργειών, φωτογραφίες οθόνης, περί του OpenTTD +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Εμφάνιση τελευταίου μηνύματος/αναφοράς ειδήσεων, ιστορικό μηνυμάτων ή διαγραφή όλων των μηνυμάτων +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Πληροφορίες περιοχής, μενού φωτογραφίιών οθόνης, περί του OpenTTD ή εργαλεία προγραμματιστή STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Εναλλάγη μπαρών εργασίας # Extra tooltips for the scenario editor toolbar @@ -444,16 +478,16 @@ STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Πρόγραμμα Επεξεργασίας Σεναρίου STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Μετακίνηση ημ/νίας εκκίνησης 1 χρόνο πίσω STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Μετακινήστε την ημερομηνία εκκίνησης 1 χρόνο μπροστά -STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Πατήστε εδώ για να εισάγετε την χρονιά έναρξης -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Εμφάνιση χάρτη, καταλόγου πόλεων -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Δημιουργία τοπίου +STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Πατήστε εδώ για να εισαγάγετε την χρονιά έναρξης +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Εμφάνιση χάρτη, επιπλέον παραθύρου προβολής, λίστας πινακίδων ή λίστας πόλεων ή βιομηχανιών +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Εμφάνιση μενού δημιουργίας τοπίου ή δημιουργία νέου κόσμου STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Δημιουργία πόλης STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Δημιουργία βιομηχανίας STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Κατασκευή δρόμου -STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Κατασκευή τροχιάς τραμ -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Φύτευση Δέντρων. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}{BLACK}Κατασκευή τροχιοδρόμου +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Φύτευση Δέντρων. Ctrl+Κλικ για διαγώνια επιλογή περιοχής. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Τοποθέτηση πινακίδας -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Τοποθέτηση αντικειμένου. Ctrl για διαγώνια επιλογή περιοχής. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Τοποθέτηση αντικειμένου. Ctrl+Κλικ για διαγώνια επιλογή περιοχής. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο # Scenario editor file menu ###length 7 @@ -465,6 +499,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Έξοδος α STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Έξοδος +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Δημιουργία πόλεων +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Τοποθέτηση σπιτιών + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Επιλογές παιχνιδιού @@ -472,6 +509,7 @@ STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Ρυθμίσε STR_SETTINGS_MENU_AI_SETTINGS :Ρυθμίσεις AI STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :Ρυθμίσεις σενάριου παιχνιδιού STR_SETTINGS_MENU_NEWGRF_SETTINGS :Ρυθμίσεις NewGRF +STR_SETTINGS_MENU_SANDBOX_OPTIONS :Ρυθμίσεις πεδίου δοκιμών STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Επιλογές διαφάνειας STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Εμφάνιση ονομάτων πόλεων STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Εμφάνιση ονομάτων σταθμών @@ -491,8 +529,8 @@ STR_FILE_MENU_EXIT :Έξοδος # Map menu STR_MAP_MENU_MAP_OF_WORLD :Χάρτης του κόσμου -STR_MAP_MENU_EXTRA_VIEWPORT :Πρόσθετη εμφάνιση -STR_MAP_MENU_LINGRAPH_LEGEND :Υπόμνημα Ροής Φορτίου +STR_MAP_MENU_EXTRA_VIEWPORT :Πρόσθετο παράθυρο προβολής +STR_MAP_MENU_LINGRAPH_LEGEND :Υπόμνημα ροής φορτίου STR_MAP_MENU_SIGN_LIST :Λίστα πινακίδων # Town menu @@ -503,7 +541,7 @@ STR_TOWN_MENU_FOUND_TOWN :Ιδρύση π STR_SUBSIDIES_MENU_SUBSIDIES :Χρηματοδοτήσεις # Graph menu -STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Γράφημα λειτουργικού κέρδους +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Γράφημα λειτουργικών κερδών STR_GRAPH_MENU_INCOME_GRAPH :Γράφημα εισοδήματος STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Γράφημα παραδοθέντος φορτίου STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Γράφημα ιστορικού απόδοσης @@ -551,14 +589,16 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Διαγραφ # About menu STR_ABOUT_MENU_LAND_BLOCK_INFO :Πληροφορίες περιοχής εδάφους +STR_ABOUT_MENU_HELP :Βοήθεια και εγχειρίδια χρήσης STR_ABOUT_MENU_TOGGLE_CONSOLE :Εναλλαγή κονσόλας STR_ABOUT_MENU_AI_DEBUG :Αποσφαλμάτωση AI και δέσμης ενεργειών παιχνιδιού STR_ABOUT_MENU_SCREENSHOT :Στιγμιότυπο οθόνης -STR_ABOUT_MENU_SHOW_FRAMERATE :Εμφάνιση ρυθμού καρέ +STR_ABOUT_MENU_SHOW_FRAMERATE :Ρυθμός εμφάνισης καρέ STR_ABOUT_MENU_ABOUT_OPENTTD :Σχετικά με το 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Ευθυγραμμιστής στοιχεών STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Εναλλαγή πλαισίου οριοθέτησης STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Εναλλαγή χρωματισμού λερωμένων τετραγωνίδιων +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Εναλλαγή περιγραμμάτων γραφικών στοιχείων ###length 31 STR_DAY_NUMBER_1ST :1ος @@ -660,31 +700,35 @@ STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STR STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} -STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Γράφημα Ενεργών Εσόδων +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Γράφημα Λειτουργικών Κερδών STR_GRAPH_INCOME_CAPTION :{WHITE}Γράφημα Εισοδήματος STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Μονάδες φορτίου που παραδόθηκαν STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Ποσοστά απόδοσης εταιρίας (μέγιστη τιμή=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Αξία εταιρίας +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Γράφημα αξίας εταιρίας +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Τελευταία 72 λεπτά STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Ποσοστά Πληρωμής Φορτίων +STR_GRAPH_CARGO_PAYMENT_RATES_DAYS :{TINY_FONT}{BLACK}Ημέρες σε μετάβαση +STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLACK}Δευτερόλεπτα σε μετάβαση STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Πληρωμή για την παράδοση 10 μονάδων (ή 10.000 λίτρων) φορτίου σε απόσταση 20 τετραγώνων STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Ενεργοποιήση όλων STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Απενεργοποιήση όλων STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Εμφάνιση όλων των εμπορευμάτων στο γράφημα πληρωμής εμπορευμάτων STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Εμφάνιση κανενός εμπορευμάτος στο γράφημα πληρωμής εμπορευμάτων -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Εναλλαγή γραφήματος τύπου φορτίου +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Εναλλαγή γραφήματος αυτού του τύπου φορτίου STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Εμφάνιση λεπτομεριών αποδόσεων # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Γραφήματα κλειδιού εταιρίας -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Πατήστε εδώ για εναλλαγή εμφάνισης της εταιρίας στο γράφημα +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Εναλλαγή εμφάνισης γραφήματος της εταιρίας # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Πίνακας Πρωταθλήματος Εταιριών STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Μηχανικός STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Διαχειριστής Κυκλοφορίας STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Συντονιστής Μεταφορών @@ -716,7 +760,11 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Δάνε STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Σύνολο: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Αριθμός οχημάτων που είχαν κέρδη το προηγούμενο έτος. Αυτό περιλαμβάνει οδικά οχήματα, τρένα, πλοία και αεροσκάφη +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Αριθμός οχημάτων που είχαν κέρδη την προηγούμενη περίοδο. Αυτό περιλαμβάνει οδικά οχήματα, τρένα, πλοία και αεροσκάφη STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Αριθμός των πρόσφατα επισκευασμένων σταθμών. Σταθμοί τρένων, στάσεις λεωφορείων, αεροδρόμια, κ.ο.κ. προσμετρώνται ξεχωριστά, ακόμα κι αν ανήκουν στον ίδιο σταθμό. +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Το κέρδος του οχήματος με το χαμηλότερο εισόδημα (λαμβάνονται υπόψη μόνο οχήματα παλαιότερα των δύο ετών) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Το κέρδος του οχήματος με το χαμηλότερο εισόδημα (λαμβάνονται υπόψη μόνο οχήματα παλαιότερα των δύο περιόδων) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Το ποσό των χρημάτων που έγιναν σε ένα τρίμηνο με το μικρότερο κέρδος των τελευταίων 12 τριμήνων STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Το ποσό των χρημάτων που έγιναν σε ένα τρίμηνο με το μεγαλύτερο κέρδος των τελευταίων 12 τριμήνων STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Μονάδες εμπορεύματος που παραδόθηκαν στα τελευταία τέσσερα τρίμηνα @@ -755,7 +803,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Επιλ STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Επιλογή προγράμματος «στυλ μουσικής Ezy Street» STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Επιλογή προγράμματος «Προσαρμοσμένο 1» STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Επιλογή προγράμματος «Προσαρμοσμένο 2» -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Εναλλαγή τυχαίας αναπαραγωγής on/off στο πρόγραμμα +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Εναλλαγή τυχαίας αναπαραγωγής προγράμματος STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Εμφάνιση παραθύρου επιλογής μουσικού κομματιού # Playlist window @@ -766,11 +814,12 @@ STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLA STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Καθαρισμός STR_PLAYLIST_CHANGE_SET :{BLACK}Αλλαγή σετ STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Καθαρισμός τρέχοντος προγράμματος (μόνο Προσαρμοσμένο 1 ή Προσαρμοσμένο 2) -STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Αλλαγή μουσικής επιλογής σε άλλο εγκατεστημένο σετ +STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Αλλαγή μουσικής επιλογής σε άλλο εγκατεστημένο πακέτο STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Πατήστε στο μουσικό κομμάτι για προσθήκη στο τρέχον πρόγραμμα (Προσαρμοσμένο1 ή Προσαρμοσμένο2 μόνο) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Πατήστε στο τραγούδι για να το αφαιρέσετε από το πρόγραμμα (Προσαρμοσμένο 1 ή 2 μόνο) # Highscore window +STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Κορυφαίες εταιρείες STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}, STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Επαγγελματίας STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Πρωτοπόρος @@ -819,7 +868,7 @@ STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Διαδρομές Μεταφορών STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Δάσος STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Σιδηροδρομικός Σταθμός -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Περιοχή Φόρτωσης Φορτηγών +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Σταθμός Φορτηγών STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Στάση Λεωφορείου STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Αεροδρόμιο/Ελικοδρόμιο STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Λιμάνι @@ -837,8 +886,8 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Έρημος STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Χιόνι -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Εναλλαγή ονομάτων πόλεων στον χάρτη -STR_SMALLMAP_CENTER :{BLACK}Κεντράρισμα του μικρού χάρτη στη τρέχουσα θέση +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Εναλλαγή εμφάνισης των ονομάτων πόλεων +STR_SMALLMAP_CENTER :{BLACK}Κεντράρισμα του μικρού χάρτη στην τρέχουσα θέση STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} @@ -846,9 +895,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Απενεργοποίηση όλων STR_SMALLMAP_ENABLE_ALL :{BLACK}Ενεργοποίηση όλων STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Εμφάνιση ύψους +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Εμφάνιση ονομάτων βιομηχανιών STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Εμφάνιση καμίας βιομηχανίας στον χάρτη STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Εμφάνιση όλων των βιομηχανιών στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Εναλλάγη εμφάνισης υψομετρικού χάρτη +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Εναλλαγή εμφάνισης των ονομάτων βιομηχανιών STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Απόκρυψη όλων των ιδιοκτησιών των εταιριών στον χάρτη STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Εμφάνιση όλων των ιδιοκτησιών των εταιριών στον χάρτη STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Απόκρυψη όλων των φορτίων στο χάρτη @@ -863,6 +914,7 @@ STR_STATUSBAR_AUTOSAVE :{RED}ΑΥΤΟΜ STR_STATUSBAR_SAVING_GAME :{RED}* * ΑΠΟΘΗΚΕΥΣΗ ΠΑΙΧΝΙΔΙΟΥ * * STR_STATUSBAR_SPECTATOR :{WHITE}(θεατής) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(άπειρα χρήματα) # News message history STR_MESSAGE_HISTORY :{WHITE}Ιστορικό Μηνυμάτων @@ -902,7 +954,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}Η {STRING} κλείστηκε από τους πιστωτές της και όλα τα περιουσιακά στοιχεία της εκποιήθηκαν! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Ίδρυση νέας εταιρίας μεταφορών! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}Η {STRING} ξεκινά τις κατασκευές κοντά στην πόλη {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Η {STRING} εξαγοράστηκε από την {STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Η {STRING} εξαγοράστηκε από την {STRING} για ένα μη ανακοινώσιμο ποσό! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}({G 0 Διευθυντής Διευθύντρια ""}) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Η {STRING} χορήγεισε την κατασκεύη της νέας πόλης {TOWN}! @@ -925,7 +977,7 @@ STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Βελτιωμένες μέθοδοι καλλιέργειας στην {INDUSTRY} αναμένονται να διπλασιάσουν την παραγωγή! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK} Η παραγωγή {STRING.geniki} στ{G o η ο} {INDUSTRY} αυξήθηκε κατά {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Η παραγωγή στ{G o η ο} {INDUSTRY} μειώθηκε κατά 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Μόλυνση από έντομα προκαλεί καταστροφή στη {INDUSTRY}!{}Η παραγωγή μειώθηκε κατά 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Προσβολή από έντομα προκαλεί καταστροφή στη {INDUSTRY}!{}Η παραγωγή μειώθηκε κατά 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK} Η παραγωγή {STRING.geniki} στ{G o η ο} {INDUSTRY} μειώθηκε κατά {COMMA}%! ###length VEHICLE_TYPES @@ -947,6 +999,8 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}Το {VE STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}Το {VEHICLE} πάλιωσε πολύ και χρειάζεται επειγόντως αλλαγή STR_NEWS_TRAIN_IS_STUCK :{WHITE}Το {VEHICLE} δεν μπορεί να βρει δρόμο να συνεχίσει STR_NEWS_VEHICLE_IS_LOST :{WHITE}{G Ο Η Το} {VEHICLE} χάθηκε +STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :{WHITE}{VEHICLE}, το κέρδος του προηγούμενου έτους ήταν {CURRENCY_LONG} +STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}{VEHICLE}, το κέρδος της προηγούμενης περιόδου ήταν {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{G Ο Η Το} {VEHICLE} δεν μπορεί να μεταβεί στον επόμενο προορισμό λόγω υπερβολικής απόστασης STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Το {VEHICLE} σταμάτησε γιατί μια εντολή μετατροπής απέτυχε @@ -958,15 +1012,26 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Ένα STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Ανοίξτε το παράθυρο ομάδων εστιασμένος στην ομάδα του οχήματος +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} δεν δέχεται πλέον: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} πλέον δέχεται: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Έληξε η προσφορά επιδότησης:{}{}{STRING} από {G τον τη το} {STRING} πρός {G τον τη το} {STRING} δεν θα επιδοτείται πλέον. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Η επιδότηση αποσύρθηκε:{}{}Η υπηρεσια για {STRING.subs} απο το {STRING} προς το {STRING} δεν επιδοτείται πλέον. +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Προσφορά επιδότησης υπηρεσίας:{}{}Η πρώτη {STRING} από {STRING} έως {STRING} θα προσελκύσει επιδότηση {UNITS_YEARS_OR_MINUTES} από την τοπική αρχή! ###length 4 +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Η επιχορήγηση υπηρεσίας που δόθηκε στην {STRING}!{}{}{STRING} από {STRING} έως {STRING} θα πληρώνει 50% έξτρα για το/α επόμενο/α {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Η επιχορήγηση υπηρεσίας που δόθηκε στην {STRING}!{}{}{STRING} από {STRING} έως {STRING} θα πληρώνει διπλά ποσά για το επόμενο/α {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Η επιχορήγηση υπηρεσία που δόθηκε στην {STRING}!{}{}{STRING} από {STRING} έως {STRING} θα πληρώνει τριπλές τιμές για το/α επόμενο/α {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Η επιχορήγηση υπηρεσίας που δόθηκε στην {STRING}!{}{}{STRING} από {STRING} έως {STRING} θα πληρώνει τετραπλές τιμές για το/α επόμενο/α {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Κυκλοφοριακό χάος στην {TOWN}!{}{}Το πρόγραμμα ανακατασκευής δρόμων που χρηματοδοτείται από το {STRING} φέρνει 6 μήνες δυστυχίας στους αυτοκινητιστές! +STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Κυκλοφοριακό χάος στην {TOWN}!{}{}Το πρόγραμμα ανακατασκευής δρόμων που χρηματοδοτείται από το {STRING} φέρνει 6 λεπτά δυστυχίας στους οδηγούς! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Μονοπώλιο μεταφορών! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}Η τοπική αρχή της {TOWN} υπογράφει σύμβαση με την {STRING} για 12 μήνες αποκλειστικών δικαιωμάτων μεταφοράς! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}Η τοπική αρχή της {TOWN} υπογράφει σύμβαση με την {STRING} για 12 λεπτά αποκλειστικών δικαιωμάτων μεταφοράς! # Extra view window -STR_EXTRA_VIEWPORT_TITLE :{WHITE}Εμφάνιση {COMMA} +STR_EXTRA_VIEWPORT_TITLE :{WHITE}Προβολή {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Αντιγραφή στο παράθυρο εμφάνισης STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Αντιγραφή της τοποθεσίας της κύριας προβολής σε αυτό το παράθυρο εμφάνισης STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Επικόλληση από παράθυρο εμφάνισης @@ -975,14 +1040,27 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Επικ # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Επιλογές Παιχνιδιού +STR_GAME_OPTIONS_TAB_GENERAL :Γενικά +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Επιλέξτε γενικές ρυθμίσεις +STR_GAME_OPTIONS_TAB_GRAPHICS :Γραφικά +STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Επιλέξτε ρυθμίσεις γραφικών +STR_GAME_OPTIONS_TAB_SOUND :Ήχος +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Επιλέξτε ρυθμίσεις ήχου και μουσικής +STR_GAME_OPTIONS_TAB_SOCIAL :Κοινωνικά +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Επιλέξτε ρυθμίσεις κοινωνικής ενσωμάτωσης +STR_GAME_OPTIONS_VOLUME :Ένταση Ήχου +STR_GAME_OPTIONS_SFX_VOLUME :Ηχητικά εφέ +STR_GAME_OPTIONS_MUSIC_VOLUME :Μουσική +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Νομισματικές μονάδες STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Επιλογή νομισματικών μονάδων +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Στερλίνα Ηνωμένου Βασιλείου STR_GAME_OPTIONS_CURRENCY_USD :Δολλάριο Η.Π.Α. STR_GAME_OPTIONS_CURRENCY_EUR :Ευρώ @@ -1025,6 +1103,8 @@ STR_GAME_OPTIONS_CURRENCY_HKD :Δολάριο STR_GAME_OPTIONS_CURRENCY_INR :Ρουπία Ινδίας STR_GAME_OPTIONS_CURRENCY_IDR :Ινδονησιακή Ρουπία STR_GAME_OPTIONS_CURRENCY_MYR :Ρινγκίτ Μαλαισίας +STR_GAME_OPTIONS_CURRENCY_LVL :Λετονικά Λατς +STR_GAME_OPTIONS_CURRENCY_PTE :Πορτογαλικό Εσκούδο STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Αυτόματη αποθήκευση STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Επιλογή διάκενου ανάμεσα στις αυτόματες αποθηκεύσεις @@ -1032,6 +1112,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Επιλ # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Ανενεργό +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Ανά 10 λεπτά +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Ανά 30 λεπτά +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Ανά 60 λεπτά +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Ανά 120 λεπτά STR_GAME_OPTIONS_LANGUAGE :{BLACK}Γλώσσα STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Επιλογή της γλώσσας του παιχνιδιού @@ -1052,23 +1136,30 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Η ρύ STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Τσεκάρετε αυτό το κουτί για να ενεργοποιήσετε το v-sync στην οθόνη. Η αλλαγή αυτή θα εφαρμοστεί μετά από επανεκκίνηση του παιχνιδιού. Λειτουργεί μόνο με ενεργοποιημένη την επιτάχυνση υλικού -STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Τρέχον οδηγός: {STRING} +STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Τρέχων οδηγός: {STRING} STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Μέγεθος διεπαφής -STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Σύρετε το κουμπί για να θέσετε μέγεθος διεπαφής. Κρατήστε πατημένο το Ctrl για συνεχής αλλαγή -STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Αυτόματη εντόπιση μεγέθους +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Σύρετε το κουμπί για να ορίσετε το μέγεθος του περιβάλλοντος διεπαφής. Ctrl+Σύρσιμο για συνεχή προσαρμογή +STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Αυτόματος εντοπισμός μεγέθους STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Τσεκάρετε αυτό το κουτάκι για να ανιχνεύεται το μέγεθος της διεπαφής αυτόματα STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Κλίση κλίμακας STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Τσεκάρετε αυτό το κουτί για να αλλάζει μέγεθος το περίγραμμα με βάση το μέγεθος της διεπαφής +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Χρήση παραδοσιακής γραμματοσειράς +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Τσεκάρετε αυτό το κουτάκι εάν προτιμάτε να χρησιμοποιήσετε την παραδοσιακή γραμματοσειρά σταθερού μεγέθους +STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Εξομάλυνση εμφάνισης γραμματοσειράς +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Τσεκάρετε αυτό το κουτάκι για εξομάλυνση εμφάνισης γραμματοσειράς -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Αυτοματοποιημένη έρευνα +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Συμμετοχή σε αυτοματοποιημένη έρευνα +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Όταν είναι ενεργοποιημένο, το OpenTTD θα μεταδίδει μια έρευνα κατά την έξοδο παιχνιδιού +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Πληροφορίες για την αυτοματοποιημένη έρευνα και ιδιωτικότητα +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Αυτό ανοίγει ένα πρόγραμμα περιήγησης/browser με περισσότερες πληροφορίες σχετικά με την αυτοματοποιημένη έρευνα +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Προεπισκόπηση αποτελέσματος έρευνας +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Εμφάνιση του αποτελέσματος της έρευνας του τρέχοντος παιχνιδιού STR_GAME_OPTIONS_GRAPHICS :{BLACK}Γραφικά @@ -1078,31 +1169,49 @@ STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Ρυθμοί ανανέωσης μεγαλύτεροι από 60Hz μπορεί να μειώσουν την απόδοση. STR_GAME_OPTIONS_BASE_GRF :{BLACK}Βασικό σετ γραφικών -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Επιλογή του βασικού σετ γραφικών που θα χρησιμοποιηθεί -STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό σετ γραφικών +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Επιλογή του βασικού σετ γραφικών που θα χρησιμοποιηθεί (δεν αλλάζει μέσα από ένα παιχνίδι, μόνο από το κεντρικό μενού) +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό πακέτο γραφικών STR_GAME_OPTIONS_BASE_SFX :{BLACK}Σετ βασικών ήχων -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Επιλέξτε τους βασικούς ήχους που θα χρησιμοποιήσετε +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Επιλογή των βασικών ήχων που θα χρησιμοποιηθούν (δεν αλλάζει μέσα από ένα παιχνίδι, μόνο από το κεντρικό μενού) STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με τους βασικούς ήχους STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Βασικό σετ μουσικής STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Επιλέξτε το βασικό σετ μουσικής για χρήση -STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό σετ μουσικής +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό πακέτο μουσικής +STR_GAME_OPTIONS_ONLINE_CONTENT :Λήψη Περιεχομένου +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Ελέγξτε για νέο και ενημερωμένο περιεχόμενο προς λήψη +STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(δεν έχουν εγκατασταθεί plugins για διασύνδεση με πλατφόρμες κοινωνικής δικτύωσης) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Πλατφόρμα: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Plugin state: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Τρέχει +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Αποτυχία αρχικοποίησης +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} δεν τρέχει +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Ξεφορτώθηκε +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :Διπλό πρόσθετο +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}Μη υποστηριζόμενη έκδοση +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Άκυρη υπογραφή + +STR_BASESET_STATUS :{STRING} {RED}({NUM} λείπει/κατεστραμμένο αρχεί{P ο α}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Αποτυχία ανάκτησης λίστας υποστηριζόμενων αναλύσεων -STR_ERROR_FULLSCREEN_FAILED :{WHITE}Θέση του παιχνιδιού σε λειτουργία πλήρης οθόνης απέτυχε +STR_ERROR_FULLSCREEN_FAILED :{WHITE}Απέτυχε η λειτουργία πλήρους οθόνης # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Προσαρμοσμένο νόμισμα STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Ισοτιμία: {ORANGE}{CURRENCY_LONG} = £ {COMMA} -STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Μείωση του ποσού της ισοτιμίας σας για μία λίρα (£) -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Αυξήστε το ποσό της ισοτιμίας σας για μία Λίρα (£) -STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Ρυθμίστε τη συναλλαγματική ισοτιμία του νομίσματος για μια λίρα (£) +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Μείωση του ποσού του νομίσματός σας για μία λίρα (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Αύξηση του ποσού του νομίσματός σας για μία Λίρα (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Ορίστε τη συναλλαγματική ισοτιμία του νομίσματος σας για μια λίρα (£) + +STR_CURRENCY_SEPARATOR :{LTBLUE}Διαχωριστής: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Ορίστε το διαχωριστικό για το νόμισμά σας STR_CURRENCY_PREFIX :{LTBLUE}Πρόθεμα: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Ορίστε το πρόθεμα για το νόμισμά σας @@ -1116,7 +1225,7 @@ STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Να γ STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Να γίνει η μετάβαση σε Ευρώ αργότερα STR_CURRENCY_PREVIEW :{LTBLUE}Προεπισκόπιση: {ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 λίρες (£) στο νόμισμά σας +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10.000 λίρες (£) στο νόμισμά σας STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Αλλαγή παραμέτρων προσαρμοσμένου νομίσματος STR_NONE :Κανένα @@ -1178,18 +1287,18 @@ STR_CLIMATE_TOYLAND_LANDSCAPE :Τοπίο πα STR_TERRAIN_TYPE_VERY_FLAT :Πολύ Επίπεδο STR_TERRAIN_TYPE_FLAT :Επίπεδο STR_TERRAIN_TYPE_HILLY :Λοφώδες -STR_TERRAIN_TYPE_MOUNTAINOUS :Βουνώδες +STR_TERRAIN_TYPE_MOUNTAINOUS :Ορεινό STR_TERRAIN_TYPE_ALPINIST :Αλπικό STR_TERRAIN_TYPE_CUSTOM :Προσαρμοσμένο ύψος STR_TERRAIN_TYPE_CUSTOM_VALUE :Προσαρμοσμένο ύψος ({NUM}) ###length 4 -STR_CITY_APPROVAL_LENIENT :Ήπειο +STR_CITY_APPROVAL_LENIENT :Ήπια STR_CITY_APPROVAL_TOLERANT :Υπομονετική STR_CITY_APPROVAL_HOSTILE :Εχθρική -STR_CITY_APPROVAL_PERMISSIVE :Ανεκτική +STR_CITY_APPROVAL_PERMISSIVE :Ανεκτική (χωρίς επίδραση σε ενέργειες της εταιρίας) -STR_WARNING_NO_SUITABLE_AI :{WHITE}Δεν είναι διαθέσιμο κανένα κατάλληλο Al...{}Μπορείτε να κατεβάσετε AIs μέσω του συστήματος «Διαδικτυακού Περιεχομένου» +STR_WARNING_NO_SUITABLE_AI :{WHITE}Δεν υπάρχει διαθέσιμο κατάλληλο Al...{}Μπορείτε να κατεβάσετε AIs μέσω του συστήματος «Διαδικτυακού Περιεχομένου» # Settings tree window STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Ρυθμίσεις @@ -1198,6 +1307,7 @@ STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Επέκ STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Σύμπτυξη όλων STR_CONFIG_SETTING_RESET_ALL :{BLACK}Επαναφορά όλων των τιμών STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(δεν υπάρχει διαθέσιμη επεξήγηση) +STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR} STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Προκαθορισμένη τιμή: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Τύπος ρύθμισης: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Ρύθμιση πελάτη (δεν αποθηκεύεται στα αποθηκευμένα παιχνίδια, επηρεάζει όλα τα παιχνίδια) @@ -1214,7 +1324,7 @@ STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Περι STR_CONFIG_SETTING_RESTRICT_BASIC :Βασικές (εμφάνιση μόνο σημαντικών ρυθμίσεων) STR_CONFIG_SETTING_RESTRICT_ADVANCED :Για προχωρημένους (εμφάνιση των περισσότερων ρυθμίσεων) STR_CONFIG_SETTING_RESTRICT_ALL :Για ειδικούς (εμφάνιση όλων των ρυθμίσεων, ακομη και παράξενων) -STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ρυθμίσεις με διαφορετική τιμή από την προκαθωρισμένη +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ρυθμίσεις με διαφορετική τιμή από την προκαθορισμένη STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Ρυθμίσεις με διαφορετική τιμή από τις ρυθμίσεις νέου παιχνιδιού σας STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Μειώνει την παρακάτω λίστα σε συγκεκριμένους τύπους ρυθμίσεων @@ -1233,8 +1343,8 @@ STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Εμφά ###length 3 STR_CONFIG_SETTING_OFF :Ανενεργό -STR_CONFIG_SETTING_ON :Ενεργή -STR_CONFIG_SETTING_DISABLED :Ανένεργη +STR_CONFIG_SETTING_ON :Ενεργό +STR_CONFIG_SETTING_DISABLED :Ανένεργο ###length 3 STR_CONFIG_SETTING_COMPANIES_OFF :Ανένεργο @@ -1251,11 +1361,16 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Αριστερ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Κέντρο STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Δεξιά +STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}δευτερόλεπτ{P 0 ο α} +STR_CONFIG_SETTING_INFINITE_MONEY :Απεριόριστα χρήματα: {STRING} +STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Επιτρέπονται απεριόριστες δαπάνες και απενεργοποίηση της χρεοκοπίας εταιρειών STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Μέγιστο αρχικό δάνειο: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Μέγιστο ποσό που μπορεί να δανειστεί μία εταιρία (χωρίς να λαμβάνεται υπόψη ο πληθωρισμός) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Μέγιστο ποσό που μπορεί να δανειστεί μία εταιρία (χωρίς να λαμβάνεται υπόψη ο πληθωρισμός). Εάν οριστεί σε «Χωρίς δάνειο», δεν θα υπάρχουν διαθέσιμα χρήματα εκτός εάν παρέχονται από Σενάριο Παιχνιδιού ή τη ρύθμιση «Άπειρα χρήματα» +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Κανένα δάνειο STR_CONFIG_SETTING_INTEREST_RATE :Επιτόκιο: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Επιτόκιο δανείων· επίσης ελέγχεται ο πληθωρισμός αν είναι ενεργοποιημένος @@ -1266,8 +1381,8 @@ STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Θέτει το STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Ταχύτητα οικοδόμησης: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Περιορίζει το ποσοστό των οικοδομήμσεων από τα ΑΙ -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Καταρρεύσεις οχημάτων: {STRING} -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Ελέγχει πόσο συχνά καταρρέουν τα ανεπαρκώς συντηρημένα οχήματα +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Βλάβες οχημάτων: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Ελέγχει πόσο συχνά παθαίνουν βλάβες τα ανεπαρκώς συντηρημένα οχήματα STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Πολλαπλασιαστής επιδότησης: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Θέστε πόσο ξεπληρώνεται για επιδοτημένες συνδέσεις @@ -1275,7 +1390,9 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Θέστε πό STR_CONFIG_SETTING_SUBSIDY_DURATION :Διάρκεια επιδότησης: {STRING} ###length 2 STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Ορίστε τον αριθμό των ετών για τα οποία θα ισχύει η επιδότηση +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Ορίστε τον αριθμό των περιόδων για τα οποία θα ισχύει η επιδότηση +STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR_PERIODS} ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Χωρίς επιχορηγήσεις @@ -1283,7 +1400,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Κόστη οι STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Θέτει το επίπεδο κόστους για αγορές και οικοδομές STR_CONFIG_SETTING_RECESSIONS :Υφέσεις: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Όταν είναι ενεργοποιημένο, μπορεί να υπάρξουν υφέσεις κάθε λίγα χρόνια. Κατά τη διάρκεια μιας ύφεσης, όλη η παραγωγή είναι πολύ χαμηλότερη (επιστρέφει στο προηγούμενο επίπεδο όταν τελειώσει η ύφεση) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Όταν είναι ενεργοποιημένο, ενδέχεται περιοδικά να υπάρχουν υφέσεις. Κατά τη διάρκεια μιας ύφεσης, όλη η παραγωγή είναι πολύ χαμηλότερη (επιστρέφει στο προηγούμενο επίπεδο όταν τελειώσει η ύφεση) STR_CONFIG_SETTING_TRAIN_REVERSING :Απαγορεύεται η αντιστροφή τρένων στους σταθμούς: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Όταν είναι ενεργοποιημένο, τα τρένα δεν θα κάνουν όπισθεν σε μη-τελικούς σταθμούς, ακόμα και εάν υπάρχει κοντινότερη διαδρομή προς τον επόμενή τους προορισμό όταν κάνουν όπισθεν @@ -1291,11 +1408,11 @@ STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Όταν είν STR_CONFIG_SETTING_DISASTERS :Καταστροφές: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Εναλλαγή καταστροφών που μπορούν περιστασιακά να εμποδίσουν ή να καταστρέψουν οχήματα ή υποδομές -STR_CONFIG_SETTING_CITY_APPROVAL :Στάση δημοτικού συμβουλίου ως προς τον μετασχηματισμό της περιοχής: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Επιλογή πόσο ο θόρυβος και η περιβαλλοντικη καταστροφή άπο εταιρίες επηρεάζουν τα ποσοστά αποδοχής και περαιτέρω έργα στη περιοχή +STR_CONFIG_SETTING_CITY_APPROVAL :Στάση τοπικής αρχής: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Επιλογή πόσο ο θόρυβος και η περιβαλλοντικη καταστροφή άπο εταιρίες επηρεάζουν τα ποσοστά αποδοχής και περαιτέρω έργα στην πόλη STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Όριο ύψους χάρτη: {STRING} -STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Ορίστε το μέγιστο ύψος του εδάφους του χάρτη. Επιλέγοντας "αυτόματο" μία καλή τιμή θα επιλεχθεί μετά την παραγωγή του εδάφους +STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Ορίστε το μέγιστο ύψος του εδάφους του χάρτη. Επιλέγοντας «αυτόματο» μία καλή τιμή θα επιλεχθεί μετά την παραγωγή του εδάφους STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(αυτόματα) @@ -1308,7 +1425,7 @@ STR_CONFIG_SETTING_CATCHMENT :Επιτρέπ STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Διαφορετικοί σταθμοί και αεροδρόμια έχουν περιοχές κάλυψης διαφορετικού μεγέθους STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Οι σταθμοί της εταιρίας μπορούν να εξυπηρετήσεουν βιομηχανίες με κοντινούς ουδέτερους σταθμούς: {STRING} -STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Όταν είναι ενεργοποιημένο, βιομηχανίες με ενσωματωμένους σταθμούς (όπως Πλατφόρμες Πετρελαίου) μπορούν να εξυπηρετούνται από κοντινούς σταθμούς της εταιρίας. Όταν είναι απενεργοποιημένο, οι βιομηχανίες αυτές μπορούν να εξυπηρετούνται μόνο από τους ενσωματωμένους σταθμούς τους. Κοντινοί σταθμοί της εταιρίας δεν θα μπορούν να τους εξυπηρετούν, ούτε και ο ενσωματωμένος σταθμός θα μπορεί να εξυπηρετήσει οτιδήποτε άλλο εκτός από τη βιομηχανία. +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Όταν είναι ενεργοποιημένο, βιομηχανίες με ενσωματωμένους σταθμούς (όπως Πλατφόρμες Πετρελαίου) μπορούν να εξυπηρετούνται από κοντινούς σταθμούς της εταιρίας. Όταν είναι απενεργοποιημένο, οι βιομηχανίες αυτές μπορούν να εξυπηρετούνται μόνο από τους ενσωματωμένους σταθμούς τους. Κοντινοί σταθμοί της εταιρίας δεν θα μπορούν να τους εξυπηρετούν, ούτε και ο ενσωματωμένος σταθμός θα μπορεί να εξυπηρετήσει οτιδήποτε άλλο εκτός από τη βιομηχανία STR_CONFIG_SETTING_EXTRADYNAMITE :Επιτρέπεται η αφαίρεση περισσότερων ιδιοκτησιών των πολέων: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Είναι ευκολότερη η αφαίρεση υποδομών και κτιρίων που κατέχονται από την πόλη @@ -1317,13 +1434,13 @@ STR_CONFIG_SETTING_TRAIN_LENGTH :Μέγιστο STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Ορίστε το μέγιστο μήκος των τρένων STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} τετραγωνίδι{P 0 ο α} -STR_CONFIG_SETTING_SMOKE_AMOUNT :Ποσότητα καπνού/σπινθύρων οχήματος: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT :Ποσότητα καπνού/σπινθήρων οχήματος: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Ορίστε τον όγκο του καπνού ή τον αριθμό των σπιθών που παράγονται από τα οχήματα STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Μοντέλο επιτάχυνσης τρένων: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Επιλέξτε το μοντέλο φυσικής για την επιτάχυνση των τρένων. Με το «αρχικό» μοντέλο οι κλίσεις επιβαρύνουν το ίδιο όλα τα οχήματα. Με το «ρεαλιστικό» μοντέλο οι κλίσεις και οι στροφές τα επιβαρύνουν ανάλογα με διάφορες ιδιότητες όπως το μήκος και το ελκτικό φορτίο -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Μοντέλο επιτάχυνσης οχημάτων δρόμου: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Μοντέλο επιτάχυνσης οδικών οχημάτων: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Επιλέξτε το μοντέλο φυσικής για την επιτάχυνση των οχημάτων. Με το «αρχικό» μοντέλο οι κλίσεις επιβαρύνουν το ίδιο όλα τα οχήματα. Με το «ρεαλιστικό» μοντέλο οι κλίσεις και οι στροφές τα επιβαρύνουν ανάλογα με διάφορες ιδιότητες όπως το μήκος και το ελκτικό φορτίο STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Κλίση εδάφους για τα τρένα: {STRING} @@ -1333,23 +1450,23 @@ STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Κλίση εδάφους για τα οδικά οχήματα: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Η κλίση ενός κεκλιμένου τετραγωνίδιου για τα οδικά οχήματα. Μεγαλύτερες τιμές καθιστούν δυσκολότερο το ανέβασμα λόφων -STR_CONFIG_SETTING_FORBID_90_DEG :Απαγόρευση στα τρένα να κάνουν στροφές 90°: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Στροφές 90 μοιρών προκύπτουν όταν μια οριζόντια σιδηροτροχιά ακολουθείται από μια κάθετη στο επόμενο τετραγωνίδιο, κάνοντας το τρένο να στρίψει κατά 90 μοίρες όταν αλλάζει τετραγωνίδιο, αντί για τις συνηθισμένες 45 μοίρες σε άλλους συνδυασμούς σιδηροτροχιών. Αυτό έχει επίσης εφαρμογή στην ακτίνα στροφής των πλοίων +STR_CONFIG_SETTING_FORBID_90_DEG :Απαγορεύεται στα τρένα να κάνουν στροφές 90°: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Στροφές 90 μοιρών προκύπτουν όταν μια οριζόντια σιδηροτροχιά ακολουθείται από μια κάθετη στο επόμενο τετραγωνίδιο, κάνοντας το τρένο να στρίψει κατά 90 μοίρες όταν αλλάζει τετραγωνίδιο, αντί για τις συνηθισμένες 45 μοίρες σε άλλους συνδυασμούς σιδηροτροχιών STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Να επιτρέπεται η συνένωση μη παρακείμενων σταθμών: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Επιτρέπεται η προσθήκη τμημάτων σε σταθμό χωρίς αυτά να αγγίζουν τα ήδη υπάρχοντα τμήματα. Χρειάζεται Ctrl+Κλικ κατά την τοποθέτηση των νέων τμημάτων +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Επιτρέπεται η προσθήκη τμημάτων σε σταθμό χωρίς αυτά να αγγίζουν τα ήδη υπάρχοντα τμήματα, με Ctrl+Κλικ κατά την τοποθέτηση των νέων τμημάτων STR_CONFIG_SETTING_INFLATION :Πληθωρισμός: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Ενεργοποίηση του πληθωρισμού στην οικονομία, όπου τα κόστη αυξάνονται ελάχιστα ταχύτερα από τις πληρωμές STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Μέγιστο μήκος γέφυρας: {STRING} -STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Μέγιστο μήκος για κτίσιμο γεφυρών +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Μέγιστο μήκος για κατασκευή γεφυρών STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Μέγιστο ύψος γέφυρας: {STRING} -STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Μέγιστο ύψος για το χτίσιμο γεφυρών +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Μέγιστο ύψος για την κατασκευή γεφυρών STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Μέγιστο μήκος σήραγγας: {STRING} -STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Μέγιστο μήκος για κτίσιμο συράγγων +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Μέγιστο μήκος για κατασκευή σηράγγων STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Χειροκίνητη μέθοδος κατασκευής βιομηχανιών πρώτων υλών: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Μέθοδος χρηματοδότησης πρωτογενούς βιομηχανίας. «Καμία» σημαίνει ότι δεν γίνεται να χρηματοδοτηθεί καμία βιομηχανία, «Αναζήτηση» σημαίνει ότι η χρηματοδότηση είναι εφικτή, αλλά η κατασκευή πραγματοποιείται σε τυχαίο σημείο του χάρτη και είναι πιθανό να αποτύχει, «Όπως οι άλλες βιομηχανίες» σημαίνει πως οι πρωτογενείς βιομηχανίες είναι εφικτό να κατασκευαστούν από εταιρείες όπως οι δευτερογενείς βιομηχανίες σε οποιαδήποτε θέση θέλουν @@ -1359,7 +1476,7 @@ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Όπως οι STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Διερεύνηση προοπτικών STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Επίπεδη περιοχή γύρω από βιομηχανίες: {STRING} -STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Επίπεδος χώρος γύρω από μια βιομηχανία. Αυτό εξασφαλίζει ότι θα παραμείνει διαθέσιμος κενός χώρος γύρω από μια βιομηχανία για να κτισθούν γραμμές, κλπ +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Επίπεδος χώρος γύρω από μια βιομηχανία. Αυτό εξασφαλίζει ότι θα παραμείνει διαθέσιμος κενός χώρος γύρω από μια βιομηχανία για να κατασκευαστούν γραμμές, κλπ STR_CONFIG_SETTING_MULTIPINDTOWN :Επιτρέπονται πολλαπλές όμοιες βιομηχανίες ανά πόλη: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Συνήθως, μια πόλη δεν επιθυμεί περισσότερες από μία βιομηχανία κάθε είδους. Αυτή η ρύθμιση επιτρέπει περισσότερες βιομηχανίες του ίδιου είδους στην ίδια πόλη. @@ -1373,15 +1490,17 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Στα δεξι ###length 2 STR_CONFIG_SETTING_SHOWFINANCES :Εμφάνιση παράθυρου οικονομικών στο τέλος του έτους: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :Εμφάνιση παραθύρου οικονομικών στο τέλος της περιόδου: {STRING} ###length 2 STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Όταν ενεργοποιείται, το παράθυρο των οικονομικών πληροφοριών εμφανίζεται στο τέλος κάθε χρόνου για ευκολότερο έλεγχο της οικονομικής κατάστασης της εταιρείας +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :Εάν είναι ενεργοποιημένο, το παράθυρο οικονομικών αναδύεται στο τέλος κάθε περιόδου για να επιτρέψει την εύκολη επιθεώρηση της οικονομικής κατάστασης της εταιρείας -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Οι νέες οδηγίες είναι «χωρίς στάση» από προεπιλογή: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Οι νέες οδηγίες είναι «χωρίς στάση» εξ' ορισμού: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Κανονικά, τα οχήματα σταματούν σε κάθε σταθμό που περνούν. Ενεργοποιώντας αυτήν τη ρύθμιση, δεν θα σταματούν σε κανένα σταθμό που θα βρει στη διαδρομή τους προς τον τελικό προορισμό. Σημείωστε πως αυτή η ρύθμιση ορίζει μόνο μια καθορισμένη τιμή για νέες εντολές. Ειδικές εντολές μπορούν να δοθούν για οποιαδήποτε συμπεριφορά, άσχετα από την προκαθορισμένη -STR_CONFIG_SETTING_STOP_LOCATION :Οι εντόλες νέων τρένων διορίζουν ότι σταματάνε εξ ορισμού στο {STRING} της πλατφόρμας -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Το προεπιλεγμένο σημείο όπου θα σταματούν τα τρένα στην πλατφόρμα . Το «κοντινό άκρο» σημαίνει κοντά στο σημείο εισόδου, «Μέση» σημαίνει στο μέσο της πλατφόρμας και «μακρινό άκρο» σημαίνει στο άλλο άκρο από το σημείο εισόδου. Σημειώστε ότι αυτή η ρύθμιση ορίζει μόνο την προκαθορισμένη τιμή για νέες εντολές. Παρ' όλα αυτά, είναι δυνατό να δοθούν διαφορετικές εντολές για οποιαδήποτε συμπεριφορά. +STR_CONFIG_SETTING_STOP_LOCATION :Οι νέες εντόλες τρένων έχουν στάση εξ' ορισμού στο {STRING} της πλατφόρμας +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Ορισμός προεπιλεγμένου σημείου που θα σταματούν τα τρένα στην πλατφόρμα. Το «κοντινό άκρο» σημαίνει κοντά στο σημείο εισόδου, «μέση» σημαίνει στο μέσο της πλατφόρμας και «μακρινό άκρο» σημαίνει στο άλλο άκρο από το σημείο εισόδου. Σημειώστε ότι αυτή η ρύθμιση ορίζει μόνο την προεπιλεγμένη τιμή για νέες εντολές. Οι μεμονωμένες εντολές μπορούν να έχουν τη δική τους θέση στάσης κάνοντας κλικ πάνω στο κείμενο της εντολής ###length 3 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :κοντινό άκρο STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :στη μέση @@ -1390,18 +1509,20 @@ STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :μακρινό STR_CONFIG_SETTING_AUTOSCROLL :Μετακίνηση παραθύρου όταν το ποντίκι είναι στην άκρη: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Όταν είναι ενεργή, η εμφάνιση θα κυλά όταν το ποντίκι είναι κοντά στην άκρη του παραθύρου ###length 4 -STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Απενεργοποιημένη -STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Κύρια εμφάνιση, μόνο σε πλήρη οθόνη -STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Κύρια εμφάνιση -STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Κάθε εμφάνιση +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Απενεργοποιημένο +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Κύριο παράθυρο προβολής, μόνο σε πλήρη οθόνη +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Κύριο παράθυρο προβολής +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Κάθε παράθυρο προβολής STR_CONFIG_SETTING_BRIBE :Επιτρέπεται η δωροδοκία της τοπικής αρχής: {STRING} ###length 2 STR_CONFIG_SETTING_BRIBE_HELPTEXT :Επιτρέπεται στις εταιρείες να προσπαθήσουν να δωροδοκήσουν την τοπική αρχή. Αν η δωροδοκία γίνει αντιληπτή από τον ελεγκτή, η εταιρεία δε θα μπορεί να ενεργήσει στην πόλη για έξι μήνες +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Επιτρέψτε στις εταιρείες να προσπαθήσουν να δωροδοκήσουν την τοπική αρχή της πόλης. Εάν η δωροδοκία γίνει αντιληπτή από επιθεωρητή, η εταιρεία δεν θα μπορεί να δρα στην πόλη για έξι λεπτά STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Επιτρέπεται η αγορά αποκλειστικών δικαιωμάτων μεταφοράς: {STRING} ###length 2 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Αν μια εταιρεία αγοράσει τα αποκλειστικά δικαιώματα μεταφορών σε μια πόλη, οι σταθμοί των αντιπάλων δεν θα λαμβάνουν φορτία (επιβάτες και εμπορεύματα) για έναν ολόκληρο χρόνο +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Αν μια εταιρεία αγοράσει τα αποκλειστικά δικαιώματα μεταφορών σε μια πόλη, οι σταθμοί των αντιπάλων δεν θα λαμβάνουν φορτία (επιβάτες και εμπορεύματα) για δώδεκα μήνες +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :Εάν μια εταιρεία αγοράσει αποκλειστικά δικαιώματα μεταφοράς για μια πόλη, οι αντίπαλοι σταθμοί (επιβάτες και φορτίο) δεν θα λάβουν κανένα φορτίο για δώδεκα λεπτά STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Επιτρέπεται η κατασκευή κτιρίων: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Επιτρέπεται στις εταιρείες να δίνουν χρήματα στις πόλεις για να χρηματοδοτήσουν νέα σπίτια @@ -1419,26 +1540,30 @@ STR_CONFIG_SETTING_PLANE_SPEED :Παράγον STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Ορίζεται η σχετική ταχύτητα των αεροπλάνων συγκριτικά με τους άλλους τύπους οχημάτων, ώστε να μειώνεται το ποσό του εισοδήματος από μεταφορές με αεροσκάφη STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} -STR_CONFIG_SETTING_PLANE_CRASHES :Αριθμός των αεροπορικών ατυχημάτων: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES :Αριθμός αεροπορικών δυστυχημάτων: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Ορίστε την πιθανότητα συντριβής ενός τυχαίου αεροσκάφους.{}* Μεγάλα αεροσκάφη πάντα έχουν ένα ρίσκο συντριβής όταν προσγειώνονται σε μικρά αεροδρόμια. ###length 3 -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Κανένα* +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Καμία* STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Μειωμένη STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Κανονική +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Επιτρέπονται ισόπεδες διαβάσεις με δρόμους που ανήκουν σε ανταγωνιστές: {STRING} +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Επιτρέπεται η κατασκευή ισόπεδων διαβάσεων με δρόμους ή σιδηροτροχιές που ανήκουν σε ανταγωνιστές -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Επιτρέπονται οι στάσεις σε δρόμους που είναι ιδιοκτησία των πόλεων : {STRING} -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Επιτρέπεται η κατασκευή στάσεων πάνω σε δρόμους που είναι ιδιοκτησία των πόλεων +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Επιτρέπονται οι στάσεις διέλευσης σε δρόμους που είναι ιδιοκτησία πόλεων: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Επιτρέπεται η κατασκευή στάσεων διέλευσης σε δρόμους που είναι ιδιοκτησία πόλεων STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Επιτρέπονται οι στάσεις σε δρόμους που ανήκουν σε ανταγωνιστές: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Επιτρέπεται η κατασκευή στάσεων πάνω σε δρόμους που ανοίκουν σε ανταγωνιστές STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Δεν είναι δυνατή η αλλαγή αυτής της ρύθμισης όταν υπάρχουν οχήματα. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Συντήρηση υποδομής: {STRING} -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Όταν είναι ενεργοποιημένη, οι υποδομές προκαλούν έξοδα συντήρησης. Το κόστος μεγαλώνει δυσανάλογα με το μέγεθος του δικτύου, επηρεάζοντας έτσι τις μεγάλες εταιρείες περισσότερο από τις μικρότερες +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Όταν είναι ενεργοποιημένο, οι υποδομές προκαλούν έξοδα συντήρησης. Το κόστος μεγαλώνει υπεραναλογικά με το μέγεθος του δικτύου, επηρεάζοντας έτσι τις μεγάλες εταιρείες περισσότερο από τις μικρότερες STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Αρχικό χρώμα εταιρίας: {STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Επιλογή του αρχικού χρώματος της εταιρίας +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Δευτερεύον χρώμα εταιρίας: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Επιλέξτε το δευτερεύον χρώμα της εταιρίας, αν χρησιμοποιείτε ένα NewGRF που να το υποστηρίζει STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Τα αεροδρόμια δεν λήγουν ποτέ: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάθε τύπος αεροδρομίου παραμένει διαθέσιμο για πάντα μετά την παρουσίασή του @@ -1455,35 +1580,52 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :Για όλα STR_CONFIG_SETTING_WARN_INCOME_LESS :Ειδοποίηση όταν τα έσοδα ενός οχήματου είναι αρνητικά: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Όταν είναι ενεργοποιημένη, στέλνεται μήνυμα ειδήσεων όταν κάποιο όχημα δεν έχει αποφέρει κέρδος εντός ενός ημερολογιακού έτους +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Όταν είναι ενεργοποιημένη, εμφανίζεται ειδοποίηση όταν κάποιο όχημα δεν έχει αποφέρει κέρδος εντός ενός έτους +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Όταν είναι ενεργοποιημένη, εμφανίζεται ειδοποίηση όταν κάποιο όχημα δεν έχει αποφέρει κέρδος εντός μιας περιόδου + +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Ειδοποίηση όταν ένα όχημα παλιώσει: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Όταν είναι ενεργοποιημένη, εμφανίζεται ειδοποίηση όταν κάποιο όχημα παλιώνει STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Τα οχήματα δεν λήγουν ποτέ: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Όταν είναι ενεργοποιημένη, όλα τα μοντέλα οχημάτων παραμένουν διαθέσιμα για πάντα μετά την παρουσίασή τους +STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Χρονομέτρηση: {STRING} +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Επιλέξτε τις μονάδες χρονομέτρησης του παιχνιδιού. Αυτό δεν μπορεί να αλλάξει αργότερα.{}{}Η λειτουργία «βάσει ημερολογίου» είναι η κλασική εμπειρία του OpenTTD, με το ένα έτος να αποτελείται από 12 μήνες και κάθε μήνα να έχει 28-31 ημέρες.{}{}Εναλλακτικά, στη λειτουργία «βάσει ρολογιού τοίχου», η παραγωγή φορτίου και τα οικονομικά μεγέθη βασίζονται σε προσαυξήσεις ενός λεπτού, που είναι περίπου όσο διαρκεί ένας μήνας 30 ημερών σε λειτουργία «βάσει ημερολογίου». Αυτά ομαδοποιούνται σε περιόδους 12 λεπτών, που ισοδυναμούν με ένα έτος σε λειτουργία «βάσει ημερολογίου».{}{}Σε κάθε λειτουργία υπάρχει πάντα ένα κλασικό ημερολόγιο, το οποίο χρησιμοποιείται για τις ημερομηνίες εισαγωγής οχημάτων, σπιτιών και άλλων υποδομών ###length 2 +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Ημερολόγιο +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Ρολόι τοίχου +STR_CONFIG_SETTING_MINUTES_PER_YEAR :Λεπτά ανά έτος: {STRING} +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Επιλέξτε τον αριθμό των λεπτών σε ένα ημερολογιακό έτος. Η προεπιλογή είναι 12 λεπτά. Ρυθμίστε στο 0 για να σταματήσετε την αλλαγή της ημερολογιακής ώρας. Η αύξηση της διάρκειας του ημερολογιακού έτους επιβραδύνει την εισαγωγή οχημάτων, σπιτιών και άλλων υποδομών. Δεν επηρεάζει την ταχύτητα του οχήματος ή την οικονομική προσομοίωση, εκτός από τον πληθωρισμό. Αυτή η ρύθμιση είναι διαθέσιμη μόνο όταν χρησιμοποιείται χρονομέτρηση ρολογιού τοίχου +STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special +STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (ο ημερολογιακός χρόνος έχει παγώσει) +STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Κλίμακα παραγωγής φορτίου πόλης: {STRING} +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Κλιμάκωση της παραγωγής φορτίου των πόλεων κατά αυτό το ποσοστό +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Κλιμάκωση της παραγωγής φορτίου των βιομηχανιών: {STRING} +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Κλιμάκωση της παραγωγής φορτίου των βιομηχανιών κατά αυτό το ποσοστό +STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Αυτόματη ανανέωση όταν ένα όχημα παλιώνει: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Όταν είναι ενεργοποιημένη, τα οχήματα που πλησιάζουν το τέλος της ζωής τους αντικαθίσταται αυτόματα όταν πληρούνται οι προϋποθέσεις αντικατάστασής του -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Αυτόματη αντικατάστηση όταν το όχημα είναι {STRING} μέγιστης ηλικίας +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Αυτόματη αντικατάστηση όταν το όχημα είναι {STRING} την μέγιστη ηλικία STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Σχετική ηλικία κατά την οποία κάποιο όχημα θα πρέπει να εξεταστεί για αυτόματη ανανέωση ###length 2 STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} μήν{P 0 α ες} πριν STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} μήν{P 0 α ες} μετά STR_CONFIG_SETTING_AUTORENEW_MONEY :Αυτόματη ανανέωση με τα ελάχιστα απαιτούμενα χρήματα: {STRING} -STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Ελάχιστο χρηματικό ποσό που θα πρέπει να υπολείπεται στην τράπεζα πριν εξεταστεί η αυτόματη ανανέωση των οχημάτων +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Ελάχιστο χρηματικό ποσό που θα πρέπει να απομείνει στην τράπεζα πριν εξεταστεί η αυτόματη ανανέωση των οχημάτων STR_CONFIG_SETTING_ERRMSG_DURATION :Διάρκεια μηνύματος σφάλματος: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Διάρκεια εμφάνισης μηνύματων σφάλματος σε κόκκινο παράθυρο. Σημειώστε ότι μερικά (κρίσιμα) μηνύματα σφάλματος δεν κλείνουν αυτόματα μετά από αυτόν τον χρόνο, αλλά πρέπει να κλείσουν χειροκίνητα STR_CONFIG_SETTING_HOVER_DELAY :Εμφάνιση αναδυόμενων μηνυμάτων: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Καθυστέρηση πριν την εμφάνιση των επεξηγήσεων όταν ο δείκτης του ποντικιού βρίσκεται πάνω από κάποιο στοιχείο της διεπαφής. Εναλλακτικά, οι επεξηγήσεις συνδέονται με το δεξί κουμπί του ποντικιού όταν η τιμή αυτού του πεδίου είναι 0. -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Ο δείκτης του ποντικιού να βρίσκεται από πάνω για {COMMA} δευτερόλεπτ{P 0 ο α} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Καθυστέρηση πριν την εμφάνιση των επεξηγήσεων όταν ο δείκτης του ποντικιού βρίσκεται πάνω από κάποιο στοιχείο της διεπαφής. Εναλλακτικά, οι επεξηγήσεις συνδέονται με το δεξί κουμπί του ποντικιού όταν η τιμή αυτού του πεδίου είναι 0 +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Ο δείκτης του ποντικιού να βρίσκεται από πάνω για {COMMA} χιλιοστά του δευτερολέπτου ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Δεξί κουμπί @@ -1494,8 +1636,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Πάχος γρ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Πάχος γραμμών στα γραφήματα. Οι λεπτές γραμμές διαβάζονται με μεγαλύτερη ακρίβεια, οι παχύτερες είναι πιο ευδιάκριτες και τα χρώματα ξεχωρίσουν ευκολότερα STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Εμφάνιση του ονόματος NewGRF στο παράθυρο κατασκευής οχήματος: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Προσθέστε μία γραμμή στο παράθυρο κατασκευής οχήματος, η οποία δείχνει από ποιο NewGRF προέρχεται το επιλεγμένο όχημα. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Εμφάνιση όλων των αποδεκτών φορτίων οχημάτων στις λίστες εικονίδιων {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Προσθήκη μιας γραμμής στο παράθυρο κατασκευής οχήματος, στην οποία εμφανίζεται το NewGRF από το οποίο προέρχεται το επιλεγμένο όχημα +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Εμφάνιση των αποδεκτών φορτίων των οχημάτων στα παράθυρα της λίστας: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Όταν είναι ενεργοποιημένο, το μεταφέρσημο φορτίο του οχήματος θα εμφανίζεται από πάνω του στις λίστες οχημάτων STR_CONFIG_SETTING_LANDSCAPE :Τοπίο: {STRING} @@ -1508,35 +1650,35 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Αυθεντι STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TERRAIN_TYPE :Σχηματισμός εδάφους: {STRING} -STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis μόνο) Λοφώδησ χαρακτήρας του εδάφους +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Επιλογή του ύψους των λόφων και των βουνών του τοπίου STR_CONFIG_SETTING_INDUSTRY_DENSITY :Πυκνότητα βιομηχανιών: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Θέτει πόσες βιομηχανίες θα δημιουργηθούν και σε τι επίπεδο θα μέινουν κάτα τη διάρκεια το παιχνιδιού STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Μέγιστη απόσταση από την άκρη του χάρτη για τα Διυλιστήρια: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Τα Διυλιστήρια κατασκευάζονται κοντά στην άκρη του χάρτη, η οποία είναι ακτή σε νησιωτικούς χάρτες +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Όριο για το πόσο μακριά από τα σύνορα του χάρτη μπορούν να κατασκευαστούν διυλιστήρια και εξέδρες πετρελαίου. Στους χάρτες νησιών, αυτό διασφαλίζει ότι βρίσκονται κοντά στην ακτή. Σε χάρτες μεγαλύτερους από 256 πλακίδια, αυτή η τιμή κλιμακώνεται προς τα πάνω STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Κορυφογραμμή χιονιού: {STRING} -STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Έλεγχος του ύψους στο οποίο ξεκινά το χιόνι στο υπαρκτικό τοπίο. Το χιόνι επηρεάζει επίσης τη δημιουργία βιομηχανιών και τις προυποθέσεις επέκτασης πόλης. Μπορεί να μεταβληθεί μόνο μέσω του Συντάκτη Σεναρίων ή αλλιώς υπολογίζεται μέσω της "κάλυψης χιονιού" +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Έλεγχος του ύψους στο οποίο ξεκινά το χιόνι στο υποαρκτικό τοπίο. Το χιόνι επηρεάζει επίσης τη δημιουργία βιομηχανιών και τις προϋποθέσεις επέκτασης πόλης. Μπορεί να μεταβληθεί μόνο μέσω του Διαχειριστή Σεναρίων ή αλλιώς υπολογίζεται μέσω της «κάλυψης χιονιού» STR_CONFIG_SETTING_SNOW_COVERAGE :Κάλυψη χιονιού: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Ελέγχει την κατα προσέγγιση ποσότητα χιονιού στα υπο-αρκτικά τοπία. Το χιόνι επιρρεάζει επίσης τις απαιτήσεις παραγωγής βιομηχανιών και ανάπτυξης πόλεων. Χρησιμοποιήται μόνο κατά τη διάρκεια της παραγωγής του χάρτη. Το έδαφος που βρίσκεται κοντά στο επίπεδο της θάλασσας είναι πάντα χωρίς χιόνι +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Ορισμός της κατα προσέγγιση ποσότητας χιονιού στα υποαρκτικά τοπία. Το χιόνι επηρεάζει επίσης τη δημιουργία βιομηχανιών και τα προαπαιτούμενα για την εξέλιξη πόλεων. Χρησιμοποιήται μόνο κατά τη διάρκεια της παραγωγής του χάρτη. Το έδαφος που βρίσκεται στο επίπεδο της θάλασσας και οι ακτές, δεν έχουν ποτέ χιόνι STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Κάλυψη ερήμου: {STRING} -STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Ελέγχει την κατά προσέγγιση ποσότητα ερήμου στα τροπικά τοπία. Η έρημος επιρρεάζει επίσης την παραγωγή βιομηχανιών. Χρησιμοποιείται μόνο κατά τη διάρκεια δημιουργίας του χάρτη +STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Επιλογή της κατά προσέγγιση ποσότητας ερήμου στα τροπικά τοπία. Η έρημος επηρεάζει επίσης τη δημιουργία βιομηχανιών και τα προαπαιτούμενα για την εξέλιξη πόλεων. Χρησιμοποιείται μόνο κατά τη διάρκεια δημιουργίας του χάρτη STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Ανωμαλία επιφάνειας (μόνο με TerraGenesis) : {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis μόνο) Επιλογή της συψνότητας των λόφων: Τα λεία τοπία έχουν λιγότερους, πιο πλατείς λόφους. Τα τραχιά τοπία έχουν πολλούς λόφους που μπορεί να δείχνει μονότονο +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Επιλογή του σχήματος και του αριθμού των λόφων: Τα λεία τοπία έχουν λιγότερους, πιο πλατείς λόφους, ενώ τα τραχιά τοπία έχουν πολλούς και μικρούς λόφους ###length 4 -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Πολύ Απαλή -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Απαλή -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ανώμαλη -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Πολύ Ανώμαλη +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Πολύ Λεία +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Λεία +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Τραχιά +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Πολύ Τραχιά STR_CONFIG_SETTING_VARIETY :Διανομή ποικιλομορφίας: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis μόνο) Ελέγξτε εάν ο χάρτης θα περιέχει και ορεινές και πεδινές εκτάσεις. Μιας και αυτό μονάχα κάνει το χάρτη πιο επίπεδο, οι άλλες ρυθμίσιες θα πρεπει να τεθούν στο ορεινό +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Επιλέξτε αν ο χάρτης περιέχει και βουνά και επίπεδες περιοχές. Όσο μεγαλύτερη είναι η ποικιλία, τόσο περισσότερες οι υψομετρικές διαφορές μεταξύ ορεινών και επίπεδων περιοχών STR_CONFIG_SETTING_RIVER_AMOUNT :Πλήθος ποταμών: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Επιλέξτε πόσα ποτάμια να δημιουργηθούν @@ -1548,14 +1690,15 @@ STR_CONFIG_SETTING_TREE_PLACER_NONE :Κανένας STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Αυθεντικός STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Βελτιωμένος -STR_CONFIG_SETTING_ROAD_SIDE :Οχήματα δρόμου: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE :Οδικά Οχήματα: {STRING} STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Επιλέξτε την πλευρά οδήγησης ###length 2 -STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Οδηγούν από αριστερά -STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Οδηγούν από δεξιά +STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Οδήγηση από αριστερά +STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Οδήγηση από δεξιά STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Περιστροφή χάρτη υψομετρίας: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Επιλέξτε με ποιον τρόπο θα περιστραφεί η εικόνα του ύψους χάρτη, για να ταιριάζει στον κόσμο του παιχνιδιού ###length 2 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Αριστερόστροφη STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Δεξιόστροφη @@ -1568,8 +1711,8 @@ STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ένα STR_CONFIG_SETTING_STATION_SPREAD :Μέγιστη έκταση σταθμού: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Μέγιστη περιοχή στην οποία μπορούν να εκτείνονται τα τμήματα ενός σταθμού. Σημειώστε ότι υψηλές τιμές καθυστερούν το παιχνίδι -STR_CONFIG_SETTING_SERVICEATHELIPAD :Αυτόματη επισκευή ελικοπτέρων στα ελικοδρόμια: {STRING} -STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Επισκευή ελικοπτέρων μετά από κάθε προσγείωση, ακόμη κι αν δεν υπάρχει υπόστεγο στο αεροδρόμιο +STR_CONFIG_SETTING_SERVICEATHELIPAD :Αυτόματη συντήρηση ελικοπτέρων στα ελικοδρόμια: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Συντήρηση ελικοπτέρων μετά από κάθε προσγείωση, ακόμη κι αν δεν υπάρχει υπόστεγο στο αεροδρόμιο STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Σύνδεση γραμμής εργαλείων τοπίου με γραμμή εργαλείων σιδηροτροχιάς/δρόμου/νερού/αεροδρομίου: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Όταν ανοίγει γραμμή εργαλείων κατασκευής κάποιου τύπου μεταφορικών μέσων, ανοίγει επίσης η γραμμή εργαλείων για τη μορφοποίηση του εδάφους @@ -1582,15 +1725,15 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Σκούρο π STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Βιολετί STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Χρώμα επίστρωσης ροής φορτίου: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Θέσημο της παλέτας χρωμάτων που θα χρησιμοποιηθούν για την επίστρωση ροής φορτίου +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Ορισμός της παλέτας χρωμάτων που θα χρησιμοποιηθούν για την επίστρωση ροής φορτίου ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Πράσινο σε κόκκινο (Αρχικό) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Πράσινο σε μπλέ -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Γκρι σε μπλε +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Γκρι σε Κόκκινο STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Ασπρόμαυρο STR_CONFIG_SETTING_SCROLLMODE :Συμπεριφορά κύλισης του παραθύρου εμφάνισης: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Συμπεριφορά κατά την κύλιση του χάρτη +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Συμπεριφορά κατά την κύλιση του χάρτη. Οι επιλογές «κλειδωμένης θέσης ποντικιού» δεν λειτουργούν σε όλα τα συστήματα, όπως εκδόσεις που βασίζονται στον ιστό, οθόνες αφής, Linux με Wayland και άλλα ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Μετακίνηση μικρού χάρτη με ΔΠΠ, θέση ποντικιού κλειδωμένη STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Μετακίνηση χάρτη με ΔΠΠ, θέση ποντικιού κλειδωμένη @@ -1606,7 +1749,7 @@ STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Εμφάνισ STR_CONFIG_SETTING_LIVERIES :Εμφάνιση χρωμάτων των εταιριών: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Ελέγξτε τη χρήση του χρωματικού μοτίβου των τύπων των οχημάτων για τα οχήματα (σε αντίθεση με τα εταιρικά) ###length 3 -STR_CONFIG_SETTING_LIVERIES_NONE :Κανένας +STR_CONFIG_SETTING_LIVERIES_NONE :Κανένα STR_CONFIG_SETTING_LIVERIES_OWN :Η εταιρία μου STR_CONFIG_SETTING_LIVERIES_ALL :Όλες οι εταιρίες @@ -1624,7 +1767,7 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Μετακίν STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Απενεργοποιημένος STR_CONFIG_SETTING_OSK_ACTIVATION :Πληκτρολόγιο στην οθόνη: {STRING} -STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Επιλογή της μεθόδου για το άνοιγμα του πληκτρολογίου της οθόνης για την εισαγωγή κειμένου σε κουτιά με τη χρήση μόνο της δεικτικής συσκευής. Αυτή η ρύθμιση προορίζεται για μικρότερες συσκευές χωρίς πραγματικό πληκτρολόγιο +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Επιλογή της μεθόδου για το άνοιγμα του πληκτρολογίου οθόνης για την εισαγωγή κειμένου σε κουτιά με τη χρήση μόνο της δεικτικής συσκευής. Αυτή η ρύθμιση προορίζεται για μικρότερες συσκευές χωρίς πραγματικό πληκτρολόγιο ###length 4 STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Απενεργοποιημένο STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Με διπλό κλικ @@ -1632,7 +1775,7 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Με απλό STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Με απλό κλικ (άμεσα) STR_CONFIG_SETTING_USE_RELAY_SERVICE :Χρήση υπηρεσίας αναμετάδοσης: {STRING} -STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Εάν η δημιουργία σύνδεσης με τον server αποτύχει, μπορεί να χρησιμοποιηθεί μία υπηρεσία αναμετάδοσσης για να δημιουργηθεί η σύνδεση. Το "Ποτέ" δεν το επιτρέπει αυτό, το "Ερώτηση" θα σας ρωτήσει πρώτα, το "Επιτρέπεται" θα το επιτρέψει χωρίς ερώτηση +STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Εάν η δημιουργία σύνδεσης με τον server αποτύχει, μπορεί να χρησιμοποιηθεί μία υπηρεσία αναμετάδοσης για να δημιουργηθεί η σύνδεση. Το «Ποτέ» δεν το επιτρέπει, το «Ερώτηση» θα σας ρωτήσει πρώτα, το «Επιτρέπεται» θα το επιτρέψει χωρίς ερώτηση ###length 3 STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER :Ποτέ STR_CONFIG_SETTING_USE_RELAY_SERVICE_ASK :Ρώτα @@ -1648,8 +1791,11 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Απενεργ STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Κλείσιμο παραθύρου με δεξί-κλικ: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Κλείνει το παράθυρο με δεξί πάτημα μέσα του. Απενεργοποιεί την ανάδυση επεξηγήσεων με το δεξί κουμπί! ###length 3 +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Όχι +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Ναι +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Ναι, εκτός από το καρφιτσωμένο -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Χρήση της {STRING} ημερολογιακής μορφής στα ονόματα αποθηκευμένων παιχνιδιών +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Χρήση της ημερολογιακής μορφής {STRING} στα ονόματα αποθηκευμένων παιχνιδιών STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Μορφή της ημερομηνίας στα αρχεία αποθήκευσης παιχνιδιών ###length 3 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :μακριά (31 Δεκ 2008) @@ -1673,7 +1819,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ενεργοπ STR_CONFIG_SETTING_LOADING_INDICATORS :Χρήση δεικτών φόρτωσης: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Επιλέξτε εάν οι δείκτες φόρτωσης εμφανίζονται πάνω από τα οχήματα που φορτώνουν ή ξεφορτώνουν +STR_CONFIG_SETTING_TIMETABLE_MODE :Μονάδες μέτρησης στα χρονοδιαγράμματα δρομολογίων: {STRING} +STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Επιλέξτε τις μονάδες μέτρησης χρόνου που χρησιμοποιούνται στα χρονοδιαγράμματα δρομολογίων οχημάτων ###length 3 +STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Ημέρες +STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Δευτερόλεπτα +STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Τικς STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Εμφάνιση αφίξεων και αναχωρήσεων στα δρομολόγια: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Εμφάνιση αναμενόμενης ώρας άφιξης και αναχώρησης στα χρονοδιαγράμματα @@ -1695,10 +1846,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Διατήρη STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Διατήρηση ανοικτών των εργαλείων για γέφυρες, σήραγγες, κλπ μετά από τη χρήση STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Αυτόματη αφαίρεση των σηματοδοτών κατά τη διάρκεια κατασκευής σιδηροτροχιών: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Αυτόματη αφαίρεση σηματοδοτών κατά τη διάρκεια κατασκευής σιδηροτροχιών εάν οι σηματοδότες είναι στη διαδρομή. Σημειώστε ότι αυτό μπορεί δυνητικά να οδηγήσει σε συγκρούσεις τρένων. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Αυτόματη αφαίρεση σηματοδοτών κατά τη διάρκεια κατασκευής σιδηροτροχιών εάν οι σηματοδότες είναι στη διαδρομή. Σημειώστε ότι αυτό μπορεί δυνητικά να οδηγήσει σε συγκρούσεις τρένων STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Όριο ταχύτητας γρήγορης κίνησης: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Όριο ταχύτητας του παιχνιδιού όταν είναι ενεργοποιημένη η γρήγορη ταχύτητα. 0 = κανένα όριο (όσο γρήγορα επιτρέπει ο υπολογιστής σας). Τιμές κάτω του 100% επιβραδύνουν το παιχνίδι. Το ανώτατο όριο εξαρτάται από τις προδιαγραφές του υπολογιστή σας και μπορεί να μεταβάλλεται ανάλογα με το παιχνίδι. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Όριο ταχύτητας του παιχνιδιού όταν είναι ενεργοποιημένη η γρήγορη ταχύτητα. 0 = κανένα όριο (όσο γρήγορα επιτρέπει ο υπολογιστής σας). Τιμές κάτω του 100% επιβραδύνουν το παιχνίδι. Το ανώτατο όριο εξαρτάται από τις προδιαγραφές του υπολογιστή σας και μπορεί να μεταβάλλεται ανάλογα με το παιχνίδι STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% της κανονικής ταχύτητας παιχνιδιού ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Χωρίς όριο (όσο γρήγορα επιτρέπει ο υπολογιστής σας) @@ -1711,14 +1862,16 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Παίζει ή ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR :Στο τέλος του χρόνου: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Τέλος περιόδου: {STRING} ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Παίζει ηχητικό εφέ στο τέλος του χρόνου που συνοψίζει την επίδοση της εταιρείας κατά την διάρκεια αυτού του χρόνου σε σχέση με τον προηγούμενο χρόνο +STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Παίζει ηχητικό εφέ στο τέλος του χρόνου που συνοψίζει την επίδοση της εταιρείας κατά την διάρκεια αυτής της περιόδου σε σχέση με την προηγούμεη περίοδο -STR_CONFIG_SETTING_SOUND_CONFIRM :Οικοδομή: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM :Κατασκευή: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Παίζει ηχητικό εφέ σε επιτυχής οικοδομές ή άλλες δράσεις -STR_CONFIG_SETTING_SOUND_CLICK :πατήματα κουμπιού: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK :Πατήματα κουμπιού: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Παίζει ήχο όταν γίνεται κλικ σε κουμπιά STR_CONFIG_SETTING_SOUND_DISASTER :Καταστροφές/ατυχήματα: {STRING} @@ -1733,7 +1886,7 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Παίζει τ STR_CONFIG_SETTING_MAX_TRAINS :Μέγιστος αριθμός τρένων ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Μέγιστος αριθμός τρένων που μπορεί να έχει μια εταιρεία -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Μέγιστος αριθμός οχημάτων δρόμου ανά εταιρία: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Μέγιστος αριθμός οδικών οχημάτων ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Μέγιστος αριθμός οδικών οχημάτων που μπορεί να έχει μια εταιρεία STR_CONFIG_SETTING_MAX_AIRCRAFT :Μέγιστος αριθμός αεροσκαφών ανά εταιρία: {STRING} @@ -1760,27 +1913,33 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Επιτρέπ STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#εντολών πριν την παύση δεσμών ενεργειών: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Μέγιστος αριθμός βημάτων υπολογισμού που κάνει κάποιο σενάριο σε κάθε σειρά STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Μέγιστη χρήση μνήμης ανά script: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Πόση μνήμη μπορεί να καταναλώσει ένα script προτού τερματιστεί αναγκαστικά. Μπορεί να χρειαστεί να αυξηθεί για μεγαλύτερους χάρτες. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Πόση μνήμη μπορεί να καταναλώσει ένα script προτού τερματιστεί αναγκαστικά. Μπορεί να χρειαστεί να αυξηθεί για μεγαλύτερους χάρτες STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Τα διαστήματα μεταξύ συντήρησης είναι σε ποσοστά: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Επιλέξτε εάν η επισκευή των οχημάτων εξαρτάται από τον χρόνο που πέρασε από την τελευταία επισκευή ή από την μείωση της αξιοπιστίας κατά ένα συγκεκριμένο ποσοστό της μέγιστης αξιοπιστίας +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Όταν είναι ενεργοποιημένο, τα οχήματα προσπαθούν να κάνουν σέρβις όταν η αξιοπιστία τους πέσει κατά ένα συγκεκριμένο ποσοστό της μέγιστης αξιοπιστίας.{}{}Για παράδειγμα, εάν η μέγιστη αξιοπιστία ενός οχήματος είναι 90% και το διάστημα σέρβις είναι 20%, το όχημα θα προσπαθήσει να κάνει σέρβις όταν φτάσει το 72% αξιοπιστίας STR_CONFIG_SETTING_SERVINT_TRAINS :Προκαθορισμένο διάστημα μεταξύ επισκευών για τα τρένα: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα οχήματα τρένων, όταν δεν δίνεται άλλο διάστημα για το όχημα STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Προκαθορισμένο διάστημα μεταξύ συντηρήσεων για οδικά οχήματα: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα οδικά οχήματα, όταν δεν δίνεται άλλο διάστημα για το όχημα -STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Προκαθορισμένο διάστημα επισκευών αεροσκαφών: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Προκαθορισμένο διάστημα συντήρησης αεροσκαφών: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα αεροσκάφη, όταν δεν δίνεται άλλο διάστημα για το αεροσκάφος STR_CONFIG_SETTING_SERVINT_SHIPS :Προκαθορισμένο διάστημα μεταξύ επισκευών για τα πλοία: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα πλοία, όταν δεν δίνεται άλλο διάστημα για το πλοίο -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}ημέρ{P 0 α ες}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Ημέρα{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Λεπτό{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Απενεργοποιημένο -STR_CONFIG_SETTING_NOSERVICE :Απενεργοποίηση επισκευών όταν οι καταρρεύσεις είναι απενεργοποιημένες: {STRING} +STR_CONFIG_SETTING_NOSERVICE :Απενεργοποίηση επισκευών όταν οι βλάβες είναι απενεργοποιημένες: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Όταν είναι ενεργοποιημένη, τα οχήματα δεν συντηρούνται όταν δεν είναι δυνατό να χαλάσουν +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Ποινή ταχύτητας φόρτωσης για τρένα που είναι μεγαλύτερα από τον σταθμό: {STRING} +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Όταν είναι ενεργοποιημένο, τα τρένα που είναι πολύ μακριά για τον σταθμό φορτώνουν πιο αργά από ένα τρένο που ταιριάζει στο σταθμό. Αυτή η ρύθμιση δεν επηρεάζει την διαδικασία εύρεσης διαδρομής STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ενεργοποίηση ορίων ταχύτητας βαγονιών: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Όταν είναι ενεργοποιημένο, χρησιμοποιούνται και τα όρια ταχύτητας των βαγονιών όταν αποφασίζεται η μέγιστη ταχύτητα ενός τρένου @@ -1815,10 +1974,10 @@ STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Εμφάνισ STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Αλλαγή της παραγωγής των βιομηχανιών που εξυπηρετούνται από την εταιρία: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Εμφάνιση εφημερίδας όταν μεταβάλλεται η παραγωγικότητα μιας βιομηχανίας που εξυπηρετείται από την εταιρία -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Διαφοροποιήσεις στην παραγωγή των βιομηχανιών που εξυπηρετούνται από ανταγωνιστή(-ές): {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Διαφοροποιήσεις στην παραγωγή των βιομηχανιών που εξυπηρετούνται από ανταγωνιστή/ές: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Εμφάνιση εφημερίδας όταν μεταβάλλεται η παραγωγικότητα μιας βιομηχανίας που εξυπηρετείται από ανταγωνιστές -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Άλλες διαφοροποιήσεις στη παραγωγή: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Άλλες διαφοροποιήσεις στην παραγωγή: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Εμφάνιση εφημερίδας όταν μεταβάλλεται η παραγωγικότητα μιας βιομηχανίας που δεν εξυπηρετείται από την εταιρία ή ανταγωνιστές STR_CONFIG_SETTING_NEWS_ADVICE :Συμβουλές / πληροφορίες για τα εταιρικά οχήματα: {STRING} @@ -1836,7 +1995,7 @@ STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Πρόβαλλ STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Γενικές πληροφορίες: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Εμφάνιση εφημερίδας σε γενικά συμβάντα, όπως αγορά αποκλειστικών δικαιωμάτων ή χρηματοδότηση ανακατασκευής δρόμων ###length 3 -STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Απενεργοποιημένα +STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Απενεργοποιημένο STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Περιλήψεις STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Ολόκληρα @@ -1845,13 +2004,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Το έτος STR_CONFIG_SETTING_STARTING_YEAR :Έτος εκκίνησης: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Χρονιά τέλους σκορ: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Η χρονιά στην οποία το παιχνίδι τελειώνει για λόγους σκορ. Στο τέλος αυτής της χρονιάς, το σκορ της εταιρίας καταγράφεται και η οθόνη με τα κορυφαία σκορ εμφανίζεται, αλλά οι παίκτες μπορούν να συνεχίσουν να παίζουν μετά από αυτή.{}Εάν αυτή είναι πριν από την χρονιά έναρξης, η οθόνη με τα κορυφαία σκορ δεν εμφανίζεται ποτέ. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Η χρονιά στην οποία το παιχνίδι τελειώνει για λόγους σκορ. Στο τέλος αυτής της χρονιάς, το σκορ της εταιρίας καταγράφεται και η οθόνη με τα κορυφαία σκορ εμφανίζεται, αλλά οι παίκτες μπορούν να συνεχίσουν να παίζουν μετά από αυτή.{}Εάν αυτή είναι πριν από την χρονιά έναρξης, η οθόνη με τα κορυφαία σκορ δεν εμφανίζεται ποτέ STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Ποτέ STR_CONFIG_SETTING_ECONOMY_TYPE :Τύπος οικονομίας: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Η ομαλή οικονομία κάνει διαφοροποιήσεις στην παραγωγή πιο συχνά, και σε μικρότερα βήματα. Η παγωμένη οικονομία σταματά τις διαφοροποιήσεις στην παραγωγή και το κλείσιμο των βιομηχανιών. Αυτή η ρύθμιση μπορεί να μην έχει καμία αλλαγή εάν οι τύποι βιομηχανιών προσφέρονται από ένα NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Η ομαλή οικονομία κάνει διαφοροποιήσεις στην παραγωγή πιο συχνά και σε μικρότερα βήματα. Η παγωμένη οικονομία σταματά τις διαφοροποιήσεις στην παραγωγή και το κλείσιμο των βιομηχανιών. Αυτή η ρύθμιση μπορεί να μην έχει καμία αλλαγή εάν οι τύποι βιομηχανιών ορίσονται από ένα NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Αρχικό STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Ομαλή @@ -1866,12 +2025,13 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} τετ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Όταν σύρετε, διατηρείται σταθερή απόσταση μεταξύ των σημάτων: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Επιλέξτε τη συμπεριφορά της τοποθέτησης σημάτων όταν πατάτε Ctrl και σύρετε. Όταν είναι απενεργοποιημένο, τα σήματα τοποθετούνται γύρω από σήραγγες και γέφυρες για να αποφεύγονται μεγάλα τμήματα χωρίς σήματα. Όταν είναι ενεργοποιημένο, τα σήματα τοποθετούνται κάθε n τετραγωνίδια, κάνοντας ευκολότερη την ευθυγράμμιση των σημάτων σε παράλληλες γραμμές -STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Αυτόματο κτίσιμο σηματοφόρων πριν από το: {STRING} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Αυτόματη κατασκευή σηματοφόρων πριν από το: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Ορίζεται το έτος κατά το οποίο θα χρησιμοποιούνται τα ηλεκτρικά σήματα στις σιδηροτροχιές. Πριν από αυτό, θα χρησιμοποιούνται μηχανικά σήματα (που έχουν ακριβώς την ίδια λειτουργία, αλλά έχουν διαφορετική μορφή) STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Περιήγηση στους τύπους σηματοδότησης: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Επιλέξτε τους τύπους σημάτων μεταξύ των οποίων θα γίνονται οι αλλαγές όταν πατάτε σε ένα τοποθετημένο σήμα κρατώντας πατημένο το Ctrl ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Μόνο τρέχουσα ομάδα STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Όλα ορατά STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Εμφάνιση τύπων σημάτων: {STRING} @@ -1889,13 +2049,13 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :πλέγμα 2x STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :πλέγμα 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Τυχαίο -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Οι πόλεις επιτρέπεται να χτίσουν δρόμους: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Οι πόλεις επιτρέπεται να κατασκευάζουν δρόμους: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Επιτρέπεται στις πόλεις να κατασκευάζουν δρόμους για ανάπτυξη. Απενεργοποιήστε για να αποτρέπονται οι τοπικές αρχές από την αυτόνομη κατασκευή δρόμων -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Οι πόλεις επιτρέπουν το κτίσιμο ισόπεδων διασταυρώσεων: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Οι πόλεις επιτρέπουν την κατασκευή ισόπεδων διασταυρώσεων: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση επιτρέπει στις πόλεις να κατασκευάζουν επίπεδες διαβάσεις -STR_CONFIG_SETTING_NOISE_LEVEL :Επιτρέπεται η πόλη να ελέγχει το επίπεδο θορύβου των αεροδρομίων: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Με αυτήν τη ρύθμιση απενεργοποιημένη, γίνεται να υπάρχουν δύο αεροδρόμια σε κάθε πόλη. Με αυτήν τη ρύθμιση ενεργοποιημένη, ο αριθμός των αεροδρομίων σε μια πόλη περιορίζεται από την αποδοχή του θορύβου από την πόλη, η οποία εξαρτάται από τον πληθυσμό, το μέγεθος του αεροδρομίου και την απόστασή του από την πόλη +STR_CONFIG_SETTING_NOISE_LEVEL :Περιορισμός τοποθέτησης αεροδρομίων ανάλογα με το επίπεδο θορύβου: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Επιτρέπεται στις πόλεις να μπλοκάρουν την κατασκευή αεροδρομίων με βάση το επίπεδο αποδοχής θορύβου, το οποίο βασίζεται στον πληθυσμό της πόλης και στο μέγεθος και την απόσταση του αεροδρομίου. Εάν αυτή η ρύθμιση είναι απενεργοποιημένη, οι πόλεις επιτρέπουν μόνο δύο αεροδρόμια, εκτός εάν η στάση της τοπικής αρχής έχει οριστεί σε «Ανεκτική» STR_CONFIG_SETTING_TOWN_FOUNDING :Ίδρυση πόλεων στο παιχνίδι: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση επιτρέπει στους παίκτες να ιδρύσουν νέες πόλεις στο παιχνίδι @@ -1905,7 +2065,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Επιτρέπ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Επιτρέπεται, προσαρμοσμένο σχέδιο πόλης STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Δημιουργία εμπορευμάτων πόλης: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Η ποσότητα εμπορευμάτων που παράγεται απο σπίτια σε πόλεις, σε σχέση με τον πληθυσμό της πόλης.{}Τετραγωνική ανάπτυξη: Μια πόλη διπλού μεγέθους παράγει τετραπλάσιο αριθμό επιβατών.{}Γραμμική ανάπτυξη: Μια πόλη διπλού μεγέθους παράγει διπλάσιο αριθμό επιβατών. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Η ποσότητα εμπορευμάτων που παράγεται απο σπίτια σε πόλεις, σε σχέση με τον συνολικό πληθυσμό της πόλης.{}Τετραγωνική ανάπτυξη: Μια πόλη διπλού μεγέθους παράγει τετραπλάσιο αριθμό επιβατών.{}Γραμμική ανάπτυξη: Μια πόλη διπλού μεγέθους παράγει διπλάσιο αριθμό επιβατών ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Τετραγωνικός (αρχική έκδοση) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Γραμμικό @@ -1927,7 +2087,7 @@ STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Απόστασ STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} εικονοστοιχεί{P 0 ο α} ###setting-zero-is-special STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Απενεργοποιημένη -STR_CONFIG_SETTING_SOFT_LIMIT :Μέγιστο όριο μη καρφωμένων παραθύρων: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT :Μέγιστο όριο μη καρφιτσωμένων παραθύρων: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Αριθμός μη μόνιμων ανοικτών παράθυρων πριν παλαιότερα παράθυρα κλείσουν αυτόματα για να κάνουν χώρα για τα νεότερα STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} ###setting-zero-is-special @@ -1946,7 +2106,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Η μεγαλύτερη ανάλυση που χρησιμοποιούν τα sprites: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Περιορίστε την μέγιστη ανάλυση για τα sprites. Περιορίζοντας την ανάλυση θα αποφύγετε την χρήση γραφικών υψηλής ανάλυσης ακόμα και όταν είναι διαθέσιμα. Αυτό μπορεί να βοηθήσει να κρατήσετε την εμφάνιση του παιχνιδιού ενιαία όταν χρησιμοποιείτε μία μίξη από GRF αρχεία με και χωρίς γραφικά υψηλής ανάλυσης. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Περιορίστε την μέγιστη ανάλυση για τα sprites. Περιορίζοντας την ανάλυση των sprites, θα αποφύγετε την χρήση γραφικών υψηλής ανάλυσης ακόμα και όταν αυτά είναι διαθέσιμα. Αυτό μπορεί να βοηθήσει να κρατήσετε την εμφάνιση του παιχνιδιού ενιαία όταν χρησιμοποιείτε μία μίξη από GRF αρχεία με και χωρίς γραφικά υψηλής ανάλυσης ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -1969,36 +2129,44 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Καμία STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Αρχικός πολλαπλασιαστής μεγέθους πόλης: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Μέσο μέγεθος μεγάλων πόλεων σε σχέση με τις κανονικές στην αρχή του παιχνιδιού +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Ανανέωση του γραφήματος κατανομής κάθε {STRING} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Χρόνος μεταξύ των επακόλουθων επανυπολογισμών του γραφήματος σύνδεσης. Κάθε επανυπολογισμός υπολογίζει τα σχέδια για ένα στοιχείο του γραφήματος. Αυτό σημαίνει ότι μια τιμή X για αυτήν τη ρύθμιση δεν σημαίνει ότι ολόκληρο το γράφημα θα ενημερώνεται κάθε Χ δευτερόλεπτα. Μόνο κάποιο συστατικό του θα ανανεωθεί. Σε όσο πιο μικρή τιμή το ρυθμίσετε, τόσο περισσότερη επεξεργαστική ισχύς θα χρειαστεί για τον υπολογισμό του. Σε όσο πιο μεγάλη τιμή το ρυθμίσετε, τόσο περισσότερος χρόνος θα χρειαστεί μέχρι να ξεκινήσει η διανομή φορτίου σε νέα δρομολόγια +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Χρήση του {STRING} για τον επαναυπολογισμό του γραφήματος κατανομής +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Χρόνος που απαιτείται για κάθε επανυπολογισμό ενός στοιχείου γραφήματος συνδέσμου. Όταν ξεκινά ένας επανυπολογισμός, δημιουργείται ένα νήμα στο οποίο επιτρέπεται να τρέξει για αυτόν τον αριθμό δευτερολέπτων. Σε όσο πιο μικρή τιμή το ορίσετε, τόσο πιο πιθανό είναι να μην έχει τελειώσει το νήμα στον χρόνο που έχει προβλεφθεί. Στη συνέχεια, το παιχνίδι σταματά μέχρι να είναι σε "καθυστέρηση" ("lag"). Σε όσο πιο μεγάλη τιμή το ορίσετε, τόσο περισσότερος χρόνος θα χρειαστεί για να ενημερωθεί η διανομή όταν αλλάζουν οι διαδρομές STR_CONFIG_SETTING_DISTRIBUTION_PAX :Τρόπος διανομής επιβατών: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Το «συμμετρικό» σημαίνει ότι περίπου ο ίδιος αριθμός επιβατών θα σταλέι από έναν σταθμό Α σε ένα σταθμό Β όσο από τον Β στον Α. Το «ασυμμετρικό» σημαίνει ότι αυθαίρετος αριθμός επιβατών μπορεί να σταλούν σε οποιαδήποτε εκ των δύο κατευθύνσεων. Το «χειροκίνητο» σημαίνει ότι καμία αυτόματη διανομή δε θα γίνεται για τους επιβάτες. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Το «συμμετρικό» σημαίνει ότι περίπου ο ίδιος αριθμός επιβατών θα σταλεί από έναν σταθμό Α σε ένα σταθμό Β όσο και από τον Β στον Α. Το «ασυμμετρικό» σημαίνει ότι αυθαίρετος αριθμός επιβατών μπορεί να σταλούν σε οποιαδήποτε εκ των δύο κατευθύνσεων. Το «χειροκίνητο» σημαίνει ότι καμία αυτόματη διανομή δε θα γίνεται για τους επιβάτες STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Τρόπος διανομής αλληλογραφίας: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Το «συμμετρικό» σημαίνει ότι περίπου η ίδια ποσότητα αλληλογραφίας θα σταλέι από έναν σταθμό Α σε ένα σταθμό Β όσο από τον Β στον Α. Το «ασυμμετρικό» σημαίνει ότι αυθαίρετες ποσότητες αλληλογραφίας μπορεί να σταλούν σε οποιαδήποτε εκ των δύο κατευθύνσεων. Το «χειροκίνητο» σημαίνει ότι καμία αυτόματη διανομή δε θα γίνεται για την αλληλογραφία. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Το «συμμετρικό» σημαίνει ότι περίπου η ίδια ποσότητα αλληλογραφίας θα σταλεί από έναν σταθμό Α σε ένα σταθμό Β όσο και από τον Β στον Α. Το «ασυμμετρικό» σημαίνει ότι αυθαίρετες ποσότητες αλληλογραφίας μπορεί να σταλούν σε οποιαδήποτε εκ των δύο κατευθύνσεων. Το «χειροκίνητο» σημαίνει ότι καμία αυτόματη διανομή δε θα γίνεται για την αλληλογραφία STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Τρόπος διανομής για το ΘΩΡΑΚΙΣΜΕΝΟ είδος φορτίου: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Ο ΘΩΡΑΚΙΣΜΕΝΟΣ τύπος φορτίου περιέχει πολύτιμα στο εύκρατο, διαμάντια στο υποτροπικό ή χρυσό στο υποαρκτικό κλίμα. Τα NewGRF μπορούν να το αλλάξουν αυτό. Το «συμμετρικό» σημαίνει ότι περίπου η ίδια ποσότητα φορτίου θα σταλέι από έναν σταθμό Α σε ένα σταθμό Β όσο από τον Β στον Α. Το «ασυμμετρικό» σημαίνει ότι αυθαίρετες ποσότητες αυτού του φορτίου μπορεί να σταλούν σε οποιαδήποτε εκ των δύο κατευθύνσεων. Το «χειροκίνητο» σημαίνει ότι καμία αυτόματη διανομή δε θα γίνεται για το συκγεκριμένο τύπο φορτίου. Συνιστάται η χρήση του ασυμμετρικού ή χειροκίνητου μοντέλου ο΄ταν παίζετε στο υποαρκτικό κλίμα, καθώς οι τράπεζες δε θα στέλνουν χρυσό πίσω στα χρυσωρυχεία. Για το εύκρατο ή υποτροπικό κλίμα μπορείτε επίσης να χρησιμοιήσετε το συμμετρικό καθώς οι τράπεζες θα στέλνουν πολύτιμα πίσω στην τράπεζα προέλευσης. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Ο ΘΩΡΑΚΙΣΜΕΝΟΣ τύπος φορτίου περιέχει πολύτιμα στο εύκρατο, διαμάντια στο υποτροπικό ή χρυσό στο υποαρκτικό κλίμα. Τα NewGRF ενδέχεται να το αλλάξουν αυτό. Το «συμμετρικό» σημαίνει ότι θα σταλεί περίπου η ίδια ποσότητα φορτίου από έναν σταθμό Α σε ένα σταθμό Β όσο και από τον Β στον Α. Το «ασυμμετρικό» σημαίνει ότι αυθαίρετες ποσότητες αυτού του φορτίου μπορεί να σταλούν σε οποιαδήποτε εκ των δύο κατευθύνσεων. Το «χειροκίνητο» σημαίνει ότι καμία αυτόματη διανομή δε θα γίνεται για το συγκεκριμένο τύπο φορτίου. Συνιστάται η χρήση του «ασυμμετρικού» ή «χειροκίνητου» μοντέλου όταν παίζετε στο υποαρκτικό ή υποτροπικό κλίμα, καθώς οι τράπεζες δέχονται μόνο εμπρόρευμα σε αυτά τα κλίματα. Για το εύκρατο κλίμα μπορείτε επίσης να χρησιμοιήσετε το «συμμετρικό» καθώς οι τράπεζες θα στέλνουν πολύτιμα πίσω στην τράπεζα προέλευσης. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Τρόπος διανομής άλλων ειδών φορτίου: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Το «ασυμμετρικό» σημαίνει ότι αυθαίρετες ποσότητες αυτού του φορτίου μπορεί να σταλούν σε οποιαδήποτε εκ των δύο κατευθύνσεων. Το «χειροκίνητο» σημαίνει ότι καμία αυτόματη διανομή δε θα γίνεται για αυτά τα φορτία. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Το «ασυμμετρικό» σημαίνει ότι αυθαίρετες ποσότητες φορτίου μπορεί να σταλούν σε οποιαδήποτε εκ των δύο κατευθύνσεων. Το «χειροκίνητο» σημαίνει ότι καμία αυτόματη διανομή δε θα γίνεται για αυτά τα φορτία ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :χειροκίνητη STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :μη συμμετρική STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :συμμετρική STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Ακρίβεια διανομής: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Όσο μεγαλύτερη ή τιμή τόσο περισσότερος χρόνος επεξεργαστή χρειάζεται για τον υπολογσιμό του γραφήματος συνδέσμου. Εάν όμως θέσετε χαμηλή τιμή, η διανομή θα είναι ανακριβής και μπορεί να παρατηρήσετε φορτία να μην στέλνονται στοθς προορισμούς που θα έπρεπε να πηγαίνουν. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Όσο μεγαλύτερη ή τιμή αυτή, τόσο περισσότερος χρόνος επεξεργαστή θα χρειάζεται για τον υπολογισμό του γραφήματος συνδέσμου. Αν το ορίσετε πολύ ψηλά, ενδέχεται να παρατηρήσετε καθυστερήσεις. Εάν όμως θέσετε χαμηλή τιμή, η διανομή θα είναι ανακριβής και μπορεί να παρατηρήσετε φορτία να μην στέλνονται στους προορισμούς που θα έπρεπε να πηγαίνουν STR_CONFIG_SETTING_DEMAND_DISTANCE :Επίδραση της απόστασης στη ζήτηση προϊόντων: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Αν ορίσετε αυτό σε μια τιμή μεγαλύτερη από 0, η απόσταση μεταξύ ενός αρχικού σταθμού Α ενός φορτίου και ενός πιθανού προορισμού Β θα επηρεάσει το ποσό του φορτίου που θα αποσταλεί από τον Α στον Β. Όσο πιο μακριά βρίσκεται ο Β από τον Α, τόσο λιγότερο φορτίο θα αποσταλεί. Όσο πιο μεγάλη τιμή ορίσετε, θα αποστέλλεται λιγότερο φορτίο σε μακρινούς προορισμούς και περισσότερο σε κοντινούς. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Αν το ορίσετε σε μια τιμή μεγαλύτερη από 0, η απόσταση μεταξύ ενός αρχικού σταθμού Α ενός φορτίου και ενός πιθανού προορισμού Β θα επηρεάσει το ποσό του φορτίου που θα αποσταλεί από τον Α στον Β. Όσο πιο μακριά βρίσκεται ο Β από τον Α, τόσο λιγότερο φορτίο θα αποσταλεί. Όσο πιο μεγάλη τιμή ορίσετε, θα αποστέλλεται λιγότερο φορτίο σε μακρινούς προορισμούς και περισσότερο σε κοντινούς STR_CONFIG_SETTING_DEMAND_SIZE :Ποσότητα επιστρεφόμενου φορτίου στη συμμετρική ρύθμιση: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Θέτοντας αυτή τη ρύθμιση σε τιμή λιγότερη του 100% κάνετε τη συμμετρική διανομή να συμπεριφέρεται πιο πολύ σαν την ασυμμετρική. Λιγότερο φορτίο θα στέλνεται πίσω εαν μια συγκεκριμένη ποσότητα έχει σταλεί σε έναν σταθμό. Αν τεθεί στο 0% η συμμετρική διανομή συμπεριφέρεται ακριβώς όπως η ασυμμετρική. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Θέτοντας αυτή τη ρύθμιση σε τιμή λιγότερη του 100% κάνετε τη συμμετρική διανομή να συμπεριφέρεται πιο πολύ σαν την ασυμμετρική. Λιγότερο φορτίο θα στέλνεται πίσω εαν μια συγκεκριμένη ποσότητα έχει σταλεί σε έναν σταθμό. Αν τεθεί στο 0% η συμμετρική διανομή συμπεριφέρεται ακριβώς όπως η ασυμμετρική STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Κορεσμός σύντομων οδών πριν τη χρήση οδών μεγάλης χωρητικότητας: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Συχνά υπάρχουν πολλαπλές οδοί μεατξύ δύο σταθμών. Η διανομή φορτίων θα κορέσει την πιο σύντομη οδό πρώτα, και μετέπειτα θα χρησιμοποιήσει τη δεύτερ συντομότερη οδό μέχρι αυτή να κορεστεί και τα λοιπά. Ο κορεσμός εξαρτάται από μια εκτίμηση της χωρητικότητας και ενδεχόμενης χρήσης. Όταν έχει κορεστεί όλες οι οδοί, θα υπερφορτώσει όλες τισ οδούς, προτιμώντας αυτές με μεγάλη χωρητικότητα. Τις περισσότερες φορές όμως ο αλγόριθμος δεν εκτιμά σωστά την χωριτικότητα. Αυτή η ρύθμιση επιτρέπει τον προσδιορισμό μέχρι ποιό ποσοστό μια σύντομοτερη οδός πρέπει να κορεστεί τη πρώτη φορά πριν διαλέξει μια μακρύτερη. Θέστε τη σε λιγότερο απο το 100% για την αποφυγή υπερφορτωμένων σταθμών σε περίπτωση υπερεκτιμημένης χωρητικότητας. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Συχνά υπάρχουν πολλαπλές οδοί μεταξύ δύο σταθμών. Η διανομή φορτίων θα κορέσει την πιο σύντομη οδό πρώτα, και μετέπειτα θα χρησιμοποιήσει τη δεύτερη συντομότερη οδό μέχρι αυτή να κορεστεί και τα λοιπά. Ο κορεσμός εξαρτάται από μια εκτίμηση της χωρητικότητας και ενδεχόμενης χρήσης. Όταν έχουν κορεστεί όλες οι οδοί, αν εξακολουθεί και υπάρχει ζήτηση, θα υπερφορτώσει όλες τις οδούς, προτιμώντας αυτές με μεγάλη χωρητικότητα. Τις περισσότερες φορές όμως, ο αλγόριθμος δεν εκτιμά σωστά την χωρητικότητα. Αυτή η ρύθμιση σάς επιτρέπει να καθορίσετε μέχρι ποιο ποσοστό πρέπει να κορεσθεί μια μικρότερη διαδρομή στο πρώτο πέρασμα πριν επιλεγεί η επόμενη μεγαλύτερη. Ρυθμίστε τη σε λιγότερο από 100% για να αποφύγετε υπερπληθυσμένους σταθμούς σε περίπτωση υπερεκτιμημένης χωρητικότητας -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Μονάδες μέτρησης ταχύτητας: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Μονάδες μέτρησης ταχύτητας (ξηράς): {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Μονάδες ταχύτητας (ναυτικές): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Όποτε εμφανίζεται μια ταχύτητα στη διεπαφή χρήστη, να εμφανίζεται στην επιλεγμένη μονάδα STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Αυτοκρατορικό (μίλια/ώρα) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Μετρικό (χλμ/ώρα) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Μονάδες παιχνιδιού (πλακάκια/ημέρα) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Μονάδες παιχνιδιού (πλακάκια/δευτερόλεπτο) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Κόμβοι STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Μονάδες ισχύος οχημάτων: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Όποτε εμφανίζεται η ισχύς ενός οχήματος στη διεπαφή χρήστη, να εμφανίζεται στην επιλεγμένη μονάδα @@ -2048,29 +2216,23 @@ STR_CONFIG_SETTING_ACCOUNTING :Λογιστι STR_CONFIG_SETTING_VEHICLES :Οχήματα STR_CONFIG_SETTING_VEHICLES_PHYSICS :Φυσική STR_CONFIG_SETTING_VEHICLES_ROUTING :Δρομολογήσεις +STR_CONFIG_SETTING_VEHICLES_ORDERS :Εντολές STR_CONFIG_SETTING_LIMITATIONS :Περιορισμοί STR_CONFIG_SETTING_ACCIDENTS :Καταστροφές/Ατυχήματα STR_CONFIG_SETTING_GENWORLD :Δημιουργία Κόσμου STR_CONFIG_SETTING_ENVIRONMENT :Περιβάλλον +STR_CONFIG_SETTING_ENVIRONMENT_TIME :Χρόνος STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Αρχές STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Πόλεις STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Βιομηχανίες STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Κατανομή φορτίων +STR_CONFIG_SETTING_ENVIRONMENT_TREES :Δέντρα STR_CONFIG_SETTING_AI :Ανταγωνιστές STR_CONFIG_SETTING_AI_NPC :Παίκτες υπολογιστή STR_CONFIG_SETTING_NETWORK :Δίκτυο -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Μέθοδος δρομολόγησης για τρένα: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα τρένα -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Μέθοδος δρομολόγησης για οχήματα δρόμου: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα οδικά οχήματα -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Μέθοδος δρομολόγησης για πλοία: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα πλοία STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Αυτόματη αναστροφή σε σηματοδότες: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Επιτρέπεται στα τρένα να αντιστραφούν σε σήμα, εάν περιμένουν εκεί για πολύ ώρα -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Συνίσταται) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Αλλαγή τιμής ρύθμισης @@ -2097,6 +2259,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Η κα # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Πρόβλημα με τις ρυθμίσεις βίντεο... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... δεν βρέθηκε συμβατή GPU. Η επιτάχυνση υλικού έχει απενεργοποιηθεί +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... Το πρόγραμμα οδήγησης της κάρτας γραφικών προκάλεσε πρόβλημα στο παιχνίδι. Η επιτάχυνση υλικού απενεργοποιήθηκε # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2110,6 +2273,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Παιχ STR_INTRO_GAME_OPTIONS :{BLACK}Επιλογές Παιχνιδιού STR_INTRO_HIGHSCORE :{BLACK}Πίνακας Βαθμολογιών +STR_INTRO_HELP :{BLACK}Βοήθεια και εγχειρίδια χρήσης STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Ρυθμίσεις STR_INTRO_NEWGRF_SETTINGS :{BLACK}Ρυθμίσεις NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Διαδικτυακό Περιεχόμενο @@ -2131,10 +2295,11 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Επιλ STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Εμφάνιση επιλογών παιχνιδιού STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Εμφάνιση του πίνακα βαθμολογιών -STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Ρυθμίσεις οθόνης +STR_INTRO_TOOLTIP_HELP :{BLACK}Αποκτήστε πρόσβαση στην τεκμηρίωση και σε διαδικτυακούς πόρους +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Εμφάνιση ρυθμίσεων STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Εμφάνιση ρυθμίσεων NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Έλεγχος για νέο και ανανεωμένο περιεχόμενο για λήψη -STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Εμφάνιση ρυθμίσεων ΑΙ +STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Εμφάνιση ρυθμίσεων ΤΝ STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Εμφάνιση ρυθμίσεων σενάριου παιχνιδιού STR_INTRO_TOOLTIP_QUIT :{BLACK}Έξοδος από το «OpenTTD» @@ -2153,34 +2318,54 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Είσ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Είστε σίγουροι ότι θέλετε να εγκαταλείψετε το σενάριο; # Help window +STR_HELP_WINDOW_CAPTION :{WHITE}Βοήθεια και εγχειρίδια χρήσης +STR_HELP_WINDOW_WEBSITES :{BLACK}Ιστοσελίδες +STR_HELP_WINDOW_DOCUMENTS :{BLACK}Έγγραφα +STR_HELP_WINDOW_README :{BLACK}Εμφάνιση readme +STR_HELP_WINDOW_CHANGELOG :{BLACK}Ιστορικό αλλαγών +STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Γνωστά σφάλματα/bugs +STR_HELP_WINDOW_LICENSE :{BLACK}Άδεια +STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD +STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Εγχειρίδιο / Wiki +STR_HELP_WINDOW_BUGTRACKER :{BLACK}Αναφορά σφάλματος/bug +STR_HELP_WINDOW_COMMUNITY :{BLACK}Κοινότητα # Cheat window -STR_CHEATS :{WHITE}Απατεωνιές +STR_CHEATS :{WHITE}Ρυθμίσεις πεδίου δοκιμών STR_CHEAT_MONEY :{LTBLUE}Αύξηση χρημάτων κατά {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Παίζετε με την εταιρία: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Μαγική μπουλντόζα (αφαιρεί βιομηχανίες, αμετακίνητα αντικείμενα): {ORANGE}{STRING} -STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Τα τούνελ μπορούν να διασταυρώνονται: {ORANGE}{STRING} -STR_CHEAT_NO_JETCRASH :{LTBLUE}Τα jet δε θα συγκρούονται (συχνά) σε μικρά αεροδρόμια: {ORANGE} {STRING} +STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Οι σήραγγες μπορούν να διασταυρώνονται: {ORANGE}{STRING} +STR_CHEAT_NO_JETCRASH :{LTBLUE}Τα jet δε θα συντρίβονται (συχνά) σε μικρά αεροδρόμια: {ORANGE} {STRING} STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Μεταβολή του μέγιστου ύψους του χάρτη: {ORANGE}{NUM} STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Μεταβολή του μέγιστου ύψους βουνών στο χάρτη STR_CHEAT_CHANGE_DATE :{LTBLUE}Αλλαγή ημ/νίας: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Αλλαγή τρέχοντος έτους STR_CHEAT_SETUP_PROD :{LTBLUE}Ενεργοποίηση δυνατότητας αλλαγής τιμών παραγωγής: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Ορισμός βαθμολογιών σταθμών στο 100%: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Νέος Χρωματισμός STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Εμφάνιση γενικών χρωματικών μοτίβων STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Εμφάνιση χρωματικών μοτίβων τρένων -STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Εμφάνιση χρωματικών μοτίβων οχημάτων δρόμου +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Εμφάνιση χρωματικών μοτίβων οδικών οχημάτων STR_LIVERY_SHIP_TOOLTIP :{BLACK}Εμφάνιση χρωματικών μοτίβων πλοίων STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Εμφάνιση χρωματικών μοτίβων αεροσκαφών -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Επιλογή του βασικού χρώματος για το επιλεγμένο θέμα. Με Ctrl+Κλικ ορίζεται το χρώμα σε κάθε θέμα -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Επιλογή του δευτερεύοντος χρώματος για το επιλεγμένο μοτίβο. Με Ctrl+Κλικ ορίζεται το χρώμα για κάθε θέμα +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Εμφάνιση χρωμάτων ομάδων τραίνων +STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Εμφάνιση χρωμάτων ομάδων οδικών οχημάτων +STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Εμφάνιση χρωμάτων ομάδων πλοίων +STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Εμφάνιση χρωμάτων ομάδων αεροσκαφών +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Επιλογή του βασικού χρώματος για το επιλεγμένο θέμα. Ctrl+Κλικ για ορισμό αυτού του χρώματος για κάθε θέμα +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Επιλογή του δευτερεύοντος χρώματος για το επιλεγμένο θέμα. Ctrl+Κλικ για ορισμό αυτού του χρώματος για κάθε θέμα STR_LIVERY_PANEL_TOOLTIP :{BLACK}Επιλέξτε το χρωματικό μοτίβο για αλλαγή ή πολλαπλά μοτίβα με Ctrl+Κλικ. Πατήστε στο κουτάκι για να επιλέξετε τη χρήση του μοτίβου +STR_LIVERY_TRAIN_GROUP_EMPTY :Δεν έχουν οριστεί ομάδες τραίνων +STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :Δεν έχουν οριστεί ομάδες οδικών οχημάτων +STR_LIVERY_SHIP_GROUP_EMPTY :Δεν έχουν οριστεί ομάδες πλοίων +STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Δεν έχουν οριστεί ομάδες αεροσκαφών ###length 23 -STR_LIVERY_DEFAULT :Πρότυπο Μοτίβου Χρωμάτων +STR_LIVERY_DEFAULT :Προεπιλεγμένο Μοτίβο Χρωμάτων STR_LIVERY_STEAM :Ατμοκίνητη Μηχανή STR_LIVERY_DIESEL :Πετρελαιοκίνητη Μηχανή STR_LIVERY_ELECTRIC :Ηλεκτροκίνητη Μηχανή @@ -2283,6 +2468,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Μέγε STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Μέγεθος χάρτη του παιχνιδιού{}Πατήστε για ταξινόμηση ανά περιοχή STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Ημερομηνία STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Τρέχουσα ημερομηνία +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}ω {NUM}λ +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Χρόνος παιχνιδιού +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Χρόνος παιχνιδιού χωρίς{}το παιχνίδι να βρίσκεται σε παύση STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Γλώσσα, έκδοση διακομιστή, κλπ. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Πατήστε σε ένα παιχνίδι από τη λίστα για το επιλέξετε @@ -2298,6 +2486,7 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Διε STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Κωδικός πρόσκλησης: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Ημερομηνία έναρξης: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Τρέχουσα ημερομηνία: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Χρόνος παιχνιδιού: {WHITE}{NUM}ω {NUM}λ STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Script Παιχνιδιού: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Προστατευμένο με κωδικό! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}ΔΙΑΚΟΜΙΣΤΗΣ ΕΚΤΟΣ ΛΕΙΤΟΥΡΓΙΑΣ @@ -2320,7 +2509,7 @@ STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Προσ STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Εκκίνηση διακομιστή STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Ξεκινήστε το δικό σας διακομιστή -STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Εισάγετε το όνομά σας +STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Εισαγάγετε το όνομά σας STR_NETWORK_SERVER_LIST_ENTER_SERVER_ADDRESS :{BLACK}Δώστε την διεύθυνση του server ή τον κωδικό πρόσκλησης # Start new multiplayer server @@ -2331,7 +2520,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Το ό STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Θέση κωδικού STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Προστατέψτε το παιχνίδι με έναν κωδικό εάν δε θέλετε να είναι δημοσίως προσβάσιμο -STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Ορατότητα +STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Ορατότητα: STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Ορίζει εάν άλλοι άνθρωποι μπορούν να δουν τον server σας στην δημόσια STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} συμπαίκτ{P ης ες} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Μέγιστος αριθμός συμμετεχόντων: @@ -2340,7 +2529,7 @@ STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} ε STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Μέγιστος αριθμός εταιριών: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Περιορισμός του διακομιστή σε συγκεκριμένο αριθμό εταιρειών -STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Εισάγετε το όνομα του δικτυακού παιχνιδιού +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Εισαγάγετε το όνομα του δικτυακού παιχνιδιού # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Σύνδεση... @@ -2361,8 +2550,7 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Ανεύ STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Αποσύνδεση -STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Η πρόσβαση στον διακομιστή προστατεύεται. Εισάγετε τον κωδικό -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Η εταιρεία προστατεύεται από κωδικό. Εισάγετε κωδικό +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Η πρόσβαση στον διακομιστή προστατεύεται. Εισαγάγετε τον κωδικό # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Συνδεδεμένοι παίκτες @@ -2389,6 +2577,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Το όνομα STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Διαχειριστικές ενέργειες που μπορείτε να εκτελέσετε σε αυτόν τον πελάτη STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :Διαχειριστικές ενέργειες που μπορείτε να εκτελέσετε σε αυτή την εταιρία STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Συμμετάσχετε σε αυτή την εταιρία +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Εγκρίνετε την πρόσληψη αυτού του πελάτη STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Στείλτε ένα μήνυμα σε αυτόν τον παίκτη STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Στείλτε ένα μήνυμα σε όλους τους παίκτες αυτής της εταιρίας STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Στείλτε μήνυμα σε όλους τους θεατές @@ -2397,6 +2586,8 @@ STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(Νέα ετα STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Δημιουργήστε μία νέα εταιρία και συμμετέχετε σε αυτήν STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}Αυτός/η είστε εσείς STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Αυτός/η είναι ο/η οικοδεσπότης του παιχνιδιού +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} πελάτ{P ης ες} - {NUM}/{NUM} εταιρί{P α ες} +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}Ο αριθμός των συνδεδεμένων πελατών, ο αριθμός των εταιρειών και ο μέγιστος αριθμός εταιρειών που επιτρέπεται από τον διαχειριστή του διακομιστή # Matches ConnectionType ###length 5 @@ -2409,13 +2600,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Μέσω STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Εκδίωξη STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Απαγόρευση STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Διαγραφή -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Ξεκλείδωμα κωδικού STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Ενέργεια διαχειριστή STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Σίγουρα θέλετε να διώξετε τον παίκτη '{STRING}'; STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Σίγουρα θέλετε να απαγορέψετε τον παίκτη '{STRING}'; STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Σίγουρα θέλετε να διαγράψετε την εταιρία '{COMPANY}'; -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Σίγουρα θέλετε να επαναφέρετε τον κωδικό της εταιρίας '{COMPANY}'; STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Χρήση αναμετάδοσης; STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Δεν ήταν δυνατή η σύνδεση με τον server '{STRING}'.{}Θέλετε να αναμεταδόσετε αυτή την συνεδρία μέσω '{STRING}'; @@ -2423,22 +2612,18 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Όχι STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Ναι, μόνο αυτή τη φορά STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Ναι, μην ρωτήσεις ξανά +STR_NETWORK_ASK_SURVEY_CAPTION :Συμμετοχή σε αυτοματοποιημένη έρευνα; +STR_NETWORK_ASK_SURVEY_TEXT :Θα θέλατε να συμμετάσχετε στην αυτοματοποιημένη έρευνα;{}Το OpenTTD θα μεταδώσει μια έρευνα όταν αποχωρείτε από ένα παιχνίδι.{}Μπορείτε να το αλλάξετε ανά πάσα στιγμή στις «Επιλογές παιχνιδιού». +STR_NETWORK_ASK_SURVEY_PREVIEW :Προεπισκόπηση αποτελέσματος έρευνας +STR_NETWORK_ASK_SURVEY_LINK :Πληροφορίες για την αυτοματοποιημένη έρευνα και ιδιωτικότητα +STR_NETWORK_ASK_SURVEY_NO :Όχι +STR_NETWORK_ASK_SURVEY_YES :Ναι STR_NETWORK_SPECTATORS :Θεατές -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Να μην αποθηκευτεί ο κωδικός -STR_COMPANY_PASSWORD_OK :{BLACK}Δώστε στην εταιρεία νέο κωδικό -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Κωδικός εταιρείας -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Προκαθορισμένος κωδικός εταιρείας -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Χρήση αυτού του κωδικού ως προεπιλογή για τις νέες εταιρείες - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Συμμετοχή STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Συμμετάσχετε και παίξτε ως αυτήν την εταιρία -STR_COMPANY_VIEW_PASSWORD :{BLACK}Κωδικός -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Προστατεύστε την εταιρεία με κωδικό ώστε να αποφύγετε την συμμετοχή ανεπιθύμητων παικτών -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Θέση του κωδικού της εταιρείας # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Αποστολή @@ -2452,7 +2637,7 @@ STR_NETWORK_CHAT_CLIENT :[Προσωπι STR_NETWORK_CHAT_TO_CLIENT :[Προσωπικό] Σε {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Όλοι] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_EXTERNAL :[{3:STRING}] {0:STRING}: {WHITE}{1:STRING} -STR_NETWORK_CHAT_OSKTITLE :{BLACK}Εισάγετε το κείμενο για δικτυακή συζήτηση +STR_NETWORK_CHAT_OSKTITLE :{BLACK}Εισαγάγετε το κείμενο για δικτυακή συζήτηση # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Δεν βρέθηκαν συσκευές δικτύου @@ -2467,6 +2652,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Το ό STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Το όνομα του server σας δεν έχει οριστεί. Το όνομα μπορεί να οριστεί την κορυφή του παραθύρου Multiplayer STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Η έκδοση του πελάτη δεν ταιριάζει με την έκδοση του διακομιστή STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Λανθασμένος κωδικός +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Δεν βρίσκεστε στη λίστα των επιτρεπόμενων πελατών STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Ο διακομιστής είναι γεμάτος STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Έχει απαγορευτεί η είσοδος σας από τον διακομιστή STR_NETWORK_ERROR_KICKED :{WHITE}Έχετε εκδιωχθεί από το παιχνίδι @@ -2482,7 +2668,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Το ό STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Πιθανή απώλεια σύνδεσης STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}T{P 0 ο α} τελευταί{P 0 ο α} {NUM} δευτερόλεπτ{P ο α} δεν έχουν παραληφθεί καθόλου δεδομένα από τον διακομιστή -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :γενικό πρόβλημα STR_NETWORK_ERROR_CLIENT_DESYNC :πρόβλημα συγχρονισμού STR_NETWORK_ERROR_CLIENT_SAVEGAME :δεν ήταν δυνατή η φόρτωση του χάρτη @@ -2494,6 +2680,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :έγινε λή STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :λάθος έκδοση STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :το όνομα είναι ήδη σε χρήση STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :λανθασμένος κωδικός +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :δεν βρίσκεται στη λίστα επιτρεπτών τιμών STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :λάθος εταιρία στο DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :εκδιωχθήκατε από τον διακομιστή STR_NETWORK_ERROR_CLIENT_CHEATER :προσπάθησε να χρησιμοποιησει cheat @@ -2524,41 +2711,41 @@ STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :αναμονή STR_NETWORK_MESSAGE_CLIENT_LEAVING :αποχώρηση STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} συμμετέχει στο παιχνίδι -STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} συμμετέχει στο παιχνίδι (Πελάτης #{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} συμμετέχει στην εταιρία #{2:NUM} +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {0:STRING} συμμετέχει στο παιχνίδι (Πελάτης #{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {0:STRING} συμμετέχει στην εταιρία #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} συμμετέχει στους θεατές -STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ξεκίνησε μια νέα εταιρία (#{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} αποχώρησε από το παιχνίδι ({2:STRING}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {0:STRING} ξεκίνησε μια νέα εταιρία (#{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {0:STRING} αποχώρησε από το παιχνίδι ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} άλλαξαν το όνομά τους σε {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} έδωσε {2:CURRENCY_LONG} σε {1:STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {0:STRING} έδωσε {2:CURRENCY_LONG} στον {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Ο διακομιστής έκλεισε την συνεδρία STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Ο διακομιστής επανεκκινεί...{}Παρακαλώ περιμένετε... STR_NETWORK_MESSAGE_KICKED :*** {STRING} εκδιώχθηκε. Λόγος: ({STRING}) STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}Η εγγραφή του server απέτυχε -STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}Άλλος ένας server με τον ίδιο κωδικό πρόσκλησης έχει εγγραφεί. Γίνεται αλλαγή σε "τοπικό" παιχνίδι. +STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}Άλλος ένας server με τον ίδιο κωδικό πρόσκλησης έχει εγγραφεί. Γίνεται αλλαγή σε «τοπικό» παιχνίδι. STR_NETWORK_ERROR_COORDINATOR_ISOLATED :{WHITE}Ο server σας δεν επιτρέπει τις απομακρυσμένες συνδέσεις STR_NETWORK_ERROR_COORDINATOR_ISOLATED_DETAIL :{WHITE}Οι άλλοι παίκτες δεν θα μπορούν να συνδεθούν στον server σας # Content downloading window -STR_CONTENT_TITLE :{WHITE}Περιεχόμενο κατεβαίνει +STR_CONTENT_TITLE :{WHITE}Λαμβάνεται το περιεχόμενο STR_CONTENT_TYPE_CAPTION :{BLACK}Τύπος STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Τύπος περιεχόμενου STR_CONTENT_NAME_CAPTION :{BLACK}Όνομα STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Το όνομα του περιεχομένου STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Πατήστε σε μια γραμμή για να δείτε λεπτομέρειες{}Πατήστε στο κουτάκι για το επιλέξετε για κατέβασμα STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Επιλογή όλων -STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Μαρκάρισμα όλων των περιεχομένων για κατέβασμα +STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Μαρκάρισμα όλων των περιεχομένων για λήψη STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Επιλέξτε αναβαθμίσεις STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Μαρκάρισμα όλων των περιεχόμενων που είναι για αναβάθμιση υπαρχόντων περιεχόμενων για κατέβασμα STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Αποεπιλογή όλων STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Σημείωση όλων των περιεχομένων να μην κατέβουν STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Αναζήτηση εξωτερικών ιστοσελίδων -STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Ψάξτε για περιεχόμενο που δεν είναι διαθέσιμο μέσω την υπηρεσία λήψης περιεχομένου του OpenTTD σε ιστοσελίδες που δεν είναι συνδεδεμένες με το OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Αναζήτηση για περιεχόμενο που δεν είναι διαθέσιμο μέσω της υπηρεσίας λήψης περιεχομένου του OpenTTD σε ιστοσελίδες που δεν σχετίζονται με το OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Φεύγετε από το OpenTTD! -STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Οι όροι και προϋποθέσεις για τη λήψη περιεχομένου από εξωτερικές ιστοσελίδες διαφέρουν.{}Θα πρέπει να αναφερθείτε στις εξωτερικές ιστοσελίδες για οδηγίες περί της εγκατάστασης του περιεχομένου στο OpenTTD.{}Θέλετε να συνεχίσετε; +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Οι όροι και προϋποθέσεις για τη λήψη περιεχομένου από εξωτερικές ιστοσελίδες διαφέρουν.{}Θα πρέπει να ανατρέξετε σε αυτές για οδηγίες σχετικά με την εγκατάσταση του περιεχομένου στο OpenTTD.{}Θέλετε να συνεχίσετε; STR_CONTENT_FILTER_TITLE :{BLACK}Ετικέτα/όνομα φίλτρου: -STR_CONTENT_OPEN_URL :{BLACK}Επισκεφθείτε την ιστοσελίδα +STR_CONTENT_OPEN_URL :{BLACK}Ιστοσελίδα STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Επισκεφθείτε την ιστοσελίδα αυτού του περιεχομένου STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Λήψη STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Έναρξη κατεβάσματος του επιλεγμένου περιεχόμενου @@ -2572,7 +2759,7 @@ STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Αυτ STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Το έχετε ήδη αυτό STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Αυτό το περιεχόμενο είναι άγνωστο και δεν γίνεται να κατέβει από το OpenTTD -STR_CONTENT_DETAIL_UPDATE :{SILVER}Αυτό είναι αντικατάσταση ενός υπάρχοντος {STRING} +STR_CONTENT_DETAIL_UPDATE :{SILVER}Αυτό αντικαθιστά ένα υπάρχον {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Όνομα: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Έκδοση: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Περιγραφή: {WHITE}{STRING} @@ -2628,7 +2815,8 @@ STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Εναλ STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για κτιζόμενα κτίρια όπως σταθμούς, αμαξοστάσια και σημεία καθοδήγησης. Ctrl+Κλικ για να την κλειδώσετε. STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για γέφυρες. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για κτίρια όπως φάρους και κεραίες. Ctrl+Κλικ για να την κλειδώσετε -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τις συνδέσεις. Ctrl+Κλικ για να την κλειδώσετε +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για την εναέρια ηλεκτροδότηση. Ctrl+Κλικ για να την κλειδώσετε +STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για φόρτωση και κείμενο κόστους/εσόδων. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Επιλέξτε τα αντικείμενα που θα είναι αόρατα αντί για διάφανα # Linkgraph legend window @@ -2644,7 +2832,10 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}υπερφορτωμένο # Linkgraph tooltip +STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}{CARGO_LONG} προς μεταφορά ανά μήνα από {STATION} προς {STATION} ({COMMA}% of capacity){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG} προς μεταφορά ανά λεπτό από {STATION} προς {STATION} ({COMMA}% of capacity){STRING} STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} προς μεταφορά πίσω ({COMMA}% της χωρητικότητας) +STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Μέσος χρόνος ταξιδιού: {UNITS_DAYS_OR_SECONDS} # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Κάλυψη περιοχής @@ -2654,13 +2845,15 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Μη ε STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Εμφάνιση κάλυψης του προτεινόμενου τόπου STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Δέχεται: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Προμηθεύει : {GOLD}{CARGO_LIST} +STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Κόστος συντήρησης: {GOLD}{CURRENCY_SHORT}/έτος +STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Κόστος συντήρησης: {GOLD}{CURRENCY_SHORT}/περίοδο # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Συνένωση σταθμού -STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Χτίστε ένα ξεχωριστό σταθμό +STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Κατασκευάστε ένα ξεχωριστό σταθμό STR_JOIN_WAYPOINT_CAPTION :{WHITE}Συνένωση σημείου καθοδήγησης -STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Κτίσιμο ενός ξεχωριστού σημείου καθοδήγησης +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Κατασκευή ενός ξεχωριστού σημείου καθοδήγησης # Generic toolbar STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Απενεργοποιημένο διότι δεν υπάρχουν διαθέσιμα οχήματα για αυτή την υποδομή @@ -2671,16 +2864,16 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Κατασκε STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Κατασκευή Μονοτρόχιου Σιδηρόδρομου STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Κατασκευή Σιδηροδρόμου Maglev -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Κατασκευή σιδηρόδρομου. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση σιδηρόδρομου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Κατασκευή σιδηροδρομικής γραμμής χρησιμοποιώντας την Αυτόματη Σιδηροτροχιά. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση σιδηρόδρομου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Κατασκευή αμαξοστάσιου (για αγορά και επισκευή τρένων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Μετατροπή σιδηροτροχιάς σε σημείο καθοδήγησης. Με Ctrl ενεργοποιείται η συνένωση σημείων καθοδήγησης. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Κατασκευή σταθμού τρένων. Με Ctrl ενεργοποιείται η συνένωση σταθμών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Κατασκευή σηματοδοτών. Με Ctrl εναλλάσσονται σηματοφόροι/σηματοδότες{}Με σύρσιμο κατασκευάζονται σηματοδότες κατά μήκος μιας ευθείας σιδηροτροχιάς. Με το Ctrl πατημένο, κατασκευάζονται σηματοδότες μέχρι την επομένη διασταύρωση ή τον επόμενο σηματοδότη{}Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα του παραθύρου επιλογής σηματοδοτών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Κατασκευή γέφυρας σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Κατασκευή τούνελ σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης για σιδηρόδρομους, σηματοδότες, σημείων καθοδήγησης και σταθμών. Κρατώντας πατημένο το Ctrl αφαιρεί και τον σιδηρόδρομο από τα σημεία καθοδήγησης και σταθμούς -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Μετατροπή/Αναβάθμιση του τύπου γραμμής. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Κατασκευή σιδηροτροχιάς. Ctrl+Κλικ για αφαίρεση σιδηροτροχιάς. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Κατασκευή σιδηροτροχιάς με χρήση της Αυτόματης Σιδηροτροχιάς. Ctrl+Κλικ για αφαίρεση σιδηροτροχιάς. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Κατασκευή αμαξοστάσιου (για αγορά και επισκευή τρένων). Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Μετατροπή σιδηροτροχιάς σε σημείο καθοδήγησης. Ctrl+Κλικ για επιλογή πρόσθετου σημείου καθοδήγησης για συνένωση. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Κατασκευή σταθμού τρένων. Ctrl+Κλικ για επιλογή πρόσθετου σταθμού για συνένωση. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Κατασκευή σηματοδοτών στον σιδηρόδρομο. Ctrl+Κλικ για κατασκευή του εναλλακτικού είδους σηματοδότη{}Με Κλικ+σύρσιμο κατασκευάζονται σηματοδότες κατά μήκος μιας σιδηροτροχιάς ανά ορισμένο διάστημα. Ctrl+Κλικ+σύρσιμο για κατασκευή σηματοδοτών μέχρι την επομένη διασταύρωση, σταθμό ή σηματοδότη. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Κατασκευή σιδηροδρομικής γέφυρας. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Κατασκευή σιδηροδρομικής σήραγγας. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης σιδηροτροχιών, σηματοδοτών, σημείων καθοδήγησης και σταθμών. Ctrl+Κλικ για αφαίρεση και της σιδηροτροχιάς από σημεία καθοδήγησης και σταθμούς +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Μετατροπή/Αναβάθμιση του τύπου σιδηροτροχιάς. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο STR_RAIL_NAME_RAILROAD :Σιδηρόδρομος STR_RAIL_NAME_ELRAIL :Ηλεκτροδοτημένη σιδηροτροχιά @@ -2693,24 +2886,51 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Επιλ # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Σημείο καθοδήγησης -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Επιλογή τύπου σημείου καθοδήγησης # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Επιλογή Σιδηροδρομικού Σταθμού STR_STATION_BUILD_ORIENTATION :{BLACK}Προσανατολισμός STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Επιλογή προσανατολισμού σιδηροδρομικού σταθμού -STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Αριθμός γραμμών +STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Αριθμός σιδηροτροχιών STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Επιλέξτε τον αριθμό πλατφορμών για το σιδηροδρομικό σταθμό STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Μήκος πλατφόρμας STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Επιλέξτε το μήκος του σιδηροδρομικού σταθμού STR_STATION_BUILD_DRAG_DROP :{BLACK}Σύρετε και Ελευθερώστε STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Φτιάξε ένα σταθμό χρησιμοποιώντας σύρσιμο και ελευθέρωση -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Επιλογή τύπου σταθμών για εμφάνιση -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Επιλέξτε τον τύπο του σταθμού προς κτίσιμο +STR_PICKER_MODE_ALL :Όλα +STR_PICKER_MODE_ALL_TOOLTIP :Εναλλαγή εμφάνισης στοιχείων από όλες τις κατηγορίες +STR_PICKER_MODE_USED :Χρησιμοποιείται +STR_PICKER_MODE_USED_TOOLTIP :Εναλλαγή εμφάνισης μόνο υπαρχόντων στοιχείων +STR_PICKER_MODE_SAVED :Αποθηκεύτηκε +STR_PICKER_MODE_SAVED_TOOLTIP :Εναλλαγή εμφάνισης μόνο αποθηκευμένων στοιχείων -STR_STATION_CLASS_DFLT :Εξ ορισμού σταθμός +STR_PICKER_STATION_CLASS_TOOLTIP :Επιλογή κατηγορίας σταθμού για εμφάνιση +STR_PICKER_STATION_TYPE_TOOLTIP :Επιλογή τύπου σταθμού για κατασκευή. Ctrl+κλικ για προσθήκη σε ή αφαίρεση από αποθηκευμένα στοιχεία +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Επιλογή κατηγορίας σημείου καθοδήγησης για εμφάνιση +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Επιλογή σημείου καθοδήγησης για κατασκευή. Ctrl+κλικ για προσθήκη σε ή αφαίρεση από αποθηκευμένα στοιχεία +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Επιλογή κατηγορίας στάσεων λεωφορείων για εμφάνιση +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Επιλογή κατηγορίας στάσεων λεωφορείων για κατασκευή. Ctrl+κλικ για προσθήκη σε ή αφαίρεση από αποθηκευμένα στοιχεία +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Επιλογή κατηγορίας σταθμών φορτηγών για εμφάνιση. +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Επιλογή κατηγορίας σταθμών φορτηγών για κατασκευή. Ctrl+κλικ για προσθήκη σε ή αφαίρεση από αποθηκευμένα στοιχεία +STR_PICKER_OBJECT_CLASS_TOOLTIP :Επιλογή κατηγορίας αντικειμένων για εμφάνιση +STR_PICKER_OBJECT_TYPE_TOOLTIP :Επιλογή κατηγορίας αντικειμένων για εμφάνιση. Ctrl+κλικ για προσθήκη σε ή αφαίρεση από αποθηκευμένα στοιχεία. Ctrl+κλικ+σύρσιμο για να επιλεγεί διαγώνια περιοχή. Επίσης, πατήστε Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_PICKER_HOUSE_CLASS_TOOLTIP :Επιλέξτε τη ζώνη της πόλης που θέλετε να εμφανίσετε +STR_PICKER_HOUSE_TYPE_TOOLTIP :Επιλογή τύπου σπιτιού για κατασκευή. Ctrl+κλικ για προσθήκη σε ή αφαίρεση από αποθηκευμένα στοιχεία + +STR_HOUSE_PICKER_CAPTION :Επιλογή Σπιτιού + +STR_HOUSE_PICKER_CLASS_ZONE1 :Άκρη +STR_HOUSE_PICKER_CLASS_ZONE2 :Περίχωρα +STR_HOUSE_PICKER_CLASS_ZONE3 :Εξωτερικά Προάστια +STR_HOUSE_PICKER_CLASS_ZONE4 :Εσωτερικά Προάστια +STR_HOUSE_PICKER_CLASS_ZONE5 :Κέντρο της πόλης + +STR_STATION_CLASS_DFLT :Προεπιλεγμένος +STR_STATION_CLASS_DFLT_STATION :Προεπιλεγμένος σταθμός +STR_STATION_CLASS_DFLT_ROADSTOP :Προεπιλεγμένη οδική στάση STR_STATION_CLASS_WAYP :Σημείο καθοδηγήσης +STR_STATION_CLASS_WAYP_WAYPOINT :Προεπιλεγμένο σημείο καθοδήγησης # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Επιλογή Σηματοδότη @@ -2718,28 +2938,32 @@ STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Εναλ STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Σηματοδότες Τμήματος (σηματοφόρος){}Αυτός είναι ο πιο βασικός τύπος σηματοδότη, επιτρέποντας μόνο ένα τρένο να βρίσκεται σε κάθε τμήμα κάθε φορά STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Σηματοδότης-Εισόδου (σηματοφόρος){}Πράσινο όσο υπάρχει ένας ή περισσότεροι πράσινοι σηματοδότες-εξόδου στο επόμενο τμήμα γράμμης. Διαφορετικά δείχνει κόκκινο STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Σηματοδότης-Εξόδου (σηματοφόρος){}Συμπεριφέρεται με τον ίδιο τρόπο οπως οι σηματοδότες τμήματος αλλά είναι απαραίτητο να τεθεί το σωστό χρώμα στους προ-σηματοδότες είσοδου και συνδυαστικούς -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Συνδυαστικός Σηματοδότης (σηματοφόρος){}Ο συνδυαστικός σηματοδότης απλά λειτουργεί ταυτόχρονα ως σηματοδότης εισόδου και εξόδου. Αυτό επιτρέπει το κτίσιμο μεγάλυτερων «δέντρων» με προ-σηματοδότες +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Συνδυαστικός Σηματοδότης (σηματοφόρος){}Ο συνδυαστικός σηματοδότης απλά λειτουργεί ταυτόχρονα ως σηματοδότης εισόδου και εξόδου. Αυτό επιτρέπει την κατασκευή μεγάλυτερων «δέντρων» με προ-σηματοδότες STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Σηματοδότης Τροχιάς (σηματοφόρος){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Κανονικοί σηματοδότες τροχιάς μπορούν να περαστούν από την πίσω πλευρά STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Μονόδρομος Σηματοδότης Τροχιάς (σηματοφόρος){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Μονόδρομοι σηματοδότες τροχιάς δεν μπορούν να περαστούν από την πίσω πλευρά. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Σηματοδότης Τμήματος (ηλεκτρικός){}Αυτός είναι ο πιο βασικός τύπος σηματοδότη, επιτρέποντας μόνο ένα τρένο να είναι στο ίδιο τμήμα την ίδια στιγμή. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Σηματοδότης Εισόδου (ηλεκτρικός){}Πράσινο όσο υπάρχει ένας ή περισσότεροι πράσινοι σηματοδότες εξόδου στο επόμενο τμήμα γραμμής. Διαφορετικά είναι κόκκινο STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Σηματοδότης Εξόδου (ηλεκτρικός){}Συμπεριφέρεται με τον ίδιο τρόπο όπως οι σηματοδότες τμήματος αλλά είναι απαραίτητο να θέσει το σωστό χρώμα στους προ-σηματοδότες εισόδου και συνδυαστικούς -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Συνδυαστικός Σηματοδότης (ηλεκτρικός){}Ο συνδυαστικός σηματοδότης δουλεύει απλά ως σηματοδότης εισόδου και εξόδου ταυτόχρονα. Αυτό σας επιτρέπει το κτίσιμο μεγάλων «δέντρων» με προ-σηματοδότες +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Συνδυαστικός Σηματοδότης (ηλεκτρικός){}Ο συνδυαστικός σηματοδότης δουλεύει απλά ως σηματοδότης εισόδου και εξόδου ταυτόχρονα. Αυτό σας επιτρέπει την κατασκευή μεγάλων «δέντρων» με προ-σηματοδότες STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Σηματοδότης Τροχιάς (ηλεκτρικός){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Κανονικοί σηματοδότες τροχιάς μπορούν να περαστούν από την πίσω πλευρά STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Μονόδρομος Σηματοδότης Τροχιάς (ηλεκτρικός){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Μονόδρομοι σηματοδότες τροχιάς δεν μπορούν να περαστούν από την πίσω πλευρά -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Μετατροπέας Σηματοδότη{}Όταν επιλέγεται, πατώντας σε έναν υπάρχωντα σηματοδότη θα τον μετατρέψει στον επιλεγμένο τύπο και παραλλαγή σηματοδότη. Με Ctrl+Κλικ εναλλάσσεται με την υπάρχουσα παραλλαγή. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος μετατροπής +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Μετατροπή σήματος{}Πατήστε σε ένα υπάρχον σήμα για να το μετατρέψετε στον επιλεγμένο τύπο και παραλλαγή. Ctrl+Κλικ για εναλλαγή της υπάρχουσας παραλλαγής. Shift+Κλικ για εμφάνιση του εκτιμώμενου κόστους μετατροπής STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Απόσταση μεταξύ σηματοδοτών με σύρσιμο STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Μείωση απόστασης μεταξύ σηματοδοτών με σύρσιμο STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Αύξηση απόστασης μεταξύ σηματοδοτών με σύρσιμο # Bridge selection window -STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Επιλογή Γέφυρας -STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Επιλογή Γέφυρας Δρόμου -STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Επιλογή γέφυρας - πατήστε στην γέφυρα της προτίμησής σας για κατασκευή -STR_BRIDGE_NAME_SUSPENSION_STEEL :Ατσάλινη, με Αναρτήσεις +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Επιλογή Σιδηροδρομικής Γέφυρας +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Επιλογή Οδικής Γέφυρας +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Επιλογή γέφυρας - πατήστε στη γέφυρα της προτίμησής σας για κατασκευή +STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY} +STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} +STR_BRIDGE_NAME_SUSPENSION_STEEL :Ατσάλινη, Κρεμαστή STR_BRIDGE_NAME_GIRDER_STEEL :Ατσάλινη, με Δοκούς -STR_BRIDGE_NAME_CANTILEVER_STEEL :Ατσάλινη, Κρεμαστή -STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Τσιμεντένια, με Αναρτήσεις +STR_BRIDGE_NAME_CANTILEVER_STEEL :Ατσάλινη, Αρθρωτή +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Τσιμεντένια, Κρεμαστή STR_BRIDGE_NAME_WOODEN :Ξύλινη STR_BRIDGE_NAME_CONCRETE :Τσιμεντένια STR_BRIDGE_NAME_TUBULAR_STEEL :Ατσάλινη, Σωληνοειδής @@ -2749,25 +2973,27 @@ STR_BRIDGE_TUBULAR_SILICON :Σιλικόν # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Κατασκευή Δρόμου STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Κατασκευή Τροχιόδρομου -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Κατασκευή κομματιού δρόμου. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση δρόμου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Κατασκευή κομματιού τροχιοδρόμου. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση τροχιόδρομου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Κατασκευή οδικού δικτύου με χρήση της λειτουργίας Αυτόματου Δρόμου. Με Ctrl εναλλάσσεται η κατασκευή/αφαίρεση δρόμου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Κατασκευή τροχιοδρόμου με χρήση της λειτουργίας Αυτόματης Γραμμής. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση τροχιόδρομου. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Κατασκευή αμαξοστασίου οχημάτων (για αγορά και επισκευή οχημάτων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Κατασκευή αμαξοστασίου οχημάτων τραμ (για αγορά και επισκευή οχημάτων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Κατασκευή σταθμού λεωφορείων. Με Ctrl ενεργοποιείται η συνένωση σταθμών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Κατασκευή επιβατικού σταθμού τραμ. Με Ctrl ενεργοποιείται η συνένωση επιβατικών σταθμών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Κατασκευή σταθμού φόρτωσης φορτηγών. Με Ctrl ενεργοποιείται η συνένωση σταθμών φόρτωσης. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Κατασκευή εμπορευματικού σταθμού τραμ. Με Ctrl ενεργοποιείται συνένωση εμπορευματικών σταθμών. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Κατασκευή οδικού τμήματος. Ctrl+Κλικ για αφαίρεση οδικού τμήματος. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Κατασκευή τμήματος τροχιοδρόμου. Ctrl+Κλικ για αφαίρεση τροχιόδρομου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Κατασκευή οδικού δικτύου χρησιμοποιώντας τη λειτουργία Αυτόματου Δρόμου. Ctrl+Κλικ για αφαίρεση δρόμου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Κατασκευή τροχιοδρόμου χρησιμοποιώντας τη λειτουργία Αυτόματου Τροχιοδρόμου. Ctrl+Κλικ για αφαίρεση τροχιόδρομου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Κατασκευή αμαξοστασίου οδικών οχημάτων (για αγορά και επισκευή οχημάτων). Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Κατασκευή αμαξοστασίου οχημάτων τροχιοδρόμου (για αγορά και συντήρηση οχημάτων). Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Κατασκευή σημείου αναφοράς στο δρόμο. Ctrl+Click για επιλογή πρόσθετου σημείου αναφοράς για συμμετοχή. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Κατασκευή σημείου αναφοράς στην τροχιά τραμ. Ctrl+Click για επιλογή πρόσθετου σημείου αναφοράς για συμμετοχή. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Κατασκευή σταθμού λεωφορείων. Ctrl+Κλικ για επιλογή πρόσθετου σταθμού για συνένωση. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Κατασκευή επιβατικού σταθμού τροχιοδρόμου. Ctrl+Κλικ για επιλογή πρόσθετου επιβατικού σταθμού για συνένωση. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Κατασκευή σταθμού φορτηγών. Ctrl+Κλικ για επιλογή πρόσθετου σταθμού για συνένωση. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Κατασκευή εμπορευματικού σταθμού τροχιοδρόμου. Ctrl+Κλικ για επιλογή πρόσθετου εμπορευματικού σταθμού για συνένωση. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Ενεργοποίηση/Απενεργοποίηση μονόδρομων -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Κατασκευή γέφυρας δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Κατασκευή γέφυρας τροχιοδρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Κατασκευή τούνελ δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Κατασκευή τούνελ τροχιοδρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης για αυτοκινητόδρομους -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Εναλλαγή κτισίματος/αφαίρεσης της κατασκευής τροχιόδρομου -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Μετατρέψτε/Αναβαθμίστε τον τύπο του δρόμου. To Shift ανοιγοκλέινει το κατασκευαστική/εμφανισιακή εκτίμηση κόστους -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Μετατρέψτε/Αναβαθμίστε τον τύπο του τραμ. Το Shift εναλλάσει την κατασκευαστική/εμφανισιακή εκτίμηση κόστους +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Κατασκευή οδικής γέφυρας. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Κατασκευή γέφυρας τροχιοδρόμου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Κατασκευή οδικής σήραγγας. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Κατασκευή σήραγγας τροχιοδρόμου. Επιπρόσθετα πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης στην κατασκευή δρόμων +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Εναλλαγή προσθήκης/αφαίρεσης για την κατασκευή τροχιόδρομου +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Μετατρέψτε/Αναβαθμίστε τον τύπο του δρόμου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Μετατρέψτε/Αναβαθμίστε τον τύπο του τροχιοδρόμου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο STR_ROAD_NAME_ROAD :Δρόμος STR_ROAD_NAME_TRAM :Τροχιόδρομος @@ -2782,7 +3008,7 @@ STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Επιλ STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Προσανατολισμός Στάσης Λεωφορείου STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό της στάσης των λεωφορείων STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Προσανατολισμός Σταθμού Φόρτωσης Φορτηγών -STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του σταθμού φόρτωσης φορτηγών +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του σταθμού φορτηγών STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Προσανατολισμός Επιβατικού Σταθμού Τραμ STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του επιβατικού σταθμού τραμ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Προσανατολισμός Εμπορευματικού Σταθμού Τραμ @@ -2791,14 +3017,14 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Επιλ # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Κατασκευή Καναλιού Νερού STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Κανάλια Νερού -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Κτίσιμο καναλιών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Κατασκευή υδατοφράκτη. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Κατασκευάστε ναυπηγείο πλοίων (για αγορά και επισκευή πλοίων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Κατασκευή λιμένα πλοίων. Με Ctrl ενεργοποιείται η συνένωση λιμένων. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Τοποθετήστε μια σημαδούρα που μπορεί να χρησιμοποιηθεί ως σημείο καθοδήγησης. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Κατασκευή καναλιού. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Προσδιορισμός θαλάσσιας επιφάνειας.{}Δημιουργία καναλιού, εκτός εάν το πλήκτρο Ctrl είναι κρατημένο στο επίπεδο της θάλασσας, όπου θα πλημμυρίσει τις παρακείμενες περιοχές -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Τοποθετήστε ποτάμια. Το Ctrl επιλέγει την περιοχή διαγώνια +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Κατασκευή καναλιών. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Κατασκευή υδατοφράκτη. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Κατασκευή ναυπηγείου πλοίων (για αγορά και επισκευή πλοίων). Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Κατασκευή λιμένα πλοίων. Ctrl+Κλικ για επιλογή πρόσθετου σταθμού για συνένωση. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Τοποθετήστε σημαδούρα η οποία μπορεί να χρησιμοποιηθεί ως σημείο καθοδήγησης. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Κατασκευή υδραγωγείου. Επιπρόσθετα πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Κατασκευή καναλιού. Εναλλακτικά, Ctrl+Κλικ στο επίπεδο της θάλασσας για να πλημμυρίσετε με θαλασσινό νερό +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Τοποθέτηση ποταμιών. Ctrl+Κλικ για διαγώνια επιλογή # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Προσανατολισμός Ναυπηγείου Πλοίων @@ -2809,7 +3035,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Λιμά # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Αεροδρόμια -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Κατασκευή αεροδρομίου. Με Ctrl ενεργοποιείται η συνένωση αεροδρομίων. Με Shift εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Κατασκευή αεροδρομίου. Ctrl+Κλικ για επιλογή πρόσθετου σταθμού για συνένωση. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Επιλογή Αεροδρομίου @@ -2836,15 +3062,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Παρα # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Μορφοποίηση εδάφους -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Χαμηλώστε μια γωνία του εδάφους. Με σύρσιμο υποβαθμίζετε την πρώτη επιλεγμένη γωνία και ισοπεδώνετε την επιφάνεια στο νέο ύψος. Με Ctrl επιλέγετε την επιφάνεια διαγώνια. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Ανυψώστε μια γωνία του εδάφους. Με σύρσιμο ανυψώνεται η πρώτη επιλεγμένη γωνία και ισοπεδώνεται η επιφάνεια στο νέο ύψος. Με Ctrl επιλέγετε την επιφάνεια διαγώνια. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστος -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Ισοπέδωση της γης στο ύψος της πρώτης γωνίας. Με Ctrl επιλέγετε την επιφάνεια διαγώνια. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Αγορά γης για μελλοντική χρήση. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Χαμήλωμα μιας γωνίας εδάφους. Κλικ+Σύρσιμο για χαμήλωμα της πρώτης επιλεγμένης γωνίας και ισοπέδωση της επιφάνειας στο νέο ύψος της γωνίας. Ctrl+Κλικ+Σύρσιμο για διαγώνια επιλογή της επιφάνειας. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Ανύψωση μιας γωνίας εδάφους. Κλικ+Σύρσιμο για ανύψωση της πρώτης επιλεγμένης γωνίας και ισοπέδωση της επιφάνειας στο νέο ύψος της γωνίας. Ctrl+Κλικ+Σύρσιμο για διαγώνια επιλογή της επιφάνειας. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Ισοπέδωση της γης στο ύψος της πρώτης επιλεγμένης γωνίας. Ctrl+Κλικ+Σύρσιμο για διαγώνια επιλογή της επιφάνειας. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Αγορά γης για μελλοντική χρήση. Ctrl+Κλικ για διαγώνια επιλογή. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Επιλογή Αντικείμενου -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Επιλογή αντικείμενου για κατασκευή. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστος -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Επιλογή της κατηγορίας του αντικείμενου για κτίσιμο STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Προεπισκόπηση του αντικείμενου STR_OBJECT_BUILD_SIZE :{BLACK}Μέγεθος: {GOLD}{NUM} x {NUM} τετράγωνα @@ -2855,20 +3079,20 @@ STR_OBJECT_CLASS_TRNS :Αναμετα STR_PLANT_TREE_CAPTION :{WHITE}Δέντρα STR_PLANT_TREE_TOOLTIP :{BLACK}Επιλέξτε τύπο δέντρου για φύτευση. Αν το τετραγωνίδιο έχει ήδη ένα δέντρο, αυτό θα προσθέσει περισσότερα δέντρα μεικτών τύπων ανεξάρτητα από τον επιλεγμένο τύπο STR_TREES_RANDOM_TYPE :{BLACK}Δέντρα τυχαίου τύπου -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Τοποθετήστε δέντρα τυχαίου τύπου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Τοποθέτηση δέντρων τυχαίου τύπου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Τυχαία Δέντρα STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Φυτέψτε δέντρα τυχαία στο έδαφος STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Κανονικό -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Φυτέψτε μοναδικά δέντρα σέρνοντας πάνω από το τοπίο. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Φυτέψτε μεμονωμένα δέντρα σέρνοντας πάνω από το τοπίο STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Άλσος -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Φυτέψτε μικρά δάση σέρνοντας πάνω από το τοπίο. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Φυτέψτε μικρά δάση σέρνοντας πάνω από το τοπίο STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Δάσος -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Φυτέψτε μεγάλα δάση με σύρσιμο του ποντικιού πάνω από το τοπίο. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Φυτέψτε μεγάλα δάση σέρνοντας πάνω από το τοπίο # Land generation window (SE) -STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Δημιουργία Γης -STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Τοποθέτηση πετρώδεις επιφανειών στο τοπίο -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Ορίστε περιοχή ερήμου.{}Κρατήστε πατημένο το Ctrl για να την αφαιρέσετε +STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Δημιουργία Εδάφους +STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Τοποθέτηση πετρωδών περιοχών στο τοπίο +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Ορίστε περιοχή ερήμου.{}Ctrl+Κλικ για αφαίρεση περιοχής ερήμου STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Αύξηση περιοχής για χαμήλωμα/ανύψωση εδάφους STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Μείωση περιοχής για χαμήλωμα/ανύψωση εδάφους STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Δημιουργία τυχαίου εδάφους @@ -2882,16 +3106,16 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Είστ # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Δημιουργία Πόλης STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Νέα Πόλη -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Ίδρυση νέας πόλης. Με Shift+Κλικ εμφανίζεται μόνο το εκτιμώμενο κόστος +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Ίδρυση νέας πόλης. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Τυχαία Πόλη STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Ίδρυση πόλης σε τυχαία τοποθεσία STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Πολλές τυχαίες πόλεις STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Κάλυψη του χάρτη με τυχαία τοποθετημένες πόλεις STR_FOUND_TOWN_EXPAND_ALL_TOWNS :{BLACK}Επέκταση όλων των πόλεων -STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}Κάνε όλες τις πόλεις να επεκτείνονται λιγάκι +STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}Κάνε όλες τις πόλεις να επεκτείνονται πολύ λίγο STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Όνομα πόλης: -STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Εισάγετε το όνομα της πόλης +STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Εισαγάγετε το όνομα της πόλης STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Πατήστε για να δώσετε το όνομα της πόλης STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Τυχαίο όνομα STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Δημιουργία ενός τυχαίου ονόματος @@ -2914,14 +3138,14 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Πλέγ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Τυχαίο # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Χρηματοδότηση νέας βιομηχανίας +STR_FUND_INDUSTRY_CAPTION :{WHITE}Χρηματοδότηση βιομηχανίας STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Επιλέξτε την κατάλληλη βιομηχανία από την λίστα STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Δημιουργία τυχαίων βιομηχανιών STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Γέμισε τον χάρτη με τυχαία τοποθετημένες βιομηχανίες STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Δημιουργία τυχαίων βιομηχανιών STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Σίγουρα θέλετε να δημιουργήσετε πολλές τυχαίες βιομηχανίες; STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Κόστος: {YELLOW}{CURRENCY_LONG} -STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Διερεύνηση +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Προοπτική STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Κατασκευή STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Χρηματοδότηση STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Αφαίρεση όλων των βιομηχανιών @@ -2930,14 +3154,14 @@ STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Αφαί STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Σίγουρα θέλετε να αφαιρέσετε όλες τις βιομηχανίες; # Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Αλυσίδα βιομηχανιών για τη βιομηχανία {STRING} -STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Αλυσίδα βιομηχανιών για το εμπόρευμα {STRING} +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Αλυσίδα βιομηχανιών - {STRING} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Αλυσίδα εμπορεύματος - {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Βιομηχανίες που παράγουν STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Βιομηχανίες που δέχονται STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Σπιτιά STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Πατήστε στη βιομηχανία για να δείτε τους προμηθευτές και τους πελάτες της STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Πατήστε στο εμπόρευμα για να δείτε τους προμηθευτές και τους πελάτες -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Εμφάνιση αλυσίδας +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Εμφάνιση αλυσίδας βιομηχανιών STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Εμφάνιση βιομηχανιών προμήθειας και αποδοχής για το εμπόρευμα STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Σύνδεση στο μικρό χάρτη STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Επιλογή των εμφανιζόμενων βιομηχανιών και στο μικρό χάρτη @@ -2948,19 +3172,20 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Επιλ # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Πληροφορίες Περιοχής Εδάφους -STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Κεντράρετε την κεντρική προβολή στην τοποθεσία του τετραγωνίδιου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του τετραγωνίδιου +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κεντρικής προβολής στην τοποθεσία του τετραγωνίδιου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του τετραγωνίδιου STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Κόστος καθαρισμού: {LTBLUE}Μ/Δ STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Κόστος καθαρισμού: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Κέρδος όταν καθαριστεί: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :Μ/Δ STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Ιδιοκτήτης: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Ιδιοκτήτης δρόμου: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Ιδιοκτήτης του δρόμου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Ιδιοκτήτης του τροχιοδρόμου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Ιδιοκτήτης του σιδηροδρόμου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Τοπική αρχή: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Καμιά -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Συντεταγμένες: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Κατασκευή: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Συντεταγμένες: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Αρ. τετραγωνιδίου: {LTBLUE}{NUM} ({HEX}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Κατασκευή/Ανακατασκευή: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Κατηγορία σταθμού: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Τύπος σταθμού: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Κατηγορία αεροδρομίου: {LTBLUE}{STRING} @@ -2996,7 +3221,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Σιδηροδ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Σιδηροδρομική τροχιά με σήματα τμήματος και εξόδου STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Σιδηροδρομική τροχιά με σήματα τμήματος και συνδυαστικά STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Σιδηροδρομική τροχιά με σήματα τμήματος και διαδρομής -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Σιδηροδρομική τροχιά με σήματα τμήματος και μονόδρομους διαδρομής +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Σιδηροδρομική τροχιά με σήματα τμήματος και μονόδρομης διαδρομής STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Σιδηροδρομική τροχιά με σήματα ειδοποίησης και εξόδου STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Σιδηροδρομική τροχιά με σήματα ειδοποίησης και συνδυαστικά STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Σιδηροδρομική τροχιά με σήματα ειδοποίησης και διαδρομής @@ -3026,7 +3251,7 @@ STR_LAI_TREE_NAME_CACTUS_PLANTS :Κάκτοι STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Σιδηροδρομικός σταθμός STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Υπόστεγο αεροσκαφών STR_LAI_STATION_DESCRIPTION_AIRPORT :Αεροδρόμιο -STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Χώρος φόρτωσης φορτηγών +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Σταθμός φορτηγών STR_LAI_STATION_DESCRIPTION_BUS_STATION :Στάση λεωφορείων STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Αποβάθρα πλοίων STR_LAI_STATION_DESCRIPTION_BUOY :Σημαδούρα @@ -3041,30 +3266,30 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Ναυπηγε # Industries come directly from their industry names -STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Τούνελ σιδηρόδρομου -STR_LAI_TUNNEL_DESCRIPTION_ROAD :Τούνελ δρόμου +STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Σιδηροδρομική σήραγγα +STR_LAI_TUNNEL_DESCRIPTION_ROAD :Οδική σήραγγα -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Ατσάλινη σιδηροδρομική γέφυρα με αναρτήσεις +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Ατσάλινη κρεμαστή σιδηροδρομική γέφυρα STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Ατσάλινη σιδηροδρομική γέφυρα με δοκούς -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Ατσάλινη κρεμαστή σιδηροδρομική γέφυρα -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Σιδηροδρομική γέφυρα από ενισχυμένο τσιμέντο +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Ατσάλινη αρθρωτή σιδηροδρομική γέφυρα +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Κρεμαστή σιδηροδρομική γέφυρα από ενισχυμένο τσιμέντο STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Ξύλινη σιδηροδρομική γέφυρα STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Τσιμεντένια σιδηροδρομική γέφυρα -STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Κυλινδρική σιδηροδρομική γέφυρα +STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Ατσάλινη σωληνοειδής σιδηροδρομική γέφυρα -STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Ατσάλινη γέφυρα δρόμου με αναρτήσεις -STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ατσάλινη γέφυρα δρόμου με δοκούς -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ατσάλινη κρεμαστή γέφυρα δρόμου -STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Γέφυρα δρόμου από ενισχυμένο τσιμέντο -STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Ξύλινη γέφυρα δρόμου -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Τσιμεντένια γέφυρα δρόμου -STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Κυλινδρική γέφυρα δρόμου +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Ατσάλινη κρεμαστή οδική γέφυρα +STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ατσάλινη οδική γέφυρα με δοκούς +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ατσάλινη αρθρωτή οδική γέφυρα +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Κρεμαστή οδική γέφυρα από ενισχυμένο τσιμέντο +STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Ξύλινη οδική γέφυρα +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Τσιμεντένια οδική γέφυρα +STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Σωληνοειδής οδική γέφυρα STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Υπερυψωμένο κανάλι STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Αναμεταδότης STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Φάρος -STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Κεντρικά γραφεία εταιρίας +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Έδρα εταιρίας STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ιδιοκτησία γης από εταιρία # About OpenTTD window @@ -3074,14 +3299,14 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-{STRING} Η ομάδα του OpenTTD # Framerate display window -STR_FRAMERATE_CAPTION :{WHITE}Ρυθμός καρέ γραφικών +STR_FRAMERATE_CAPTION :{WHITE}Ρυθμός καρέ STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Ρυθμός προσομοίωσης: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Αριθμός στιγμών παιχνιδιού που προσομοιώνεται ανά δευτερόλεπτο. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Αριθμός στιγμών παιχνιδιού που προσομοιώνεται ανά δευτερόλεπτο STR_FRAMERATE_RATE_BLITTER :{BLACK}Ρυθμός καρέ γραφικών: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Αριθμος των παραγμενων καρέ ανα δευτερολεπτο +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Αριθμός των παραγόμενων καρέ ανα δευτερόλεπτο STR_FRAMERATE_SPEED_FACTOR :{BLACK}Παράγοντας ταχύτητας τρέχοντος παιχνιδιού: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Πόσο γρήγορα εκτελείται το παιχνίδι αυτήν τη στιγμή, σε σύγκριση με την αναμενόμενη ταχύτητα στον κανονικό ρυθμό εξομοίωσης. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Πόσο γρήγορα εκτελείται το παιχνίδι αυτή τη στιγμή, σε σύγκριση με την αναμενόμενη ταχύτητα στον κανονικό ρυθμό εξομοίωσης STR_FRAMERATE_CURRENT :{WHITE}Τρέχον STR_FRAMERATE_AVERAGE :{WHITE}Μέσο STR_FRAMERATE_MEMORYUSE :{WHITE}Μνήμη @@ -3100,7 +3325,7 @@ STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COM STR_FRAMERATE_GAMELOOP :{BLACK}Σύνολο βρόγχου παιχνιδιού: STR_FRAMERATE_GL_ECONOMY :{BLACK} Διαχείριση φορτίου: STR_FRAMERATE_GL_TRAINS :{BLACK} Στιγμές τρένων: -STR_FRAMERATE_GL_ROADVEHS :{BLACK} Στιγμές οχημάτων δρόμου: +STR_FRAMERATE_GL_ROADVEHS :{BLACK} Στιγμές οδικών οχημάτων: STR_FRAMERATE_GL_SHIPS :{BLACK} Στιγμές πλοίων: STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Στιγμές αεροσκαφών: STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Στιγμές κόσμου: @@ -3117,7 +3342,7 @@ STR_FRAMERATE_AI :{BLACK} AI {N STR_FRAMETIME_CAPTION_GAMELOOP :Βρόγχος παιχνιδιού STR_FRAMETIME_CAPTION_GL_ECONOMY :Διαχείριση φορτίου STR_FRAMETIME_CAPTION_GL_TRAINS :Στιγμές τρένων -STR_FRAMETIME_CAPTION_GL_ROADVEHS :Στιγμές οχημάτων δρόμου +STR_FRAMETIME_CAPTION_GL_ROADVEHS :Στιγμές οδικών οχημάτων STR_FRAMETIME_CAPTION_GL_SHIPS :Στιγμές πλοίων STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Στιγμές αεροσκαφών STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Στιγμές κόσμου @@ -3138,7 +3363,7 @@ STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Αποθ STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Φόρτωση Σεναρίου STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Φόρτωση Χάρτη Υψομετρίας STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Αποθήκευση Χάρτη Υψομετρίας -STR_SAVELOAD_HOME_BUTTON :{BLACK}Πατήστε εδώ για να πάτε στον τρέχων φάκελο αποθήκευσης +STR_SAVELOAD_HOME_BUTTON :{BLACK}Πατήστε εδώ για να μεταβείτε στον τρέχοντα φάκελο αποθήκευσης/φόρτωσης STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} ελεύθερα STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Λίστα δισκών, φακέλων και αποθηκευμένων παιχνιδιών STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Τρέχον επιλεγμένο όνομα για το αποθηκευμένο παιχνίδι @@ -3153,7 +3378,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Λεπτ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Δεν υπάρχουν πληροφορίες. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} -STR_SAVELOAD_FILTER_TITLE :Φιλτράρισμα κειμένου: +STR_SAVELOAD_FILTER_TITLE :{BLACK}Φίλτρο: STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Αντικατάσταση Αρχείου STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Είστε σίγουροι οτι θέλετε να αντικαταστήσετε το υπάρχων αρχείο; STR_SAVELOAD_DIRECTORY :{STRING} (Κατάλογος) @@ -3164,14 +3389,18 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Δώστ # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Δημιουργία Κόσμου STR_MAPGEN_MAPSIZE :{BLACK}Διάσταση χάρτη: -STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Επιλέξτε το μέγεθος του χάρτη σε τετραγωνίδια. Ο αριθμός των τετραγωνίδιων διαθέσιμα για κτίσιμο θα είναι λίγο χαμηλότερος +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Επιλέξτε το μέγεθος του χάρτη σε τετραγωνίδια. Ο αριθμός των τετραγωνίδιων διαθέσιμα για κατασκευή θα είναι λίγο χαμηλότερος STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Αριθμός πόλεων: +STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :Επιλέξτε την πυκνότητα των πόλεων ή έναν προσαρμοσμένο αριθμό STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Ονόματα πόλεων: STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Επιλογή στυλ ονομάτων πόλεων STR_MAPGEN_DATE :{BLACK}Ημερομηνία: +STR_MAPGEN_DATE_TOOLTIP :{BLACK}Επιλέξτε ημερομηνία έναρξης STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Αριθμός βιομηχανιών: +STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Επιλέξτε την πυκνότητα των βιομηχανιών ή έναν προσαρμοσμένο αριθμό STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Υψηλότερη κορυφή: +STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Επιλέξτε την υψηλότερη κορυφή που θα προσπαθήσει να δημιουργήσει το παιχνίδι, μετρημένη σε υψόμετρο πάνω από την επιφάνεια της θάλασσας STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Αύξηση του μέγιστου ύψους της υψηλότερης κορυφής στον χάρτη κατά ένα STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Μειώστε το μέγιστο ύψος της υψηλότερης κορυφής στον χάρτη κατά ένα STR_MAPGEN_SNOW_COVERAGE :{BLACK}Κάλυψη χιονιού: @@ -3184,14 +3413,16 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Μείω STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Τύπος εδάφους: STR_MAPGEN_SEA_LEVEL :{BLACK}Επίπεδο θάλασσας: +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Επιλογή του επιπέδου θάλασσας STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Ποτάμια: STR_MAPGEN_SMOOTHNESS :{BLACK}Ομαλότητα: STR_MAPGEN_VARIETY :{BLACK}Διανομή ποικιλομορφίας: STR_MAPGEN_GENERATE :{WHITE}Δημιουργία +STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Δημιουργήστε τον κόσμο και παίξτε OpenTTD! STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}Ρυθμίσεις NewGRF STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Εμφάνιση ρυθμίσεων NewGRF STR_MAPGEN_AI_SETTINGS :{BLACK}Ρυθμίσεις AI -STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Εμφάνιση ρυθμίσεων AI +STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Εμφάνιση ρυθμίσεων ΤΝ STR_MAPGEN_GS_SETTINGS :{BLACK}Ρυθμίσεις σενάριου παιχνιδιού STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Εμφάνιση ρυθμίσεων σενάριου παιχνιδιού @@ -3220,6 +3451,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Καταλαν # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Άκρες χάρτη: +STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Επιλέξτε τα όρια του κόσμου του παιχνιδιού STR_MAPGEN_NORTHWEST :{BLACK}Βορειοδυτικά STR_MAPGEN_NORTHEAST :{BLACK}Βορειοανατολικά STR_MAPGEN_SOUTHEAST :{BLACK}Νοτιοανατολικά @@ -3232,7 +3464,9 @@ STR_MAPGEN_BORDER_MANUAL :{BLACK}Χειρ STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Περιστροφή χάρτη υψομετρίας: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Όνομα χάρτη υψομετρίας: +STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}Το όνομα του αρχείου χάρτη υψομετρίας STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Μέγεθος: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}Το μέγεθος της εικόνας χάρτη υψομετρίας. Για καλύτερα αποτελέσματα, κάθε διάσταση πρέπει να ταιριάζει με μια διαθέσιμη διάσταση χάρτη του OpenTTD, όπως 256, 512, 1024 κλπ. STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM} STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Αναμενόμενο ύψος κορυφής @@ -3247,6 +3481,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Επίπ STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Δημιουργία επίπεδου εδάφους STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Τυχαίο έδαφος STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Ύψος επίπεδης γης: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Επιλέξτε το ύψος της ξηράς πάνω από την επιφάνεια της θάλασσας STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Μετακίνηση του ύψους του επίπεδου εδάφους ένα κάτω STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Μετακίνηση του ύψους του επίπεδου εδάφους ένα πάνω @@ -3260,10 +3495,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Σίγ STR_GENERATION_PROGRESS :{WHITE}{NUM}% ολοκληρώθηκε STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Δημιουργία κόσμου +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Δημιουργία τοπίου STR_GENERATION_RIVER_GENERATION :{BLACK}Δημιουργία ποταμού -STR_GENERATION_TREE_GENERATION :{BLACK}Δημιουργία δέντρων -STR_GENERATION_OBJECT_GENERATION :{BLACK}Δημιουργία μη μετακινούμενων STR_GENERATION_CLEARING_TILES :{BLACK}Δημιουργία άγριας και πετρώδης περιοχής +STR_GENERATION_TOWN_GENERATION :{BLACK}Δημιουργία πόλης +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Δημιουργία βιομηχανίας +STR_GENERATION_OBJECT_GENERATION :{BLACK}Δημιουργία μη μετακινούμενων +STR_GENERATION_TREE_GENERATION :{BLACK}Δημιουργία δέντρων STR_GENERATION_SETTINGUP_GAME :{BLACK}Ρύθμιση παιχνιδιού STR_GENERATION_PREPARING_TILELOOP :{BLACK}Εκτέλεση βρόχου τετραγωνίδιων STR_GENERATION_PREPARING_SCRIPT :{BLACK}Τρέχουσα δέσμη ενεργειών @@ -3333,6 +3571,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Αποθ STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Αποθήκευση προκαθορισμένου, χρησιμοποιώντας το επιλεγμένο όνομα # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Αλλαγή παραμέτρων βασικού σετ γραφικών STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Αλλαγή παραμέτρων NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Κλείσιμο STR_NEWGRF_PARAMETERS_RESET :{BLACK}Επαναφορά @@ -3349,11 +3588,14 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Επιθ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} στο {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Αντικείμενο STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Τύπος σιδηροτροχιάς +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Τύπος δρόμου STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Μεταβλητή NewGRF 60+x παράμετρος (δεκαεξαδικό) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ευθυγράμμιση sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Στοίχηση sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Στοίχηση sprite: Ενέργεια 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Στοίχηση sprite: Ενέργεια 0x5, τύπος {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Επόμενο στοιχείο STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Συνέχισε στο επόμενο κανονικό sprite, προσπερνώντας οποιοδήποτε ψευδό/επαναναχρωματιζόμενο/γραμματοσειράς sprite και κάνε τις τελικές διαδικασίες στο τέλος STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Μετακίνηση στο στοιχείο @@ -3362,11 +3604,13 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Προη STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Προχώρησε στο προηγούμενο κανονικό sprite, προσπερνώντας οποιαδήποτε ψευδό/επαναχρωματιζόμενα/γραμματοσειράς sprites και ξαναεκτέλεσε τη διαδικασία από το πρώτο sprite ως το τελεταίο STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Επανεμφάνιση του επιλεγμένου sprite. Η ευθυγράμμιση αγνοείται όταν γίνεται η σχεδίαση του sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Μετακίνηση του sprite τριγύρω, αλλάζοντας τα στίγματα Χ και Υ. Ctrl+Κλικ για να μετακινήσετε το sprite μονάδες τη φορά. +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Μετατόπιση κέντρου STR_SPRITE_ALIGNER_CENTRE_SPRITE :{BLACK}Ευθυγραμμισμένα sprite +STR_SPRITE_ALIGNER_CROSSHAIR :{BLACK}Σταυρός στόχου STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Επαναφορά σχετικού STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Επαναφορά των τρεχούμενων σχετικών στιγμάτων @@ -3382,16 +3626,18 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING STR_NEWGRF_ERROR_MSG_WARNING :{RED}Προειδοποίηση: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Λάθος: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Καταστροφικό: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Το NewGRF "{STRING}" επέστρεψε ένα καταστροφικό λάθος:{}{STRING} +STR_NEWGRF_ERROR_POPUP :{WHITE}Το NewGRF "{STRING}" επέστρεψε ένα λάθος:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :Το {1:STRING} δεν θα δουλέψει με την έκδοση του TTDPatch όπως αναφέρεται από το OpenTTD -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Το {1:STRING} είναι για την έκδοση {STRING} του TTD -STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} είναι σχεδιασμένο να δουλέψει με το {STRING} -STR_NEWGRF_ERROR_INVALID_PARAMETER :Λάθος παράμετρος για το {1:STRING}: παράμετρος {STRING} ({NUM}) +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Το {1:STRING} είναι για την έκδοση {2:STRING} του TTD +STR_NEWGRF_ERROR_UNSET_SWITCH :Το {1:STRING} είναι σχεδιασμένο να δουλέψει με το {2:STRING} +STR_NEWGRF_ERROR_INVALID_PARAMETER :Λάθος παράμετρος για το {1:STRING}: παράμετρος {2:STRING} ({3:NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :Το {1:STRING} πρέπει να φορτωθεί πριν από το {2:STRING} STR_NEWGRF_ERROR_LOAD_AFTER :Το {1:STRING} πρέπει να φορτωθεί μετά από το {2:STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :Το {1:STRING} απαιτεί έκδοση OpenTTD {2:STRING} ή υψηλότερη STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :το αρχείο GRF είναι σχεδιασμένο για να μεταφράζει STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Έχουν φορτωθεί πολλά NewGRF -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Η φόρτωση του {1:STRING} ως στατικό NewGRF με {STRING} μπορεί να προκαλέσει αποσυγχρονισμούς +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Η φόρτωση του {1:STRING} ως στατικό NewGRF με {2:STRING} μπορεί να προκαλέσει αποσυγχρονισμούς STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Απρόοπτο sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Άγνωστη ιδιότητα Action 0 {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Προσπάθεια να χρησιμοποιήσει άκυρο ID (sprite {3:NUM}) @@ -3460,18 +3706,18 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Εναλ # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Επεξεργασία κειμένου πινακίδας -STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στη τοποθεσία της πινακίδας. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της πινακίδας +STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στη τοποθεσία της πινακίδας. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία της πινακίδας STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Μετάβαση στην επόμενη πινακίδα STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Μετάβαση στη προηγούμενη πινακίδα STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Δώστε ένα όνομα για την πινακίδα # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Πόλεις +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Πόλεις ({COMMA} από {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Τίποτα - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Πόλη){BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Ονόματα πόλεων - πατήστε στο όνομα για να κεντράρετε την εικόνα στην πόλη. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της πόλης +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Ονόματα πόλεων - πατήστε στο όνομα για κεντράρισμα της κύριας προβολής στην πόλη. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία της πόλης STR_TOWN_POPULATION :{BLACK}Παγκόσμιος πληθυσμός: {COMMA} # Town view window @@ -3479,16 +3725,19 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Πόλη) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Πληθυσμός: {ORANGE}{COMMA}{BLACK} Σπίτια: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} προηγούμενος μήνας: {ORANGE}{COMMA}{BLACK} μέγιστο: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} τελευταίο λεπτό: {ORANGE}{COMMA}{BLACK} μεγ.: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Εμπορεύματα που χρειάζονται για την επέκταση της πόλης: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} απαιτείται STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} απαιτείται τον χειμώνα STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} παραδόθηκε STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (ακόμη απαιτείται) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (παραδόθηκε) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Η πόλη επεκτείνεται κάθε {ORANGE}{UNITS_DAYS_OR_SECONDS} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Η πόλη επεκτείνεται κάθε {ORANGE}{UNITS_DAYS_OR_SECONDS} (χρηματοδοτούμενη) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Η πόλη {RED}δεν{BLACK} επεκτείνεται STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Επίπεδο θορύβου στη πόλη: {ORANGE}{COMMA}{BLACK} μέγιστο: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία της πόλης. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της πόλης -STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Τοπική αρχή +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία της πόλης. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία της πόλης +STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Τοπική Αρχή STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Εμφάνιση πληροφοριών για την τοπική αρχή STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Αλλαγή του ονόματος της πόλης @@ -3515,18 +3764,22 @@ STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Μικρή δι STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Μεσαία διαφημιστική καμπάνια STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Μεγάλη διαφημιστική καμπάνια STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Επιχορήγηση ανακατασκευής τοπικού οδικού δικτύου -STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Κτίσιμο αγάλματος του ιδιοκτήτη της εταιρίας +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Κατασκευή αγάλματος του ιδιοκτήτη της εταιρίας STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Επιχορήγηση νέων κτιρίων STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Αγορά αποκλειστικών δικαιωμάτων μεταφοράς STR_LOCAL_AUTHORITY_ACTION_BRIBE :Δωροδοκήστε την τοπική αρχή ###next-name-looks-similar -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Έναρξη μικρής τοπικής διαφημιστικής καμπάνιας, για να προσελκύσετε περισσότερους επιβάτες και εμπορεύματα στις μεταφορικές σας υπηρεσίες.{}Παρέχει μία προσωρινή ώθηση στην βαθμολογία σταθμών σε μία μικρή ακτίνα γύρω από το κέντρο της πόλης.{} Κόστος: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Έναρξη μεσαίας τοπικής διαφημιστικής καμπάνιας, για να προσελκύσετε περισσότερους επιβάτες και εμπορεύματα στις μεταφορικές σας υπηρεσίες.{}Παρέχει μία προσωρινή ώθηση στην βαθμολογία σταθμών σε μία μεσαία ακτίνα γύρω από το κέντρο της πόλης.{} Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Ξεκινήστε μια μικρή τοπική διαφημιστική καμπάνια, για να προσελκύσετε περισσότερους επιβάτες και φορτίο στις υπηρεσίες μεταφοράς σας.{}Παρέχει μια προσωρινή ώθηση στη βαθμολογία του σταθμού σε μια μικρή ακτίνα γύρω από το κέντρο της πόλης.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Ξεκινήστε μια μεσαία τοπική διαφημιστική καμπάνια, για να προσελκύσετε περισσότερους επιβάτες και φορτίο στις υπηρεσίες μεταφοράς σας.{}Παρέχει μια προσωρινή ώθηση στη βαθμολογία του σταθμού σε μια μέση ακτίνα γύρω από το κέντρο της πόλης.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Έναρξη μεγάλης τοπικής διαφημιστικής καμπάνιας, για να προσελκύσετε περισσότερους επιβάτες και εμπορεύματα στις μεταφορικές σας υπηρεσίες.{}Παρέχει μία προσωρινή ώθηση στην βαθμολογία σταθμού σε μία μεγάλη ακτίνα γύρω από το κέντρο της πόλης.{}{POP_COLOUR} Κόστος: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Χτίστε ένα άγαλμα προς τιμήν της εταιρίας σας.{}Παρέχει μία μόνιμη ώθηση στην βαθμολογία σταθμών σε αυτή την πόλη.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Χρηματοδοτήστε την κατασκευή νέων κτιρίων στην πόλη.{}Παρέχει μία προσωρινή ώθηση στην ανάπτυξη αυτής της πόλης.{} Κόστος: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Δωροδοκήστε τις τοπικές αρχές για να αυξήσετε τα ποσοστά αποδοχής σας, με ρίσκο ένα μεγάλο πρόστιμο εάν συλληφθείτε.{}Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Χρηματοδοτήστε την ανακατασκευή του αστικού οδικού δικτύου.{}Προκαλεί σημαντική αναστάτωση της οδικής κυκλοφορίας για έως και 6 μήνες.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MINUTES :{PUSH_COLOUR}{YELLOW}Χρηματοδοτήστε την ανακατασκευή του αστικού οδικού δικτύου.{}Προκαλεί σημαντική αναστάτωση της οδικής κυκλοφορίας για έως και 6 λεπτά.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Κατασκευάστε ένα άγαλμα προς τιμήν της εταιρίας σας.{}Παρέχει μία μόνιμη ώθηση στην βαθμολογία σταθμών σε αυτή την πόλη.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Χρηματοδοτήστε την κατασκευή νέων κτιρίων στην πόλη.{}Παρέχει μια προσωρινή ώθηση στην ανάπτυξη αυτής της πόλης.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Αγοράστε αποκλειστικά δικαιώματα μεταφοράς στην πόλη για 12 μήνες.{}Η δημοτική αρχή δεν θα επιτρέψει στους επιβάτες και στο φορτίο να χρησιμοποιούν τους σταθμούς των ανταγωνιστών σας. Μια επιτυχημένη δωροδοκία από έναν ανταγωνιστή θα ακυρώσει αυτό το συμβόλαιο.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Αγοράστε αποκλειστικά δικαιώματα μεταφοράς στην πόλη για 12 λεπτά.{}Η δημοτική αρχή δεν θα επιτρέψει στους επιβάτες και στο φορτίο να χρησιμοποιούν τους σταθμούς των ανταγωνιστών σας. Μια επιτυχημένη δωροδοκία από έναν ανταγωνιστή θα ακυρώσει αυτό το συμβόλαιο.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Δωροδοκήστε την τοπική αρχή για να αυξήσετε την αξιολόγησή σας και να ακυρώσετε τα αποκλειστικά δικαιώματα μεταφοράς ενός ανταγωνιστή, με κίνδυνο αυστηρής ποινής εάν συλληφθείτε.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}{COMPANY} Στόχοι: @@ -3572,9 +3825,15 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Κλείσιμ # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Χρηματοδοτήσεις STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Τρέχουσες χρηματοδοτήσεις για ανάληψη υπηρεσιών: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} από {STRING} προς {STRING}{YELLOW} ({STRING}) STR_SUBSIDIES_NONE :{ORANGE}- Καμία - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Υπηρεσίες που έχουν χρηματοδοτηθεί: -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Πατήστε στην υπηρεσία για κεντράρισμα στην βιομηχανία/πόλη. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της βιομηχανίας/πόλης +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} από τον σταθμό {STRING} προς τον σταθμό {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Πατήστε στην υπηρεσία για κεντράρισμα στην βιομηχανία/πόλη. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία της βιομηχανίας/πόλης +STR_SUBSIDIES_OFFERED_EXPIRY_DATE :ανά {DATE_SHORT} +STR_SUBSIDIES_OFFERED_EXPIRY_TIME :μέσα σε {UNITS_MONTHS_OR_MINUTES} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :έως {DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} απομένουν # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Βιβλίο Ιστορίας @@ -3582,7 +3841,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Παγκ STR_STORY_BOOK_SPECTATOR :Παγκόσμιο Βιβλίο Ιστορίας STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Σελίδα {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Μεταβείτε σε μια συγκεκριμένη σελίδα επιλέγοντάς την από αυτή τη λίστα. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Μεταβείτε σε μια συγκεκριμένη σελίδα επιλέγοντάς την από αυτή τη λίστα STR_STORY_BOOK_PREV_PAGE :{BLACK}Προηγούμενη STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Μεταβαίνει στη προηγούμενη σελίδα STR_STORY_BOOK_NEXT_PAGE :{BLACK}Επόμενη @@ -3590,13 +3849,20 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Μετα STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Μη έγκυρη αναφορά στόχου # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Ονόματα σταθμών - πατήστε στο όνομα για κεντράρισμα στο σταθμό. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του σταθμού -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Κρατήστε πατημένο το Ctrl για να επιλέξετε περισσότερο από ένα αντικείμενο +STR_STATION_LIST_TOOLTIP :{BLACK}Ονόματα σταθμών - πατήστε στο όνομα για κεντράρισμα της κύριας προβολής στην τοποθεσία του σταθμού. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του σταθμού +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl+Κλικ για επιλογή πολλαπλών αντικειμένων STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Σταθμ{P ός οί} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Κανένας - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Επιλογή όλων των εγκαταστάσεων +STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Όλα τα είδη φορτίων και χωρίς βαθμολογία +STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Πολλαπλά είδη φορτίων +STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Κανένα είδος φορτίου +STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :Μόνο καμία βαθμολογία φορτίου +STR_STATION_LIST_CARGO_FILTER_SELECT_ALL :Επιλογή όλων και χωρίς βαθμολογία +STR_STATION_LIST_CARGO_FILTER_NO_RATING :Καμία βαθμολογία φορτίου +STR_STATION_LIST_CARGO_FILTER_EXPAND :Εμφάνιση περισσότερων... # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} @@ -3612,6 +3878,8 @@ STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Η {YELLOW}{COM STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Βαθμολογίες STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Εμφάνιση στατιστικών σταθμού +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}Προμήθεια ανά μήνα και τοπική βαθμολογία: +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}Προμήθεια ανά λεπτό και τοπική βαθμολογία: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Ομαδοποίηση από @@ -3647,7 +3915,7 @@ STR_CARGO_RATING_VERY_GOOD :Πολύ Καλ STR_CARGO_RATING_EXCELLENT :Εξαιρετική STR_CARGO_RATING_OUTSTANDING :Καταπληκτική -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα εικόνας στην τοποθεσία του σταθμού. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του σταθμού +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του σταθμού. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του σταθμού STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Αλλαγή ονόματος του σταθμού STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Εμφάνιση όλων των τρένων που έχουν αυτό τον σταθμό στο δρομολόγιό τους @@ -3662,9 +3930,9 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Αποτ # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του σημείου καθοδήγησης. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του σημείου καθοδήγησης +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του σημείου καθοδήγησης. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του σημείου καθοδήγησης STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Αλλαγή του ονόματος του σημείου καθοδήγησης -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στη τοποθεσία της σημαδούρας. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της σημαδούρας +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στη τοποθεσία της σημαδούρας. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία της σημαδούρας STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Αλλαγή ονόματος σημαδούρας STR_EDIT_WAYPOINT_NAME :{WHITE}Διαμόρφωση ονόματος σημείου καθοδήγησης @@ -3672,6 +3940,8 @@ STR_EDIT_WAYPOINT_NAME :{WHITE}Διαμ # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Οικονομικά {BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_YEAR_CAPTION :{WHITE}Έτος +STR_FINANCES_PERIOD_CAPTION :{WHITE}Περίοδος ###length 3 STR_FINANCES_REVENUE_TITLE :{WHITE}Έσοδα @@ -3682,13 +3952,13 @@ STR_FINANCES_CAPITAL_EXPENSES_TITLE :{WHITE}Έξοδ ###length 13 STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Κατασκευές STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Νέα Οχήματα -STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Τρένων -STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Οχημάτων +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Τρένα +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Οδικά οχήματα STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Αεροσκάφη -STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Πλοίων +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Πλοία STR_FINANCES_SECTION_INFRASTRUCTURE :{GOLD}Υποδομές STR_FINANCES_SECTION_TRAIN_REVENUE :{GOLD}Τρένα -STR_FINANCES_SECTION_ROAD_VEHICLE_REVENUE :{GOLD}Οχήματα δρόμου +STR_FINANCES_SECTION_ROAD_VEHICLE_REVENUE :{GOLD}Οδικά οχήματα STR_FINANCES_SECTION_AIRCRAFT_REVENUE :{GOLD}Αεροσκάφη STR_FINANCES_SECTION_SHIP_REVENUE :{GOLD}Πλοία STR_FINANCES_SECTION_SHIP_REVENUE.geniki :{GOLD}Πλοίων @@ -3698,7 +3968,7 @@ STR_FINANCES_SECTION_OTHER :{GOLD}Άλλα STR_FINANCES_TOTAL_CAPTION :{WHITE}Σύνολο STR_FINANCES_NEGATIVE_INCOME :-{CURRENCY_LONG} STR_FINANCES_ZERO_INCOME :{CURRENCY_LONG} -STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} +STR_FINANCES_POSITIVE_INCOME :+{CURRENCY_LONG} STR_FINANCES_PROFIT :{WHITE}Κέρδος STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Υπόλοιπο Τραπέζης STR_FINANCES_OWN_FUNDS_TITLE :{WHITE}Τα χρήματα σου @@ -3710,7 +3980,7 @@ STR_FINANCES_BANK_BALANCE :{WHITE}{CURRENC STR_FINANCES_BORROW_BUTTON :{BLACK}Δανεισμός {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Αύξηση του ποσού του δανείου. Πατήστε Ctrl+Κλικ για να δανειστείτε όσο περισσότερο γίνεται STR_FINANCES_REPAY_BUTTON :{BLACK}Αποπληρωμή {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Αποπληρωμή μέρους του δανείου. Με Ctrl+Κλικ αποπληρώνετε όσο περισσότερο γίνεται +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Αποπληρωμή μέρους του δανείου. Πατήστε Ctrl+Κλικ για να αποπληρώσετε όσο περισσότερο γίνεται STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Υποδομή # Company view @@ -3721,29 +3991,31 @@ STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Ίδρυ STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Χρωματισμός: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Οχήματα: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} τρέν{P ο α} -STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} {P όχημα οχήματα} δρόμου +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} οδικ{P ό ά} {P όχημα οχήματα} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} αεροσκάφ{P ος η} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} πλοί{P ο α} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Κανένα STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Αξία εταιρίας: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Υποδομή: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} κομμάτι{P "" α} σιδηροτροχιάς -STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} κομμάτι{P "" α} δρόμου +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} οδικ{P ό ά} τμήμ{P α ατα} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} τετραγωνίδι{P ο α} νερού STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} τετραγωνίδι{P ο α} σταθμού STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} αεροδρόμι{P ο α} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Τίποτα -STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Κτίσιμο Αρχηγείου -STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Κτίσιμο αρχηγείου εταιρίας -STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Προβολή Αρχηγείου -STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Προβολή αρχηγείου εταιρίας -STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Ανοικοδόμηση Αρχηγείου -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Εποικοδόμηση της έδρας της εταιρίας σε άλλο μέρος, με κόστος το 1% της αξίας της εταιρίας. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς επανατοποθέτηση της έδρας +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Κατασκευή Έδρας +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Κατασκευή έδρας εταιρίας +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Προβολή Έδρας +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Προβολή έδρας εταιρίας +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Μετεγκατάσταση Έδρας +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Επανοικοδόμηση της έδρας της εταιρίας σε άλλο μέρος, με κόστος το 1% της αξίας της εταιρίας. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Λεπτομέρειες STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Προβολή λεπτομερούς μέτρησης υποδομών STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Δώστε χρήματα STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Δώστε χρήματα σε αυτή την εταρία +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Εχθρική εξαγορά +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Κάντε εχθρική εξαγορά αυτής της εταιρείας STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Νέο Πρόσωπο STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Επιλογή νέου προσώπου διευθυντή @@ -3756,24 +4028,27 @@ STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Αλλα STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Όνομα Εταιρίας STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Όνομα Διευθυντή -STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Εισάγετε το χρηματικό ποσό που θέλετε να δώσετε +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Εισαγάγετε το χρηματικό ποσό που θέλετε να δώσετε -STR_BUY_COMPANY_MESSAGE :{WHITE}Ψάχνουμε μία εταιρία μεταφορών για να εξαγοράσει την εταιρία μας.{}{}Θέλετε να εξαγοράσετε την {COMPANY} για {CURRENCY_LONG}; +STR_BUY_COMPANY_MESSAGE :{WHITE}Αναζητούμε μια εταιρία μεταφορών για να εξαγοράσει την εταιρία μας.{}{}Θέλετε να εξαγοράσετε την {COMPANY} για {CURRENCY_LONG}; +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Σε μια εχθρική εξαγορά της {COMPANY} θα αγοράσετε όλα τα περιουσιακά στοιχεία, θα εξοφλήσετε όλα τα δάνεια και θα πληρώσετε κέρδη δύο ετών.{}{}Το σύνολο εκτιμάται ότι είναι {CURRENCY_LONG}.{}{}Θέλετε να προχωρήσετε με αυτήν την εχθρική εξαγορά; # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Υποδομή της {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Κομμάτια σιδηροτροχιάς: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Σήματα -STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Κομμάτια δρόμου: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Οδικά τμήματα: STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Κομμάτια τραμ: STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Τετραγωνίδια νερού: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Κανάλια STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Σταθμοί: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Τετραγωνίδια σταθμού STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Αεροδρόμια +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENCY_LONG}/έτος +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/περίοδο # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Βιομηχανίες +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Βιομηχανίες ({COMMA} από {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Τίποτα - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% μεταφέρθηκαν){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3781,17 +4056,18 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} και {NUM} περισσότερα... -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ονόματα βιομηχανιών - πατήστε στο όνομα για κεντράρισμα στη βιομηχανία. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της βιομηχανίας +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ονόματα βιομηχανιών - πατήστε στο όνομα για κεντράρισμα της κύριας προβολής στη βιομηχανία. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία της βιομηχανίας STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Αποδεκτό φορτίο: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Παραγόμενο εμπόρευμα: {SILVER}{STRING} -STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Όλοι οι τύποι φορτίου +STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Όλα τα είδη φορτίου STR_INDUSTRY_DIRECTORY_FILTER_NONE :Καμία # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Παραγωγή προηγούμενου μήνα: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Παραγωγή τελευταίου λεπτού: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% μεταφέρθηκαν) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα εικόνας στην περιοχή της βιομηχανίας. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην περιοχή της βιομηχανίας +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα εικόνας στην περιοχή της βιομηχανίας. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην περιοχή της βιομηχανίας STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Επίπεδο παραγωγής: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Η βιομηχανία έχει ανακοινώσει άμεσο κλείσιμο! @@ -3800,7 +4076,7 @@ STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Παρά STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Απαιτεί: -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{0:STRING}{BLACK}{3:STRING} STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} σε αναμονή{STRING} STR_CONFIG_GAME_PRODUCTION :{WHITE}Αλλαγή παραγωγής (πολλαπλάσιο του 8, μέχρι το 2040) @@ -3809,13 +4085,13 @@ STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Αλλα # Vehicle lists ###length VEHICLE_TYPES STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Τρέν{P ο α} -STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} {P Όχημα Οχήματα} δρόμου +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Οδικ{P ό ά} {P Όχημα Οχήματα} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Πλοί{P ο α} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Αεροσκάφ{P ος η} ###length VEHICLE_TYPES STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Τρένα - πατήστε στο τρένο για πληροφορίες -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Οχήματα δρόμου - πατήστε στο όχημα για πληροφορίες +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Οδικά Οχήματα - πατήστε στο όχημα για πληροφορίες STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Πλοία - πατήστε στο πλοίο για πληροφορίες STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Αεροσκάφη - πατήστε στο αεροσκάφος για πληροφορίες @@ -3828,13 +4104,17 @@ STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Διαθέσι STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Διαχείριση λίστας STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Στείλτε οδηγίες σε όλα τα οχήματα σε αυτήν τη λίστα STR_VEHICLE_LIST_REPLACE_VEHICLES :Αντικατάσταση οχημάτων -STR_VEHICLE_LIST_SEND_FOR_SERVICING :Στείλτε για Επισκευή -STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Κέρδος αυτό το έτος: {CURRENCY_LONG} (προηγούμενο έτος: {CURRENCY_LONG}) +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Στείλτε για συντήρηση +STR_VEHICLE_LIST_CREATE_GROUP :Δημιουργία ομάδας +STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Φετινό κέρδος: {CURRENCY_LONG} (περυσινό: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Κέρδος αυτή την περίοδο: {CURRENCY_LONG} (τελευταίας περιόδου: {CURRENCY_LONG}) +STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] +STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Στείλτε στο Υπόστεγο -STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Στείλτε στο Αμαξοστάσιο -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Στείλε στο Ναυπηγείο -STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Στείλε στο Υπόστεγο +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Στείλτε στο αμαξοστάσιο +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Στείλτε στο αμαξοστάσιο +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Στείλε στο ναυπηγείο +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Στείλε στο υπόστεγο STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Πατήστε για να σταματήσουν όλα τα οχήματα στη λίστα STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Πατήστε για να ξεκινήσουν όλα τα οχήματα στη λίστα @@ -3845,24 +4125,24 @@ STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Κοιν # Group window ###length VEHICLE_TYPES STR_GROUP_ALL_TRAINS :Όλα τα τρένα -STR_GROUP_ALL_ROAD_VEHICLES :Όλα τα οχήματα δρόμου +STR_GROUP_ALL_ROAD_VEHICLES :Όλα τα οδικά οχήματα STR_GROUP_ALL_SHIPS :Όλα τα πλοία STR_GROUP_ALL_AIRCRAFTS :Όλα τα αεροσκάφη ###length VEHICLE_TYPES STR_GROUP_DEFAULT_TRAINS :Μη ομαδοποιημένα τρένα -STR_GROUP_DEFAULT_ROAD_VEHICLES :Μη ομαδοποιημένα οχήματα δρόμου +STR_GROUP_DEFAULT_ROAD_VEHICLES :Μη ομαδοποιημένα οδικά οχήματα STR_GROUP_DEFAULT_SHIPS :Μη ομαδοποιημένα πλοία STR_GROUP_DEFAULT_AIRCRAFTS :Μη ομαδοποιημένα αεροσκάφη STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Ομάδες - πατήστε σε μία ομάδα για να δείτε όλα τα οχήματα που της ανήκουν. Σύρετε ομάδες για να ρυθμίσετε την ιεραρχία. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Ομάδες - πατήστε σε μία ομάδα για να δείτε όλα τα οχήματα που της ανήκουν. Σύρετε ομάδες για να ρυθμίσετε την ιεραρχία STR_GROUP_CREATE_TOOLTIP :{BLACK}Πατήστε για δημιουργήσετε ομάδα STR_GROUP_DELETE_TOOLTIP :{BLACK}Διαγραφή της επιλεγμένης ομάδας STR_GROUP_RENAME_TOOLTIP :{BLACK}Μετονομασία της επιλεγμένης ομάδας STR_GROUP_LIVERY_TOOLTIP :{BLACK}Αλλαγή εμφάνισης της επιλεγμένης ομάδας -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Πατήστε για προστατέψετε αυτήν την ομάδα από την γενική αυτόματη αντικατάσταση. Με Ctrl+Κλικ προστατεύετε επίσης τις υπο-ομάδες. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Πατήστε για προστατέψετε αυτήν την ομάδα από την γενική αυτόματη αντικατάσταση. Με Ctrl+Κλικ προστατεύετε επιπλέον και τις υπο-ομάδες STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Διαγραφή ομάδας STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την ομάδα και οποιουσδήποτε απογόνους; @@ -3873,7 +4153,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Αφαίρεσ STR_GROUP_RENAME_CAPTION :{BLACK}Μετονομασία μίας ομάδας STR_GROUP_PROFIT_THIS_YEAR :Κέρδος τρέχοντος έτους: -STR_GROUP_PROFIT_LAST_YEAR :Κέρδος προηγούμενου έτους +STR_GROUP_PROFIT_THIS_PERIOD :Κέρδος τρέχουσας περιόδου: +STR_GROUP_PROFIT_LAST_YEAR :Κέρδος προηγούμενου έτους: +STR_GROUP_PROFIT_LAST_PERIOD :Κέρδος προηγούμενης περιόδου: STR_GROUP_OCCUPANCY :Τρέσουσα χρήση: STR_GROUP_OCCUPANCY_VALUE :{NUM}% @@ -3884,13 +4166,13 @@ STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Νέα Οχήμ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Νέα Οχήματα Μονοτρόχιου STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Νέα Οχήματα Maglev -STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Νέα Οχήματα Δρόμου +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Νέα Οδικά Οχήματα STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Νέα οχήματα τραμ # Vehicle availability ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Νέα Οχήματα Σιδηρόδρομου -STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Νέα Όχήματα Δρόμου +STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Νέα Οδικά Οχήματα STR_BUY_VEHICLE_SHIP_CAPTION :Νέα Πλοία STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Νέα Αεροσκάφη @@ -3900,6 +4182,8 @@ STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Ταχύ STR_PURCHASE_INFO_SPEED :{BLACK}Ταχύτητα: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Ταχύτητα στον ωκεανό: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Ταχύτητα σε κανάλι/ποταμό: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}Τρέχον κόστος: {GOLD}{CURRENCY_LONG}/έτος +STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Τρέχον κόστος: {GOLD}{CURRENCY_LONG}/περίοδο STR_PURCHASE_INFO_CAPACITY :{BLACK}Χωρητικότητα: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(μετατρέψιμο) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Έτος σχεδίασης: {GOLD}{NUM}{BLACK} Χρόνος ζωής: {GOLD}{COMMA} χρόν{P ο ια} @@ -3921,16 +4205,16 @@ STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Εύρο STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Τύπος αεροσκάφους: {GOLD}{STRING} ###length 3 -STR_CARGO_TYPE_FILTER_ALL :Όλα τα είδη φορτίων +STR_CARGO_TYPE_FILTER_ALL :Όλα τα είδη φορτίου STR_CARGO_TYPE_FILTER_FREIGHT :Φορτίο STR_CARGO_TYPE_FILTER_FREIGHT.geniki :Φορτίου STR_CARGO_TYPE_FILTER_NONE :Κανένα ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Λίστα επιλογής βαγονιού τρένου. Πατήστε σε ένα βαγόνι για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου βαγονιού -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Λίστα επιλογής οχήματος δρόμου. Πατήστε σε ένα όχημα για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου οχήματος -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Λίστα επιλογής πλοίου. Πατήστε σε ένα πλοίο για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου πλοίου -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Λίστα επιλογής αεροσκάφους. Πατήστε σε ένα αεροσκάφος για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου αεροσκάφους +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Λίστα επιλογής βαγονιού τρένου. Πατήστε σε ένα βαγόνι για πληροφορίες. Ctrl+Κλικ για εμφάνιση/απόκρυψη αυτού του τύπου βαγονιού +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Λίστα επιλογής οδικού οχήματος. Πατήστε σε ένα όχημα για πληροφορίες. Ctrl+Κλικ για εμφάνιση/απόκρυψη αυτού του τύπου οχήματος +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Λίστα επιλογής πλοίου. Πατήστε σε ένα πλοίο για πληροφορίες. Ctrl+Κλικ για εμφάνιση/απόκρυψη αυτού του τύπου πλοίου +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Λίστα επιλογής αεροσκάφους. Πατήστε σε ένα αεροσκάφος για πληροφορίες. Ctrl+Κλικ για εμφάνιση/απόκρυψη αυτού του τύπου αεροσκάφους ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Αγορά Οχήματος @@ -3945,16 +4229,16 @@ STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Αγορ STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Αγορά και μετατροπή του αεροσκάφους ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Αγορά του επιλεγμένου οχήματος τρένου. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Αγορά του επιλεγμένου οχήματος δρόμου. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Αγοράστε το επιλεγμένο πλοίο. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Αγορά του επιλεγμένου αεροσκάφους. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Αγορά του επιλεγμένου οχήματος τρένου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Αγορά του επιλεγμένου οδικού οχήματος. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Αγορά επιλεγμένου πλοίου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Αγορά του επιλεγμένου αεροσκάφους. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Αγορά και μετατροπή του επιλεγμένου οχήματος τρένου. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Αγορά και μετατροπή του επιλεγμένου οχήματος δρόμου. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά -STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Αγορά και μετατροπή του επιλεγμένου πλοίου. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Αγορά και μετατροπή του επιλεγμένου αεροσκάφους. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Αγορά και μετατροπή του επιλεγμένου οχήματος τρένου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Αγορά και μετατροπή του επιλεγμένου οδικού οχήματος. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Αγορά και μετατροπή του επιλεγμένου πλοίου. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Αγορά και μετατροπή του επιλεγμένου αεροσκάφους. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Μετονομασία @@ -3964,7 +4248,7 @@ STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Μετο ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο οχήματος τρένου -STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο οχήματος δρόμου +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο οδικού οχήματος STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο πλοίου STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο αεροσκάφους @@ -3982,13 +4266,13 @@ STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Εμφά ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Εμφάνιση/απόκρυψη του τύπου βαγονιού -STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Εμφάνιση/απόκρυψη του τύπου οχήματος δρόμου +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Εμφάνιση/απόκρυψη του τύπου οδικού οχήματος STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Εμφάνιση/απόκρυψη του τύπου πλοίου STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Εμφάνιση/απόκρυψη του τύπου αεροσκάφους ###length VEHICLE_TYPES STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Μετονομασία τύπου τρένου -STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Μετονομασία τύπου οχήματος δρόμου +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Μετονομασία τύπου οδικού οχήματος STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Μετονομασία τύπου πλοίου STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Μετονομασία τύπου αεροσκάφους @@ -4004,20 +4288,20 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} {P STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Τρένα - τραβήξτε ένα όχημα με αριστερό κλικ για να το προσθέστε/αφαιρέστε από ένα τρένο, δεξί κλικ για πληροφορίες. Κρατήστε πατημένο το Ctrl για να κάνετε και τις δυο λειτουργίες να ισχύσουν για τις ακόλουθες αλυσίδες -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Οχήματα δρόμου - δεξί κλικ σε ένα όχημα για πληροφορίες +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Τρένα - τραβήξτε ένα όχημα με αριστερό κλικ για να το προσθέστε/αφαιρέστε από ένα τρένο, δεξί κλικ για πληροφορίες. Ctrl+Κλικ για εφαρμογή οποιασδήποτε από τις δύο λειτουργίες στην ακόλουθη αλυσίδα +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Οδικά οχήματα - δεξί κλικ σε ένα όχημα για πληροφορίες STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Πλοία - δεξί κλικ σε ένα πλοίο για πληροφορίες STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Αεροσκάφη - δεξί κλικ σε ένα αεροσκάφος για πληροφορίες ###length VEHICLE_TYPES STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Τραβήξτε το όχημα τρένου εδώ για να το πουλήσετε -STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Τραβήξτε το όχημα δρόμου εδώ για να το πουλήσετε +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Σύρετε το οδικό όχημα εδώ για να το πουλήσετε STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Τραβήξτε το πλοίο εδώ για να το πουλήσετε -STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Τραβήξτε το αεροσκάφος εδώ για να το πουλήσετε +STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Σύρετε το αεροσκάφος εδώ για να το πουλήσετε ###length VEHICLE_TYPES STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Πουλήστε όλα τα τρένα στο αμαξοστάσιο -STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Πουλήστε όλα τα οχήματα δρόμου στο αμαξοστάσιο +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Πουλήστε όλα τα οδικά οχήματα στο αμαξοστάσιο STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Πουλήστε όλα τα πλοία στο ναυπηγείο STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Πουλήστε όλα τα αεροσκάφη στο υπόστεγο @@ -4025,7 +4309,7 @@ STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Πουλ STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Αυτόματη αντικατάσταση όλων των τρένων στο αμαξοστάσιο STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Αυτόματη αντικατάσταση όλων των οχημάτων στο αμαξοστάσιο STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Αυτόματη αντικατάσταση όλων των πλοίων στο ναυπηγείο -STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Αυτόματη αντικατάσταση όλων των αεροσκαφών του υποστέγου +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Αυτόματη αντικατάσταση όλων των αεροσκαφών στο υπόστεγο ###length VEHICLE_TYPES STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Νέα Οχήματα @@ -4035,7 +4319,7 @@ STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Νέα ###length VEHICLE_TYPES STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Αγορά νέου οχήματος τρένου -STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Αγορά νέου οχήματος δρόμου +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Αγορά νέου ποδικού οχήματος STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Αγορά νέου πλοίου STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Αγορά νέου αεροσκάφους @@ -4046,20 +4330,20 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Κλων STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Κλωνοποίηση Αεροσκάφους ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του τρένου μαζί με τα όλα τα βαγόνια. Πατήστε αυτό το κουμπί και μετά σε κάποιο τρένο μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του οχήματος. Πατήστε αυτό το κουμπί και μετά σε κάποιο όχημα μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο ενός πλοίου. Πατήστε αυτό το κουμπί και μετά σε κάποιο πλοίο μέσα ή έξω από το ναυπηγείο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του αεροσκάφους. Πατήστε αυτό το κουμπί και μετά σε κάποιο αεροσκάφος μέσα στο ή έξω από το υπόστεγο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Αγορά αντιγράφου ενός τρένου μαζί με όλα τα βαγόνια. Πατήστε αυτό το κουμπί και μετά σε κάποιο τρένο μέσα ή έξω από το αμαξοστάσιο. Ctrl+Κλικ για διαμοιρασμό εντολών. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Αγορά αντιγράφου ενός οδικού οχήματος. Πατήστε αυτό το κουμπί και μετά σε κάποιο όχημα μέσα ή έξω από το αμαξοστάσιο. Ctrl+Κλικ για διαμοιρασμό εντολών. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Αγορά αντιγράφου ενός πλοίου. Πατήστε αυτό το κουμπί και μετά σε κάποιο πλοίο μέσα ή έξω από το ναυπηγείο. Ctrl+Κλικ για διαμοιρασμό εντολών. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Αγορά αντιγράφου του αεροσκάφους. Πατήστε αυτό το κουμπί και μετά σε κάποιο αεροσκάφος μέσα ή έξω από το υπόστεγο. Με Ctrl+Κλικ θα διαμοιραστούν τις εντολές. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του αμαξοστάσιου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο εμφάνισης στην τοποθεσία του αμαξοστασίου -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του αμαξοστάσιου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο εμφάνισης στην τοποθεσία του αμαξοστασίου -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του ναυπηγείου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο εμφάνισης στην τοποθεσία του ναυπηγείου -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του υπόστεγου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο εμφάνισης στην τοποθεσία του υπόστεγου +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του αμαξοστάσιου. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του αμαξοστασίου +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του αμαξοστάσιου. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του αμαξοστασίου +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του ναυπηγείου. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του ναυπηγείου +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του υπόστεγου. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του υπόστεγου ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Παίρνετε μια λίστα με όλα τα τρένα με το επιλεγμένο αμαξοστάσιο στις εντολές τους -STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Παίρνετε μια λίστα με όλα τα οχήματα δρόμου με το επιλεγμένο αμαξοστάσιο στις εντολές τους +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Παίρνετε μια λίστα με όλα τα οδικά οχήματα με το επιλεγμένο αμαξοστάσιο στις εντολές τους STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Παίρνετε μια λίστα με όλα τα πλοία με το επιλεγμένο ναυπηγείο στις εντολές τους STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Παίρνετε μια λίστα με όλα τα αεροσκάφη που έχουν οποιοδήποτε υπόστεγο αυτού του αεροδρομίου στις εντολές τους @@ -4075,7 +4359,7 @@ STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Πατή STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Πατήστε για να ξεκινήσουν όλα τα πλοία μέσα στο ναυπηγείο STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Πατήστε για να ξεκινήσουν όλα τα αεροσκάφη μέσα στο υπόστεγο -STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Τραβήξτε τη μηχανή του τρένου εδώ για να πουληθεί ολόκληρο το τρένο +STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Σύρετε τη μηχανή του τρένου εδώ για να πουληθεί ολόκληρο το τρένο STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Πρόκειται να πουλήσετε όλα τα οχήματα στο αμαξοστάσιο. Είσαστε σίγουροι; # Engine preview window @@ -4090,8 +4374,8 @@ STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE.geniki :μηχανής STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}μηχανής maglev STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.geniki :μηχανής maglev -STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}οχήματος δρόμου -STR_ENGINE_PREVIEW_ROAD_VEHICLE.geniki :Οχήματος δρόμου +STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n} οδικού οχήματος +STR_ENGINE_PREVIEW_ROAD_VEHICLE.geniki :Οδικού οχήματος STR_ENGINE_PREVIEW_TRAM_VEHICLE :όχημα τροχιοδρόμου STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}αεροσκάφους @@ -4099,6 +4383,18 @@ STR_ENGINE_PREVIEW_AIRCRAFT.geniki :αεροσκά STR_ENGINE_PREVIEW_SHIP :{G=n}πλοίου STR_ENGINE_PREVIEW_SHIP.geniki :πλοίου +STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING} +STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING} +STR_ENGINE_PREVIEW_COST_WEIGHT :Κόστος: {CURRENCY_LONG} Βάρος: {WEIGHT_SHORT} +STR_ENGINE_PREVIEW_COST_MAX_SPEED :Κόστος: {CURRENCY_LONG} Μεγ. Ταχύτητα: {VELOCITY} +STR_ENGINE_PREVIEW_SPEED_POWER :Ταχύτητα: {VELOCITY} Ισχύς: {POWER} +STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Ταχύτητα: {VELOCITY} Ισχύς: {POWER} Μέγ. Ε.Δ: {FORCE} +STR_ENGINE_PREVIEW_TYPE :Τύπος αεροσκάφους: {STRING} +STR_ENGINE_PREVIEW_TYPE_RANGE :Τύπος αεροσκάφους: {STRING} Εμβέλεια: {COMMA} τετραγωνίδια +STR_ENGINE_PREVIEW_RUNCOST_YEAR :Τρέχον κόστος: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Τρέχον κόστος: {CURRENCY_LONG}/περίοδο +STR_ENGINE_PREVIEW_CAPACITY :Χωρητικότητα: {CARGO_LONG} +STR_ENGINE_PREVIEW_CAPACITY_2 :Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Αντικατάσταση {STRING} - {STRING} @@ -4110,7 +4406,7 @@ STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Στήλ ###length VEHICLE_TYPES STR_REPLACE_VEHICLE_TRAIN :Τρένο -STR_REPLACE_VEHICLE_ROAD_VEHICLE :Όχημα Δρόμου +STR_REPLACE_VEHICLE_ROAD_VEHICLE :Οδικό όχημα STR_REPLACE_VEHICLE_SHIP :Πλοίο STR_REPLACE_VEHICLE_AIRCRAFT :Αεροσκάφος @@ -4130,8 +4426,8 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Πατή STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Εναλλαγή μεταξύ των παραθύρων αντικατάστασης μηχανών και βαγονιών STR_REPLACE_ENGINES :Μηχανές STR_REPLACE_WAGONS :Βαγόνια -STR_REPLACE_ALL_RAILTYPE :Όλα τα οχήματα σιδηρόδρομου -STR_REPLACE_ALL_ROADTYPE :Όλα τα οχήματα δρόμου +STR_REPLACE_ALL_RAILTYPE :Όλα τα σιδηροδρομικά οχήματα +STR_REPLACE_ALL_ROADTYPE :Όλα τα οδικά οχήματα ###length 2 STR_REPLACE_HELP_RAILTYPE :{BLACK}Επιλέξτε τον τύπο σιδηροδρόμου για τον οποίο θέλετε να γίνει η αντικατάσταση των μηχανών @@ -4139,43 +4435,43 @@ STR_REPLACE_HELP_ROADTYPE :{BLACK}Επιλ ###next-name-looks-similar STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Εμφανίζει ποια μηχανή αυτή στα αριστερά θα αντικατασταθεί, εάν υπάρχει -STR_REPLACE_RAIL_VEHICLES :Οχήματα Σιδηροδρόμου +STR_REPLACE_RAIL_VEHICLES :Σιδηροδρομικά οχήματα STR_REPLACE_ELRAIL_VEHICLES :Οχήματα Ηλεκτρικού Σιδηροδρόμου STR_REPLACE_MONORAIL_VEHICLES :Οχήματα Μονοτρόχιου STR_REPLACE_MAGLEV_VEHICLES :Οχήματα Maglev -STR_REPLACE_ROAD_VEHICLES :Οχήματα Δρόμου +STR_REPLACE_ROAD_VEHICLES :Οδικά οχήματα STR_REPLACE_TRAM_VEHICLES :Οχήματα τροχιοδρόμου STR_REPLACE_REMOVE_WAGON :{BLACK}Αφαίρεση βαγονιού: ({STRING}): {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Υποχρεώνει την αυτόματη αντικατάσταση να διατηρεί σταθερό το μήκος του τρένου αφαιρώντας βαγόνια (ξεκινώντας από μπροστά), όταν η αντικατάσταση της μηχανής κάνει το τρένο μεγαλύτερο -STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Πατήστε Ctrl+Click για εφαρμογή επίσης στην υπό-ομάδα +STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Πατήστε Ctrl+Κλικ για εφαρμογή επίσης στην υπό-ομάδα # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Κεντράρετε την κεντρική προβολή στην τοποθεσία του τρένου. Με διπλό κλικ θα ακολουθηθεί το τρένο στην κεντρική προβολή. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του τρένου -STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του οχήματος. Με διπλό κλικ θα ακολουθείται το αυτοκίνητο στην κύρια προβολή. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του οχήματος -STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του πλοίου. Με διπλό κλικ θα ακολουθείται το πλοίο στην κύρια προβολή. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του πλοίου -STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Κεντράρετε την κεντρική προβολή στην τοποθεσία του αεροσκάφους. Με διπλό κλικ θα ακολουθηθεί το αεροσκάφος στην κεντρική προβολή. Το Ctrl+Κλικ ανοίγει μία νέα προβολή στην τοποθεσία του αεροσκάφους +STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του τρένου. Διπλό κλικ για να ακολουθείται το τρένο στην κεντρική προβολή. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του τρένου +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του οχήματος. Διπλό κλικ για να ακολουθείται το όχημα στην κύρια προβολή. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του οχήματος +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του πλοίου. Διπλό κλικ για να ακολουθείται το πλοίο στην κύρια προβολή. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του πλοίου +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του αεροσκάφους. Διπλό κλικ για να ακολουθείται το αεροσκάφος στην κύρια προβολή. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του αεροσκάφους ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το τρένο στο αμαξοστάσιο. Με Ctrl+Κλικ κάνει μόνο επισκευή -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το όχημα στο αμαξοστάσιο. Με Ctrl+Κλικ κάνει μόνο επισκευή -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το πλοίο στο ναυπηγείο. Με Ctrl+Κλικ κάνει μόνο επισκευή -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το αεροσκάφος στο υπόστεγο. Με Ctrl+Κλικ κάνει μόνο επισκευή +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το τρένο στο αμαξοστάσιο. Με Ctrl+Κλικ κάνει μόνο συντήρηση +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το όχημα στο αμαξοστάσιο. Με Ctrl+Κλικ κάνει μόνο συντήρηση +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το πλοίο στο ναυπηγείο. Με Ctrl+Κλικ κάνει μόνο συντήρηση +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το αεροσκάφος στο υπόστεγο. Με Ctrl+Κλικ κάνει μόνο συντήρηση ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Αυτό θα αγοράσει αντίγραφο του τρένου μαζί με όλα τα βαγόνια. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Αυτό θα αγοράσει αντίγραφο του οχήματος. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει αγορά -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Αυτό θα αγοράσει αντίγραφο του πλοίου. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει αγορά -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Αυτό θα αγοράσει αντίγραφο του αεροσκάφους. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει αγορά +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Αγορά αντιγράφου του τρένου μαζί με όλα τα βαγόνια. Ctrl+Κλικ για διαμοιρασμό εντολών. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Αγορά αντιγράφου του οδικού οχήματος. Ctrl+Κλικ για διαμοιρασμό εντολών. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Αγορά αντιγράφου του πλοίου. Ctrl+Κλικ για διαμοιρασμό εντολών. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Αγορά αντιγράφου του αεροσκάφους. Ctrl+Κλικ για διαμοιρασμό εντολών. Επίσης, πατήστε το Shift για εμφάνιση εκτιμώμενου κόστους μόνο STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Αναγκάστε το τρένο να προχωρήσει χωρίς να περιμένει το σηματοδότη να το επιτρέψει STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Αναστροφή κατεύθυνσης τρένου STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Εξανάγκαση του οχήματος να κάνει αναστροφή -STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στον προορισμό της παραγγελίας. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του προορισμού της παραγγελίας +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στον προορισμό της εντολής. Ctrl+Κλικ για άνοιγμα νέου παραθύρου προβολής στην τοποθεσία του προορισμού της εντολής ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Μετατροπή του τρένου για μεταφορά διαφορετικού φορτίου @@ -4191,37 +4487,39 @@ STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Εμφά ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών τρένου -STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών οχήματος δρόμου +STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών οδικού οχήματος STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών πλοίου STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών αεροσκάφους ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Τρέχουσα δράση τρένου - κάντε κλικ για να σταματήσετε/ξεκινήσετε το τρένο -STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Τρέχων ενέργεια οχήματος - κάντε κλικ για να σταματήσετε/ξεκινήσετε το όχημα -STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια πλοίου - κάντε κλικ για να σταματήσετε/ξεκινήσετε το πλοίο -STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Τρέχουσα δράση αεροσκάφους - κάντε κλικ για να σταματήσετε/ξεκινήσετε το αεροσκάφος +STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Τρέχουσα δράση τρένου - πατήστε για να σταματήσετε/ξεκινήσετε το τρένο +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια οχήματος - πατήστε για να σταματήσετε/ξεκινήσετε το όχημα +STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια πλοίου - πατήστε για να σταματήσετε/ξεκινήσετε το πλοίο +STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Τρέχουσα δράση αεροσκάφους - πατήστε για να σταματήσετε/ξεκινήσετε το αεροσκάφος # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Φόρτωση / Εκφόρτωση STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Αναχωρεί +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Αναμονή για αποσύνδεση STR_VEHICLE_STATUS_CRASHED :{RED}Καταστράφηκε! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Χαλασμένο STR_VEHICLE_STATUS_STOPPED :{RED}Σταματημένο -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Σταματάει, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Σταματάει STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Χωρίς ενέργεια STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Αναμονή για ελεύθερη τροχιά STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Υπερβολικά μακριά από τον επόμενο προορισμό -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Πάει προς {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Δεν έχει εντολές, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Πορεία προς {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Κατεύθυνση για το {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Επισκευή στο {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Κατεύθυνση για το {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Χωρίς εντολές +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Κατεύθυνση για το {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Κατεύθυνση για το {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Συντήρηση στο {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Αποσύνδεση και συντήρηση στο {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Δεν υπάρχει πρόσβαση στο {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Δεν υπάρχει πρόσβαση στο {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Δεν υπάρχει πρόσβαση στο {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Δεν υπάρχει πρόσβαση στο {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Δεν υπάρχει πρόσβαση στο {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Δεν υπάρχει πρόσβαση στο {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Δεν υπάρχει πρόσβαση στο {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Δεν υπάρχει πρόσβαση στο {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4237,13 +4535,14 @@ STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE ###length VEHICLE_TYPES STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Ονομασία τρένου -STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Ονομασία οχήματος δρόμου +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Ονομασία οδικού οχήματος STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Ονομασία πλοίου STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Ονομασία αεροσκάφους STR_VEHICLE_INFO_AGE :{COMMA} χρόν{P ος ια} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} χρόν{P ος ια} ({COMMA}) STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Ηλικία: {LTBLUE}{STRING}{BLACK} Λειτουργικό Κόστος: {LTBLUE}{CURRENCY_LONG}/έτος +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Ηλικία: {LTBLUE}{STRING}{BLACK} Λειτουργικό Κόστος: {LTBLUE}{CURRENCY_LONG}/περίοδο STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Μέγ. ταχύτητα: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Μεγ. ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Τύπος αεροσκάφους: {LTBLUE}{STRING} @@ -4251,26 +4550,41 @@ STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Μεγ. STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Δύναμη Κινητήρα: {LTBLUE}{POWER}{BLACK} Μέγ. Ταχύτητα: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Δύναμη Κινητήρα: {LTBLUE}{POWER}{BLACK} Μέγ. Ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Μέγ. Ε.Δ: {LTBLUE}{FORCE} -STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Κέρδη αυτό το έτος: {LTBLUE}{CURRENCY_LONG} (προηγούμενου έτους: {CURRENCY_LONG}) -STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Φετινό κέρδος: {LTBLUE}{CURRENCY_LONG} (Περσινό: {CURRENCY_LONG}) {BLACK}Ελάχιστη απόδοση: {LTBLUE}{POWER_TO_WEIGHT} -STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Αξιοπιστία: {LTBLUE}{COMMA}% {BLACK}Καταρρεύσεις μετά από την τελευταία επισκευή: {LTBLUE}{COMMA} +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Φετινό κέρδος: {LTBLUE}{CURRENCY_LONG} (περυσινό: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Φετινό κέρδος: {LTBLUE}{CURRENCY_LONG} (Περσινό: {CURRENCY_LONG}) {BLACK}Ελάχ. απόδοση: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Κέρδος αυτή την περίοδο: {LTBLUE}{CURRENCY_LONG} (τελευταίας περιόδου: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Κέρδος αυτή την περίοδο: {LTBLUE}{CURRENCY_LONG} (τελευταίας περιόδου: {CURRENCY_LONG}) {BLACK}Ελάχ. απόδοση: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Αξιοπιστία: {LTBLUE}{COMMA}% {BLACK}Βλάβες μετά από την τελευταία επισκευή: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Κατασκευή: {LTBLUE}{NUM}{BLACK} Αξία: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Χωρητικότητα: {LTBLUE}Τίποτα{STRING} -STR_VEHICLE_INFO_CAPACITY :{BLACK}Χωρητικότητα: {LTBLUE}{CARGO_LONG}{3:STRING} -STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Χωρητικότητα: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY :{BLACK}Χωρητικότητα: {LTBLUE}{0:CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Χωρητικότητα: {LTBLUE}{0:CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Χωρητικότητα: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Έσοδα μεταφοράς: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Διάστημα μεταξύ συντηρήσεων : {LTBLUE}{COMMA}{NBSP}ημέρες{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Διάστημα μεταξύ συντηρήσεων: {LTBLUE}{COMMA}{NBSP}λεπτ{P ό ά}{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Διάστημα μεταξύ συντηρήσεων: {LTBLUE}{COMMA}%{BLACK} {STRING} +STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Τελευταίο service: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Τελευταίο service: {LTBLUE}{NUM} λεπτ{P 0 ό ά} πριν +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Αυξήστε το διάστημα μεταξύ συντηρήσεων κατά 10 ημέρες. Ctrl+Κλικ για να αυξήσετε το διάστημα μεταξύ συντηρήσεων κατά 5 ημέρες +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Αυξήστε το διάστημα μεταξύ συντηρήσεων κατά 5 λεπτά. Ctrl+Κλικ για να αυξήσετε το διάστημα μεταξύ συντηρήσεων κατά 1 λεπτό +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Αυξήστε το διάστημα μεταξύ συντηρήσεων κατά 10 τοις εκατό. Ctrl+Κλικ για να αυξήσετε το διάστημα μεταξύ συντηρήσεων κατά 5 τοις εκατό +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Μειώστε το διάστημα μεταξύ συντηρήσεων κατά 10 ημέρες. Ctrl+Κλικ για να μειώσετε το διάστημα μεταξύ συντηρήσεων κατά 5 ημέρες +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Μειώστε το διάστημα μεταξύ συντηρήσεων κατά 5 λεπτά. Ctrl+Κλικ για να μειώσετε το διάστημα μεταξύ συντηρήσεων κατά 1 λεπτό +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Μειώστε το διάστημα μεταξύ συντηρήσεων κατά 10 τοις εκατό. Ctrl+Κλικ για να μειώσετε το διάστημα μεταξύ συντηρήσεων κατά 5 τοις εκατό. STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Αλλάξτε τον τύπο διαστήματος επισκευών STR_VEHICLE_DETAILS_DEFAULT :Προκαθορισμένο +STR_VEHICLE_DETAILS_DAYS :Ημέρες +STR_VEHICLE_DETAILS_MINUTES :Λεπτά STR_VEHICLE_DETAILS_PERCENT :Ποσοστό ###length VEHICLE_TYPES STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Όνομα τρένου -STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Όνομα οχήματος δρόμου +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Όνομα οδικού οχήματος STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Όνομα πλοίου STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Όνομα αεροσκάφους @@ -4280,7 +4594,7 @@ STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Συνολική χωρητικότητα φορτίου του τρένου: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Άδειο STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} από τον σταθμό {STATION} @@ -4304,7 +4618,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Νέα STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Νέα χωρητικότητα: {GOLD}{CARGO_LONG}{}{BLACK}Κέρδος από τη μετατροπή: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Νέα χωρητικότητα: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Κόστος μετατροπής: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Νέα χωρητικότητα: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Κέρδος από τη μετατροπή: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Επιλέξτε τα οχήματα για μετατροπή. Σύροντας με το ποντίκι επιτρέπει την επιλογή πολλαπλών οχημάτων. Πατώντας σε άδειο χώρο θα επιλέξει ολόκληρο το όχημα. Με Ctrl+Κλικ θα γίνει επιλογή του οχήματος και της ακολουθούμενης αλυσίδας. +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Επιλέξτε τα οχήματα για μετατροπή. Κλικ+Σύρσιμο για επιλογή πολλαπλών οχημάτων. Πατήστε σε κενό χώρο για να επιλέξετε ολόκληρο το όχημα. Ctrl+Κλικ για να επιλέξετε κάποιο όχημα και την ακόλουθη αλυσίδα ###length VEHICLE_TYPES STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Επιλέξτε τον τύπο εμπορεύματος που θα μεταφέρει το τρένο @@ -4329,11 +4643,12 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Δρομολόγια STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Αλλαγή σε προβολή δρομολογίων -STR_ORDERS_LIST_TOOLTIP :{BLACK}Λίστα εντολών - πατήστε σε μια εντολή για να την επιλέξετε. Με Ctrl+Κλικ γίνεται μετακίνηση στον προορισμό της οδηγίας +STR_ORDERS_LIST_TOOLTIP :{BLACK}Λίστα εντολών - πατήστε σε μια εντολή για να την επιλέξετε. Ctrl+Κλικ για μετακίνηση στον προορισμό της εντολής STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Τέλος Εντολών - - -STR_ORDERS_END_OF_SHARED_ORDERS :- - Τέλος Μοιρασμένων Οδηγιών - - +STR_ORDERS_END_OF_SHARED_ORDERS :- - Τέλος Διαμοιρασμένων Εντολών - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Χωρίς στάση @@ -4367,9 +4682,14 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Διαθέσι STR_ORDER_DROP_GO_ALWAYS_DEPOT :Πάντα πήγαινε STR_ORDER_DROP_SERVICE_DEPOT :Επισκευή εάν χρειάζεται STR_ORDER_DROP_HALT_DEPOT :Στάση +STR_ORDER_DROP_UNBUNCH :Αποδέσμευση # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES +STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Επιλέξτε την ενέργεια που θα εκτελεστεί σε αυτό το αμαξοστάσιο +STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Επιλέξτε την ενέργεια που θα εκτελεστεί σε αυτό το αμαξοστάσιο +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Επιλέξτε την ενέργεια που θα εκτελεστεί σε αυτό το αμαξοστάσιο +STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Επιλέξτε την ενέργεια που θα εκτελεστεί σε αυτό το υπόστεγο αεροπλάνων ###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Δεδομένα οχήματος για να βασιστεί το άλμα @@ -4390,7 +4710,7 @@ STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Πως STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :είναι ίσο με STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :δεν είναι ίσο με STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :είναι μικρότερο από -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :είναι μικρότερο ή ίσο από +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :είναι μικρότερο από ή ίσο με STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :είναι περισσότερο από STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :είναι περισσότερο από ή ισο με STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :είναι αληθές @@ -4400,20 +4720,20 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Η τι STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Δώστε τίμη για να συγκριθεί STR_ORDERS_SKIP_BUTTON :{BLACK}Παράκαμψη -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Παρακάμπτει την τρέχουσα εντολή και ξεκινά την επόμενη. Με Ctrl+Κλικ παρακάμπτεται η επιλεγμένη εντολή +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Παρακάμπτει την τρέχουσα εντολή και ξεκινά την επόμενη. Ctrl+Κλικ για παράκαμψη της επιλεγμένης εντολής STR_ORDERS_DELETE_BUTTON :{BLACK}Διαγραφή STR_ORDERS_DELETE_TOOLTIP :{BLACK}Διαγραφή της επιλεγμένης εντολής STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Διαγραφή όλων των εντολών STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Διακοπή μοιράσματος -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Διακοπή μοιράσματος της λίστας εντολών. Με Ctrl+Κλικ διαγράφονται επιπλέον όλες τις εντολές από αυτό το όχημα +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Διακοπή διαμοιρασμού της λίστας εντολών. Με Ctrl+Κλικ επιπλέον διαγράφονται όλες οι εντολές για αυτό το όχημα STR_ORDERS_GO_TO_BUTTON :{BLACK}Πήγαινε Στο STR_ORDER_GO_TO_NEAREST_DEPOT :Πήγαινε στο κοντινότερο αμαξοστάσιο STR_ORDER_GO_TO_NEAREST_HANGAR :Πήγαινε στο κοντινότερο υπόστεγο STR_ORDER_CONDITIONAL :Εκτέλεση εντόλης υπο προυπόθεση STR_ORDER_SHARE :Μοίρασμα εντολών -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Εισάγετε μια νέα εντολή πριν την επιλεγμένη ή προσθέστε στο τέλος της λίστας. Με Ctrl οι εντολές σταθμού γίνονται «πλήρης φόρτωση οποιουδήποτε εμπορεύματος», οι εντολές καθοδήγησης «χωρίς στάση» και οι εντολές αμαξοστασίου «επισκευή». Με «ίδιες εντολές» ή με Ctrl το όχημα θα έχει τις ίδιες εντολές με το επιλεγμένο. Πατώντας πάνω σε κάποιο όχημα αντιγράφονται οι εντολές από αυτό. Μια εντολή για αμαξοστάσιο απενεργοποιεί την αυτόματη επισκευή του οχήματος +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Εισαγάγετε νέα εντολή πριν την επιλεγμένη ή προσθέστε στο τέλος της λίστας. Ctrl+Κλικ σε σταθμό για «πλήρη φόρτωση οποιουδήποτε εμπορεύματος», σε σημείο διαδρομής για αντιστροφή της εντολής «προεπιλογή χωρίς στάση» ή σε αμαξοστάσιο για «αποσύνδεση». Πατήστε σε άλλο όχημα για να αντιγράψετε τις εντολές του ή Ctrl+Κλικ για διαμοιρασμό εντολών. Η εντολή για αμαξοστάσιο απενεργοποιεί την αυτόματη συντήρηση του οχήματος STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Εμφάνιση όλων των οχημάτων που μοιράζονται αυτό το δρομολόγιο @@ -4439,6 +4759,7 @@ STR_ORDER_REFIT_ORDER :(Μετατρο STR_ORDER_REFIT_STOP_ORDER :(Μετατροπή σε {STRING} και στάση) STR_ORDER_STOP_ORDER :(Στάση) +STR_ORDER_WAIT_TO_UNBUNCH :(αναμονή προς αποσύνδεση) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Δεν μπορείτε να χρησιμοποιήσετε τον σταθμό){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4516,31 +4837,40 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Αυτό STR_TIMETABLE_STATUS_LATE :{BLACK}Αυτό το όχημα έχει καθυστερήσει κατά {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Το όχημα εκτελεί το δρομολόγιο του κατά {STRING} νωρίτερα STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Αυτό το δρομολόγιο ακόμα δεν έχει ξεκινήσει +STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Αυτό το δρομολόγιο θα ξεκινήσει στις {STRING} +STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Αυτό το δρομολόγιο θα ξεκινήσει σε {COMMA} δευτερόλεπτα +STR_TIMETABLE_START :{BLACK}Εκκίνηση δρομολογίου +STR_TIMETABLE_START_TOOLTIP :{BLACK}Επιλέξτε πότε ξεκινά αυτό το δρομολόγιο. Ctrl+Κλικ για ομοιόμορφη κατανομή της εκκίνησης όλων των οχημάτων που μοιράζονται αυτήν την εντολή με βάση τη σχετική τους εντολή, εάν η εντολή είναι πλήρως προγραμματισμένη +STR_TIMETABLE_START_SECONDS_QUERY :Δευτερόλεπτα μέχρι την έναρξη του δρομολογίου STR_TIMETABLE_CHANGE_TIME :{BLACK}Αλλαγή Χρόνων -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Αλλάζει ο χρόνος που παίρνει η επιλεγμένη επιλογή για να εκτελεστεί +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Αλλαγή του χρόνου που παίρνει η επιλεγμένη εντολή για να εκτελεστεί. Ctrl+Κλικ για ορισμό χρόνου όλων των εντολών STR_TIMETABLE_CLEAR_TIME :{BLACK}Εκκαθάριση Χρόνων -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Εκκαθαρίζει το χρόνο για την επιλεγμένη εντολή. Ctrl+Κλικ σβήνει τον χρόνο για όλες τις εντολές +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Καθαρίζει το χρόνο για την επιλεγμένη εντολή. Ctrl+Κλικ για καθαρισμό χρόνου όλων των εντολών STR_TIMETABLE_CHANGE_SPEED :{BLACK}Αλλαγή Ορίου Ταχύτητας -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Αλλαγή της μέγιστης ταχύτητας ταξιδιού της επιλεγμένης εντολής +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Αλλαγή της μέγιστης ταχύτητας ταξιδιού της επιλεγμένης εντολής. Ctrl+Κλικ για ορισμό της ταχύτητας ταξιδιού όλων των εντολών STR_TIMETABLE_CLEAR_SPEED :{BLACK}Εκκαθάριση Ορίου Ταχύτητας -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Καθαρίζει τη μέγιστη ταχύτητα ταξιδιού της επιλεγμένης εντολής +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Καθαρίζει τη μέγιστη ταχύτητα ταξιδιού της επιλεγμένης εντολής. Ctrl+Κλικ για καθαρισμό ταχύτητας όλων των εντολών STR_TIMETABLE_RESET_LATENESS :{BLACK}Επαναφορά Μετρητή Καθυστέρησης -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Επαναφορά του μετρητή καθυστέρησης, ώστε το όχημα να είναι στην ώρα του +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Επαναφορά του μετρητή καθυστέρησης, ώστε το όχημα να είναι στην ώρα του. Ctrl+Κλικ για επαναφορά του μετρητή όλης της ομάδας ώστε το τελευταίο όχημα να είναι στην ώρα του και τα υπόλοιπα νωρίτερα -STR_TIMETABLE_AUTOFILL :{BLACK}Αυτόματη Γέμιση +STR_TIMETABLE_AUTOFILL :{BLACK}Αυτόματη Συμπλήρωση STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Συμπληρώστε το δρομολόγιο αυτόματα με τις τιμές από το επόμενο ταξίδι. (Ctrl+Κλικ για να προσπαθήσει να κρατήσει τους χρόνους αναμονής) STR_TIMETABLE_EXPECTED :{BLACK}Αναμενόμενη STR_TIMETABLE_SCHEDULED :{BLACK}Προγραμματισμένη STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Εναλλαγή μεταξύ αναμενόμενης και προγραμματισμένης +STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY} +STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} δευτ. +STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} δευτ. # Date window (for timetable) @@ -4568,23 +4898,25 @@ STR_AI_DEBUG_MATCH_CASE :{BLACK}Ταύτ STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Μεταβολή της ταύτισης μεγέθους όταν η γίνεται σύγκριση μιας καταχώρησης της ΑΙ με το αλφαριθμητικό παύσης STR_AI_DEBUG_CONTINUE :{BLACK}Συνέχεια STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Συνέχιση του παιχνιδιού και της λειτουργίας της AI -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Εμφάνιση της εξόδου αποσφαλμάτωσης αυτής της AI +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Εμφάνιση της εξόδου αποσφαλμάτωσης αυτής της AI. Με Ctrl+Κλικ ανοίγει νέο παράθυρο εμφάνισης STR_AI_GAME_SCRIPT :{BLACK}Δέσμη Ενεργειών Παιχνιδιού -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Έλεγχος ιστορικού δέσμης ενεργειών παιχνιδιού +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Έλεγχος ιστορικού δέσμης ενεργειών παιχνιδιού. Ctrl+Κλικ για άνοιγμα σε νέο παράθυρο STR_ERROR_AI_NO_AI_FOUND :Δεν βρέθηκε κατάλληλη AI για φόρτωση.{}Αυτή η AI είναι ψεύτικη και δεν θα κάνει τίποτα.{}Μπορείτε να κατεβάσετε διάφορες AΙ από το σύστημα Διαδικτυακού Περιεχομένου. -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Μια τρέχουσα δέσμη ενεργειών τερμάτισε απότομα. Παρακαλώ ενημερώστε τον συγγραφέα της δέσμης ενεργειών με ένα στιγμιότυπο οθόνης από το παράθυρο αποσφαλμάτωσης AI/Παιχνιδιού +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Μια από τις δέσμες ενεργειών που εκτελούνται τερμάτισε απότομα. Παρακαλώ ενημερώστε τον συγγραφέα της δέσμης ενεργειών με ένα στιγμιότυπο οθόνης από το παράθυρο αποσφαλμάτωσης AI/Παιχνιδιού STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Το παράθυρο αποσφαλμάτωσης ΑΙ και δέσμης ενεργειών είναι διαθέσιμο μόνο για τον διακομιστή # AI configuration window -STR_AI_CONFIG_CAPTION_AI :{WHITE}Ρύθμιση ΤΝ -STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}Ρύθμηση δέσμης ενεργειών παιχνιδιού +STR_AI_CONFIG_CAPTION_AI :{WHITE}Ρυθμίσεις ΤΝ +STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}Ρυθμίσεις δέσμης ενεργειών παιχνιδιού STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Η Δέσμη Ενεργειών παιχνιδιού που θα φορτωθεί στο επόμενο παιχνίδι STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Οι AIs που θα φορτωθούν στο επόμενο παιχνίδι STR_AI_CONFIG_HUMAN_PLAYER :Ανθρώπινος παίκτης STR_AI_CONFIG_RANDOM_AI :Τυχαία AI STR_AI_CONFIG_NONE :{G=f}(καμία) +STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Μέγιστος αρ. ανταγωνιστών: {ORANGE}{COMMA} +STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Διάστημα μέχρι την εκκίνηση των ανταγωνιστών: {ORANGE}{COMMA} Λεπτ{P 0 ό ά} STR_AI_CONFIG_MOVE_UP :{BLACK}Μετακίνηση Πάνω STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Μετακίνηση της επιλεγμένης AI πάνω στη λίστα @@ -4596,8 +4928,8 @@ STR_AI_CONFIG_GAMESCRIPT_PARAM :{SILVER}Παρ STR_AI_CONFIG_AI :{SILVER}AI STR_AI_CONFIG_CHANGE_AI :{BLACK}Διάλεξε ΤΝ -STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Δέσμη Ενεργειών -STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Φόρτωση άλλης δέσμης ενεργειών +STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Επιλογή Δέσμης Ενεργειών +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Φόρτωση άλλης δέσμης ενεργειών. Ctrl+Κλικ για εμφάνιση όλων των διαθέσιμων εκδόσεων STR_AI_CONFIG_CONFIGURE :{BLACK}Ρυθμίσεις STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Ρύθμιση των παραμέτρων της Δέσμης Ενεργειών @@ -4625,22 +4957,34 @@ STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Στιγ STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Στιγμιότυπο μίνι χάρτη # Script Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Παράμετροι STR_AI_SETTINGS_CAPTION_AI :AI +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Σενάριο Παιχνιδιού STR_AI_SETTINGS_CLOSE :{BLACK}Κλείσιμο STR_AI_SETTINGS_RESET :{BLACK}Επαναφορά STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window +STR_TEXTFILE_JUMPLIST :{WHITE}Πίνακας περιεχομένων +STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Γρήγορη μετάβαση σε μια ενότητα του εμφανιζόμενου αρχείου μέσω αυτής της λίστας +STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} +STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Πάει προς τα πίσω στο ιστορικό πλοήγησης +STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Παει προς τα εμπρός στο ιστορικό πλοήγησης STR_TEXTFILE_WRAP_TEXT :{WHITE}Αναδίπλωση κειμένου STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Αναδίπλωση του κειμένου του παραθύρου ώστε να χωρά χωρίς να απαιτέιται κύλιση -STR_TEXTFILE_VIEW_README :{BLACK}Εμφάνιση readme +STR_TEXTFILE_VIEW_README :{BLACK}Readme +STR_TEXTFILE_VIEW_README_TOOLTIP :Προβολή αρχείου readme για αυτό το περιεχόμενο STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Ιστορικό αλλαγών +STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Προβολή αρχείου καταγραφής αλλαγών για αυτό το περιεχόμενο STR_TEXTFILE_VIEW_LICENCE :{BLACK}Άδεια +STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Προβολή άδειας για αυτό το περιεχόμενο ###length 5 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme του {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{G=m}{WHITE}{STRING} ιστορικό αλλαγών του {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} άδεια του {STRING} +STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Προεπισκόπηση του αποτελέσματος της έρευνας +STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}Έγγραφο OpenTTD '{STRING}' # Vehicle loading indicators @@ -4671,9 +5015,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Υπολ STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Η αποθήκευση είναι σε εξέλιξη,{}παρακαλώ περιμένετε να τελειώσει! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Η αυτόματη αποθήκευση απέτυχε STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Αδύνατη η ανάγνωση του δίσκου -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Η Αποθήκευση Παιχνιδιού Απέτυχε{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Η αποθήκευση του παιχνιδιού απέτυχε... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Αδύνατη η διαγραφή του αρχείου -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Η Φόρτωση Παιχνιδιού Απέτυχε{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Απέτυχε η φόρτωση του παιχνιδιού... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Εσωτερικό λάθος: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Χαλασμένο αποθηκευμένο παιχνίδι - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Το αποθηκευμένο παιχνίδι είναι φτιαγμένο με νεότερη έκδοση @@ -4699,10 +5043,10 @@ STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... δε STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... η εικόνα είναι πολύ μεγάλη STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Προειδοποίηση κλίμακας -STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Αλλαγή μεγέθους του πηγαίου χάρτη δεν συνίσταται. Να προχωρήσει η δημιουργία; +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Αλλαγή μεγέθους του πηγαίου χάρτη δεν συνιστάται. Να προχωρήσει η δημιουργία; # Soundset messages -STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Βρέθηκε μόνο εφεδρικό σετ ήχου. Αν θέλετε ήχους, εγκαταστήστε ένα πακέτο ήχων μέσω του συστήματος μεταφόρτωσης υλικού +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Βρέθηκε μόνο εφεδρικό πακέτο ήχων. Αν θέλετε ήχους, εγκαταστήστε πακέτο ήχων μέσω του συστήματος μεταφόρτωσης υλικού # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Τεράστιο στιγμιότυπο οθόνης @@ -4726,7 +5070,7 @@ STR_ERROR_CAN_T_DO_THIS :{WHITE}Αυτό STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Το κτίριο πρέπει πρώτα να κατεδαφιστεί STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Είναι αδύνατο να καθαριστεί αυτή η περιοχή... STR_ERROR_SITE_UNSUITABLE :{WHITE}... ακατάλληλη περιοχή -STR_ERROR_ALREADY_BUILT :{WHITE}... ήδη κτισμένο +STR_ERROR_ALREADY_BUILT :{WHITE}... ήδη κατασκευασμένο STR_ERROR_OWNED_BY :{WHITE}... ιδιοκτησία του {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... η περιοχή είναι ιδιοκτησία άλλης εταιρίας STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... υπερβαίνει το όριο διαμόρφωσης του εδάφους @@ -4746,15 +5090,15 @@ STR_ERROR_BRIBE_FAILED :{WHITE}Η δω STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Δεν είναι δυνατό να υψωθεί η γη εδώ... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Δεν είναι δυνατό να χαμηλώσει η γη εδώ... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Δεν είναι δυνατό να έρθει στο ίδιο επίπεδο η γη εδώ... -STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Η εκσκαφή θα κατέστρεφε το τούνελ +STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Η εκσκαφή θα κατέστρεφε τη σήραγγα STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ήδη στο επίπεδο της θάλασσας STR_ERROR_TOO_HIGH :{WHITE}... πολύ ψηλά STR_ERROR_ALREADY_LEVELLED :{WHITE}... ήδη επίπεδο STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Μετά την αλλαγή, η γέφυρα από πάνω του θα είναι πολύ ψηλή # Company related errors -STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Δεν ήταν δυνατό να αλλάξει το όνομα της εταιρίας... -STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Δεν ήταν δυνατό να αλλάξει το όνομα του διευθυντή... +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Δεν μπορεί να αλλάξει το όνομα της εταιρίας... +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Δεν μπορεί να αλλάξει το όνομα του διευθυντή... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... το μέγιστο επιτρεπόμενο δάνειο είναι {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Δεν μπορείτε να δανειστείτε περισσότερα χρήματα... @@ -4764,12 +5108,12 @@ STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Αδύν STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Δεν είναι δυνατό να δοθούν χρήματα που είναι δανεισμένα από τη τράπεζα... STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Δεν μπορείτε να δώσετε χρήματα σε αυτή την εταιρία... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Αδύνατη η εξαγορά της εταιρίας... -STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Δεν μπορεί να κτιστεί αρχηγείο εταιρίας... +STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Δεν μπορεί να κατασκευαστεί έδρα εταιρίας... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Αδύνατο να κτιστούν πόλεις +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Αδύνατο να κατασκευαστούν πόλεις... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Δεν μπορεί να μετονομαστεί η πόλη... -STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Αδύνατο να κτιστεί πόλη εδώ... +STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Αδύνατο να ιδρυθεί πόλη εδώ... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Δεν μπορεί να γίνει επέκταση της πόλης... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... πολύ κοντά στην άκρη του χάρτη STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... πολύ κοντά σε άλλη πόλη @@ -4778,42 +5122,46 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... δε STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Έργα οδοποιίας σε εξέλιξη STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Δεν γίνεται να διαγραφεί η πόλη...{}Ένας σταθμός ή ένα αμαξοστάσιο που αναφέρεται στην πόλη ή ένα τετραγωνίδιο της πόλης δεν μπορεί να αφαιρεθεί STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... δεν υπάρχει κατάλληλο μέρος για άγαλμα στο κέντρο αυτής της πόλης +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Δεν ήταν δυνατό το χτίσιμο του σπιτιού... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... πάρα πολλές βιομηχανίες STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Δε γίνεται να δημιουργηθούν βιομηχανίες... -STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Δεν μπορεί να κτιστεί {G ο η το} {STRING} εδώ... -STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Δεν είναι δυνατό να κτιστεί αυτός ο τύπος βιομηχανίας εδώ... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί {G ο η το} {STRING} εδώ... +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Δεν είναι δυνατό να κατασκευαστεί αυτός ο τύπος βιομηχανίας εδώ... STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}Δεν βρέθηκαν ευκαιρίες για τη βιομηχανία... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... πολύ κοντά σε άλλη βιομηχανία -STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... πρέπει να κτιστεί πόλη πρώτα +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... πρέπει να ιδρυθεί πόλη πρώτα STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... επιτρέπεται μόνο μία ανά πόλη -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... μπορεί να κτιστεί μόνο σε πόλεις με πληθυσμό άνω των 1200 -STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... μπορεί να κτιστεί μόνο σε δασώδεις περιοχές -STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... μπορεί να κτιστεί μόνο σε ερημικές περιοχές -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... μπορεί να κτιστεί μόνο σε πόλεις (αντικαθιστώντας σπίτια) -STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... μπορεί να κτιστεί μόνο κοντά σε κέντρα πόλεων -STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... μπορεί να κτιστεί μόνο σε χαμηλές περιοχές +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... μπορεί να κατασκευαστεί μόνο σε πόλεις με πληθυσμό άνω των 1200 +STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... μπορεί να κατασκευαστεί μόνο σε δασώδεις περιοχές +STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... μπορεί να κατασκευαστεί μόνο σε ερημικές περιοχές +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... μπορεί να κατασκευαστεί μόνο σε πόλεις (αντικαθιστώντας σπίτια) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... μπορεί να κατασκευαστεί μόνο κοντά σε κέντρα πόλεων +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... μπορεί να κατασκευαστεί μόνο σε χαμηλές περιοχές STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... μπορούν να τοποθετηθούν μόνο στις άκρες του χάρτη STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... δάση μπορούν να φυτευτούν μόνο πάνω από τη γραμμή του χιονιού -STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... μπορεί να κτιστεί μόνο πάνω από τη γραμμή του χιονιού -STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... μπορεί να κτιστεί μόνο κάτω από τη γραμμή του χιονιού +STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... μπορεί να κατασκευαστεί μόνο πάνω από τη γραμμή του χιονιού +STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... μπορεί να κατασκευαστεί μόνο κάτω από τη γραμμή του χιονιού STR_ERROR_PROSPECTING_WAS_UNLUCKY :{WHITE}Η χρηματοδότηση απέτυχε να προσκομήσει αποτελέσματα λόγω κακής τύχης· δοκιμάστε ξάνα +STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}Δεν υπήρχαν κατάλληλα μέρη για προοπτική για αυτόν τον κλάδο STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Δεν υπήρχαν διαθέσιμες τοποθεσίες για βιομηχανίες τύπου '{STRING}' STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Αλλαγή παραμέτρων δημιουργίας χάρτη για καλύτερα αποτελέσματα # Station construction related errors -STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Δεν μπορεί να κτιστεί σταθμός τρένων εδώ... -STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Δεν μπορεί να κτιστεί στάση λεωφορείων... -STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Δεν μπορεί να κτιστεί στάση φορτηγών... -STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Δεν μπορεί να κτιστεί επιβατικός σταθμός τραμ... -STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Δεν μπορεί να κτιστεί σταθμός τραμ... -STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Δεν μπορεί να κτιστεί λιμένας εδώ... -STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Δεν μπορεί να κτιστεί αεροδρόμιο εδώ... +STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμός τρένων εδώ... +STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί στάση λεωφορείων... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμός φορτηγών... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί επιβατικός σταθμός τραμ... +STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμός τραμ... +STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί λιμένας εδώ... +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί αεροδρόμιο εδώ... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Γειτονεύει με περισσότερες από μια υπάρχουσες περιοχές σταθμών/φόρτωσης STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... ο σταθμός είναι υπερβολικά απλωμένος +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... μη υποστηριζόμενος αριθμός σιδηροτροχιών +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... μη υποστηριζόμενο μήκος STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Πάρα πολλές περιοχές σταθμών/φόρτωσης STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Πάρα πολλά κομμάτια σιδηροδρομικού σταθμού STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Πάρα πολλές στάσεις λεωφορείου @@ -4821,23 +5169,23 @@ STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Πάρα STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Πολύ κοντά σε άλλη αποβάθρα STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Πολύ κοντά σε άλλο αεροδρόμιο STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Δεν μπορεί να μετονομαστεί ο σταθμός... -STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... αυτός είναι δρόμος ιδιόκτητος από την πόλη +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... δρόμος ιδιοκτησία κάποιας πόλης STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... ο δρόμος βλέπει σε λάθος κατεύθυνση STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... οι μη τερματικοί σταθμοί δε μπορούν να έχουν στροφές STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... οι μη τερματικοί σταθμοί δε μπορούν να έχουν διασταυρώσεις # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί μέρος του σταθμού... -STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Πρέπει πρώτα να αφαιρέσετε τον σταθμό σιδηροδρόμου +STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Πρέπει να αφαιρεθεί ο σταθμός σιδηροδρόμου πρώτα STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Αδύνατο να αφαιρεθεί η στάση λεωφορείων... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί ο σταθμός φορτηγών... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί η στάση επιβατών τραμ... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί ο σταθμός εμπορευμάτων τραμ... -STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Πρέπει να γίνει αφαίρεση της στάσης οχημάτων πρώτα +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Πρέπει να αφαιρεθεί η στάση οχημάτων πρώτα STR_ERROR_THERE_IS_NO_STATION :{WHITE}... δεν υπάρχει σταθμός εδώ STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Πρέπει να κατεδαφιστεί ο σιδηροδρομικός σταθμός πρώτα -STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Πρέπει να κατεδαφιστεί η στάσης λεωφορείου πρώτα +STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Πρέπει να κατεδαφιστεί η στάση λεωφορείου πρώτα STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Πρέπει να κατεδαφιστεί ο σταθμός φορτηγών πρώτα STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Πρέπει να κατεδαφιστεί ο επιβατικός σταθμός τραμ πρώτα STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Πρέπει να κατεδαφιστεί ο εμπορευματικός σταθμός τραμ πρώτα @@ -4845,23 +5193,26 @@ STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Πρέπ STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Πρέπει να κατεδαφιστεί το αεροδρόμιο πρώτα # Waypoint related errors -STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Προστίθεται σε περισσότερο από ένα υπάρχον σημείο καθοδήγησης +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Συνενώνει περισσότερα από ένα υπάρχοντα σημεία καθοδήγησης STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Πολύ κοντά σε άλλο σημείο καθοδήγησης -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Δεν μπορεί να χτιστεί σημείο καθοδήγησης τρένου εδώ... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Δεν μπορεί να κατασκευαστεί σημείο καθοδήγησης τρένου εδώ... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Δεν μπορεί να κατασκευαστεί οδικό σημείο καθοδήγησης εδώ... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Δεν μπορεί να τοποθετηθεί σημαδούρα εδώ... -STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Αδύνατο να αλλαχτεί το όνομα του σημείου καθοδήγησης... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Δεν μπορεί να αλλάξει το όνομα του σημείου καθοδήγησης... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Αδύνατο να αφαιρεθεί το σημείο καθοδήγησης τρένου από εδώ... -STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Πρέπει να αφαιρεθεί πρώτα το σημείο καθοδήγησης σιδηρόδρομου +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Αδύνατο να αφαιρεθεί το οδικό σημείο καθοδήγησης από εδώ... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Πρέπει να αφαιρεθεί το σημείο καθοδήγησης σιδηρόδρομου πρώτα +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Πρέπει να αφαιρεθεί το οδικό σημείο καθοδήγησης πρώτα STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... σημαδούρα στη μέση STR_ERROR_BUOY_IS_IN_USE :{WHITE}... σημαδούρα σε χρήση από άλλη εταιρία! # Depot related errors -STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Δεν μπορεί να κτιστεί αμαξοστάσιο εδώ... -STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Δεν μπορεί να κτιστεί σταθμός οχημάτων εδώ... -STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Δεν μπορεί να κτιστεί σταθμαρχείο τραμ εδώ... -STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Δεν μπορεί να κτιστεί ναυπηγείο πλοίων εδώ... +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Δεν μπορεί να κατασκευαστεί αμαξοστάσιο εδώ... +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμός οχημάτων εδώ... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμαρχείο τραμ εδώ... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Δεν μπορεί να κατασκευαστεί ναυπηγείο πλοίων εδώ... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Δεν μπορεί να μετονομαστεί το αμαξοστάσιο/ναυπηγείο... @@ -4884,6 +5235,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Αδύν STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Λάθος τύπος αμαξοστάσιου # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... μπορεί να έχει μόνο μια εντολή αποσύνδεσης +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... δεν μπορούν να χρησιμοποιηθούν εντολές πλήρους φόρτωσης, όταν το όχημα έχει εντολή αποδέσμευσης +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... δεν είναι δυνατή η αποδέσμευση οχήματος που έχει εντολή πλήρους φόρτωσης +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... δεν μπορούν να χρησιμοποιηθούν εντολές υπό όρους, όταν το όχημα έχει εντολή αποδέσμευσης +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... δεν είναι δυνατή η αποδέσμευση οχήματος που έχει εντολές υπό όρους # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Το {VEHICLE} είναι πολύ μεγάλο μετά την ανανέωση @@ -4894,14 +5250,14 @@ STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Το κ # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Αδύνατος συνδυασμός σιδηροδρόμου -STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Πρέπει να γίνει αφαίρεση του σήματος πρώτα +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Πρέπει να αφαιρεθεί το σήμα πρώτα STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Μη συμβατή σιδηροτροχιά STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Πρέπει να αφαιρεθεί ο σιδηρόδρομος πρώτα STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Η δρόμος είναι μονόδρομος ή μπλοκαρισμένος STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Δεν επιτρέπονται ισόπεδες διασταυρώσεις για αυτόν τον τύπο σιδηροδρόμου STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Οι ισόπεδες διαβάσεις δεν επιτρέπονται για αυτό τον τύπο δρόμου STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Δεν μπορούν να τοποθετοηθούν σηματοδότες εδώ... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Δεν μπορεί να κτιστεί σιδηρόδρομος εδώ... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Δεν μπορεί να κατασκευαστεί σιδηρόδρομος εδώ... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Δεν μπορεί να αφαιρεθεί σιδηρόδρομος από εδώ... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Αδύνατο να αφαιρεθούν σηματοδότες από εδώ... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Δεν μπορούν να μετατραπούν οι σηματοδότες εδώ... @@ -4911,10 +5267,10 @@ STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... δε STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Δε γίνεται να μετατραπεί ο τύπος της σιδηροτροχιάς εδώ... # Road construction errors -STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Πρέπει πρώτα να αφαιρεθεί ο δρόμος +STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Πρέπει να αφαιρεθεί ο δρόμος πρώτα STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... οι μονόδρομοι δεν μπορούν να έχουν διασταυρώσεις -STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Δεν μπορεί να κτιστεί δρόμος εδώ... -STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Δεν μπορεί να κτιστεί τροχιοδρόμος εδώ... +STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί δρόμος εδώ... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί τροχιοδρόμος εδώ... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Αδύνατο να αφαιρεθεί δρόμος από εδώ... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Δεν μπορεί να αφαιρεθεί τροχιόδρομος από εδώ... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... δεν υπάρχει δρόμος @@ -4925,16 +5281,16 @@ STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Δεν STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Καμία κατάλληλη γραμμή του τραμ # Waterway construction errors -STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Δεν μπορεί να κτιστεί κανάλι εδώ -STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Δεν μπορεί να κτιστεί υδατοφράκτης εδώ... +STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Δεν μπορεί να κατασκευαστεί κανάλι εδώ +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Δεν μπορεί να κατασκευαστεί υδατοφράκτης εδώ... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Δεν μπορούν να τοποθετηθούν ποτάμια εδώ... -STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... πρέπει να κτιστεί στο νερό -STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... αδύνατο να κτιστεί στο νερό -STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... αδύνατο να κτιστεί στην ανοικτή θάλασσα -STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... αδύνατο να κτιστεί σε κανάλι -STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... αδύνατο να κτιστεί σε ποτάμι +STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... πρέπει να κατασκευαστεί στο νερό +STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... αδύνατο να κατασκευαστεί στο νερό +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... αδύνατο να κατασκευαστεί στην ανοικτή θάλασσα +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... αδύνατο να κατασκευαστεί σε κανάλι +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... αδύνατο να κατασκευαστεί σε ποτάμι STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Πρέπει να κατεδαφιστεί το κανάλι πρώτα -STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Δεν μπορεί να κτιστεί κανάλι εδώ... +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί κανάλι εδώ... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... υπάρχει ήδη δέντρο εδώ @@ -4942,32 +5298,32 @@ STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... λά STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Δεν γίνεται να φυτευτεί δέντρο εδώ... # Bridge related errors -STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Δεν μπορεί να κτιστεί γέφυρα εδώ... -STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Πρέπει πρώτα να καταστραφεί η γέφυρα +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί γέφυρα εδώ... +STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Πρέπει να καταστραφεί η γέφυρα πρώτα STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Δεν γίνεται να ξεκινάει και να τελειώνει στο ίδιο σημείο STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Η γέφυρα δεν καταλήγει στο ίδιο επίπεδο STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Η γέφυρα είναι πολύ χαμηλή για το έδαφος STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Η γέφυρα είναι πολύ ψηλή για το έδαφος αυτό. STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Η αρχή και το τέλος πρέπει να είναι σε ευθεία STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... και τα δύο άκρα της γέφυρας πρέπει να είναι σε έδαφος -STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... η γέφυρα είναι πολλή μακρυά +STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... η γέφυρα είναι πολλή μακριά STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Η γέφυρα θα καταλήξει εκτός χάρτη # Tunnel related errors -STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Δεν μπορεί να κτιστεί τούνελ εδώ... -STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Ακατάλληλη τοποθεσία για είσοδο τούνελ -STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Πρέπει πρώτα να καταστραφεί το τούνελ -STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Υπάρχει άλλο τούνελ στη μέση -STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Το τούνελ θα καταλήξει εκτός του χάρτη -STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Αδύνατο να γίνει εκσκαφή γης στην άλλη άκρη του τούνελ -STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... το τούνελ είναι πολύ μακρύ +STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί σήραγγα εδώ... +STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Ακατάλληλη τοποθεσία για είσοδο σήραγγας +STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Πρέπει να καταστραφεί η σήραγγα πρώτα +STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Υπάρχει άλλη σήραγγα στη μέση +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE} Η σήραγγα θα καταλήξει εκτός του χάρτη +STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Αδύνατο να γίνει εκσκαφή γης στην άλλη άκρη της σήραγγας +STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... η σήραγγα είναι πολύ μακριά # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... πάρα πολλά αντικείμενα -STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Δεν μπορεί να κτιστεί το αντικείμενο... +STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Δεν μπορεί να κατασκευαστεί το αντικείμενο... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Αντικείμενο στη μέση -STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... κεντρικά γραφεία εταιρίας στη μέση -STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Αδύνατο να αγοραστεί το έδαφος... +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... έδρα εταιρίας στη μέση +STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Αδύνατο να γίνει αγορά αυτής της περιοχής εδάφους... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... είστε ήδη ιδιοκτήτης! STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}... έχετε φτάσει το όριο οικοδομήσεων @@ -5020,25 +5376,25 @@ STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Δεν STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Δεν μπορεί να σταλθεί το αεροσκάφος στο υπόστεγο... ###length VEHICLE_TYPES -STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Δεν μπορεί να αγοραστεί όχημα σιδηρόδρομου... -STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Δεν μπορεί να αγοραστεί όχημα δρόμου... -STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Δεν μπορεί να αγοραστεί πλοίο... -STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Δεν μπορεί να αγοραστεί αεροσκάφος... +STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Δεν μπορεί να γίνει αγορά οχήματος σιδηροδρόμου... +STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Δεν μπορεί να γίνει αγορά οδικού οχήματος... +STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Δεν μπορεί να γίνει αγορά πλοίου... +STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Δεν μπορεί να γίνει αγορά αεροσκάφους... ###length VEHICLE_TYPES STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος τρένου... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος οχήματος δρόμου... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος οδικού οχήματος... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος πλοίου... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος αεροσκάφους... ###length VEHICLE_TYPES STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Δεν μπορεί να πωληθεί το όχημα σιδηρόδρομου... -STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Δεν μπορεί να πωληθεί το όχημα δρόμου... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Δεν μπορεί να πωληθεί το οδικό όχημα... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Δεν μπορεί να πωληθεί το πλοίο... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Δεν μπορεί να πωληθεί το αεροσκάφος... STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Πάρα πολλά οχήματα στο παιχνίδι -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Δεν μπορεί να αλλάξει το διάστημα της συντήρησης... +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Δεν μπορεί να αλλάξει το διάστημα μεταξύ συντηρήσεων... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... το όχημα καταστράφηκε @@ -5047,7 +5403,12 @@ STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}... όλ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Δεν θα είναι κανένα όχημα διαθέσιμο STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Αλλάξτε τις ρύθμισεις NewGRF σας STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Κανένα όχημα δεν είναι διαθέσιμο ακόμη -STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Ξεκινήστε ένα νέο παιχνίδι αργότερα από {DATE_SHORT} η χρησιμοποιήστε ένα NewGRF το οποίο προσφέρει νωρίτερα οχήματα +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Ξεκινήστε ένα νέο παιχνίδι αργότερα από {DATE_SHORT} η χρησιμοποιήστε ένα NewGRF το οποίο προσφέρει πρώιμα οχήματα + +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Δεν υπάρχουν διαθέσιμοι τύποι δρόμων που μπορούν να κατασκευαστούν από πόλη +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Αλλάξτε τις ρύθμισεις NewGRF σας +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Δεν υπάρχουν διαθέσιμοι τύποι δρόμων που μπορούν να κατασκευαστούν από πόλη ακόμη +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Ξεκινήστε ένα νέο παιχνίδι μετά από την {DATE_SHORT} ή χρησιμοποιήστε ένα NewGRF που παρέχει πρώιμους τύπους δρόμων που μπορούν να κατασκευαστούν από πόλη # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Δεν μπορεί το τρένο να περάσει σήμα με κίνδυνο... @@ -5080,16 +5441,31 @@ STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... πο STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... δεν επαρκεί η εμβέλεια του αεροσκάφους # Extra messages which go on the third line of errors, explaining why orders failed +STR_ERROR_NO_RAIL_STATION :{WHITE}Δεν υπάρχει σταθμός τραίνου +STR_ERROR_NO_BUS_STATION :{WHITE}Δεν υπάρχει σταθμός λεωφορείων +STR_ERROR_NO_TRUCK_STATION :{WHITE}Δεν υπάρχει σταθμός φορτηγών +STR_ERROR_NO_DOCK :{WHITE}Δεν υπάρχει λιμάνι +STR_ERROR_NO_AIRPORT :{WHITE}Δεν υπάρχει αεροδρόμιο/ελικοδρόμιο +STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Δεν υπάρχουν στάσεις με συμβατό τύπο δρόμου +STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Δεν υπάρχουν στάσεις με συμβατό τύπο τραμ +STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Δεν υπάρχουν στάσεις που να είναι κατάλληλες για αρθρωτά οδικά οχήματα.{}Τα αρθρωτά οδικά οχήματα απαιτούν μια στάση-πέρασμα (drive-through) και όχι κλειστή στάση +STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Το αεροπλάνο αυτό δεν μπορεί να προσγειωθεί σε αυτό το ελικοδρόμιο +STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Το ελικόπτερο αυτό δεν μπορεί να προσγειωθεί σε αυτό το αεροδρόμιο +STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Δεν υπάρχει σημείο καθοδήγησης σιδηροδρόμου +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Δεν υπάρχει οδικό σημείο καθοδήγησης +STR_ERROR_NO_BUOY :{WHITE}Δεν υπάρχει σημαδούρα # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Δεν μπορεί να δρομολογηθεί το όχημα... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Τα οχήματα μπορούν να περιμένουν μόνο στους σταθμούς STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Αυτό το όχημα δεν σταματάει σε αυτόν τον σταθμό +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... το χρονοδιάγραμμα δρομολογίων είναι ελλιπές +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... το χρονοδιάγραμμα δρομολογίων δεν έχει ξεκινήσει ακόμα # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... πάρα πολλά σήματα STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Δεν γίνεται να τοποθετηθεί σήμα εδώ... -STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Δεν γίνεται να αλλαχθεί το όνομα της πινακίδας... +STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Δεν μπορεί να αλλάξει το όνομα της πινακίδας... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Δεν μπορεί να διαγραφεί η πινακίδα... # Translatable comment for OpenTTD's desktop shortcut @@ -5103,11 +5479,11 @@ STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Αρχικά γ STR_BASEGRAPHICS_WIN_DESCRIPTION :Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση Windows. STR_BASESOUNDS_DOS_DESCRIPTION :Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση DOS. STR_BASESOUNDS_WIN_DESCRIPTION :Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση Windows. -STR_BASESOUNDS_NONE_DESCRIPTION :Ένα πάκετο ήχων χώρις ήχους. +STR_BASESOUNDS_NONE_DESCRIPTION :Πακέτο ήχων χωρίς ήχους. STR_BASEMUSIC_WIN_DESCRIPTION :Αρχική μουσική από το Transport Tycoon Deluxe έκδοση Windows. STR_BASEMUSIC_DOS_DESCRIPTION :Αρχική μουσική από το Transport Tycoon Deluxe έκδοση DOS. STR_BASEMUSIC_TTO_DESCRIPTION :Αρχική μουσική από το Transport Tycoon (Αρχικός Επεξεργαστής Κόσμου) έκδοση DOS. -STR_BASEMUSIC_NONE_DESCRIPTION :Ένα πάκετο μουσικής χωρίς πραγματική μουσική. +STR_BASEMUSIC_NONE_DESCRIPTION :Πακέτο μουσικής χωρίς πραγματική μουσική. ##id 0x2000 # Town building names @@ -5165,7 +5541,7 @@ STR_INDUSTRY_NAME_PAPER_MILL :{G=m}Μύλος STR_INDUSTRY_NAME_GOLD_MINE :{G=n}Χρυσωρυχείο STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=f}Τράπεζα STR_INDUSTRY_NAME_DIAMOND_MINE :{G=n}Αδαμαντορυχείο -STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=n}Ορυχείο Μεταλλεύματος Σιδήρου +STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=n}Ορυχείο Σιδηρομεταλλεύματος STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=f}Φυτεία Φρούτων STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=f}Φυτεία Λάστιχου STR_INDUSTRY_NAME_WATER_SUPPLY :{G=f}Προμήθεια Νερού @@ -5193,8 +5569,8 @@ STR_SV_EMPTY : STR_SV_UNNAMED :Ανώνυμο STR_SV_TRAIN_NAME :{G=n}Τρένο #{COMMA} STR_SV_TRAIN_NAME.geniki :Τρένου {COMMA} -STR_SV_ROAD_VEHICLE_NAME :{G=n}Όχημα Δρόμου #{COMMA} -STR_SV_ROAD_VEHICLE_NAME.geniki :Οχήματος Δρόμου {COMMA} +STR_SV_ROAD_VEHICLE_NAME :{G=n}Οδικό όχημα #{COMMA} +STR_SV_ROAD_VEHICLE_NAME.geniki :Οδικού οχήματος {COMMA} STR_SV_SHIP_NAME :{G=n}Πλοίο #{COMMA} STR_SV_SHIP_NAME.geniki :Πλοίου {COMMA} STR_SV_AIRCRAFT_NAME :{G=n}Αεροσκάφος #{COMMA} @@ -5208,12 +5584,12 @@ STR_SV_STNAME_EAST :Ανατολι STR_SV_STNAME_WEST :Δυτικό {STRING} STR_SV_STNAME_CENTRAL :Κεντρικό {STRING} STR_SV_STNAME_TRANSFER :Μετεπιβίβαση {STRING} -STR_SV_STNAME_HALT :Όρια {STRING} +STR_SV_STNAME_HALT :Στάση {STRING} STR_SV_STNAME_VALLEY :Κοιλάδα {STRING} STR_SV_STNAME_HEIGHTS :Λόφοι {STRING} -STR_SV_STNAME_WOODS :Δάσος {STRING} +STR_SV_STNAME_WOODS :Άλσος {STRING} STR_SV_STNAME_LAKESIDE :Λίμνη {STRING} -STR_SV_STNAME_EXCHANGE :{STRING} Ανταλλαγής +STR_SV_STNAME_EXCHANGE :{STRING} Μετεπιβίβασης STR_SV_STNAME_AIRPORT :Αεροδρόμιο {STRING} STR_SV_STNAME_OILFIELD :Πετρελαιοπηγές {STRING} STR_SV_STNAME_MINES :Ορυχεία {STRING} @@ -5270,12 +5646,12 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Βαγόνι Μ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Βαγόνι Αγαθών STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Βαγόνι Σιτηρών STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Βαγόνι Ξυλείας -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Βαγόνι Μεταλλεύματος Σιδήρου +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Βαγόνι Σιδηρομεταλλεύματος STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Βαγόνι Χάλυβα STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Θωρακισμένο Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Βαγόνι Τροφίμων STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Βαγόνι Χαρτιού -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Βαγόνι Μεταλλευμάτων Χαλκού +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Βαγόνι Μεταλλεύματος Χαλκού STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Βαγόνι Νερού STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Βαγόνι Φρούτων STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Βαγόνι Λάστιχου @@ -5300,12 +5676,12 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Βαγόνι Μ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Βαγόνι Αγαθών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Φορτηγό Σιτηρών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Βαγόνι Ξυλείας -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Φορτηγό Σιδήρου +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Φορτηγό Σιδηρομεταλλεύματος STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Βαγόνι Χάλυβα STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Θωρακισμένο Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Βαγόνι Τροφίμων STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Βαγόνι Χαρτιού -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Βαγόνι Χαλκού +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Βαγόνι Μεταλλεύματος Χαλκού STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Βαγόνι Νερού STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Βαγόνι Φρούτων STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Βαγόνι Λάστιχου @@ -5332,12 +5708,12 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Βαγόνι Μ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Βαγόνι Αγαθών STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Βαγόνι Σιτηρών STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Βαγόνι Ξυλείας -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Βαγόνι Μεταλλεύματος Σιδήρου +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Βαγόνι Σιδηρομεταλλεύματος STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Βαγόνι Χάλυβα STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Θωρακισμένο Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Βαγόνι Τροφίμων STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Βαγόνι Χαρτιού -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Βαγόνι Χαλκού +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Βαγόνι Μεταλλεύματος Χαλκού STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Βαγόνι Νερού STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Βαγόνι Φρούτων STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Βαγόνι Λάστιχου @@ -5384,9 +5760,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Φορτηγό STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Φορτηγό Ξυλείας Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Φορτηγό Ξυλείας Foster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Φορτηγό Ξυλείας Moreland -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Φορτηγό Μεταλλεύματος Σιδήρου MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Φορτηγό Μεταλλεύματος Σιδήρου Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Φορτηγό Μεταλλεύματος Σιδήρου Chippy +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Φορτηγό Σιδηρομεταλλεύματος MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Φορτηγό Σιδηρομεταλλεύματος Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Φορτηγό Σιδηρομεταλλεύματος Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Φορτηγό Χάλυβα Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Φορτηγό Χάλυβα Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Φορτηγό Χάλυβα Kelling @@ -5399,9 +5775,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Ημιφορτ STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Φορτηγό Χαρτιού Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Φορτηγό Χαρτιού Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Φορτηγό Χαρτιού MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Φορτηγό Χαλκού MPS -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Φορτηγό Χαλκού Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Φορτηγό Χαλκού Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Φορτηγό Μεταλλεύματος Χαλκού MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Φορτηγό Μεταλλεύματος Χαλκού Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Φορτηγό Μεταλλεύματος Χαλκού Goss STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Βυτίο Νερού Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Βυτίο Νερού Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Βυτίο Νερού MPS @@ -5521,8 +5897,8 @@ STR_FORMAT_WAYPOINT_NAME_SERIAL :Σημείο Κ ###length 6 STR_FORMAT_DEPOT_NAME_TRAIN :Αμαξοστάσιο Τρένων {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Αμαξοστάσιο Τρένων {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Αμαξοστάσιο Οχημάτων Δρόμου {TOWN} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Αμαξοστάσιο Οχημάτων Δρόμου {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Αμαξοστάσιο Οδικών Οχημάτων {TOWN} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Αμαξοστάσιο Οδικών Οχημάτων {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :Ναυπηγείο Πλοίων {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Ναυπηγείο Πλοίων {TOWN} #{COMMA} ###next-name-looks-similar @@ -5534,6 +5910,7 @@ STR_UNKNOWN_STATION :άγνωστο STR_DEFAULT_SIGN_NAME :Πινακίδα STR_COMPANY_SOMEONE :κάποιος +STR_SAVEGAME_DURATION_REALTIME :{NUM}ω {NUM}λ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Θεατής, {1:STRING} @@ -5567,18 +5944,28 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}χιλ. +STR_CURRENCY_SHORT_MEGA :{NBSP}εκ. +STR_CURRENCY_SHORT_GIGA :{NBSP}δισ. +STR_CURRENCY_SHORT_TERA :{NBSP}τρισ. + STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} +STR_JUST_DECIMAL :{DECIMAL} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 05fba1514c..c2117d5587 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -396,6 +396,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :עזוב את STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :יציאה + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :אפשרויות המשחק @@ -876,7 +877,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}מטבע STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}בחירת מטבע -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :לירה שטרלינג STR_GAME_OPTIONS_CURRENCY_USD :דולר אמריקאי STR_GAME_OPTIONS_CURRENCY_EUR :יורו @@ -940,9 +941,6 @@ STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x STR_GAME_OPTIONS_GRAPHICS :{BLACK}גרפיקה @@ -965,6 +963,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}מידע + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}שגיאה ביצירת רשימה של רזולוציות אפשריות STR_ERROR_FULLSCREEN_FAILED :{WHITE}נכשל בשינויי למסך מלא @@ -976,6 +975,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK} הקט STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}הגדל את ערך המטבע שלך עבור פאונד (£) אחד STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}קבע את שער החליפין של המטבע שלך עם פאונד (£) אחד + STR_CURRENCY_PREFIX :{LTBLUE}תחילית: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}קבע את המחרוזת התחילית עבור המטבע שלך STR_CURRENCY_SUFFIX :{LTBLUE}סופית: {ORANGE}{STRING} @@ -1322,6 +1322,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :{STRING} :הת ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :כאשר מאופשר, נשלח מבזק חדשות כאשר רכב לא הכניס שום רווח במשך שנה קלנדרית + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :{STRING} :בטל התיישנות כלי רכב STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :כאשר מאופשר, כל סוגי כלי הרכב נשארים זמינים לעד אחרי השקתם @@ -1611,7 +1612,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :ברירת מח STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :קבע את ברירת המחדל למרווח הזמן בין תחזוקות עבור מטוסים חדשים, אם לא נקבע באופן מפורש מרווח זמן עבור כלי הרכב STR_CONFIG_SETTING_SERVINT_SHIPS :ברירת מחדל למרווח הזמן בין תחזוקות עבור אוניות: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :קבע את ברירת המחדל למרווח הזמן בין תחזוקות עבור אוניות חדשות, אם לא נקבע באופן מפורש מרווח זמן עבור כלי הרכב -STR_CONFIG_SETTING_SERVINT_VALUE :{P 0 "יום " ""}{COMMA}{P "" " ימים"}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :מבוטל @@ -1881,17 +1883,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :התפלגות STR_CONFIG_SETTING_AI :מתחרים STR_CONFIG_SETTING_AI_NPC :שחקני מחשב -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :{STRING} :אלגוריתם איתור נתיב עבור רכבות -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :אלגוריתם איתור נתיב עבור רכבות -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :{STRING} :אלגוריתם איתור נתיב עבור רכבי כביש -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :אלגוריתם איתור נתיב עבור רכבי כביש -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :{STRING} :אלגוריתם איתור נתיב עבור כלי שייט -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :אלגוריתם איתור נתיב עבור אוניות STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :החלפת כיוון אוטומטית ברמזורים: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :אפשר לרכבות להחליף כיוון ברמזור, אם הן חיכו שם זמן ממושך -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(מומלץ) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}שנה ערך @@ -2169,7 +2162,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}טוען STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}התנתק STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}שרת מוגן. הזן סיסמה -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}חברה מוגנת. הזן סיסמה # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :רשימת משתתפים @@ -2191,11 +2183,9 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_ISOLATED :{RED}משתתפ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_STUN :{BLACK}מאחורי NAT STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :חסום (באן) -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :שחרר סיסמה STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}האם אתה בטוח שברצונך להוציא את '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}אתה בטוח שברצונך מחק את החברה '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}אתה בטוח שברצונך לאפס את סיסמת החברה '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}השתמש ב"relay"? STR_NETWORK_ASK_RELAY_NO :{BLACK}לא @@ -2204,19 +2194,9 @@ STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}כן, ז STR_NETWORK_SPECTATORS :צופים -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}בטל שמירת הסיסמה החדשה -STR_COMPANY_PASSWORD_OK :{BLACK}שמור את הסיסמה החדשה -STR_COMPANY_PASSWORD_CAPTION :{WHITE}סיסמת החברה -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}ברירת המחדל לסיסמה -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}השתמש בסיסמה זו כברירת מחדל עבור חברות חדשות - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}הצטרף STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}הצטרף ושחק כשותף בחברה -STR_COMPANY_VIEW_PASSWORD :{BLACK}ססמה -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}הגן על חברתך בסיסמה בכדי למנוע הצטרפות משתמשים בלתי-מורשים -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}קבע סיסמה לחברה # Network chat STR_NETWORK_CHAT_SEND :{BLACK}שלח @@ -2257,7 +2237,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}למחש STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}איבוד קשר אפשרי STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}ב- {NUM} שני{P "יה" "ות"} האחרוות לא התקבל מידע מהשרת -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :שגיאה כללית STR_NETWORK_ERROR_CLIENT_DESYNC :שגירת סינכרון STR_NETWORK_ERROR_CLIENT_SAVEGAME :טעינת מפה נכשלה @@ -2460,7 +2440,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}בחר # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}נקודת ציון -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}בחר את סוג נקודות הציון # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}בחירת תחנת רכבת @@ -2473,8 +2452,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}בחר STR_STATION_BUILD_DRAG_DROP :{BLACK}גרירה ושחרור STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}בניית תחנה ע"י גרירה ושחרור -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}בחר את סוג התחנה שיוצג -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}בחר את סוג התחנה לבנייה + + + STR_STATION_CLASS_DFLT :תחנת בחירת מחדל STR_STATION_CLASS_WAYP :נקודות דרך @@ -2608,8 +2588,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}קנה # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}פירט נבחר -STR_OBJECT_BUILD_TOOLTIP :{BLACK}בחר פריט לבנייה. Shift בורר בניה/הצגה של הערכת עלות -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}בחר את סוג הפריט לבנייה STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}צפיה מקדימה של האובייקט STR_OBJECT_BUILD_SIZE :{BLACK}גודל: {GOLD}{NUM} x {NUM} משבצת @@ -2715,7 +2693,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}:בעל STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}בעלי מסילת הרכבת: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{LTBLUE}{STRING}{BLACK} :רשות מקומית STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :אין -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}קואורדינטות: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{LTBLUE}{DATE_LONG}{BLACK} : תאריך בניה STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}{LTBLUE}{STRING}: אופי התחנה STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK} {LTBLUE}{STRING}: סוג התחנה @@ -2981,9 +2958,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% : STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}יצור עולם STR_GENERATION_RIVER_GENERATION :{BLACK}יצירת נהרות -STR_GENERATION_TREE_GENERATION :{BLACK}יצירת עצים -STR_GENERATION_OBJECT_GENERATION :{BLACK}יצירת מבנים בלתי ניידים STR_GENERATION_CLEARING_TILES :{BLACK}יצירת איזורים סלעיים +STR_GENERATION_OBJECT_GENERATION :{BLACK}יצירת מבנים בלתי ניידים +STR_GENERATION_TREE_GENERATION :{BLACK}יצירת עצים STR_GENERATION_SETTINGUP_GAME :{BLACK}קביעת הגדרות המשחק STR_GENERATION_PREPARING_TILELOOP :{BLACK}מריץ לולאה על כל המשבצות STR_GENERATION_PREPARING_SCRIPT :{BLACK}מריץ סקריפט @@ -3069,7 +3046,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :סוג מסיל STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}משתנה NewGRF פרמטר 60+x (הקסה-דצימלי) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}מיישר ספרייט {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}הספרייט הבא STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}עבור לספרייט הבא, כאשר נדלג על כל הספרייטים המיוחדים ולבסוף נחזור לתחילת הרשימה STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}דלג לספרייט @@ -3178,7 +3154,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}עבור STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}הכנס שם סימניה # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}ערים STR_TOWN_DIRECTORY_NONE :{ORANGE}- אין - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (City){BLACK} ({COMMA}) @@ -3465,7 +3440,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}משבצ STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}נמלי תעופה # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}תעשיות STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- אין - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING} @@ -4320,9 +4294,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}{CURRENC STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}!שמירה מתבצעת,{} אנא המתן עד לסיום השמירה STR_ERROR_AUTOSAVE_FAILED :{WHITE}שמירה אוטומטית נכשלה STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}לא ניתן לקרוא מהדיסק -STR_ERROR_GAME_SAVE_FAILED :{WHITE}שמירת המשחק נכשלה{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}לא ניתן למחוק את הקובץ -STR_ERROR_GAME_LOAD_FAILED :{WHITE}טעינת המשחק נכשלה{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :שגיאה פנימית: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :קובץ השמיקה פגום - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :קובץ השמירה נשמר עם גירסא חדישה יותר של המשחק @@ -4690,6 +4662,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}שנה STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}כלי תחבורה עדיין לא זמינים STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}התחל משחק חדש אחרי {DATE_SHORT} או השתמש ב-NewGRF המכיל כלי תחבורה קדומים + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}לא ניתן להכריח את הרכבת לעבור ברמזור בעת סכנה... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}לא ניתן להפוך את כיוון הנסיעה של הרכבת... @@ -5204,6 +5177,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 6da9dbe9fe..89ba4d0b03 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -154,6 +154,7 @@ STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}वस STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :निकास + # Settings menu ###length 16 STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :समायोजन @@ -194,6 +195,8 @@ STR_RAIL_MENU_ELRAIL_CONSTRUCTION :विद्य STR_ABOUT_MENU_LAND_BLOCK_INFO :भूमि क्षेत्र की जानकारी STR_ABOUT_MENU_HELP :सहायता और नियमावली STR_ABOUT_MENU_AI_DEBUG :एआई/गेम स्क्रिप्ट डिबग +STR_ABOUT_MENU_SCREENSHOT :स्क्रीनशॉट +STR_ABOUT_MENU_SHOW_FRAMERATE :फ्रेमदर दिखाएं STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' के बारे में ###length 31 @@ -325,7 +328,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}इस -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_FIM :फिनलैंड मार्का STR_GAME_OPTIONS_CURRENCY_ISK :आइसलैंडिक क्रोना STR_GAME_OPTIONS_CURRENCY_HKD :हाँग काँग डॉलर @@ -359,6 +362,7 @@ STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}इं + # Custom currency window STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}एक पाउंड (£) की तुलना में अपनी मुद्रा का अवमूल्यन करें @@ -366,6 +370,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}एक + STR_NUM_HIGH :उच्च STR_VARIETY_MEDIUM :मध्यम @@ -495,6 +500,7 @@ STR_CONFIG_SETTING_ORDER_REVIEW_OFF :नहीं ###length 2 + ###length 2 @@ -616,6 +622,8 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :कंप्य +###length 3 + ###setting-zero-is-special @@ -706,9 +714,7 @@ STR_CONFIG_SETTING_INTERFACE_GENERAL :सामान STR_CONFIG_SETTING_COMPANY :कंपनी STR_CONFIG_SETTING_VEHICLES_ROUTING :मार्ग -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :नौकाओं द्वारा उपयोग किया जाने वाला पथान्वेषी STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :यदि ट्रेनें लंबे समय तक वहां प्रतीक्षा करती हैं तो उन्हें सिग्नल पर रिवर्स करने की अनुमति दें -###length 2 # Config errors @@ -794,10 +800,7 @@ STR_NETWORK_CLIENT_LIST_SERVER_NAME_QUERY_CAPTION :सर्वर -# Network set password - # Network company info join/password -STR_COMPANY_VIEW_PASSWORD :{BLACK}पासवर्ड # Network chat @@ -808,7 +811,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :गलत प STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}संपर्क विच्छेद संभावित -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :सामान्य त्रुटि STR_NETWORK_ERROR_CLIENT_SAVEGAME :मानचित्र लोड नहीं हो सका @@ -867,6 +870,9 @@ STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}अक # Rail station construction window + + + STR_STATION_CLASS_DFLT :मानक स्टेशन STR_STATION_CLASS_WAYP :पथ-संकेत @@ -1145,7 +1151,6 @@ STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}कं # Company infrastructure window # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}उद्योग STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} @@ -1571,6 +1576,7 @@ STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}रे + # Specific vehicle errors STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}ट्रेन की दिशा उलट नहीं सकते... @@ -1712,6 +1718,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 2a5d8352ab..31d5842b18 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -319,11 +319,15 @@ STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP} STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m # Time units used in string control characters -STR_UNITS_DAYS :{COMMA}{NBSP}nap{P "" s} +STR_UNITS_DAYS :{COMMA}{NBSP}nap +STR_UNITS_SECONDS :{COMMA}{NBSP}másodperc +STR_UNITS_TICKS :{COMMA}{NBSP}tick -STR_UNITS_MONTHS :{NUM}{NBSP}hónap{P "" s} -STR_UNITS_MINUTES :{NUM}{NBSP}perc{P "" s} +STR_UNITS_MONTHS :{NUM}{NBSP}hónap +STR_UNITS_MINUTES :{NUM}{NBSP}perc +STR_UNITS_YEARS :{NUM}{NBSP}év +STR_UNITS_PERIODS :{NUM}{NBSP}időszak # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Szűrő kifejezés: @@ -348,7 +352,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Fogd és STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Kicsi/nagy ablakméret közötti váltás STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Görgetősáv - fel/le görgeti a listát STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Görgetősáv - jobbra/balra görgeti a listát -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Építmények lerombolása egy mezőről. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült költséget +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Építmények lerombolása egy mezőről. Ctrl+kattintás+húzással átlós terület jelölhető ki. Shift+kattintással csak a becsült költséget jeleníti meg # Show engines button ###length VEHICLE_TYPES @@ -367,7 +371,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ezzel a STR_BUTTON_DEFAULT :{BLACK}Alapértelmezett STR_BUTTON_CANCEL :{BLACK}Mégsem STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Figyelem: A szerver adminjai láthatják az itt beírt szöveget. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :0123456789öüóqwertzuiopőúasdfghjkléáűíyxcvbnm,.- . @@ -390,7 +393,9 @@ STR_SORT_BY_TYPE :Típus STR_SORT_BY_TRANSPORTED :Elszállítás STR_SORT_BY_NUMBER :Szám STR_SORT_BY_PROFIT_LAST_YEAR :Tavalyi profit +STR_SORT_BY_PROFIT_LAST_PERIOD :Nyereség az elmúlt időszakban STR_SORT_BY_PROFIT_THIS_YEAR :Idei profit +STR_SORT_BY_PROFIT_THIS_PERIOD :Nyereség ebben az időszakban STR_SORT_BY_AGE :Életkor STR_SORT_BY_RELIABILITY :Megbízhatóság STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Rakomány sz. összkapacitás @@ -418,7 +423,9 @@ STR_SORT_BY_POPULATION :Lakosság STR_SORT_BY_RATING :Értékelés STR_SORT_BY_NUM_VEHICLES :Járművek száma STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Tavalyi összes profit +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Összes nyereség az elmúlt időszakban STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Idei összes profit +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Összes nyereség ebben az időszakban STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Tavalyi átlagos profit STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Átlagos nyereség az elmúlt időszakban STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Idei átlagos profit @@ -438,32 +445,32 @@ STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Játék STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Játék gyorsítása STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Alapbeállítások és beállítások STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Játék mentése vagy játék elhagyása, kilépés -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Térkép, extra látkép, rakományáramlás és feliratok listája -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Településlista mutatása -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Támogatások megjelenítése -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Állomások listája -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Pénzügyi adatok +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Térkép, extra látkép, rakományáramlás és feliratlista megnyitása +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Településlista megnyitása +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Támogatások megnyitása +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Állomáslista megnyitása +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Pénzügyi adatok megnyitása STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Általános adatok -STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Napló -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Célok listája -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vállalati grafikonok és rakományok szállítási díja +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Napló megnyitása +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Céllista megnyitása +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vállalati grafikonok és rakományszállítási díjak megnyitása STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}A vállalatok helyezése -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Gazdasági épületek szemügyre vétele vagy egy új gazdasági épület építése -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vonatok listája. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Közúti járművek listája. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Hajók listája. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Repülőgépek listája. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Közelítés -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Távolítás -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Vasúti pálya építése -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Út építése -STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Villamospálya építése -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Vízi út építése +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Gazdasági épületek listázása, ipari lánc megnyitása, vagy új gazdasági épületek építése +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vonatlista megnyitása. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Közúti járműlista megnyitása. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Hajólista megnyitása. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Repülőgéplista megnyitása. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Nagyítás +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Kicsinyítés +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Vasúti infrastruktúra építése +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Közúti infrastruktúra építése +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Villamos infrastruktúra építése +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Vízi úti infrastruktúra építése STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Repülőtér építése -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Nyisd meg a tájrendező ablakot a talaj emeléséhez vagy süllyesztéséhez, faültetéshez stb. -STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Hang/zene beállításai -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Legutóbbi üzenet/újsághír megmutatása, üzenetelőzmények vagy minden üzenet törlése -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Terület-információ, konzol, képmentések, az OpenTTD-ről és fejlesztői eszközök +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Tájszerkesztő, faültető vagy feliratlétrehozó menü megnyitása +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Hang/zene ablak megnyitása +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Legutóbbi üzenet/újsághír megnyitása, üzenetelőzmények vagy minden üzenet törlése +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Terület-információ, képernyőmentések, OpenTTD névjegy vagy fejlesztői eszközök megnyitása STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Eszköztár váltás # Extra tooltips for the scenario editor toolbar @@ -473,15 +480,15 @@ STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Pályas STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}A kezdődátum hátrébb állítása egy évvel STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}A kezdődátum előrébb állítása egy évvel STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Kattints ide a kezdődátum beírásához -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Térkép, városlista -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Táj szerkesztése -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Település-generálás -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Gazdasági épület-generálás -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Út építése -STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Villamospálya építése -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Faültetés. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült építési költséget. +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Térkép, extra látkép, feliratok listája, városlista és gazdasági épületlista +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Tájszerkesztő megnyitása vagy új világ létrehozása +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Települések építése vagy generálása +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Gazdasági épületek építése vagy generálása +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Közúti infrastruktúra építése +STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Villamos infrastruktúra építése +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Fák ültetése. Ctrl+kattintás+húzással átlós terület jelölhető ki. Shift+kattintással csak a becsült költséget jeleníti meg STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Felirat lerakása -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objektum építése. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült építési költséget. +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objektum építése. Ctrl+kattintás+húzással átlós terület jelölhető ki. Shift+kattintással csak a becsült költséget jeleníti meg # Scenario editor file menu ###length 7 @@ -491,16 +498,17 @@ STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Magasságtérk STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Magasságtérkép betöltése STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Pályaszerkesztő elhagyása STR_SCENEDIT_FILE_MENU_SEPARATOR : -STR_SCENEDIT_FILE_MENU_QUIT :Kilépés +STR_SCENEDIT_FILE_MENU_QUIT :Kilépés az OpenTTD-ből + # Settings menu ###length 16 -STR_SETTINGS_MENU_GAME_OPTIONS :Alapbeállítások +STR_SETTINGS_MENU_GAME_OPTIONS :Játékbeállítások STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Beállítások STR_SETTINGS_MENU_AI_SETTINGS :MI Beállítások STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :Játékszkript beállítások STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF beállítások -STR_SETTINGS_MENU_SANDBOX_OPTIONS :Homokozó mód beállításai +STR_SETTINGS_MENU_SANDBOX_OPTIONS :Homokozó mód beállítások STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Átlátszósági beállítások STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Városnevek mutatása STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Állomásnevek mutatása @@ -515,8 +523,8 @@ STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Átlátszó fel # File menu STR_FILE_MENU_SAVE_GAME :Játék mentése STR_FILE_MENU_LOAD_GAME :Játék betöltése -STR_FILE_MENU_QUIT_GAME :Kilépés a játékból -STR_FILE_MENU_EXIT :Kilépés +STR_FILE_MENU_QUIT_GAME :Kilépés ebből a játékból +STR_FILE_MENU_EXIT :Kilépés az OpenTTD-ből # Map menu STR_MAP_MENU_MAP_OF_WORLD :Világtérkép @@ -720,7 +728,11 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Kölcsö STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Összesen: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}A nyereséget termelő járművek száma a múlt évben. Ide tartoznak a közúti járművek, vonatok, hajók és repülőgépek +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}A nyereséget termelő járművek száma az elmúlt időszakban. Ide tartoznak a közúti járművek, vonatok, hajók és repülőgépek STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Közelmúltban kiszolgált állomásrészek száma. Vasútállomás, buszmegálló, repülőtér külön számolódik, még akkor is, ha egy állomáshoz tartoznak +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}A legalacsonyabb bevétellel rendelkező jármű nyeresége ( csak két évnél régebbi járműveknél) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}A legalacsonyabb bevétellel rendelkező jármű nyeresége (csak a két időszaknál régebbi járműveknél) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Megkeresett pénz a negyedévben a legkisebb profitnál az utolsó 12 negyedévben. STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Megkeresett pénz a negyedévben a legnagyobb profitnál az utolsó 12 negyedévben STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Utolsó négy negyedévben elszállított rakomány @@ -825,7 +837,7 @@ STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Erdő STR_SMALLMAP_LEGENDA_FOREST.t :{TINY_FONT}{BLACK}erdőt STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Vasútállomás -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Teherautó-rakodóhely +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Teherautó-állomás STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Buszmegálló STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Repülőtér/Helikopter-leszálló STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Kikötő @@ -972,8 +984,12 @@ STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}A támogatás határideje lejárt:{}{}{STRING} szállításáért {STRING} és {STRING} között már nem jár támogatás STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Támogatás visszavonva:{}{}{STRING} szállítása {STRING} és {STRING} között már nem támogatott +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Támogatási ajánlat:{}{}Az első {STRING} szállító {STRING} és {STRING} között {UNITS_YEARS_OR_MINUTES} támogatást kap a helyi önkormányzattól! ###length 4 +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{STRING} támogatást kapott!{}{}Így {STRING} szállítása {STRING} és {STRING} között a következő {UNITS_YEARS_OR_MINUTES} másfélszeres hasznot hoz neki! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}{STRING} támogatást kapott!{}{}Így {STRING} szállítása {STRING} és {STRING} kétszeres hasznot hoz neki a következő {UNITS_YEARS_OR_MINUTES}ben! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}{STRING} támogatást kapott!{}{}Így {STRING} szállítása {STRING} és {STRING} között a következő {UNITS_YEARS_OR_MINUTES} háromszoros hasznot hoz neki! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}{STRING} támogatást kapott!{}{}Így {STRING} szállítása {STRING} és {STRING} között a következő {UNITS_YEARS_OR_MINUTES} négyszeres hasznot hoz neki! STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Forgalmi káosz {TOWN}-ban!{}{}A {STRING} által támogatott útfelújítási program 6 hónap keservet okoz a közlekedőknek! STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Forgalmi káosz {TOWN}-ban!{}{}A {STRING} által támogatott útfelújítási program 6 perc keservet okoz a közlekedőknek! @@ -989,31 +1005,28 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Fő néz STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}A látkép pozícióját a fő nézetre másolja # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}Alapbeállítások +STR_GAME_OPTIONS_CAPTION :{WHITE}Játékbeállítások STR_GAME_OPTIONS_TAB_GENERAL :Általános -STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Állítsd be az általános beállításokat +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Általános beállítások módosítása STR_GAME_OPTIONS_TAB_GRAPHICS :Grafika -STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Állítsd be a grafikával kapcsolatos beállításokat +STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Grafikus beállítások módosítása STR_GAME_OPTIONS_TAB_SOUND :Hang effektek -STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Állítsd be a hanggal és zenével kapcsolatos beállításokat +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Hang- és zenebeállítások módosítása +STR_GAME_OPTIONS_TAB_SOCIAL :Közösségi +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Közösségi beállítások módosítása STR_GAME_OPTIONS_VOLUME :Hangerő STR_GAME_OPTIONS_SFX_VOLUME :Hang effektek STR_GAME_OPTIONS_MUSIC_VOLUME :Zene -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Pénznem STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}A használt pénznem kiválasztása STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Angol Font STR_GAME_OPTIONS_CURRENCY_USD :Amerikai Dollár STR_GAME_OPTIONS_CURRENCY_EUR :Euró @@ -1056,6 +1069,7 @@ STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongi Doll STR_GAME_OPTIONS_CURRENCY_INR :Indiai Rúpia STR_GAME_OPTIONS_CURRENCY_IDR :Indonéz rúpia STR_GAME_OPTIONS_CURRENCY_MYR :Maláj ringgit +STR_GAME_OPTIONS_CURRENCY_LVL :Lett Lat STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatikus mentés STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Az automatikus mentések közötti időtartam kiválasztása @@ -1070,7 +1084,7 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :120 percenként STR_GAME_OPTIONS_LANGUAGE :{BLACK}Nyelv STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Válassz nyelvet -STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% teljesítve) +STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% lefordítva) STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Teljes képernyő STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Jelöld be ezt, ha teljes képernyős módban szeretnél játszani az OpenTTD-vel @@ -1090,7 +1104,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Jelöld STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Jelenlegi meghajtó: {STRING} STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Felület mérete -STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Használd a csúszkát a felület méretének beállításához. Ctrl nyomva tartásával további folyamatos állítás +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Használd a csúszkát a felület méretének beállításához. Ctrl+húzás a finom állításhoz STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Méret automatikus felismerése STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Jelöld be ezt, a felület méretének automatikus felismeréséhez @@ -1102,11 +1116,6 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Jelöld STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Betűtípusok simítása STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Jelöld be ezt, ha lesimított betűket akarsz. -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automata felmérés STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Részvétel automata felmérésben @@ -1135,8 +1144,10 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Zenei al STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Használandó zenei alapcsomag kiválasztása STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}További információk a zenei alapcsomagról + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(nincs közösségi média integrációhoz szükséges kiegészítő telepítve) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Platform: STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Kiegészítő állapota: @@ -1161,6 +1172,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Átvált STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Átváltási arány növelése egy Fonthoz (£) képest STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Átváltási arány beállítása egy Fonthoz (£) képest +STR_CURRENCY_SEPARATOR :{LTBLUE}Elválasztó: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Elválaszó beállítása a pénznemedhez + STR_CURRENCY_PREFIX :{LTBLUE}Előtag: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Előtag beállítása a pénznemedhez STR_CURRENCY_SUFFIX :{LTBLUE}Utótag: {ORANGE}{STRING} @@ -1309,16 +1323,16 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Balra STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Középen STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Jobbra -STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}másodperc{P 0 "" ek} +STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}másodperc STR_CONFIG_SETTING_INFINITE_MONEY :Végtelen pénz: {STRING} STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Végtelen költés engedélyezése és vállalatok csődhelyzet-lehetőségének kikapcsolása STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximális kezdeti hitelkeret: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximálisan kölcsönözhető összeg (az inflációtól eltekintve) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximálisan kölcsönözhető összeg (az inflációtól eltekintve). Ha a "Nincs kölcsön" értékre van állítva, akkor nem lesz elérhető pénz, kivéve, ha azt egy játékszkript vagy a "Végtelen pénz" beállítás biztosítja. STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Nincs kölcsön {RED}Kezdőtőkéhez játékszkript szükséges +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Nincs kölcsön STR_CONFIG_SETTING_INTEREST_RATE :Kamatláb: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Banki hitel kamat; inflációt is szabályozza, ha be van kapcsolva @@ -1338,7 +1352,9 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Támogatott kap STR_CONFIG_SETTING_SUBSIDY_DURATION :Támogatások hossza: {STRING} ###length 2 STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Az elnyert támogatások ennyi időn keresztül lesznek érvényesek. +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Itt beállítható a támogatások megadásának gyakorisága +STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR_PERIODS} ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Nincsenek támogatások @@ -1346,7 +1362,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Építkezési k STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Építkezések és beszerzésk költségeinek szintje STR_CONFIG_SETTING_RECESSIONS :Gazdasági válságok: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ha bekapcsolod, gazdasági válság fog kitörni néhány évente. A válság alatt az összes ipar jelentősen kevesebbet termel. (A válság végével a termelés visszaáll az eredeti szintre.) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ha bekapcsolod, időszakonként gazdasági válság fog kitörni. A válság alatt az összes ipar jelentősen kevesebbet termel. (A válság végével a termelés visszaáll az eredeti szintre.) STR_CONFIG_SETTING_TRAIN_REVERSING :Vonatok állomáson történő megfordulásának tiltása: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ha engedélyezve van, a vonatok nem fordulnak vissza egy (nem vég-) állomáson, még ha lenne egy rövidebb út is visszafordulva @@ -1400,7 +1416,7 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Vonatok nem teh STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 fokos kanyarok akkor fordulnak elő, ha egy vízszintes pályaelemet egy függőleges elem követ közvetlenül a következő mezőn, ami által a vonat egy 90 fokos kanyart tesz a szokásos 45 fokos helyett. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Nem közvetlen szomszédos állomások egyesítése: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Állomásrészek hozzáadásának engedélyezése úgy, hogy az nem érinti közvetlenül a meglévő részeket. Ctrl+kattintás szükséges hozzá az új részek elhelyezése közben +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Állomásrészek hozzáadásának engedélyezése úgy, hogy az nem érinti közvetlenül a meglévő részeket. Ez Ctrl+kattintással tehető meg az új részek elhelyezése közben STR_CONFIG_SETTING_INFLATION :Infláció: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Infláció engedélyezése a gazdaságban, ahol a költségek jobban emelkednek, mint a bevételek @@ -1526,13 +1542,15 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :minden járműr STR_CONFIG_SETTING_WARN_INCOME_LESS :Figyelmeztetés veszteséges jármű esetén: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Üzenetek megjelenítése azokról a járművekről, melyek nem termeltek profitot egy naptári év alatt +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Üzenetek megjelenítése azokról a járművekről, melyek nem termeltek profitot egy év alatt +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Üzenetek megjelenítése azokról a járművekről, melyek nem termeltek profitot egy időszakon belül + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Járművek sosem avulnak el: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Bekapcsolva minden járműmodell örökké elérhető marad bevezetése után STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Időszámítás: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Válaszd ki a játék időszámítási egységeit. Ez később nem módosítható.{}{}A naptár alapú a klasszikus OpenTTD-élmény, ahol egy év 12 hónapból, és minden hónap 28-31 napból áll.{}{}A faliórás időszámításban a járművek mozgása, a rakománytermelés és a pénzügyek ehelyett egyperces lépéseken alapulnak, ami nagyjából annyi idő, mint amennyi egy 30 napos hónap tart a naptár alapú módban. Ezek 12 perces időszakokba vannak csoportosítva, ami egy évnek felel meg a naptáralapú időben.{}{}Mindkét módban mindig van egy klasszikus naptár, amelyet a járművek, házak és egyéb infrastruktúra bevezetési dátumaihoz használnak. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Válaszd ki a játék időszámítási egységeit. Ez később nem módosítható.{}{}A naptár alapú a klasszikus OpenTTD-élmény, ahol egy év 12 hónapból, és minden hónap 28-31 napból áll.{}{}A faliórás időszámításban a rakománytermelés és a pénzügyek ehelyett egyperces lépéseken alapulnak, ami nagyjából annyi idő, mint amennyi egy 30 napos hónap tart a naptár alapú módban. Ezek 12 perces időszakokba vannak csoportosítva, ami egy évnek felel meg a naptáralapú időben.{}{}Mindkét módban mindig van egy klasszikus naptár, amelyet a járművek, házak és egyéb infrastruktúra bevezetési dátumaihoz használnak. ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Naptár STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Falióra @@ -1546,6 +1564,8 @@ STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (calendar tim STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Települések rakománytermelésének mértéke: {STRING} STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :A települések rakománytermelésének mértéke százalékban. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Gazdasági épületek rakománytermelésének mértéke: {STRING} +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :A gazdasági épületek rakománytermelésének mértéke százalékban. STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatikusan felújítja a járművet ha elöregedik: {STRING} @@ -1590,7 +1610,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Eredeti STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TERRAIN_TYPE :Tereptípus: {STRING} -STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :A térkép domborzata +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :A dombok és hegyek magasságának beállítása STR_CONFIG_SETTING_INDUSTRY_DENSITY :Gazdasági épületek száma: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Mennyi gazdasági épület legyen, és mennyire legyenek fenntartva a játék folyamán @@ -1599,18 +1619,18 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Olajfinomítók STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Megadhatod, hogy a térkép szélétől milyen messze épülhetnek olajfinomítók és olajfúró tornyok. Sziget jellegű térképek esetén így a part közelében fognak épülni. 256 mezőnél szélesebb, ill. hosszabb térképek esetén ez az érték felszorzódik. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Hóhatár magassága: {STRING} -STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Ezzel a beállítással szabályozhatod a szub-arktikus táj hóhatárát. A hó befolyással lehet a gazdasági épületek generálására és a települések növekedésére. Csak a pályaszerkesztőben lehet állítani, más esetben a havas terület százalékos kiterjedéséből kerül kiszámításra. +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Ez a beállítás szabályozza szub-arktikus táj hóhatárát. A hó befolyással lehet a gazdasági épületek generálására és a települések növekedésére. Csak a pályaszerkesztőben lehet állítani, más esetben a havas terület százalékos kiterjedéséből kerül kiszámításra. STR_CONFIG_SETTING_SNOW_COVERAGE :Havas terület kiterjedése: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Beállíthatod, hogy a szub-arktikus tájon a térkép mekkora részét fedje hó. A hó befolyással van a gazdasági épületek elhelyezésére és a települések növekedésére. A beállítás csak a térképgenerátort érinti. A tengerszint feletti legelső szintet sosem fedheti hó. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Beállíthatod, hogy a szub-arktikus tájon a térkép mekkora részét fedje hó. A hó befolyással van a gazdasági épületek elhelyezésére és a települések növekedésére. A beállítás csak a térképgenerátort érinti. A tengerszintet és a partokat szintet sosem fedheti hó. STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Sivatag kiterjedése: {STRING} -STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Beállíthatod, hogy a szubtrópusi tájon a térkép mekkora részét fedje sivatag. A sivatag hatással van a gazdasági épületek elhelyezésére és a települések növekedésére. A beállítás csak a térképgenerátort érinti. +STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Beállíthatod, hogy a szubtrópusi tájon a térkép mekkora részét fedje sivatag. A sivatag hatással van a gazdasági épületek és a települések elhelyezésére és a települések növekedésére. A beállítás csak a térképgenerátort érinti. STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :A terep durvasága: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(csak TerraGenesis esetén) Kiválaszthatod a hegyek mennyiségét: a sima térképeken kevesebb, de kiterjedtebb hegy van, míg a durva térképeken sok hegy van, amik kissé ismétlődőnek tűnhetnek. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :A dombok mennyiségének beállítása. A sima térképeken kevesebb, de nagyobb dombok vannak, míg a durva térképeken sok kisebb domb van, amik kissé ismétlődőnek tűnhetnek. ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Nagyon sima STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Sima @@ -1618,7 +1638,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Durva STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Nagyon durva STR_CONFIG_SETTING_VARIETY :Változatosság eloszlása: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :(csak TerraGenesis esetén) Bekapcsolása esetén a térképen lesznek hegyvidékes és sík területek is. Mivel ettől a térkép csak simább lesz, ezért javasolt a 'Hegyes' beállítás használata a tereptípushoz. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Bekapcsolása esetén a térképen lesznek hegyvidékes és sík területek is. Nagyobb változatosság esetén nagyobb lesz a magasságkülönbség a sík és hegyvidékes területek között. STR_CONFIG_SETTING_RIVER_AMOUNT :A folyók mennyisége: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Mennyi folyó legyen a térképen @@ -1867,7 +1887,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Alapértelmezet STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Alapértelmezett javítási intervallum beállítása új repülőgépeknek, ha nincs külön javítási intervallum beállítva a járműre STR_CONFIG_SETTING_SERVINT_SHIPS :Alapértelmezett javítási intervallum hajóknak: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Alapértelmezett javítási intervallum beállítása új hajóknak, ha nincs külön javítási intervallum beállítva a járműre -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}nap/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :kikapcsolva @@ -2152,29 +2173,23 @@ STR_CONFIG_SETTING_ACCOUNTING :Pénzügyek STR_CONFIG_SETTING_VEHICLES :Járművek STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizika STR_CONFIG_SETTING_VEHICLES_ROUTING :Útvonalkeresés +STR_CONFIG_SETTING_VEHICLES_ORDERS :Utasítások STR_CONFIG_SETTING_LIMITATIONS :Korlátozások STR_CONFIG_SETTING_ACCIDENTS :Katasztrófák / Balesetek STR_CONFIG_SETTING_GENWORLD :Térképgenerálás STR_CONFIG_SETTING_ENVIRONMENT :Környezet +STR_CONFIG_SETTING_ENVIRONMENT_TIME :Idő STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Önkormányzatok STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Települések STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Gazdasági épületek STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Rakományok szétosztása (úticélok) +STR_CONFIG_SETTING_ENVIRONMENT_TREES :Fák STR_CONFIG_SETTING_AI :Ellenfelek STR_CONFIG_SETTING_AI_NPC :Számítógép által vezérelt ellenfelek STR_CONFIG_SETTING_NETWORK :Hálózat -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Útvonalkereső vonatokhoz: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :A vonatokhoz használt útvonalkereső -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Útvonalkereső közúti járművekhez: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :A közúti járművekhez használt útvonalkereső -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Útvonalkereső hajókhoz: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :A hajókhoz használt útvonalkereső STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatikus megfordulás jelzőknél: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :A vonatok automatikus megfordításának engedélyezése, ha azok túl hosszú ideje várakoznak egy jelző előtt -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Ajánlott) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Válassz beállítási értéket @@ -2235,14 +2250,14 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Szubarkt STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Szubtrópusi táj kiválasztása STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Játékvilág táj kiválasztása -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}A játék alapvető beállításainak (pl. nyelv, grafikus alapcsomag, stb.) megjelenítése -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rekord tábla megjelenítése +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}A játékbeállítások megnyitása +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rekord tábla megnyitása STR_INTRO_TOOLTIP_HELP :{BLACK}Férj hozzá a dokumentációhoz és az online tartalmakhoz -STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}A beállítások megjelenítése -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF beállítások megjelenítése +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}A beállítások megnyitása +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF beállítások megnyitása STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Új és frissített tartalmak megtekintése és letöltése -STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}MI beállítások megjelenítése -STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Játékszkript beállítások megjelenítése +STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}MI beállítások megnyitása +STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Játékszkript beállítások megnyitása STR_INTRO_TOOLTIP_QUIT :{BLACK}Kilépés az OpenTTD-ből STR_INTRO_BASESET :{BLACK}A jelenleg kiválasztott grafikus alapcsomagból {NUM} sprite hiányzik. Frissítsd a grafikus alapcsomagot! @@ -2250,12 +2265,12 @@ STR_INTRO_TRANSLATION :{BLACK}Ebből a # Quit window STR_QUIT_CAPTION :{WHITE}Kilépés -STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Biztosan bezárod ezt a programot? +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Biztosan bezárod az OpenTTD-t? STR_QUIT_YES :{BLACK}Igen STR_QUIT_NO :{BLACK}Nem # Abandon game -STR_ABANDON_GAME_CAPTION :{WHITE}Kilépés a játékból +STR_ABANDON_GAME_CAPTION :{WHITE}Kilépés ebből a játékból STR_ABANDON_GAME_QUERY :{YELLOW}Biztosan kilépsz ebből a játékból? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Biztosan abba akarod hagyni a pálya szerkesztését? @@ -2273,7 +2288,7 @@ STR_HELP_WINDOW_BUGTRACKER :{BLACK}Hiba jel STR_HELP_WINDOW_COMMUNITY :{BLACK}Közösség # Cheat window -STR_CHEATS :{WHITE}Csalások +STR_CHEATS :{WHITE}Homokozó mód beállítások STR_CHEAT_MONEY :{LTBLUE}Tőkeemelés {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Irányított vállalat: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Csodabuldózer (lerombol gazdasági épületeket, mozgathatatlan objektumokat): {ORANGE}{STRING} @@ -2294,13 +2309,17 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Vonat sz STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Közúti jármű színsémák mutatása STR_LIVERY_SHIP_TOOLTIP :{BLACK}Hajó színsémák mutatása STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Repülőgép színsémák mutatása +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Vonatcsoportok színeinek megjelenítése STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Közúti járművek csoportjainak színeinek megjelenítése STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Hajócsoportok színeinek megjelenítése -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Válassz egy elsődleges színt a kiválasztott sémához. Ctrl+kattintással az összes sémához ezt a színt állíthatod be -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Válassz egy másodlagos színt a kiválasztott sémához. Ctrl+kattintással az összes sémához ezt a színt állíthatod be +STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Repülőgépcsoportok színeinek megjelenítése +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Válassz egy elsődleges színt a kiválasztott sémához. Ctrl+kattintással beállítható ez a szín az összes színsémához +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Válassz egy másodlagos színt a kiválasztott sémához. Ctrl+kattintással beállítható ez a szín az összes színsémához STR_LIVERY_PANEL_TOOLTIP :{BLACK}Válassz megváltoztatandó színsémát, vagy színsémákat Ctrl+kattintással. Kattints a dobozra a színséma használat váltásához. +STR_LIVERY_TRAIN_GROUP_EMPTY :Nincsenek vonatcsoportok létrehozva STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :Nincs közúti járművek csoportja beállítva STR_LIVERY_SHIP_GROUP_EMPTY :Nincs hajócsoport beállítva +STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Nincs repülőgépcsoport beállítva ###length 23 STR_LIVERY_DEFAULT :Alapértelmezett @@ -2406,6 +2425,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Térkép STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}A játék térképének mérete{}Kattints ide a rendezéshez STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dátum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Az aktuális dátum +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM} óra {NUM} perc +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Játékidő +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Játékidő{}amíg a játék nem volt szünetben STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Nyelv, szerver verzió stb. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Kattintással a listában szereplő játék kiválasztása @@ -2421,6 +2443,7 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}A szerv STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Meghívókód: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Kezdési dátum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Jelenlegi dátum: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Játékidő: {WHITE}{NUM} óra {NUM} perc STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Játékszkript: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Jelszóval védve! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SZERVER OFFLINE @@ -2454,7 +2477,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}A játé STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Jelszó beállítása STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Védd le a játékodat jelszóval, ha nem akarod hogy illetéktelenek csatlakozzanak -STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Láthatóság +STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Láthatóság: STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Mások láthassák-e a szerveredet a publikus listában STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} kliens STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Játékosok max. száma: @@ -2485,7 +2508,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Vállala STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Megszakít STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}A szerver jelszóval van védve. Írd be -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A vállalat jelszóval van védve. Írd be # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Online játékosok @@ -2534,13 +2556,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Közvet STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Kirúgás STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Tiltás STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Törlés -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Jelszó feloldása STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Adminisztrátori művelet STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Biztos ki akarod rúgni ezt a játékost: '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Biztos ki akarod tiltani ezt a játékost: '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Biztos ki akarod törölni a '{COMPANY}' vállalatot? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Biztos vissza akarod állítani a '{COMPANY}' vállalat jelszavát? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Közvetítő használata STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Nem sikerült csatalkozni a '{STRING}' szerverhez.{}Szeretnél igénybe venni közvetítő szolgáltatást a következőn keresztül? '{STRING}' @@ -2549,7 +2569,7 @@ STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Igen, mo STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Igen, ne kérdezd újra STR_NETWORK_ASK_SURVEY_CAPTION :Részvétel automata felmérésben? -STR_NETWORK_ASK_SURVEY_TEXT :Szeretnél részt venni az automata felmérésben?{}Az OpenTTD a játékból kilépéskor egy felmérést fog továbbítani.{}Ezt a beállítást bármikor megváltoztathatod a "Játék beállítások" menüpontban. +STR_NETWORK_ASK_SURVEY_TEXT :Szeretnél részt venni az automata felmérésben?{}Az OpenTTD a játékból kilépéskor egy felmérést fog továbbítani.{}Ezt a beállítást bármikor megváltoztathatod a "Játékbeállítások" menüpontban. STR_NETWORK_ASK_SURVEY_PREVIEW :Felmérés eredményének előnézete STR_NETWORK_ASK_SURVEY_LINK :Felmérésről és titoktartásról STR_NETWORK_ASK_SURVEY_NO :Nem @@ -2557,19 +2577,9 @@ STR_NETWORK_ASK_SURVEY_YES :Igen STR_NETWORK_SPECTATORS :Megfigyelők -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne mentsd el a megadott jelszót -STR_COMPANY_PASSWORD_OK :{BLACK}Add meg az új vállalati jelszót -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Vállalati jelszó -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Alapértelmezett vállalati jelszó -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Ez a jelszó legyen az alapértelmezett jelszó az új vállalatoknál - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Csatlakozás STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Csatlakozz és vezesd a vállalatot -STR_COMPANY_VIEW_PASSWORD :{BLACK}Jelszó -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Védd le a vállalatodat jelszóval ha nem akarod hogy mások csatlakozzanak hozzá -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Vállalati jelszó beállítása # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Elküld @@ -2613,7 +2623,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}A játé STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Lehetséges, hogy elveszett a kapcsolat STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Az elmúlt {NUM} másodpercben nem érkezett adat a szervertől -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :általános hiba STR_NETWORK_ERROR_CLIENT_DESYNC :szinkronizálási hiba STR_NETWORK_ERROR_CLIENT_SAVEGAME :térkép betöltési hiba @@ -2776,7 +2786,10 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}túlterhelt # Linkgraph tooltip +STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}{CARGO_LONG} havi szállításáért {STATION} és {STATION} között ({COMMA}% elszállítva){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG} percenkénti szállításáért {STATION} és {STATION} között ({COMMA}% elszállítva){STRING} STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} visszaszállításra ({COMMA}% elszállítva) +STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Átlagos utazási idő: {UNITS_DAYS_OR_SECONDS} # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Lefedett terület mutatása: @@ -2786,6 +2799,8 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Az állo STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Az állomással lefedett terület mutatása (vonzáskörzet) STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Elfogad:{GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Termel: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Üzemeltetés: {GOLD}{CURRENCY_SHORT}/év +STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Üzemeltetés: {GOLD}{CURRENCY_SHORT}/időszak # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Állomás egyesítése @@ -2803,16 +2818,16 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Villamosított STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Egysínű vasút építése STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev vasút építése -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Pályafektetés. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési/bontási költséget -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Vasúti pálya építése egyszerűsített módon. A Ctrl billentyű segítségével lehet váltani az építés/rombolás között. Shift lenyomásával megmutatja a becsült építési/eltávolítási költséget -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Vasúti járműtelep építése (vonatok vételére és karbantartására). Shift lenyomásával becsült építési költséget mutat -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Ellenőrző pont építése vágányra. A Ctrl lenyomásával az ellenőrző pontok egyesíthetőek. Shift lenyomásával megmutatja a becsült építési költséget -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Vasútállomás építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Vasúti jelzők építése. Ctrl gombbal váltás az alak- és fényjelzők között{}Húzással a sínek mentén végig jelzők épülnek. Húzva Ctrl gombbal a következő pályakiágazásig vagy jelzőig épít jelzőket{}Ctrl+kattintással válthatod a megnyitandó jelzőépítés-kezelő ablakot. Shift lenyomásával megmutatja a becsült építési költséget -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Vasúti híd építése. Shift lenyomásával megmutatja a becsült építési költséget -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Vasúti alagút építése. Shift lenyomásával megmutatja a becsült építési költséget -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Váltás építés/feleszedés között vasúti pályák, jelzők, ellenőrző pontok és vasútállomások esetében. Ctrl nyomvatartásával az ellenőrző pontokon és állomásokon a vasúti pályát is eltávolítja -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Sínek átalakítása a kiválasztott típusra. Shift lenyomásával megmutatja a becsült építési költséget +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Pályafektetés. Ctrl+kattintással válthatsz építés és rombolás között. Shift+kattintással csak a becsült költséget jeleníti meg +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Vasúti pálya építése egyszerűsített módon. A Ctrl billentyű segítségével lehet váltani az építés/rombolás között. Shift+kattintással csak a becsült költséget jeleníti meg +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Vasúti járműtelep építése (vonatok vételére és karbantartására). Shift+kattintással csak a becsült költséget jeleníti meg +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Ellenőrző pont építése vágányra. Ctrl+kattintással egyesíthető más ellenőrző pontokkal. Shift+kattintással csak a becsült költséget jeleníti meg +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Vasútállomás építése. Ctrl+kattintással egyesíthető más állomásokkal. Shift+kattintással csak a becsült költséget jeleníti meg +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Vasúti jelzők építése. Ctrl+kattintással váltás az alak- és fényjelzők között{}Kattintás+húzással a sínek mentén végig jelzők épülnek. Ctrl+kattintás+húzással a következő pályakiágazásig vagy jelzőig épít jelzőket. Shift+kattintással csak a becsült költséget jeleníti meg +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Vasúti híd építése. Shift+kattintással csak a becsült költséget jeleníti meg +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Vasúti alagút építése. Shift+kattintással csak a becsült költséget jeleníti meg +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Váltás építés/feleszedés között vasúti pályák, jelzők, ellenőrző pontok és vasútállomások esetében. Ctrl+kattintással az ellenőrző pontokon és állomásokon a vasúti pályát is eltávolítja +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Sínek átalakítása a kiválasztott típusra. Shift+kattintással csak a becsült költséget jeleníti meg STR_RAIL_NAME_RAILROAD :Vasút STR_RAIL_NAME_ELRAIL :Villamosított vasút @@ -2825,7 +2840,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Járműt # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Ellenőrző pont -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Válassz ellenőrző pont típust # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Vasútállomás kiválasztása @@ -2838,8 +2852,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}A vasút STR_STATION_BUILD_DRAG_DROP :{BLACK}Fogd és dobd STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Állomás építése fogd és dobd módon -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Válassz egy megjelenítendő állomásfajtát -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Megépítendő állomástípus kiválasztása + + + STR_STATION_CLASS_DFLT :Alapértelmezett STR_STATION_CLASS_DFLT_STATION :Alapértelmezett állomás @@ -2862,7 +2877,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Kijárat STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinált jelző (fény){}A kombinált jelző voltaképpen egy kijárati- és egy bejárati jelző egybeépítve. Segítségével komoly váltókörzetek építhetőek bejárati jelzőkből STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Irányjelző (fény){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az irányjelzők mellett hátulról is el lehet haladni STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Egyirányú irányjelző (fény){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az egyirányú jelzők mellett nem lehet hátulról elhaladni -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Jelző átalakítás{}Amikor ki van jelölve, egy meglévő jelzőre való kattintással átkonvertálja a kiválasztott jelzőtípusra és -variációra, CTRL+kattintás a variációt fogja változtatni. Shift+kattintással megmutatja a becsült átalakítási költséget +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Jelző átalakítás{}Amikor ki van jelölve, egy meglévő jelzőre való kattintással átalakítja a kiválasztott jelzőtípusra és -változatra, Ctrl+kattintás a változatok között fog váltani. Shift+kattintással megmutatja a becsült átalakítási költséget STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Automata jelzőtelepítés esetén a jelzők távolsága STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Automata jelzőtelepítés esetén a jelzők távolságának csökkentése STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Automata jelzőtelepítés esetén a jelzők távolságának növelése @@ -2888,25 +2903,25 @@ STR_BRIDGE_TUBULAR_SILICON :Cső, Szilikon # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Út építése STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Villamospálya építése -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Út építése. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési/bontási költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Villamospálya építése. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési/bontási költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Közút építése egyszerűsített módon. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Villamospálya építése egyszerűsített módon. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Garázs építése (járművek vételére és karbantartására). Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Villamos remíz építése (járművek megépítésére és javítására). Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Buszmegálló építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Villamos-utasváró építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Teherautó-rakodóhely építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Tehervillamos-állomás építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Út építése. Ctrl+kattintás az út lerombolásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Villamospálya építése. Ctrl+kattintás a pálya lerombolásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Közút építése egyszerűsített módon. Ctrl+kattintás az út lerombolásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Villamospálya építése egyszerűsített módon. Ctrl+kattintás a pálya lerombolásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Garázs építése (járművek vételére és karbantartására). Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Villamos remíz építése (járművek megépítésére és javítására). Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Buszmegálló építése. Ctrl+kattintással egyesíthető más állomásokkal. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Villamosmegálló építése. Ctrl+kattintással egyesíthető más állomásokkal. SShift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Teherautó-állomás építése. Ctrl+kattintással egyesíthető más állomásokkal. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Tehervillamos-állomás építése. Ctrl+kattintással egyesíthető más állomásokkal. Shift+kattintással csak a becsült költséget jeleníti meg STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Egyirányú utak be/kikapcsolása -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Közúti híd építése. Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Villamos-híd építése. Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Közúti alagút építése. Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Villamos-alagút építése. Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Közúti híd építése. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Villamos-híd építése. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Közúti alagút építése. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Villamos-alagút építése. Shift+kattintással csak a becsült költséget jeleníti meg STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Építés és felszedés közötti váltás utaknál STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Építés és bontás közötti váltás villamospályáknál -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Út átalakítása a kiválasztott típusra. Shift lenyomásával megmutatja a becsült építési költséget -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Villamospálya átalakítása a kiválasztott típusra. Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Út átalakítása a kiválasztott típusra. Shift+kattintással csak a becsült költséget jeleníti meg +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Villamospálya átalakítása a kiválasztott típusra. Shift+kattintással csak a becsült költséget jeleníti meg STR_ROAD_NAME_ROAD :Út STR_ROAD_NAME_TRAM :Villamospálya @@ -2921,23 +2936,23 @@ STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Remíz h STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Buszmegálló helyzete STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Buszmegálló helyzetének kiválasztása STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Rakodóhely helyzete -STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Teherautó-rakodó helyzetének kiválasztása -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Villamos-utasváró helyzete -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Villamos-utasváró helyzetének kiválasztása +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Teherautó-állomás helyzetének kiválasztása +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Villamosmegálló helyzete +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Villamosmegálló helyzetének kiválasztása STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Tehervillamos-állomás helyzete STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Tehervillamos-állomás helyzetének kiválasztása # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Vízi utak építése STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Vízi utak -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Csatorna építése. Shift lenyomásával megmutatja a becsült építési költséget -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Zsilip építése. Shift lenyomásával megmutatja a várható építési költséget -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Dokk építése (hajók vételére és karbantartására). Shift lenyomásával megmutatja a becsült építési költséget -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Kikötő építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Bója lerakása, amit a hajók útirányjelző pontként használhatnak. Shift lenyomásával megmutatja a becsült építési költséget -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Csatornahíd építése. Shift lenyomásával megmutatja a várható építési költséget -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Vizi terület definiálása.{}Csatornát készít, kivéve ha tengerszinten Ctrl gombot lenyomva használod, ekkor elárasztja a területet -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Folyók elhelyezése +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Csatorna építése. Shift+kattintással csak a becsült költséget jeleníti meg +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Zsilip építése. Shift+kattintással csak a becsült költséget jeleníti meg +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Dokk építése (hajók vételére és karbantartására). Shift+kattintással csak a becsült költséget jeleníti meg +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Kikötő építése. Ctrl+kattintással egyesíthető más állomásokkal. Shift+kattintással csak a becsült költséget jeleníti meg +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Bója lerakása, amit a hajók útirányjelző pontként használhatnak. Shift+kattintással csak a becsült költséget jeleníti meg +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Csatornahíd építése. Shift+kattintással csak a becsült költséget jeleníti meg +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Csatorna építése. Ctrl+kattintással elárasztja a területet tengervízzel a tengerszinten +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Folyók elhelyezése. Ctrl+kattintással átlós terület jelölhető ki # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Dokk helyzete @@ -2948,7 +2963,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Kikötő # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Repülőterek -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Repülőtér építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Repülőtér építése. Ctrl+kattintással egyesíthető más állomásokkal. Shift+kattintással csak a becsült költséget jeleníti meg # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Repülőtér beállítása @@ -2975,15 +2990,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Zajterme # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Tájrendezés -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Egy pont lesüllyesztése. Húzással az első kiválasztott sarkot lesüllyeszti, majd a kiválasztott területet vele egy szintbe hozza. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a terepsüllyesztés várható építési költségét -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Egy sarokpont megemelése. Húzással az első kiválasztott sarkot megemeli, majd a kiválasztott területet vele egy szintbe hozza. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a terepemelés várható építési költségét -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Talaj a kijelölt sarokpont szintjére hozása. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja az átalakítás várható költségét -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Földterület megvétele későbbi használatra. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a várható költséget +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Egy pont lesüllyesztése. Húzással az első kiválasztott sarkot lesüllyeszti, majd a kiválasztott területet vele egy szintbe hozza. Ctrl+kattintás+húzással átlós terület jelölhető ki. Shift+kattintással csak a becsült költséget jeleníti meg +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Egy sarokpont megemelése. Húzással az első kiválasztott sarkot megemeli, majd a kiválasztott területet vele egy szintbe hozza. Ctrl+kattintás+húzással átlós terület jelölhető ki. Shift+kattintással csak a becsült költséget jeleníti meg +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Talaj a kijelölt sarokpont szintjére hozása. Ctrl+kattintás+húzással átlós terület jelölhető ki. Shift+kattintással csak a becsült költséget jeleníti meg +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Földterület megvétele későbbi használatra. Ctrl+kattintás+húzással átlós terület jelölhető ki. Shift+kattintással csak a becsült költséget jeleníti meg # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektum kiválasztása -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Építendő objektum kiválasztása. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült költséget -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Építendő objektum típusának kiválasztása STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objektum előnézete STR_OBJECT_BUILD_SIZE :{BLACK}Méret: {GOLD}{NUM} x {NUM} mező @@ -2994,7 +3007,7 @@ STR_OBJECT_CLASS_TRNS :Adótornyok STR_PLANT_TREE_CAPTION :{WHITE}Fák STR_PLANT_TREE_TOOLTIP :{BLACK}Ültetendő fa kiválasztása. Ha már van fa a mezőn, akkor újabb fák ültetése a kiválasztott fatípustól függetlenül STR_TREES_RANDOM_TYPE :{BLACK}Véletlenszerű fafélék -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Véletlenszerűen kiválasztott fákat helyez el. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült építési költséget. +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Véletlenszerűen kiválasztott fákat helyez el. Ctrl+kattintás+húzással átlós terület jelölhető ki. Shift+kattintással csak a becsült költséget jeleníti meg STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Véletlenszerű fák STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Véletlenszerűen fákat ültet a térképre STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normál @@ -3007,7 +3020,7 @@ STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}A tájon # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Táj szerkesztése STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Sziklás területek elhelyezése a térképen -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Sivatagot hoz létre.{}Nyomj Ctrl-t az eltávolításához +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Sivatag létrehozása.{}Ctrl+kattintás a sivatag eltávolításához STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Az emelendő/süllyesztendő földterület növelése STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Az emelendő/süllyesztendő földterület csökkentése STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Véletlenszerű táj készítése @@ -3021,7 +3034,7 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Biztos v # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Városkészítés STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Új település -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Új település építése. Shift+kattintással megmutatja a becsült költséget +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Új település építése. Shift+kattintással csak a becsült költséget jeleníti meg STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Egy véletlen település STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Település építése véletlenszerű helyre STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Sok véletlen település @@ -3087,7 +3100,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Válaszd # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Terület-információ -STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}A főnézetet a csempére állítja. Ctrl+Klikk megnyit egy új főnézetet a csempén. +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}A fő nézetet a csempére állítja. Ctrl+kattintás esetén új látképet nyit a csempe pozíciójára STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}{LTBLUE}Nem lehet lerombolni STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}A megtisztítás költsége: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Bevétel lerombolás esetén: {LTBLUE}{CURRENCY_LONG} @@ -3098,8 +3111,9 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}A villam STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}A vasúti pálya tulajdonosa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Helyi önkormányzat: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nincs -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordináták: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Épült: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordináták: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Mező index: {LTBLUE}{NUM} ({HEX}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Épült/felújítva: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Állomás osztálya: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Állomás típusa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Repülőtér osztály: {LTBLUE}{STRING} @@ -3165,7 +3179,7 @@ STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusz STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Vasútállomás STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Repülőtéri hangár STR_LAI_STATION_DESCRIPTION_AIRPORT :Repülőtér -STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Teherautó-rakodóhely +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Teherautó-állomás STR_LAI_STATION_DESCRIPTION_BUS_STATION :Buszmegálló STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Kikötő STR_LAI_STATION_DESCRIPTION_BUOY :Bója @@ -3327,17 +3341,18 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}A sivata STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tereptípus: STR_MAPGEN_SEA_LEVEL :{BLACK}Tengerszint: +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Tengerszint kiválasztása STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Folyók: STR_MAPGEN_SMOOTHNESS :{BLACK}Simaság: STR_MAPGEN_VARIETY :{BLACK}Változatosság eloszlása: STR_MAPGEN_GENERATE :{WHITE}Generál STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Készíts egy világot és játssz OpenTTD-t! STR_MAPGEN_NEWGRF_SETTINGS :NewGRF Beállítások -STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}NewGRF beállítások megjelenítése +STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}NewGRF beállítások megnyitása STR_MAPGEN_AI_SETTINGS :{BLACK}MI Beállítások -STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}MI beállítások megjelenítése +STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}MI beállítások megnyitása STR_MAPGEN_GS_SETTINGS :{BLACK}Játékszkript Beállítások -STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Játékszkript beállítások megjelenítése +STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Játékszkript beállítások megnyitása ###length 21 STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Angol (Eredeti) @@ -3394,6 +3409,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Lapos te STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Egy lapos terepet generál STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Véletlen térkép STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Lapos terep magassága: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}A szárazföld tengerszint feletti magasságának kiválasztása STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Lapos terep magasságának csökkentése eggyel STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Lapos terep magasságának növelése eggyel @@ -3407,10 +3423,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Tényle STR_GENERATION_PROGRESS :{WHITE}{NUM}% kész STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Világ létrehozása +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Tájkép generálás STR_GENERATION_RIVER_GENERATION :{BLACK}Folyó generálás -STR_GENERATION_TREE_GENERATION :{BLACK}Fák generálása -STR_GENERATION_OBJECT_GENERATION :{BLACK}Mozgathatatlan létesítmények létrehozása STR_GENERATION_CLEARING_TILES :{BLACK}Durva és köves területek generálása +STR_GENERATION_TOWN_GENERATION :{BLACK}Város generálás +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Ipar generálás +STR_GENERATION_OBJECT_GENERATION :{BLACK}Mozgathatatlan létesítmények létrehozása +STR_GENERATION_TREE_GENERATION :{BLACK}Fák generálása STR_GENERATION_SETTINGUP_GAME :{BLACK}Játék beállítása STR_GENERATION_PREPARING_TILELOOP :{BLACK}Mezők véglegesítése STR_GENERATION_PREPARING_SCRIPT :{BLACK}Futó szkript @@ -3502,7 +3521,7 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Út típus STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF változó 60+x paraméter (hexadecimális) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Elhelyezési sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Sprite elhelyezés: ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Következő sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Továbbhaladás a következő normál spritera, kihagyva bármilyen ál/átszínező/betű spriteokat, a végén folytatva az elsővel STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ugrás a spritehoz @@ -3612,18 +3631,17 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Kis- és # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Felirat szerkesztése -STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}A fő nézetet a felirat helyére állítja. Ctrl+kattintás esetén új nézetet nyit a felirat helyére. +STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}A fő nézetet a felirat helyére állítja. Ctrl+kattintással új nézet nyílik a felirat helyzeténél STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Következő felirat STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Előző felirat STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Felirat szövegének szerkesztése # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Városok STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nincs - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Város){BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Városnevek - kattints egy névre a város megnézéséhez. Ctrl+kattintás esetén új látképet nyit a város pozíciójára +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Városnevek - kattints egy névre a város megnézéséhez. Ctrl+kattintással új nézet nyílik a városnál STR_TOWN_POPULATION :{BLACK}Világnépesség: {COMMA} # Town view window @@ -3631,15 +3649,18 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Város) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Lakosság: {ORANGE}{COMMA}{BLACK} Házak: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} a legutóbbi hónapban: {ORANGE}{COMMA}{BLACK} maximum: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} elmúlt percben: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}A város növekedéséhez szükséges rakomány: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} szükséges STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} szükséges télen STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} szállítva STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (több szükséges) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (szállítva) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}A település {ORANGE}{UNITS_DAYS_OR_SECONDS}onta növekszik +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}{BLACK}A település {ORANGE}{UNITS_DAYS_OR_SECONDS} növekszik (támogatást kapott) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}A település {RED}nem{BLACK} növekszik STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Zajszint a városban: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet a városra állítja. Ctrl+kattintás esetén új nézetet nyit a város pozíciójára +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet a városra állítja. Ctrl+kattintással új nézet nyílik a város helyzeténél STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Önkormányzat STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Az önkormányzat adatainak megmutatása STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}A város nevének megváltoztatása @@ -3676,8 +3697,12 @@ STR_LOCAL_AUTHORITY_ACTION_BRIBE :Önkormányzat STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Kis helyi reklámhadjárat indítása, hogy több utast és rakományt vonzz a megállóidba.{}A város körül kis területen ideiglenesen javítja az állomásaid minősítését.{}{POP_COLOUR}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Közepes helyi reklámhadjárat indítása, hogy több utast és rakományt vonzz a megállóidba.{}A város körül közepes méretű területen ideiglenesen javítja az állomásaid minősítését.{}{POP_COLOUR}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Nagy helyi reklámhadjárat indítása, hogy több utast és rakományt vonzz a megállóidba.{}A város körül nagy területen ideiglenesen javítja az állomásaid minősítését.{}{POP_COLOUR}Ára: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}A városi úthálózat felújításának finanszírozása.{}Akár 6 hónapig is jelentős fennakadást okoz a közúti forgalomban.{}{POP_COLOUR}Ára: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MINUTES :{PUSH_COLOUR}{YELLOW}A városi úthálózat felújításának finanszírozása.{}Akár 6 percig is jelentős fennakadást okoz a közúti forgalomban.{}{POP_COLOUR}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Szobor építése a vállalatod tiszteletére.{}Javítja az állomásaid értékelését a városban.{}{POP_COLOUR}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Új kereskedelmi épületek építésének támogatása a városban.{}A város egy ideig gyorsabban fog növekedni.{}{POP_COLOUR}Ára: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Kizárólagos szállítási jogok vásárlása 12 hónapra ebben a városban.{}Az ellenfelek állomásai nem fognak se utast, se rakományt kapni. A versenytársak sikeres megvesztegetése felbontja ezt a szerződést.{}{POP_COLOUR}Ára: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Kizárólagos szállítási jogok vásárlása 12 percre ebben a városban.{}Az ellenfelek állomásai nem fognak se utast, se rakományt kapni. A versenytársak sikeres megvesztegetése felbontja ezt a szerződést.{}{POP_COLOUR}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}A megítélésed növelése az önkormányzat megvesztegetésével, komoly büntetést kockáztatva, ha az kiderül.Ezzel megszüntetheted egy versenytársad kizárólagos szállítási jogát is.{}{POP_COLOUR}Ára: {CURRENCY_LONG} # Goal window @@ -3692,7 +3717,7 @@ STR_GOALS_TEXT :{ORANGE}{STRING STR_GOALS_NONE :{ORANGE}- Nincs - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kattintással a fő nézetet a célra állítja. Ctrl+kattintással új látképet nyit a gazdasági épület/település/mező helyéről +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kattintással a fő nézetet a célra állítja. Ctrl+kattintással új nézet nyílik a gazdasági épület/település/mező helyzeténél # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Kérdés @@ -3728,7 +3753,7 @@ STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_NONE :{ORANGE}--- STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Már támogatást kap STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} szállításáért {STRING} és {STRING} között {YELLOW} ({COMPANY}{YELLOW}, {STRING}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kattints egy sorra a város/gazdasági épület megnézéséhez. Ctrl+kattintás esetén új látképet nyit a város/gazdasági épület pozíciójára +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kattints egy sorra a város/gazdasági épület megnézéséhez. Ctrl+kattintással új nézet nyílik a város/gazdasági épület helyzeténél STR_SUBSIDIES_OFFERED_EXPIRY_DATE :eddig: {DATE_SHORT} STR_SUBSIDIES_OFFERED_EXPIRY_TIME :ezen belül: {UNITS_MONTHS_OR_MINUTES} STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :eddig: {DATE_SHORT} @@ -3748,15 +3773,20 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Követke STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Érvénytelen cél referencia # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Állomásnevek - kattints egy névre az állomás megnézéséhez. Ctrl+kattintásra új látképet nyit az állomás pozíciójára -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Több elem kiválasztásához tartsd lenyomva a Ctrl gombot +STR_STATION_LIST_TOOLTIP :{BLACK}Állomásnevek - kattints egy névre az állomás megnézéséhez. Ctrl+kattintással új nézet nyílik az állomás helyzeténél +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl+kattintás több elem kiválasztásához STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} állomásai - {COMMA} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Nincs - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Minden szállítóegység kiválasztása STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Minden rakománytípus és semmi minősítés +STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Többféle rakománytípus +STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Semmilyen rakománytípus STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :Csak rakományértékelés nélkül +STR_STATION_LIST_CARGO_FILTER_SELECT_ALL :Összes rakománytípus és értékelés nélküli +STR_STATION_LIST_CARGO_FILTER_NO_RATING :Rakományértékelés nélkül +STR_STATION_LIST_CARGO_FILTER_EXPAND :Több megjelenítése... # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} @@ -3772,6 +3802,8 @@ STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vélemény STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vélemény megmutatása az állomásról +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}Havi ellátás és helyi minősítés: +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}Percenkénti ellátás és helyi minősítés: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Csoportosítás @@ -3807,7 +3839,7 @@ STR_CARGO_RATING_VERY_GOOD :nagyon jó STR_CARGO_RATING_EXCELLENT :kiváló STR_CARGO_RATING_OUTSTANDING :kimagasló -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet az állomásra állítja. Ctrl+kattintás esetén új látképet nyit az állomás pozíciójára +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet az állomásra állítja. Ctrl+kattintással új nézet nyílik az állomás helyzeténél STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Az állomás nevének megváltoztatása STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Kilistázza az összes vonatot, aminek a menetrendjében szerepel ez az állomás @@ -3822,9 +3854,9 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Repülő # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet az ellenőrző pontra állítja. Ctrl+kattintás esetén új látképet nyit az ellenőrző pont pozíciójára +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet az ellenőrző pontra állítja. Ctrl+kattintással új nézet nyílik az ellenőrzőpontnál STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Átnevezi az ellenőrző pontot -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet a bójára állítja. Ctrl+kattintás esetén új látképet nyit a bója pozíciójára +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet a bójára állítja. Ctrl+kattintással új nézet nyílik a bója helyzeténél STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Bója átnevezése STR_EDIT_WAYPOINT_NAME :{WHITE}Ellenőrző pont nevének módosítása @@ -3900,7 +3932,7 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}A válla STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Székház STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Székház megtekintése STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}SZH áthelyezése -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}A vállalat székházának újraépítése máshol a vállalat értékének 1%-áért. Shift+kattintással megmutatja a becsült költséget a székhely áthelyezése nélkül +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}A vállalat székházának újraépítése máshol a vállalat értékének 1%-áért. Shift+kattintással csak a becsült költséget jeleníti meg STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Részletek STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Részletes információk megtekintése az infrastruktúráról STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Adományozz pénzt @@ -3939,7 +3971,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/időszak # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Gazdasági épületek STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nincs - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% elszállítva){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3947,7 +3978,7 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} és {NUM} további... -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Gazdasági épületek neve - a névre kattintva a fő nézetet a választott objektumra irányíthatod. Ctrl+kattintással új látképet nyit a gazdasági épület pozíciójára +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Gazdasági épületek neve - a névre kattintva a fő nézetet a választott objektumra irányíthatod. Ctrl+kattintással új nézet nyílik a gazdasági épület helyzeténél STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Elfogad: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Termel: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Minden rakománytípus @@ -3956,8 +3987,9 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :Semmi # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Múlt havi termelés: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Termelés az elmúlt percben: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% elszállítva) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}A fő nézetet a gazdasági épületre állítja. Ctrl+kattintás esetén új látképet nyit a gazdasági épület pozíciójára +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}A fő nézetet a gazdasági épületre állítja. Ctrl+kattintással új nézet nyílik a gazdasági épület helyzeténél STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Termelési szint: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}A gyár bejelentette a közelgő bezárását! @@ -3997,6 +4029,7 @@ STR_VEHICLE_LIST_REPLACE_VEHICLES :Járművek lecs STR_VEHICLE_LIST_SEND_FOR_SERVICING :Javításra küldés STR_VEHICLE_LIST_CREATE_GROUP :Csoport létrehozása STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Idei nyereség: {CURRENCY_LONG} (Tavalyi: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Nyereség ebben az időszakban: {CURRENCY_LONG} (elmúlt időszakban: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -4117,16 +4150,16 @@ STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Megvesz STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Megvesz és átalakít ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt vasúti jármű megvétele. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt közúti jármű megvétele. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt hajó megvétele. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt repülőgép megvétele. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt vasúti jármű megvétele. Shift+kattintással csak a becsült költséget jeleníti meg +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt közúti jármű megvétele. Shift+kattintással csak a becsült költséget jeleníti meg +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt hajó megvétele. Shift+kattintással csak a becsült költséget jeleníti meg +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt repülőgép megvétele. Shift+kattintással csak a becsült költséget jeleníti meg ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}A kijelölt vasúti jármű megvétele és átalakítása a kijelölt rakománytípusra. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}A kijelölt közúti jármű megvétele és átalakítása a kijelölt rakománytípusra. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}A kijelölt hajó megvétele és átalakítása a kijelölt rakománytípusra. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}A kijelölt repülőgép megvétele és átalakítása a kijelölt rakománytípusra. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}A kijelölt vasúti jármű megvétele és átalakítása a kijelölt rakománytípusra. Shift+kattintással csak a becsült költséget jeleníti meg +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}A kijelölt közúti jármű megvétele és átalakítása a kijelölt rakománytípusra. Shift+kattintással csak a becsült költséget jeleníti meg +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}A kijelölt hajó megvétele és átalakítása a kijelölt rakománytípusra. Shift+kattintással csak a becsült költséget jeleníti meg +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}A kijelölt repülőgép megvétele és átalakítása a kijelölt rakománytípusra. Shift+kattintással csak a becsült költséget jeleníti meg ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Átnevez @@ -4176,7 +4209,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} j STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vonatok - bal gombbal húzással áthelyezheted a járműveket a vonatba/vonatból, jobb gombbal kattintással járműinformáció. Ctrl lenyomásával a funkciókat a szerelvényre alkalmazod. +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vonatok - bal gombbal húzással áthelyezheted a járműveket a vonatba/vonatból, jobb gombbal kattintással járműinformáció. Ctrl+kattintással a funkciókat a szerelvényre alkalmazod. STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Járművek - kattints jobb gombbal egy járműre az adataihoz STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Hajók - kattints jobb gombbal egy hajóra az adataihoz STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Repülőgépek - kattints jobb gombbal egy repülőgépre az adataihoz @@ -4218,16 +4251,16 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Hajó m STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Repülőgép másolása ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ide kattintva elkészítheted egy teljes vonat másolatát annak összes kocsijával. Kattints erre a gombra, majd a vonatra kívül vagy belül a járműtelepen. Kattints ide, majd a másolandó vonatra. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ide kattintva megveheted egy közúti jármű másolatát. Kattints ide, majd a másolandó járműre a járműtelepen belül vagy kívül. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ide kattintva elkészítheted egy hajó másolatát. Kattints ide, majd a másolandó hajóra. Ctrl+Kattintással a menetrendet is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ide kattintva elkészítheted egy repülőgép másolatát. Kattints ide, majd a másolandó repülőgépre. Ctrl+kattintással a menetrendet is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ide kattintva elkészítheted egy teljes vonat másolatát annak összes kocsijával. Kattints erre a gombra, majd a vonatra kívül vagy belül a járműtelepen. Kattints ide, majd a másolandó vonatra. Ctrl+kattintás az utasítások megosztásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ide kattintva megveheted egy közúti jármű másolatát. Kattints ide, majd a másolandó járműre a járműtelepen belül vagy kívül. Ctrl+kattintás az utasítások megosztásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ide kattintva elkészítheted egy hajó másolatát. Kattints ide, majd a másolandó hajóra. Ctrl+kattintás az utasítások megosztásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ide kattintva elkészítheted egy repülőgép másolatát. Kattints ide, majd a másolandó repülőgépre. Ctrl+kattintás az utasítások megosztásához. Shift+kattintással csak a becsült költséget jeleníti meg ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}A fő nézetet a járműtelepre állítja. Ctrl+kattintás esetén új látképet nyit a járműtelep pozíciójára -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}A fő nézetet a garázsra állítja. Ctrl+kattintás esetén új látképet nyit a garázs pozíciójára -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}A fő nézetet a dokkra állítja. Ctrl+kattintás esetén új látképet nyit a dokk pozíciójára -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}A fő nézetet a hangárra állítja. Ctrl+kattintás esetén új látképet nyit a hangár pozíciójára +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}A fő nézetet a járműtelepre állítja. Ctrl+kattintással új nézet nyílik a járműtelep helyzeténél +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}A fő nézetet a garázsra állítja. Ctrl+kattintással új nézet nyílik a garázs helyzeténél +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}A fő nézetet a dokkra állítja. Ctrl+kattintással új nézet nyíilik a dokk helyzeténél +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}A fő nézetet a hangárra állítja. Ctrl+kattintással új nézet nyílik a hangár helyzeténél ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Vonatok listája, amelyek menetrendjében a járműtelep szerepel @@ -4334,9 +4367,9 @@ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Közelítés a vonat jelenlegi helyzetére. Dupla kattintással a fő nézetben követni fogja a vonatot. Ctrl+kattintással új nézet nyílik a vonat helyzetére. -STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Közelítés a közúti jármű jelenlegi helyzetére. Dupla kattintással a fő nézetben követni fogja a járművet. Ctrl+kattintással új nézet nyílik a jármű helyzetére. -STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Közelítés a hajó jelenlegi helyzetére. Dupla kattintással a fő nézetben követni fogja a hajót. Ctrl+kattintással új nézet nyílik a hajó helyzetére. -STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Közelítés a repülőgép jelenlegi helyzetére. Dupla kattintással a fő nézetben követni fogja a repülőgépet. Ctrl+kattintással új nézet nyílik a repülőgép helyzetére. +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Közelítés a közúti jármű jelenlegi helyzetére. Dupla kattintással a fő nézetben követni fogja a járművet. Ctrl+kattintással új nézet nyílik a jármű helyzeténél +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Közelítés a hajó jelenlegi helyzetére. Dupla kattintással a fő nézetben követni fogja a hajót. Ctrl+kattintással új nézet nyílik a hajó helyzeténél +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Közelítés a repülőgép jelenlegi helyzetére. Dupla kattintással a fő nézetben követni fogja a repülőgépet. Ctrl+kattintással új nézet nyílik a repülőgép helyzeténél ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}A járműtelepre küldi a vonatot. Ctrl+kattintással csak javításra @@ -4345,15 +4378,15 @@ STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Dokkba k STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Hangárba küldi a repülőgépet. Ctrl+kattintással csak javításra ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ide kattintva a teljes vonat másolatát készítheted el. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ide kattintva a jármű másolatát készítheted el. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ide kattintva a hajó másolatát készítheted el. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ide kattintva a repülőgép másolatát készítheted el. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ide kattintva a teljes vonat másolatát készítheted el. Ctrl+kattintás az utasítások megosztásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Egy közúti jármű másolatának vásárlása. Ctrl+kattintás az utasítások megosztásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ide kattintva a hajó másolatát készítheted el. Ctrl+kattintás az utasítások megosztásához. Shift+kattintással csak a becsült költséget jeleníti meg +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ide kattintva a repülőgép másolatát készítheted el. Ctrl+kattintás az utasítások megosztásához. Shift+kattintással csak a becsült költséget jeleníti meg STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}A vonat rákényszerítése a megállj jelzés meghaladására STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Vonat megfordítása STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Jármű rákényszerítése megfordulásra -STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Közelítés a célpontra. Ctrl+kattintással új nézet nyílik a célpont helyére. +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Közelítés a célpontra. Ctrl+kattintással új nézet nyílik a célpont helyénél. ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}A vonat átalakítása másfajta rakomány szállítására @@ -4382,25 +4415,26 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Aktuáli # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Berakodás / Kirakodás STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Indul +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Várakozás csoportbontásra STR_VEHICLE_STATUS_CRASHED :{RED}Balesetet szenvedett! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Lerobbant STR_VEHICLE_STATUS_STOPPED :{RED}Áll -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Lassít, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Lassít STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Nincs áram STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Szabad útra vár STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}A következő repülőtér túl messze van -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{STATION} állomás felé, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Nincs utasítás, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Útban {WAYPOINT} felé, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Útban {DEPOT} felé, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Javítás {DEPOT}ban, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Csoport bontás és szervizelés itt: {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Útban {0:STATION} állomás felé +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Nincs utasítás +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Útban {0:WAYPOINT} felé +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Útban {0:DEPOT} felé +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Javítás {0:DEPOT}ban +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Csoport bontás és szervizelés itt: {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{STATION} nem elérhető, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{WAYPOINT} nem elérhető, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{DEPOT} nem elérhető, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{DEPOT} nem elérhető, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - {0:STATION} nem elérhető +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - {0:WAYPOINT} nem elérhető, +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - {0:DEPOT} nem elérhető +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - {0:DEPOT} nem elérhető # Vehicle stopped/started animations ###length 2 @@ -4422,7 +4456,8 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Repülő STR_VEHICLE_INFO_AGE :{COMMA} év ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} év ({COMMA}) -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Kor: {LTBLUE}{STRING}{BLACK} Üzemeltetés: {LTBLUE}{CURRENCY_LONG}/év +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Kor: {LTBLUE}{STRING}{BLACK} Üzemeltetés: {LTBLUE}{CURRENCY_LONG}/év +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Kor: {LTBLUE}{STRING}{BLACK} Üzemeltetés: {LTBLUE}{CURRENCY_LONG}/időszak STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Végsebesség: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Sebesség: {LTBLUE}{VELOCITY} {BLACK}Típus: {LTBLUE}{STRING} @@ -4432,7 +4467,8 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Súly: { STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Idei haszon: {LTBLUE}{CURRENCY_LONG} (tavalyi: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Idei haszon: {LTBLUE}{CURRENCY_LONG} (tavalyi: {CURRENCY_LONG}) {BLACK}Minimum teljesítmény: {LTBLUE}{POWER_TO_WEIGHT} -STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Nyereség ebben az időszakban: {LTBLUE}{CURRENCY_LONG} (elmúlt időszak: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Nyereség ebben az időszakban: {LTBLUE}{CURRENCY_LONG} (elmúlt időszakban: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Nyereség ebben az időszakban: {LTBLUE}{CURRENCY_LONG} (emúlt időszakban: {CURRENCY_LONG}) {BLACK}Min. teljesítmény: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Megbízhatóság: {LTBLUE}{COMMA}% {BLACK}Lerobbanások az utolsó javítás óta: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Vásárlás éve: {LTBLUE}{NUM}{BLACK} Érték: {LTBLUE}{CURRENCY_LONG} @@ -4446,7 +4482,11 @@ STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Szállí STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Javítási időköz: {LTBLUE}{COMMA}{NBSP}nap{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Szervizintervallum: {LTBLUE}{COMMA}{NBSP}perc{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Szervizintervallum: {LTBLUE}{COMMA}%{BLACK} {STRING} +STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Utolsó javítás: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Utolsó javítás: {LTBLUE}{NUM} perce STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Szervizintervallum növelése 10 nappal. Ctrl+kattintással 5 nappal növelhető a szervizintervallum +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Szervizintervallum növelése 5 perccel. Ctrl+kattintással 1 perccel növelhető a szervizintervallum +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Szervizintervallum növelése 10 százalékkal. Ctrl+kattintással 5 százalékkal növelhető a szervizintervallum STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Szervizintervallum csökkentése 10 nappal. Ctrl+kattintással 5 nappal csökkenthető a szervizintervallum STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Szervizintervallum csökkentése 5 perccel. Ctrl+kattintással 1 perccel csökkenthető a szervizintervallum STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Szervizintervallum csökkentése 10 százalékkal. Ctrl+kattintással 5 százalékkal csökkenthető a szervizintervallum @@ -4454,6 +4494,7 @@ STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Szervizi STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Javítási időköz módjának megváltoztatása STR_VEHICLE_DETAILS_DEFAULT :Alapértelmezett STR_VEHICLE_DETAILS_DAYS :Napok +STR_VEHICLE_DETAILS_MINUTES :Perc STR_VEHICLE_DETAILS_PERCENT :Százalék ###length VEHICLE_TYPES @@ -4492,7 +4533,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Új kapa STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Új kapacitás: {GOLD}{CARGO_LONG}{}{BLACK}Bevétel átalakításból: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Új kapacitás: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Átalakítás költsége: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Új kapacitás: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Bevétel átalakításból: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Átalakítandó járművek kiválasztása. Egérrel húzva több jármű választható ki. Üres helyre kattintva az egész jármű jelölhető ki. Ctrl+Kattintással a jármű és az azt követő szerelvény jelölhető ki +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Átalakítandó járművek kiválasztása. Ctrk+húzással több jármű választható ki. Üres helyre kattintva az egész jármű jelölhető ki. Ctrl+kattintással a jármű és az azt követő szerelvény jelölhető ki ###length VEHICLE_TYPES STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Vonat által szállítandó rakomány kiválasztása @@ -4519,6 +4560,7 @@ STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Átkapcs STR_ORDERS_LIST_TOOLTIP :{BLACK}Utasításlista - kattints egy célpontra a kijelöléséhez. Ctrl+kattintással az utasítás helyszínére görget STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Utasítások vége - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Megosztott utasításlista vége - - @@ -4555,10 +4597,13 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Elérhető rako STR_ORDER_DROP_GO_ALWAYS_DEPOT :Mindig menj javítani STR_ORDER_DROP_SERVICE_DEPOT :Ha javításra szorul STR_ORDER_DROP_HALT_DEPOT :Maradj ott +STR_ORDER_DROP_UNBUNCH :Csoportbontás # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES +STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Válaszd ki a vasúti járműtelepre alkalmazni kívánt műveletet STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Válaszd ki a garázsra alkalmazni kívánt műveletet +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Válaszd ki a dokkra alkalmazni kívánt műveletet STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Válaszd ki a hangárra alkalmazni kívánt műveletet ###next-name-looks-similar @@ -4580,9 +4625,9 @@ STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Hogyan v STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :egyenlő STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :nem egyenlő STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :kevesebb, mint -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :nem több, mint +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :kevesebb vagy egyenlő, mint STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :több, mint -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :nem kevesebb, mint +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :több vagy egyenlő, mint STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :igaz STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :hamis @@ -4603,7 +4648,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Legközelebbi j STR_ORDER_GO_TO_NEAREST_HANGAR :Legközelebbi hangárba STR_ORDER_CONDITIONAL :Feltételes ugrás STR_ORDER_SHARE :Utasításlista megosztása -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Új utasítás beillesztése a kijelölt utasítás elé vagy a lista végére. Ctrl+kattintás állomásoknál 'bármiből teljes rakományra vár'-t, ellenőrző pontoknál 'Non-stop'-ot, járműtelepeknél 'Javításra menj' parancsot ad a célponthoz. 'Menetrend megosztása' esetén a jármű megosztja az utasításait a kiválasztott járművel. Ha járműtelep szerepel a menetrendben, kikapcsolja az automatikus javításokat +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Új utasítás beillesztése a kijelölt utasítás elé vagy a lista végére. Ctrl+kattintás állomásoknál 'bármiből teljes rakományra vár'-t, ellenőrző pontoknál a 'Minden új utasítás alapból non-stop' beállítás fordítottját, járműtelepeknél 'várakozás csoportbontásra' parancsot ad a célponthoz. Kattints egy másik járműre, hogy lemásold az utasításait, vagy Ctrl+kattints, hogy megoszd vele az utasításait. Ha járműtelep szerepel a menetrendben, kikapcsolja az automatikus javításokat STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Megmutatja az összes járművet, amik megosztják ezt az utasításlistát @@ -4629,6 +4674,7 @@ STR_ORDER_REFIT_ORDER :(Átalakít err STR_ORDER_REFIT_STOP_ORDER :(átalakít erre: {STRING}, és megáll) STR_ORDER_STOP_ORDER :(megáll) +STR_ORDER_WAIT_TO_UNBUNCH :(várakozás csoportbontásra) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Az állomás nem használható){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4706,21 +4752,25 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Ez a já STR_TIMETABLE_STATUS_LATE :{BLACK}Ez a jármű jelenleg {STRING} eltéréssel, késéssel közlekedik STR_TIMETABLE_STATUS_EARLY :{BLACK}Ez a jármű jelenleg {STRING} eltéréssel, korábban közlekedik STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}A menetrend még nincs megkezdve +STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}A menetrend ekkor kezdődik: {STRING} +STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}A menetrend {COMMA} másodperc múlva kezdődik STR_TIMETABLE_START :{BLACK}Menetrend megkezdése +STR_TIMETABLE_START_TOOLTIP :{BLACK}Menetrend kezdésének beállítása. Ctrl+kattintással az összes jármű indításának egyenletes elosztása a relatív utasításuk alapján, ha az utasítás teljesen be van ütemezve +STR_TIMETABLE_START_SECONDS_QUERY :Másodpercek a menetrend kezdetéig STR_TIMETABLE_CHANGE_TIME :{BLACK}Idő megváltoztatása STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}A kijelölt utasítás végrehajtási idejét változtatja meg. Ctrl+kattintással beállítod az időt az összes utasításhoz. STR_TIMETABLE_CLEAR_TIME :{BLACK}Idő törlése -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}A kijelölt menetrendi sorhoz tartozó végrehajtási idő törlése. Ctrl+Klikkel kitörlöd az időt az összes utasításnál. +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}A kijelölt utasításhoz tartozó idő törlése. Ctrl+kattintás az összes utasításból törli az időt STR_TIMETABLE_CHANGE_SPEED :{BLACK}Sebességkorlátozás megváltoztatása -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Kijelölt utasítás sebességkorlátozásának megváltoztatása. Ctrl+kattintással beállíthatod a sebességet az összes utasításhoz. +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Kijelölt utasítás sebességkorlátozásának megváltoztatása. Ctrl+kattintással beállítható a sebesség az összes utasítás számára STR_TIMETABLE_CLEAR_SPEED :{BLACK}Sebességkorlátozás törlése -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Sebességkorlátozás törlése a kijelölt utasításból. Ctrl+kattintással kitörlöd a sebességet az összes utasításból. +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Sebességkorlátozás törlése a kijelölt utasításból. Ctrl+kattintás az összes utasításból törli a sebességkorlátozást STR_TIMETABLE_RESET_LATENESS :{BLACK}Késés nullázása STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Késés-számláló nullázása, azaz a jármű pontos lesz. Ctrl+kattintással az egész csoportot nullázhatod, vagyis a legutolsó pont időben lesz a többi pedig korán @@ -4733,7 +4783,9 @@ STR_TIMETABLE_SCHEDULED :{BLACK}Tervezet STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Váltás a várható és a tervezett időpontok között STR_TIMETABLE_ARRIVAL_DATE :Érk.: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :Ind.: {COLOUR}{DATE_TINY} STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :Érk.: {COLOUR}{COMMA} mp +STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :Ind.: {COLOUR}{COMMA} mp # Date window (for timetable) @@ -4761,9 +4813,9 @@ STR_AI_DEBUG_MATCH_CASE :{BLACK}Kis- és STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Kis- és nagybetűk megkülönböztetése az MI naplóbejegyzéseknek a megállítási sorral való összehasonlításánál STR_AI_DEBUG_CONTINUE :{BLACK}Folytatás STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Játék folytatása és MI visszakapcsolása -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}A MI kimeneti nyomonkövetésének megtekintése. Ctrl+kattintás új ablakban történő megnyitáshoz +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}A MI kimeneti nyomonkövetésének megtekintése. Ctrl+Kattintás új ablakban történő megnyitáshoz STR_AI_GAME_SCRIPT :{BLACK}Játékszkript -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Játékszkript napló ellenőrzése +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Játékszkript napló ellenőrzése. Ctrl+kattintás új ablakban történő megnyitáshoz STR_ERROR_AI_NO_AI_FOUND :Nincs MI, amit be lehetne tölteni.{}A jelenlegi MI csak dísz és nem fog semmit csinálni.{}MI-k letöltéséhez használd a tartalomletöltő rendszert STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Az egyik futó szkript futása közben hiba történt. Kérjük jelezd ezt a szkript készítőjének az MI / Játékzkript nyomkövetés ablakról készített képernyőmentéssel @@ -4779,7 +4831,7 @@ STR_AI_CONFIG_RANDOM_AI :Véletlenszerű STR_AI_CONFIG_NONE :(nincs) STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Ellenfelek száma legfeljebb: {ORANGE}{COMMA} -STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Ellenfelek indítása közötti időtartam: {ORANGE}{COMMA} perc{P "" s} +STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Ellenfelek indítása közötti időtartam: {ORANGE}{COMMA} perc STR_AI_CONFIG_MOVE_UP :{BLACK}Mozgatás Fel STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Kiválasztott MI mozgatása felfelé a listában @@ -4826,8 +4878,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Játékszkript STR_AI_SETTINGS_CLOSE :{BLACK}Bezárás STR_AI_SETTINGS_RESET :{BLACK}Visszaállítás STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4880,9 +4930,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Becsült STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}A mentés még tart,{}kérlek várd meg a végét! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatikus mentés sikertelen STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nem olvasható a meghajtó -STR_ERROR_GAME_SAVE_FAILED :{WHITE}A mentés nem sikerült{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nem sikerült törölni a fájlt -STR_ERROR_GAME_LOAD_FAILED :{WHITE}A betöltés nem sikerült{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Belső hiba: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Hibás játékállás-mentés - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A játékállást újabb verzió mentette el @@ -5016,8 +5064,8 @@ STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Változt # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nem építhetsz ide vasútállomást... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nem építhetsz ide buszmegállót... -STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nem építhetsz ide teherautó-rakodóhelyet... -STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nem építhetsz ide villamos-utasvárót... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nem építhetsz ide teherautó-állomást... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nem építhetsz ide villamosmegállót... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nem építhetsz ide tehervillamos-állomást... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Nem építhetsz ide kikötőt... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nem építhetsz ide repülőteret... @@ -5027,7 +5075,7 @@ STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... az STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Túl sok az állomás/rakodóhely STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Túl sok vasútállomás-rész STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Túl sok buszmegálló -STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Túl sok a teherautó-rakodóhely +STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Túl sok a teherautó-állomás STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Túl közel van egy másik kikötőhöz STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Túl közel van egy másik repülőtérhez STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Nem nevezheted át az állomást... @@ -5040,16 +5088,16 @@ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... áth STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nem lehet eltávolítani az állomás részét... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Előbb le kell rombolnod a vasútállomást STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Nem távolíthatod el ezt a buszmegállót... -STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Nem távolíthatod el ezt a teherautó-rakodóhelyet... -STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nem lehet a villamos-utasvárót eltávolítani... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Nem távolíthatod el ezt a teherautó-állomást... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nem lehet a villamosmegállót eltávolítani... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Nem lehet a tehervillamos-állomást eltávolítani STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Előbb el kell távolítanod a megállóhelyet STR_ERROR_THERE_IS_NO_STATION :{WHITE}... nincs itt állomás STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Előbb le kell rombolnod a vasútállomást STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Előbb le kell rombolnod a buszmegállót -STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Előbb le kell rombolnod a teherautó-rakodóhelyet -STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Előbb le kell rombolni a villamos-utasvárót +STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Előbb le kell rombolnod a teherautó-állomást +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Előbb le kell rombolni a villamosmegállót STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Előbb le kell rombolni a tehervillamos-állomást STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Előbb le kell rombolnod a kikötőt STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Előbb le kell rombolnod a repülőteret @@ -5095,6 +5143,10 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Rossz járműte # Depot unbunching related errors STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... csak egy csoportbontási utasítás lehetséges +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... a telerakodás utasítás nem használható a csoportbontás utasításnál +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... a csoportbontás nem lehetséges egy telerakodás utasítással rendelkező járműnél +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... a feltételes utasítások nem használhatóak a csoportbontás utasításnál +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... a csoportbontás nem lehetséges egy feltételes utasítással rendelkező járműnél # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} túl hosszú a csere után @@ -5260,6 +5312,10 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Változt STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Még nincsenek elérhető járművek STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Indíts új játékot {DATE_SHORT} után, vagy használj olyan NewGRF-et, ami tartalmaz megfelelően korai járműveket! +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Nincs városban építhető út-típus +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Saját NewGRF konfiguráció módosítása +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Még nem érhető el városban építhető úttípus + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nem haladhatja meg a vonat a megállj jelzést... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nem fordíthatod meg a vonatot... @@ -5293,7 +5349,7 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... a re # Extra messages which go on the third line of errors, explaining why orders failed STR_ERROR_NO_RAIL_STATION :{WHITE}Nem található vasútállomás STR_ERROR_NO_BUS_STATION :{WHITE}Nem található buszmegálló -STR_ERROR_NO_TRUCK_STATION :{WHITE}Nem található teherautó-rakodóhely +STR_ERROR_NO_TRUCK_STATION :{WHITE}Nem található teherautó-állomás STR_ERROR_NO_DOCK :{WHITE}Kikötő nem található STR_ERROR_NO_AIRPORT :{WHITE}Nem található repülőtér/Helikopter-leszálló STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Nem található megálló kompatibilis úttípussal @@ -5830,6 +5886,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP} ezer +STR_CURRENCY_SHORT_MEGA :{NBSP} millió +STR_CURRENCY_SHORT_GIGA :{NBSP} Milliárd +STR_CURRENCY_SHORT_TERA :{NBSP} billó + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index add7480775..62a52ef01d 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -360,6 +360,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Hætta í korta STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Hætta + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Stillingar @@ -824,7 +825,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldmi STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Val á gjaldmiðli -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Sterlingspund STR_GAME_OPTIONS_CURRENCY_USD :Bandaríkjadalur STR_GAME_OPTIONS_CURRENCY_EUR :Evra @@ -903,6 +904,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Auka upp + STR_ERROR_FULLSCREEN_FAILED :{WHITE}Skjáfyllihamur brást # Custom currency window @@ -913,6 +915,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Hækka g STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Lækka gengi miðað við pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Setja gengi gjaldmiðils miðað við pund (£) + STR_CURRENCY_PREFIX :{LTBLUE}Forskeyti: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Veldu forskeyti fyrir gjaldmiðilinn STR_CURRENCY_SUFFIX :{LTBLUE}Viðskeyti: {ORANGE}{STRING} @@ -1238,6 +1241,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Birta viðvöru ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Þegar þessi stilling er virk, eru frétta boð send ef farartæki hafa ekki skilað hagnaði síðasta dagatals ár + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Farartæki úreldast aldrei: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ef þessi stilling er virk, eru öll farartæki alltaf í boði eftir að þau voru fyrst kynnt til sögunnar @@ -1501,7 +1505,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Sjálfgefið mi STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum flugvélum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið STR_CONFIG_SETTING_SERVINT_SHIPS :Sjálfgefið millibil fyrir þjónustu hjá skipum: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum skipum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 ur ar}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Óvirkt @@ -1695,17 +1700,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Iðnaður STR_CONFIG_SETTING_AI :Mótherji STR_CONFIG_SETTING_AI_NPC :Gervigreind -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Leiðsögukerfi lesta: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Leiðsögukerfi sem nota á fyrir lestir -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Leiðsögukerfi bifreiða: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Leiðsögukerfi sem nota á fyrir bíla og sporvagna -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Leiðsögukerfi skipa: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Leiðsögukerfi sem nota á fyrir skip STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Snúa járnbrautarlestum sjálfkrafa við á umferðarmerkjum: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Leyfa járnbrautarlestum að snúa við á umferðarmerkjum ef þau hafa beðið þar í langan tíma -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Ráðlegt) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Breyta gildi stillingar @@ -1970,7 +1966,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Næ í u STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Aftengjast STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Þjónn er varinn. Sláðu inn lykilorð -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Fyrirtæki er varið. Sláðu inn lykilorð # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Listi yfir leikmenn @@ -1986,19 +1981,9 @@ STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Listi yfir leik STR_NETWORK_SPECTATORS :Áhorfendur -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ekki vista innslegið lykilorð -STR_COMPANY_PASSWORD_OK :{BLACK}Læsa fyrirtækinu með nýja lykilorðinu -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Lykilorð fyrirtækis -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Sjálfgefið lykilorð fyrirtækis -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Nota lykilorð þessa fyrirtækis sem sjálfgefið fyrir ný fyrirtæki - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Taka þátt STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Taka þátt sem þetta fyrirtæki -STR_COMPANY_VIEW_PASSWORD :{BLACK}Lykilorð -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Til að vernda fyrirtæki þitt frá óboðnum notendum geturðu sett lykilorð á það -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Setja lykilorð á fyrirtæki # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Senda @@ -2037,7 +2022,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Tölvan STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Hefur líklega misst sambandið STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Síðustu {NUM} sekúndu{P "" r} hafa engin gögn borist frá þjóninum -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :almenn villa STR_NETWORK_ERROR_CLIENT_DESYNC :samstillingarvilla STR_NETWORK_ERROR_CLIENT_SAVEGAME :gat ekki opnað kort @@ -2226,7 +2211,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Veldu le # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Leiðarvísir -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Velja tegund leiðarvísis # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Lestarstöðvastillingar @@ -2239,8 +2223,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Veldu le STR_STATION_BUILD_DRAG_DROP :{BLACK}Draga & Sleppa STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Byggja lestarstöð með 'draga og sleppa' aðferðinni -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Veldu flokk stöðva sem á að sýna -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Veldu tegund stöðvar til að reisa + + + STR_STATION_CLASS_DFLT :Sjálfgefin stöð STR_STATION_CLASS_WAYP :Millistöð @@ -2371,8 +2356,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kaupa la # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Hlutaval -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Veldu hlut til að byggja. Shift sýnir áætlaðan kostnað -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Veldu flokk hlutarins sem á að byggja STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Sýnishorn af hlutnum STR_OBJECT_BUILD_SIZE :{BLACK}Stærð: {GOLD}{NUM} x {NUM} reitir @@ -2472,7 +2455,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigandi STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eigandi járnbrautarspors: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bæjaryfirvöld: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Enginn -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Hnit: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Byggt: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tegund stöðvar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tegund stöðvar: {LTBLUE}{STRING} @@ -2691,9 +2673,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% t STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Sköpun heims STR_GENERATION_RIVER_GENERATION :{BLACK}Bý til ár -STR_GENERATION_TREE_GENERATION :{BLACK}Gróðursetning trjáa -STR_GENERATION_OBJECT_GENERATION :{BLACK}Staðsetning fastra hluta STR_GENERATION_CLEARING_TILES :{BLACK}Hrjúft og grýtt landslag +STR_GENERATION_OBJECT_GENERATION :{BLACK}Staðsetning fastra hluta +STR_GENERATION_TREE_GENERATION :{BLACK}Gróðursetning trjáa STR_GENERATION_SETTINGUP_GAME :{BLACK}Set upp leik STR_GENERATION_PREPARING_TILELOOP :{BLACK}Keyri reitalykkju STR_GENERATION_PREPARING_SCRIPT :{BLACK}Keyri forskrift @@ -2768,7 +2750,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tegund spora STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF breyta 60+x stilling (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Samræmi hreyfimynd{COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Næsta hreyfimynd STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Halda áfram á næstu venjulegu hreyfimynd, sleppir gervi/endurlitun/letur hreyfimyndum og fer aftur á byrjun í lokin. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Velja hreyfimynd @@ -2870,7 +2851,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Fara að STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Sláðu inn nafn fyrir skiltið # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bæir STR_TOWN_DIRECTORY_NONE :{ORANGE}- Enginn - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bæjanöfn - smelltu á nafn til að færa sjónarhorn að viðkomandi bæ. Ctrl+smelltu til að opna nýtt sjónarhorn yfir þessum bæ @@ -3112,7 +3092,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stöðva STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flugvellir # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Iðnaðir STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Enginn - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Iðnaðar nöfn - smella á nafn til að færa miðju sjónarhorns á iðnað. Ctrl+smella til að opna nýtt sjónarhorn yfir þessum iðnaði @@ -3902,9 +3881,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Áætla STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Vistun er enn í gangi,{}vinsamlegast bíddu á meðan hún klárst! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Sjálfvirk vistun mistókst STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Get ekki lesið af drifi -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Vistun leiks mistókst{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Get ekki eytt skrá -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Mistókst að opna leik{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Innri villa: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bilun í vistuðum leik - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Leikur er vistaður í nýrri útgáfu @@ -4258,6 +4235,7 @@ STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... öku STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Engin farartæki verða í boði STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Breyta NewGRF stillingunum þínum + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Get ekki látið lest fara framhjá hættumerki... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Get ekki snúið lest við... @@ -4766,6 +4744,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/ido.txt b/src/lang/ido.txt index a7d415ad70..2c39d0bf74 100644 --- a/src/lang/ido.txt +++ b/src/lang/ido.txt @@ -292,6 +292,7 @@ STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Pozez ob ###length 7 STR_SCENEDIT_FILE_MENU_SEPARATOR : + # Settings menu ###length 16 STR_SETTINGS_MENU_FULL_DETAIL :Plene detaloza @@ -464,7 +465,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Ludo Sel -###length 43 +###length 44 # Autosave dropdown @@ -492,12 +493,14 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :altra + # Custom currency window + STR_NUM_LOW :Basa STR_NUM_NORMAL :Normala STR_NUM_HIGH :Alta @@ -626,6 +629,7 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normala ###length 2 + ###length 2 @@ -732,6 +736,8 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violkolora +###length 3 + ###setting-zero-is-special @@ -806,7 +812,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violkolora ###length 3 -###length 2 # Config errors @@ -881,8 +886,6 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x -# Network set password - # Network company info join/password # Network chat @@ -892,7 +895,7 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Tu sendis tro multa imperi ad la servero -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sendinta tro multa imperi # Network related errors @@ -943,6 +946,9 @@ STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Aceptas: + + + # Signal window # Bridge selection window @@ -1599,6 +1605,7 @@ STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tro mult + # Specific vehicle errors @@ -1702,6 +1709,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 6f7640baa4..fc396c12f0 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -307,7 +307,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Mengakti STR_BUTTON_DEFAULT :{BLACK}Standar STR_BUTTON_CANCEL :{BLACK}Batal STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Peringatan: Administrator server mungkin dapat membaca teks apa pun yang dimasukkan di sini. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -433,6 +432,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Batalkan skenar STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Keluar + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Pengaturan permainan @@ -656,6 +656,8 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Hutang: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Jumlah kendaraan yang menghasilkan keuntungan tahun lalu. Ini termasuk kendaraan jalan raya, kereta api, kapal laut dan pesawat terbang +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Jumlah kendaraan yang menghasilkan keuntungan pada periode terakhir. Ini termasuk kendaraan jalan raya, kereta api, kapal laut dan pesawat terbang STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Jumlah bagian dari stasiun yang diperbaiki baru-baru ini. Setiap bagian dari stasiun (misal: stasiun kereta, terminal bus, bandara) dihitung, meskipun mereka dihubungkan menjadi satu kesatuan stasiun STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Banyaknya uang yang dihasilkan dalam satu kuartal dengan keuntungan terendah pada 12 kuartal terakhir STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Banyaknya uang tunai yang dihasilkan dalam satu kuartal dengan keuntungan tertinggi pada 12 kuartal terakhir @@ -933,18 +935,13 @@ STR_GAME_OPTIONS_VOLUME :Volume STR_GAME_OPTIONS_SFX_VOLUME :Efek suara STR_GAME_OPTIONS_MUSIC_VOLUME :Musik -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Mata uang STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Pilih mata uang STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Poundsterling STR_GAME_OPTIONS_CURRENCY_USD :Dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1031,11 +1028,6 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Pilih ko STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Font anti-alias STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Centang kotak ini untuk font anti-alias yang dapat diubah ukurannya. -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Survei Otomatis STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Berpartisipasi pada survey otomatis @@ -1064,6 +1056,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Set Musi STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Pilih musik dasar yang akan digunakan STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informasi tambahan tentang musik dasar + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(tidak ada plugin untuk diintegrasikan dengan platform sosial yang terpasang) STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Platform: @@ -1087,6 +1080,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Menurunk STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Meningkatkan nilai mata uang satu Pound (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Atur penukaran nilai mata uang per satu Pound (£) + STR_CURRENCY_PREFIX :{LTBLUE}Awalan: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Masukkan awalan untuk mata uang STR_CURRENCY_SUFFIX :{LTBLUE}Akhiran: {ORANGE}{STRING} @@ -1390,6 +1384,7 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Semua viewport STR_CONFIG_SETTING_BRIBE :Ijinkan kolusi pada penguasa setempat: {STRING} ###length 2 STR_CONFIG_SETTING_BRIBE_HELPTEXT :Membolehkan perusahaan untuk menyuap pemerintah kota. Jika tertangkap, perusahaan tidak bisa berinteraksi dengan kota selama 6 bulan +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Membolehkan perusahaan untuk menyuap pemerintah kota. Jika tertangkap, perusahaan tidak bisa berinteraksi dengan kota selama 6 menit STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ijinkan pembelian hak ekslusif pengelolaan transportasi: {STRING} ###length 2 @@ -1454,6 +1449,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Ingatkan jika a ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Jika dinyalakan,sebuah surat kabar akan dikirim jika kendaraan tidak mendapat keuntungan dalam satu tahun + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Kendaraan tidak pernah kadaluarsa: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Jika dinyalakan,semua model kendaraan akan ada selamanya sejak pendesainanya @@ -1679,7 +1675,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Mengaktifkan pe STR_CONFIG_SETTING_LOADING_INDICATORS :Tampilkan indikator pengangkutan: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Pilih apakah petunjuk beban ditayangkan di atas kendaran yang sedang mengisi atau menurunkan beban +STR_CONFIG_SETTING_TIMETABLE_MODE :Satuan waktu untuk jadwal: {STRING} +STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Pilih satuan waktu yang digunakan untuk jadwal kendaraan ###length 3 +STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Hari +STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Detik +STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Titik STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Tampilkan keberangkatan dan kedatangan pada jadwal: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Tampilkan waktu diantisipasi kedatangan dan keberangkatan di jadwal @@ -1782,7 +1783,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Interval perbai STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Setel interval perbaikan untuk pesawat baru, jika tidak ada interval asli yang disetel STR_CONFIG_SETTING_SERVINT_SHIPS :Interval dasar untuk kapal: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Mengatur interval perbaikan untuk kapal baru, jika tidak ada interval perbaikan, setelan dasar akan diatur untuk kendaraan -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}hari/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Di non-aktifkan @@ -2077,17 +2079,8 @@ STR_CONFIG_SETTING_AI :Pesaing STR_CONFIG_SETTING_AI_NPC :Pemain Komputer STR_CONFIG_SETTING_NETWORK :Jaringan -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pencari jejak untuk kereta: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pencari jejak untuk kereta -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pencari jejak untuk kendaraan jalan raya: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pencari jejak untuk kendaraan jalan raya -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pencari jejak untuk kapal : {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Pencari jejak untuk kapal STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Berputar otomatis di sinyal: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Perbolehkan kereta berputar di sinyal, jika telah menunggu lama -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recommended) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Ganti nilai tetapan @@ -2207,9 +2200,13 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Tampilka STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Tampilkan skema warna kendaraan STR_LIVERY_SHIP_TOOLTIP :{BLACK}Tampilkan skema warna kapal STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Tampilkan skema warna pesawat +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Tampilkan warna grup kereta +STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Tampilkan warna grup kapal STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Pilih warna utama untuk skema terpilih, Ctrl+Klik akan mengatur warna ini di semua skema STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Pilih warna kedua untuk skema terpilih. Ctrl+Klik akan mengatur warna ini di semua skema STR_LIVERY_PANEL_TOOLTIP :{BLACK}Pilih skema warna untuk diganti, atau banyak skema dengan CTRL+klik. Klik pada kotak untuk berganti dari skema warna yang digunakan +STR_LIVERY_TRAIN_GROUP_EMPTY :Tidak ada grup kereta yang dibentuk +STR_LIVERY_SHIP_GROUP_EMPTY :Tidak ada grup kapal yang dibentuk ###length 23 STR_LIVERY_DEFAULT :Warna Standar @@ -2315,6 +2312,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Ukuran p STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Ukuran Peta dari permainan{}Klik untuk diurutkan berdasarkan area STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Tanggal STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Tanggal sekarang +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}j {NUM}m +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Waktu bermain +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Waktu dimainkan saat{}permainan tidak dijeda STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Bahasa, versi server, dll. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klik untuk memilih sesi permainan dari daftar @@ -2330,6 +2330,7 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Alamat STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Kode undangan: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Tgl mulai: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Tgl sekarang: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Waktu bermain: {WHITE}{NUM}j {NUM}m STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Skrip Permainan: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Terproteksi dengan kata kunci! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER OFFLINE @@ -2394,7 +2395,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Mengambi STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Putuskan STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server terkunci, masukkan kata kunci -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Perusahaan terkunci, masukkan kata kunci # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Pemain Dalam Jaringan @@ -2443,13 +2443,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Melalui STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Diusir STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Melarang STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Hapus -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Buka pakai kata sandi STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Tindakan Admin STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Anda yakin ingin diusir pemain '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Apakah Anda yakin ingin mencekal pemain '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Anda yakin ingin menghapus perusahaan '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Anda yakin ingin menyetel ulang sandi perusahaan '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Gunakan relay? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW} Gagal membuat koneksi antara Anda dan server '{STRING}'.{}Apakah Anda ingin menyampaikan sesi ini melalui '{STRING}'? @@ -2466,19 +2464,9 @@ STR_NETWORK_ASK_SURVEY_YES :Iya STR_NETWORK_SPECTATORS :Penonton -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Jangan simpan kata sandi yang telah dimasukkan -STR_COMPANY_PASSWORD_OK :{BLACK}Berikan perusahaan kata sandi baru -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Kata Sandi Perusahaan -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standar Kata Sandi Perusahaan -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Pergunakan kata sandi perusahaan ini sebagai standar perusahaan baru - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Gabung STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Gabung dan bermain sebagai perusahaan ini -STR_COMPANY_VIEW_PASSWORD :{BLACK}Kata Sandi -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Kata Sandi-Melindungi perusahaanmu dari pemakai yang tidak bewenang untuk bergabung -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Atur Kata Sandi Perusahaan # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Kirim @@ -2522,7 +2510,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Nama pem STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Koneksi mungkin terputus STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Dalam {NUM} detik tak ada data diterima dari server -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :Kesalahan umum STR_NETWORK_ERROR_CLIENT_DESYNC :Kesalahan de-sinkronisasi STR_NETWORK_ERROR_CLIENT_SAVEGAME :Tak dapat memuat peta @@ -2735,7 +2723,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Tentukan # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Waypoint -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Pilih jenis waypoint # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Pilih stasiun kereta @@ -2748,8 +2735,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Pilih pa STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Membangun stasiun dengan Drag & Drop -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Pilih kelas stasiun yang akan ditampilkan -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Pilih jenis stasiun yang akan dibangun + + + STR_STATION_CLASS_DFLT :Standar STR_STATION_CLASS_DFLT_STATION :Stasiun standar @@ -2892,8 +2880,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Beli tan # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Pemilihan obyek -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Pilih obyek yg akan dibangun. Ctrl untuk memilih area secara diagonal. Shift untuk menampilkan perkiraan biaya -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Pilih kelas dari objek yang dibangun STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Pra-tayang obyek STR_OBJECT_BUILD_SIZE :{BLACK}Ukuran: {GOLD}{NUM} x {NUM} kotak @@ -3008,7 +2994,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Pemilik STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Pemilik Rel Kereta: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Pemkot setempat: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Kosong -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinat: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinat: {LTBLUE}{NUM} x {NUM} x {NUM} STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Dibuat: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Kelas Stasiun: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipe Stasiun: {LTBLUE}{STRING} @@ -3284,6 +3270,7 @@ STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotasi Heightmap: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nama Peta Heightmap: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Luas: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}Ukuran sumber gambar heightmap. Untuk hasil terbaik, setiap tepi harus sesuai dengan panjang tepi peta yang tersedia di OpenTTD, seperti 256, 512, 1024, dll. STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Target ketinggian puncak @@ -3312,9 +3299,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% s STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Pembuatan Bentang Darat STR_GENERATION_RIVER_GENERATION :{BLACK}Pembuatan Sungai -STR_GENERATION_TREE_GENERATION :{BLACK}Membuat pepohonan -STR_GENERATION_OBJECT_GENERATION :{BLACK}Membuat objek tak bergerak STR_GENERATION_CLEARING_TILES :{BLACK}Membersihan area +STR_GENERATION_OBJECT_GENERATION :{BLACK}Membuat objek tak bergerak +STR_GENERATION_TREE_GENERATION :{BLACK}Membuat pepohonan STR_GENERATION_SETTINGUP_GAME :{BLACK}Mengatur permainan STR_GENERATION_PREPARING_TILELOOP :{BLACK}Menyiapkan area loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Menjalankan skrip @@ -3406,7 +3393,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipe jalan STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Variabel NewGRF harus 60+x (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Menjajarkan sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite berikutnya STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Pergi ke sprite normal berikutnya, lewati sprite bayangan/warna ulang/huruf dan pembungkus saat mulai STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Pergi ke sprite @@ -3523,7 +3509,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Pergi ke STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Masukkan nama rambu # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Kota STR_TOWN_DIRECTORY_NONE :{ORANGE}- Tidak Ada - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Kota){BLACK} ({COMMA}) @@ -3637,6 +3622,8 @@ STR_SUBSIDIES_NONE :{ORANGE}- Tidak STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Jasa transportasi bersubsidi: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} dari {STRING} ke {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik pada layanan untuk mengarahkan pandangan utama pada industri/kota. Ctrl+Click akan membuka viewport baru pada lokasi industri/kota +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :hingga {DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :tersisa {UNITS_MONTHS_OR_MINUTES} # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Buku Cerita @@ -3839,7 +3826,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/periode # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industri STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Tidak Ada - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% Terkirim){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4161,6 +4147,14 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE :kendaraan jalan STR_ENGINE_PREVIEW_AIRCRAFT :pesawat STR_ENGINE_PREVIEW_SHIP :kapal +STR_ENGINE_PREVIEW_COST_WEIGHT :Biaya: {CURRENCY_LONG} Berat: {WEIGHT_SHORT} +STR_ENGINE_PREVIEW_COST_MAX_SPEED :Biaya: {CURRENCY_LONG} Kecepatan maks.: {VELOCITY} +STR_ENGINE_PREVIEW_SPEED_POWER :Kecepatan: {VELOCITY} Daya: {POWER} +STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Kecepatan: {VELOCITY} Daya: {POWER} Maks. T.E.: {FORCE} +STR_ENGINE_PREVIEW_RUNCOST_YEAR :Biaya operasional: {CURRENCY_LONG}/tahun +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Biaya operasional: {CURRENCY_LONG}/periode +STR_ENGINE_PREVIEW_CAPACITY :Kapasitas: {CARGO_LONG} +STR_ENGINE_PREVIEW_CAPACITY_2 :Kapasitas: {CARGO_LONG}, {CARGO_LONG} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Ganti {STRING} - {STRING} @@ -4329,12 +4323,16 @@ STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Nilai Tr STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Perbaikan interval: {LTBLUE}{COMMA}{NBSP}hari{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Jangka waktu perbaikan: {LTBLUE}{COMMA} %{BLACK} {STRING} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Tingkatkan jangka waktu servis sebanyak 10 hari. Ctrl+Klik untuk menambah sebanyak 5 hari +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Tingkatkan jangka waktu servis sebanyak 5 menit. Ctrl+Click untuk menambah sebanyak 1 menit +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Tingkatkan jangka waktu servis sebanyak 10 persen. Ctrl+Click untuk menambah sebanyak 5 persen STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Kurangi jangka waktu servis sebanyak 10 hari. Ctrl+Click untuk mengurangi sebanyak 5 hari STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Kurangi jangka waktu servis sebanyak 5 menit. Ctrl+Click untuk mengurangi sebanyak 1 menit STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Kurangi jangka waktu servis sebanyak 10 persen. Ctrl+Click untuk mengurangi sebanyak 5 persen STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Ubah jenis interval perbaikan STR_VEHICLE_DETAILS_DEFAULT :Standar +STR_VEHICLE_DETAILS_DAYS :Hari STR_VEHICLE_DETAILS_PERCENT :Persentase ###length VEHICLE_TYPES @@ -4704,8 +4702,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Skrip Permainan STR_AI_SETTINGS_CLOSE :{BLACK}Tutup STR_AI_SETTINGS_RESET :{BLACK}Reset STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4755,9 +4751,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Perkiraa STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Penyimpanan sedang berlangsung,{}mohon tunggu hingga selesai STR_ERROR_AUTOSAVE_FAILED :{WHITE}Simpan otomatis gagal STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Tidak dapat membaca drive -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Penyimpanan Game gagal{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Tidak mampu untuk menghapus file/berkas -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Gagal membuka permainan{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Kesalahan Internal: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Berkas simpanan permainan rusak - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Berkas simpanan dibuat dari versi yang lebih baru @@ -5134,6 +5128,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Tukarkan STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Belum ada kendaraan yang tersedia saat ini STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Mulai permainan baru setelah {DATE_SHORT} atau gunakan NewGRF yang menyediakan kendaraan awal + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Tidak dapat memaksa kereta melanggar sinyal pada saat bahaya... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Tidak dapat memutar balik arah kereta... @@ -5662,6 +5657,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/irish.txt b/src/lang/irish.txt index df9d85a6c2..76f36ec122 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -272,7 +272,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ach an c STR_BUTTON_DEFAULT :{BLACK}Réamhshocrú STR_BUTTON_CANCEL :{BLACK}Cuir ar ceal STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Rabhadh: D'fhéadfadh sé go mbeidh riarthóirí an fhreastalaí in ann aon téacs a chuirtear isteach anseo a léamh # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -396,6 +395,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Fág eagarthói STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Scoir + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Roghanna an chluiche @@ -880,7 +880,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Aonaid a STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Aonaid airgeadra a roghnú -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Punt na Breataine STR_GAME_OPTIONS_CURRENCY_USD :Dollar Mheiriceá STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -979,6 +979,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Faisnéi + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Teipeadh liosta de na taifigh a dtacaítear leo a fháil STR_ERROR_FULLSCREEN_FAILED :{WHITE}Theip ar an mód lánscáileáin @@ -990,6 +991,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Laghdaig STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Méadaigh méid d'airgeadra ar Euro (€) amháin STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Socraigh ráta malairte d'airgeadra ar Euro (€) amháin + STR_CURRENCY_PREFIX :{LTBLUE}Réimír: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Socraigh an teaghrán réimíre dod' airgeadra STR_CURRENCY_SUFFIX :{LTBLUE}Iarmhír: {ORANGE}{STRING} @@ -1342,6 +1344,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Tabhair rabhadh ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Má dhéantar é a chumasú, seoltar teachtaireacht nuachta más rud é nach ndearna feithicil brabús ar bith i mbliain féilire + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Ní imíonn feithiclí as dáta riamh: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Má dhéantar é a chumasú beidh gach cineál feithicle ar fáil go deo tar éis é a thabhairt isteach @@ -1647,7 +1650,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Eatramh seirbh STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Socraigh an t-eatramh seirbhísithe réamhshocraithe d'aerárthaigh nua, mura bhfuil eatramh seirbhísithe sainráite socraithe don fheithicil STR_CONFIG_SETTING_SERVINT_SHIPS :Eatramh seirbhíse réamhshocraithe do longa: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Socraigh an t-eatramh seirbhísithe réamhshocraithe do longa nua, mura bhfuil eatramh seirbhísithe sainráite socraithe don fheithicil -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}lá/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Díchumasaithe @@ -1930,17 +1934,8 @@ STR_CONFIG_SETTING_AI :Iomaitheoirí STR_CONFIG_SETTING_AI_NPC :Ríomh-imreoirí STR_CONFIG_SETTING_NETWORK :Líonra -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Aimsitheoir bealaigh do thraenacha: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :An t-aimsitheoir bealaigh a úsáidfear do thraenacha -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Aimsitheoir bealaigh d'fheithiclí bóthair: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :An t-aimsitheoir bealaigh a úsáidfear d'fheithiclí bóthair -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Aimsitheoir bealaigh do longa: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :An t-aimsitheoir bealaigh a úsáidfear do longa STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Aisiompú uathoibríoch ag comharthaí: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Ceadaigh do thraenacha aisiompú ag comhartha, más rud é go raibh siad ag fanacht ann píosa fada -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Molta) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Athraigh luach an tsocraithe @@ -2228,7 +2223,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Ag fáil STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Dínasc STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tá an freastalaí faoi chosaint. Iontráil pasfhocal -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Tá an chuideachta faoi chosaint. Iontráil pasfhocal # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Liosta na gcliant @@ -2275,13 +2269,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Trí ath STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Ciceáil STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Cuir cosc air STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Scrios -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Díghlasáil le pasfhocal STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Beart riaracháin STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}An bhfuil tú cinnte gur mhaith leat an t-imreoir '{STRING}' a chiceáil? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}An bhfuil tú cinnte gur mian leat cosc a chur ar an imreoir '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}An bhfuil tú cinnte gur mhaith leat an chuideachta '{COMPANY}' a scriosadh? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}An bhfuil tú cinnte gur mhaith leat pasfhocal na cuideachta '{COMPANY}' a athshocrú? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Úsáid athsheachadadh? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Níorbh fhéidir nasc a bhunú idir tú féin agus an freastaláí '{STRING}'.{}Ar mhaith leat an seisiún seo a athsheachadadh trí '{STRING}'? @@ -2292,19 +2284,9 @@ STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Tá, ná STR_NETWORK_SPECTATORS :Féachadóirí -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ná sábháil an pasfhocal a iontráladh -STR_COMPANY_PASSWORD_OK :{BLACK}Tabhair an pasfhocal nua don chuideachta -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Pasfhocal cuideachta -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Pasfhocal cuideachta réamhshocraithe -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Úsáid an pasfhocal cuideachta seo mar réamhshocrú do chuideachtaí nua - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Téigh isteach STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Téigh isteach agus bí ag imirt leis an gcuideachta seo -STR_COMPANY_VIEW_PASSWORD :{BLACK}Pasfhocal -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Cosain do chuideachta le pasfhocal le nach mbeidh úsáideoirí neamhúdaraithe in ann dul isteach. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Socraigh pasfhocal cuideachta # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Seol @@ -2348,7 +2330,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Níl d'a STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Seans gur cailleadh an nasc STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Le {NUM} {P sh sh s s s} ní bhfuarthas aon sonraí ón bhfreastalaí -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :earráid ghinearálta STR_NETWORK_ERROR_CLIENT_DESYNC :earráid dísioncronaithe STR_NETWORK_ERROR_CLIENT_SAVEGAME :níorbh fhéidir an léarscáil a lódáil @@ -2558,7 +2540,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Roghnaig # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Pointe bealaigh -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Roghnaigh an cineál pointe bealaigh # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Stáisiún Iarnróid a Thógáil @@ -2571,8 +2552,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Roghnaig STR_STATION_BUILD_DRAG_DROP :{BLACK}Tarraing & Scaoil STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Tóg stáisiún ag úsáid tarraing & scaoil -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Roghnaigh aicme stáisiúin le taispeáint -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Roghnaigh an cineál stáisiúin le tógáil + + + STR_STATION_CLASS_DFLT :Stáisiún réamhshocraithe STR_STATION_CLASS_WAYP :Pointí bealaigh @@ -2707,8 +2689,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Ceannaig # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Roghnú oibiachta -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Roghnaigh oibiacht le tógáil -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Roghnaigh aicme na hoibiachta le tógáil STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Réamhamharc ar an oibiacht STR_OBJECT_BUILD_SIZE :{BLACK}Méid: {GOLD}{NUM} x {NUM} tíl @@ -2821,7 +2801,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Úinéir STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Úinéir an iarnróid: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Údarás áitiúil: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ceann ar bith -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Comhordanáidí: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Tógtha: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Aicme an stáisiúin: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Cineál stáisiúin: {LTBLUE}{STRING} @@ -3116,9 +3095,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% c STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Domhan a chruthú STR_GENERATION_RIVER_GENERATION :{BLACK}Giniúint aibhneacha -STR_GENERATION_TREE_GENERATION :{BLACK}Crainn a chruthú -STR_GENERATION_OBJECT_GENERATION :{BLACK}Cruthú oibiachtaí STR_GENERATION_CLEARING_TILES :{BLACK}Limistear garbh agus carraigeach a chruthú +STR_GENERATION_OBJECT_GENERATION :{BLACK}Cruthú oibiachtaí +STR_GENERATION_TREE_GENERATION :{BLACK}Crainn a chruthú STR_GENERATION_SETTINGUP_GAME :{BLACK}Cluiche á chumrú STR_GENERATION_PREPARING_TILELOOP :{BLACK}Lúb tíleanna á rith STR_GENERATION_PREPARING_SCRIPT :{BLACK}Script reatha @@ -3208,7 +3187,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Cineál iarnró STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Athróg NewGRF paraiméadar 60+x (heicsidheachúil) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ag ailíniú sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}An chéad sprite eile STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Téigh chuig an chéad gnáth-sprite eile, ag scipeáil thar aon bhréag-sprite nó sprite athdhathaithe/clófhoirne agus ag timfhilleadh ag an deireadh STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Téigh chuig sprite @@ -3319,7 +3297,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gabh chu STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Iontráil ainm don chomhartha # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bailte STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ceann ar bith - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Cathair){BLACK} ({COMMA}) @@ -3610,7 +3587,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Tíleann STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aerfoirt # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Tionscail STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ceann ar bith - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} (Iompraíodh {COMMA}%){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4494,9 +4470,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ioncam M STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Fós ag sábháil,{}fan go mbeidh sé críochnaithe! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Theip ar uathshábháil STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ní féidir an tiomántán a léamh -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Theip ar Shábháil Cluiche{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ní féidir comhad a scriosadh -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Theip ar Lódáil Cluiche{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Earráid inmheánach: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Cluiche sábháilte briste - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Rinneadh an cluiche sábháilte le leagan níos nuaí @@ -4868,6 +4842,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Athraigh STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Níl aon fheithicil ar fáil fós STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Tosaigh cluiche nua ó {DATE_SHORT} ar aghaidh nó úsáid NewGRF lena gcuirtear feithiclí luath ar fáil + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ní féidir iallach a chur ar thraein dul thar comhartha agus contúirt ann... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ní féidir treo na traenach a aisiompú... @@ -5380,6 +5355,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 82e86f9e3f..ae41d280bf 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -310,7 +310,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Mostra a STR_BUTTON_DEFAULT :{BLACK}Predefinito STR_BUTTON_CANCEL :{BLACK}Annulla STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Attenzione: gli amministratori del server potrebbero leggere il testo inserito qui. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :\1234567890'ì qwertyuiopè+asdfghjklòàù? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Garums: {NUM} @@ -440,6 +439,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Pamest scenāri STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Iziet +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Izveidot pilsētas +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Novietojiet mājas + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Spēles opcijas @@ -623,14 +625,14 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Atspējot visu STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Rādīt visas kravas samaksu salīdzināšanas diagrammā STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Nerādīt nevienu kravu samaksu salīdzināšanas diagrammā -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Ieslēgt/izslēgt kravu veidu diagrammu +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Paslēgt kravas veida diagrammu STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Rādīt detalizētus uzņēmējdarbības vērtējumus # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Apzīmējumu atslēgas uzņēmumu diagrammās -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klikšķināt šeit, lai ieslēgtu/izslēgtu uzņēmuma attēlošanu diagrammā +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Pāslēgt uzņēmuma attēlošanu diagrammu # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Uzņēmumu rangu saraksts @@ -710,7 +712,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Izvēlē STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Izvēlēties programmu 'Ezy Ielas stila mūzika' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Izvēlēties programmu 'Pielāgotā 1' (lietotāja sastādīto) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Izvēlēties programmu 'Pielāgotā 2' (lietotāja sastādīto) -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Ieslēgt/izslēgt mūzikas saraksta jaukšanu +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Pārslēgt mūzikas saraksta jaukšanu STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Rādīt mūzikas celiņu atlases logu # Playlist window @@ -793,7 +795,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Tuksnesis STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sniegs -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Rādīt/nerādīt pilsētu nosaukumus uz kartes +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Rādīt pilsētu nosaukumus uz kartes STR_SMALLMAP_CENTER :{BLACK}Centrēt minikarti uz pašreizējo pozīciju STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -958,18 +960,14 @@ STR_GAME_OPTIONS_VOLUME :Skaļums STR_GAME_OPTIONS_SFX_VOLUME :Skaņas efekti STR_GAME_OPTIONS_MUSIC_VOLUME :Mūzika -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Naudas vienības STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Naudas vienību izvēle STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Lielbritānijas sterliņu mārciņas STR_GAME_OPTIONS_CURRENCY_USD :ASV dolāri STR_GAME_OPTIONS_CURRENCY_EUR :Eiro @@ -1013,6 +1011,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Indijas rūpija STR_GAME_OPTIONS_CURRENCY_IDR :Indonēzijas rūpija STR_GAME_OPTIONS_CURRENCY_MYR :Malaizijas Ringits STR_GAME_OPTIONS_CURRENCY_LVL :Latvijas lati +STR_GAME_OPTIONS_CURRENCY_PTE :Portugāles eskudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automātiskā saglabāšana STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izvēlēties spēles automātiskās saglabāšanas starplaikus @@ -1059,11 +1058,7 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Atzīmē STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fonti STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Atzīmējiet šo izvēli, ja vēlaties mainīt fontus ar anti-alias izmēru. -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatizēta aptauja STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Piedalieties automatizētā aptaujā @@ -1092,6 +1087,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Pamata m STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Atlasīt lietošanai pamata mūzikas kopu STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Papildinformācija par pamata mūzikas kopu +STR_GAME_OPTIONS_ONLINE_CONTENT :Iegūt saturu +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Pārbaudīt, jauna satura lejupielādi, vai atjauninājumu + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(nav instalētu spraudņu, ko integrēt ar sociālajām platformām) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1119,6 +1117,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Samazin STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Palielināt savas valūtas vienību daudzumu attiecībā pret vienu mārciņu (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Uzstādīt savas valūtas maiņas kursu pret vienu mārciņu (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Atdalītājs: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Iestatiet savas valūtas atdalītāju + STR_CURRENCY_PREFIX :{LTBLUE}Priedēklis: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Uzstādīt priedēkli savai valūtai STR_CURRENCY_SUFFIX :{LTBLUE}Piedēklis: {ORANGE}{STRING} @@ -1489,17 +1490,20 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Brīdināt, ja STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ja ieslēgts, tiks sūtīts ziņojums gadījumā kad transportlīdzeklis negūst nekādu peļņu kalendārā gada laikā STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Ja ieslēgts, tik nosūtīts ziņojums, ja transportlīdzeklis noteiktā periodā nav guvis peļņu +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Brīdināt, kad transportlīdzeklis noveco: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Kad iespējots, tiek nosūtīta ziņa, kad transportlīdzeklis noveco + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Transportlīdzekļi nekad "nemirst": {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kad ieslēgts, visi transportlīdzekļu modeļi pēc to ieviešanas vienmēr ir pieejami STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Laika uzskaite: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Izvēlieties spēles laika mērīšanas vienības. Vēlāk to nevar mainīt.{}{}Kalendāra pamatā ir klasiskā OpenTTD pieredze, kurā gads sastāv no 12 mēnešiem un katru mēnesi ir 28–31 diena.{}{}{}Uz sienas pulksteni balstītā laikā, transportlīdzekļu kustībā, kravu ražošana, un finanses ir balstītas uz vienas minūtes soli, kas ir aptuveni tikpat ilgs laiks, cik 30 dienu mēnesis aizņem kalendāra režīmā. Tie ir sagrupēti 12 minūšu periodos, kas ir līdzvērtīgi gadam kalendāra režīmā.{}{}{}Abos režīmos vienmēr ir klasisks kalendārs, kas tiek izmantots transportlīdzekļu, māju un citas infrastruktūras datu ievadīšanai. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Izvēlieties spēles laika mērīšanas vienības. Vēlāk to nevar mainīt.{}{}Kalendāra pamatā ir klasiskā OpenTTD pieredze, kurā gads sastāv no 12 mēnešiem un katrā mēnesī ir 28–31 diena.{}{}{}Uz sienas pulksteni balstītā laikā, kravu ražošanā un finanses tiek balstītas uz vienas minūtes soli, kas ir aptuveni tikpat ilgs laiks, cik 30 dienu mēnesis aizņem kalendāra režīmā. Tie ir sagrupēti 12 minūšu periodos, kas ir līdzvērtīgi gadam kalendāra režīmā.{}{}{}Abos no šiem režīmiem vienmēr ir klasisks kalendārs, kas tiek izmantots transportlīdzekļu, māju un citas infrastruktūras datu ievadīšanai. ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalendārs STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Sienas pulkstenis STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minūtes gadā: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Izvēlieties minūšu skaitu kalendārajā gadā. Noklusējums ir 12 minūtes. Iestatiet uz 0, lai apturētu kalendāra laika izmaiņas. Šis iestatījums neietekmē spēles ekonomisko simulāciju un ir pieejams tikai tad, ja tiek izmantots sienas pulksteņa laika mērijums +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Izvēlieties minūšu skaitu kalendārajā gadā. Noklusējums ir 12 minūtes. Iestatiet uz 0, lai apturētu kalendāra laika izmaiņas. Kalendārā gada garuma palielināšana bremzē transportlīdzekļu, māju un citas infrastruktūras ieviešanu. Tas neietekmē transportlīdzekļa ātrumu vai ekonomisko simulāciju, izņemot inflāciju. Šis iestatījums ir pieejams tikai tad, ja tiek izmantots pulksteņa režīms STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special @@ -1508,7 +1512,7 @@ STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (kalendāra l STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Mērogot pilsētas kravu ražošana: {STRING} STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Mērogojiet pilsētu kravu ražošanu par šo procentu. STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Merogot industrijas kravu ražošanu: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Mērogojiet nozaru kravu ražošanu par šo procentu. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Mērogojiet nozaru kravu ražošanu par šo procentu STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automātiski atjaunot transportlīdzekļus, kad tie ir kļuvuši veci: {STRING} @@ -1540,7 +1544,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Diagrammu līni STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Rādīt jauno NewGRF paplašinājumu nosaukumus uzbūvēto transportlīdzekļu logā: {STRING} STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Uzbūvēto transportlīdzekļu loga pievienot rindu, kurā būtu redzams, no kura NewGRF nāk izvēlētais transportlīdzeklis. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Rādīt kravas, ko transportlīdzekļi var pārvadāt saraksta logos {STRING} +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Rādīt kravas, ko transportlīdzekļi var pārvadāt saraksta logos: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Ja ieslēgts, transportlīdzekļa transportējamā krava parādīsies virs tās transportlīdzekļu sarakstos STR_CONFIG_SETTING_LANDSCAPE :Ainava: {STRING} @@ -1559,13 +1563,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industriju blī STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Iestatiet, cik industrijas jāģenerē un kāds līmenis jāuztur spēles laikā STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Naftas industriju maksimālais attālums no kartes malas: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limits, cik tālu no kartes malām drīkst taisīt naftas pārstrādes rūpnīcas un un naftas ieguves platformas. Uz salu kartēm tas nodrošina, ka šīs konstrukcijas tiek būvētas piekrastēs. Uz kartēm, kas ir lielākas par 256 lauciņiem šī vērtība tiek palielināta. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limits, cik tālu no kartes malām drīkst taisīt naftas pārstrādes rūpnīcas un un naftas ieguves platformas. Uz salu kartēm tas nodrošina, ka šīs konstrukcijas tiek būvētas piekrastēs. Uz kartēm, kas ir lielākas par 256 lauciņiem šī vērtība tiek palielināta STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sniega līnijas augstums: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Izvēlieties, kādā augstumā sākas sniegs subarktiskajā ainavā. Sniegs ietekmē arī nozares ražošanas un pilsētu izaugsmi. Var mainīt tikai, izmantojot scenāriju redaktoru, vai citādi aprēķināt, izmantojot "sniega segumu" STR_CONFIG_SETTING_SNOW_COVERAGE :Sniega pārklājums: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Izvēlieties aptuveno sniega daudzumu subarktiskajā ainavā. Sniegs ietekmē arī nozares ražošanas un pilsētu izaugsmei. Izmanto tikai kartes ģenerēšanas laikā. Uz jūras līmeņa un piekrastes abpagaliem nekad nav sniega. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Izvēlieties aptuveno sniega daudzumu subarktiskajā ainavā. Sniegs ietekmē nozares ražošanas un pilsētu izaugsmes prasības. Izmanto tikai kartes ģenerēšanas laikā. Uz jūras līmeņa un piekrastes lauciņiem nekad nav sniega STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Tuksneša pārklājums: {STRING} @@ -1573,7 +1577,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Izvēlieties ap STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Apvidus nelīdzenums: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Izvēlieties pauguru formu un skaitu. Gludās ainavās ir mazāk, bet platāku pauguru, savukārt nelīdzenās ainavās ir vairāk, mazāku kalnu. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Izvēlieties pauguru formu un skaitu. Gludās ainavās ir mazāk, bet platāku pauguru, savukārt nelīdzenās ainavās ir vairāk, mazāku kalnu ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Ļoti gluda STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Gluda @@ -1581,7 +1585,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Nelīdzena STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Ļoti nelīdzena STR_CONFIG_SETTING_VARIETY :Dažādības sadalījums: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Izvēlieties, vai kartē ir gan kalni, gan līdzenas vietas. Jo augstāka atšķirība, jo lielākas atšķirības kalnu un līdzenu apgabalu augstumā. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Izvēlieties, vai kartē ir gan kalni, gan līdzenas vietas. Jo augstāka atšķirība, jo lielākas atšķirības kalnu un līdzenu apgabalu augstumā STR_CONFIG_SETTING_RIVER_AMOUNT :Upju daudzums: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Izvēlieties, cik daudz upju ģenerēt @@ -1628,7 +1632,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :{G=f}tumši za STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :{G=f}violeta STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Kravas plūsmu pārklājuma krāsas: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Iestatiet kravas plūsmu pārklājumam izmantoto krāsu shēmu. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Iestatiet kravas plūsmas pārklājumam izmantoto krāsu shēmu ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Zaļš uz sarkanu (orģināli) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Zaļš uz zilu @@ -1820,7 +1824,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Cik daudz atmi STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Apkopju starplaiki procentos: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Ja tas ir ieslēgts, transportlīdzekļi mēģina veikt apkopi, kad to uzticamība samazinās par noteiktu procentuālo daļu no maksimālās uzticamības.{}{}Piemēram, ja transportlīdzekļa maksimālā uzticamība ir 90% un apkopes intervāls ir 20%, transportlīdzeklis mēģinās veikt apkopi, kad tas sasniedz 72% ticamību. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Ja tas ir ieslēgts, transportlīdzekļi mēģina veikt apkopi, kad to uzticamība samazinās par noteiktu procentuālo daļu no maksimālās uzticamības.{}{}Piemēram, ja transportlīdzekļa maksimālā uzticamība ir 90% un apkopes intervāls ir 20%, transportlīdzeklis mēģinās veikt apkopi, kad tas sasniedz 72% uzticamību STR_CONFIG_SETTING_SERVINT_TRAINS :Vilcienu apkopju noklusējuma starplaiks: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Izvēlēties jaunajiem sliežu transportlīdzekļiem apkopju noklusējuma starplaiku, ja tiem tas nav noteikts @@ -1830,7 +1834,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Lidaparātu apk STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Izvēlēties jauniem lidaparātiem apkopju noklusējuma starplaiku, ja transportlīdzeklim tas nav noteikts STR_CONFIG_SETTING_SERVINT_SHIPS :Kuģu apkopju noklusējuma starplaiks: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Izvēlēties jauniem kuģiem apkopju noklusējuma starplaiku, ja transportlīdzeklim tas nav noteikts -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dien{P 0 a as u}/Minūt{P 0 e es es}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Dien{P 0 a as nu} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minūt{P 0 e es es} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :izslēgts @@ -1838,7 +1846,7 @@ STR_CONFIG_SETTING_NOSERVICE :Aizliegt apkopi STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Ja ieslēgts, transportlīdzekļiem netiek veikta apkope. Jo tie nebojājas STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Iekraušanas ātruma sods vilcieniem, kas ir garāki par staciju: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Ja aktīs, vilcieni, kas ir pārāk gari stacijai, iekraujas lēnāk nekā vilcieni, kas atbilst stacijai. Šis iestatījums neietekmē ceļa meklēšanu. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Ja aktīvs, vilcieni, kas ir pārāk gari stacijai, iekraujas lēnāk nekā vilcieni, kas atbilst stacijas izmēram. Šis iestatījums neietekmē ceļa meklēšanu. STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ieslēgt vagonu ātruma ierobežojumus: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Ja ieslēgts, var izmantot vagonu ātruma ierobežojumus, lai lemtu par vilcienu maksimālo ātrumu @@ -1903,7 +1911,7 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Gads kad sāk d STR_CONFIG_SETTING_STARTING_YEAR :Sākuma gads: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Vērtēšanas beigu gads: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Spēles beigas gads (tiek izmantots rezultāta noteikšanai). Šī gada beigās uzņēmuma rezultāti tiek ierakstīti un uz ekrāna tiek parādīti labākie rezultāti, bet spēlētāji var turpināt spēlēt arī pēc šī datuma.{}Ja tas ir norādīts pirms spēles sākuma datuma, labākie rezultāti nekad netiek parādīti. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Spēles beigas gads (tiek izmantots rezultāta noteikšanai). Šī gada beigās uzņēmuma rezultāti tiek ierakstīti un uz ekrāna tiek parādīti labākie rezultāti, bet spēlētāji var turpināt spēlēt arī pēc šī datuma.{}Ja tas ir norādīts pirms spēles sākuma datuma, labākie rezultāti nekad netiek parādīti STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nekad @@ -1964,7 +1972,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :atļauta STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :atļauta, ar brīvi izvēlētu izkārtojumu STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Pilsētas kravu radīšana: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Cik daudz kravas rada pilsētu mājas, attiecībā pret kopējo pilsētas iedzīvotāju skaitu.{}Kvadrātisks pieaugums: divas reizes lielāka pilsēta rada četras reizes vairāk pasažieru.{}Lineārs pieaugums: divas reizes lielāka pilsēta rada divas reizes vairāk pasažieru. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Cik daudz kravas rada pilsētu mājas, attiecībā pret kopējo pilsētas iedzīvotāju skaitu.{}Kvadrātisks pieaugums: divas reizes lielāka pilsēta rada četras reizes vairāk pasažieru.{}Lineārs pieaugums: divas reizes lielāka pilsēta rada divas reizes vairāk pasažieru ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Kvadrātisks (sākotnējais) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineārs @@ -2005,7 +2013,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Izmantojamie augstākās izšķirtspējas spriti: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Ierobežojiet sprites maksimālo izšķirtspēju. Ierobežojot sprite izšķirtspēju, netiks izmantota augstas izšķirtspējas grafika, pat ja tā ir pieejama. Tas var palīdzēt saglabāt spēles vienotu izskatu, izmantojot GRF failu kombināciju ar augstas izšķirtspējas grafiku un bez tās. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Ierobežojiet sprites maksimālo izšķirtspēju. Ierobežojot sprite izšķirtspēju, netiks izmantota augstas izšķirtspējas grafika, pat ja tā ir pieejama. Tas var palīdzēt saglabāt spēles vienotu izskatu, izmantojot GRF failu kombināciju ar augstas izšķirtspējas grafiku un bez tās ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2038,7 +2046,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simetrisks" no STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Pasta izplatīšanas režīms: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simetrisks" nozīmē, ka no stacijas A uz staciju B tiks nosūtīts aptuveni tāds pats pasta daudzums kā no B uz A. "Asimetrisks" nozīmē, ka jebkurā virzienā var nosūtīt patvaļīgu pasta daudzumu. "Manuāli" nozīmē, ka pasta automātiska izplatīšana netiks veikta. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Izplatīšanas režīms APSARGĀJAMAI preču klasei: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :APSARGĀJAMĀ kravu klasē ir vērtslietas mērenā klimatā, dimanti subtropu klimatā vai zelts subarktiskajā klimatā. NewGRF to var mainīt. "Simetrisks" nozīmē, ka no stacijas A uz staciju B tiks nosūtīts aptuveni tāds pats šīs kravas daudzums kā no B uz A. "Asimetrisks" nozīmē, ka šīs kravas var nosūtīt jebkurā virzienā patvaļīgi. "Manuāli" nozīmē, ka šai kravai automātiskā sadale nenotiks. Spēlējot subarktisko vai subtropu, ieteicams to iestatīt uz asimetrisku vai manuālu, jo bankas saņem kravas tikai šādos klimatiskajos apstākļos. Mērenam klimatam varat izvēlēties arī simetrisko, jo bankas nosūtīs vērtslietas atpakaļ uz izcelsmes banku. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :APSARGĀJAMĀ kravu klasē ir vērtslietas mērenā klimatā, dimanti subtropu klimatā vai zelts subarktiskajā klimatā. NewGRF to var mainīt. "Simetrisks" nozīmē, ka no stacijas A uz staciju B tiks nosūtīts aptuveni tāds pats šīs kravas daudzums kā no B uz A. "Asimetrisks" nozīmē, ka šīs kravas var nosūtīt jebkurā virzienā patvaļīgi. "Manuāli" nozīmē, ka šai kravai automātiskā sadale nenotiks. Spēlējot subarktisko vai subtropu, ieteicams to iestatīt uz asimetrisku vai manuālu, jo bankas saņem kravas tikai šādos klimatiskajos apstākļos. Mērenam klimatam varat izvēlēties arī simetrisko, jo bankas nosūtīs vērtslietas atpakaļ uz izcelsmes banku STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Izplatīšanas modelis citām kravu klasēm: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimetrisks" nozīmē, ka jebkurā virzienā var nosūtīt patvaļīgu daudzumu kravas. "Manuāli" nozīmē, ka šīm kravām automātiska sadale nenotiks ###length 3 @@ -2050,12 +2058,12 @@ STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Sadales precizi STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Jo lielāku vērtību iestatīsiet, jo vairāk CPU laika aizies saišu grafa aprēķināšanai. Ja tas aizņem pārāk daudz laika, jūs varētu pamanīt spēles iebremzēšanos. Ja iestatīsiet pārāk mazu, izplatīšana būs neprecīza un jūs varētu pamanīt, ka krava tiek nosūtīta uz negaidītām vietām. STR_CONFIG_SETTING_DEMAND_DISTANCE :Attāluma ietekme uz pieprasījumu: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ja iestatīsiet šo vērtību lielāku kā 0, attālums starp kravas izcelsmes staciju A un iespējamo galastaciju B ietekmēs sūtāmās kravas apjomu. Jo tālāk no stacijas A ir stacija B, jo mazāk kravas tiks nosūtīts. Jo augstāka vērtība, jo mazāk kravas tiks nosūtīts uz tālo staciju un vairāk kravu uz tuvo staciju. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ja iestatīsiet šo vērtību lielāku kā 0, attālums starp kravas izcelsmes staciju A un iespējamo galastaciju B ietekmēs sūtāmās kravas apjomu. Jo tālāk no stacijas A ir stacija B, jo mazāk kravas tiks nosūtīts. Jo augstāka vērtība, jo mazāk kravas tiks nosūtīts uz tālo staciju un vairāk kravu uz tuvāku staciju. STR_CONFIG_SETTING_DEMAND_SIZE :Atpakaļceļa kravas daudzums simetriskajā režīmā: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Uzstādod šo mazāk par 100% liks simetriskajai sadalei izturēties vairāk kā asimetriskajai. Mazāk kravas ar varu tiks sūtīts atpakaļ ja noteikts daudzums tiks sūtīts uz piestātni. Ja jūs uzstādīsiet to uz 0% simetriskā sadale izturēsies tā pat kā asimetriskā. STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Īso ceļu piesātinājums pirms sākt izmantot augstas ietilpības ceļus: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Nereti starp divām stacijām ir vairāki ceļi. Kravu sadale vispirms piesātinās īsāko maršrutu, pēc tam izmantos nākamo īsāko maršrutu līdz tas būs piesātināts, un tā tālāk. Piesātinājumu nosaka novērtējot ietilpību un plānoto izmantojumu. Kad visi ceļi ir piesātināti un vēl ir palicis pieprasījumus, tas pārslogos visus ceļus, dodot priekšroku ceļiem ar lielāko ietilpību. Algoritms visbiežāk nepareizi novērtēs ietilpību. Šis iestatījums jums atļaus norādīt, līdz cik procentiem īsākais ceļš ir jāpiesātina pirmajā piegājienā pirms izvēlēties garāku ceļu. Iestatiet to uz mazāk kā 100%, lai izvairītos no pārpildītām stacijām, ja kapacitāte ir pārvērtēta. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Bieži starp divām noteiktām stacijām ir vairāki ceļi. Cargodist vispirms piesātinās īsāko ceļu, pēc tam izmantos otro īsāko ceļu, līdz tas ir piesātināts un tā tālāk. Piesātinājumu nosaka jaudas un plānotā lietojuma novērtējums. Kad tas būs piesātināts ar visiem ceļiem, ja joprojām būs pieprasījums, tas pārslogos visus ceļus, dodot priekšroku tiem, kuriem ir liela ietilpība. Tomēr lielāko daļu laika algoritms precīzi nenovērtēs jaudu. Šis iestatījums ļauj norādīt, cik procentus īsākam ceļam jābūt piesātinātam pirmajā piegājienā, pirms tiek izvēlēts nākamais garākais ceļš. Iestatiet to uz mazāku par 100%, lai izvairītos no pārpildītām stacijām pārmērīgas jaudas gadījumā STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Ātruma vienības (sauszemes): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Ātruma vienības (jūras): {STRING} @@ -2132,17 +2140,8 @@ STR_CONFIG_SETTING_AI :Sāncenši STR_CONFIG_SETTING_AI_NPC :Nespēlētāju tēli (datora vadīti) STR_CONFIG_SETTING_NETWORK :Tīkls -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Vilcienu ceļa meklētājs: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Vilcieniem pielietotais ceļa meklētājs -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Autotransporta līdzekļu ceļa meklētājs: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Autotransporta līdzekļiem pielietotais ceļa meklētājs -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Kuģu ceļa meklētājs: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Kuģiem pielietotais ceļa meklētājs STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automātiska apgriešanās pie luksoforiem: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Atļauj vilcieniem apgriezties pie signālierīcēm, ja tie te ir gaidījuši ilgu laiku -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(ieteicamais) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Mainīt iestatījuma vērtību @@ -2461,7 +2460,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Pieņem STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Atvienoties STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serveris ir aizsargāts. Ievadiet paroli -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Uzņēmums ir aizsargāts. Ievadiet paroli # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Spēlētāji tiešsaistē @@ -2488,6 +2486,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Jūsu spēlēt STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK} Administratīvās darbības, kas jāveic šim klientam STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Administratīvās darbības, kuras jāveic šai kompānijai STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Pievienoties šai kompānijai +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Ļaut šim spēlētājam pievienoties jūsu uzņēmumam STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Sūtīt ziņu šim spēlētājam STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Sūtīt ziņu visiem šīs kompānijas spēlētājiem STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Sūtīt ziņu visiem skatītājiem @@ -2510,13 +2509,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Caur rel STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Izmest STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Bloķēt STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Dzēst -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Paroles atbloķēšana STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Administratīvās darbības STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Vai esat pārliecināts, ka vēlaties atslēgt spēlētāju '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Vai tiešām vēlaties bloķēt šo spēlētāju '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Vai tiešām vēlaties dzēst kompāniju '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Vai esat pārliecināts, ka vēlaties atiestatīt paroli komānijai '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Izmantot translāciju? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW} Neizdevās izveidot savienojumu starp jums un serveri “{STRING}”.{} Vai vēlaties pārraidīt šo sesiju, izmantojot “{STRING}”? @@ -2533,19 +2530,9 @@ STR_NETWORK_ASK_SURVEY_YES :Jā STR_NETWORK_SPECTATORS :Novērotāji -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nesaglabāt ievadīto paroli -STR_COMPANY_PASSWORD_OK :{BLACK}Piešķirt uzņēmumam jaunu paroli -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Uzņēmuma parole -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Uzņēmuma noklusējuma parole -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Izmantot šo paroli kā noklusējuma jauniem uzņēmumiem - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Pievienoties STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pievienoties un spēlēt ar šo uzņēmumu -STR_COMPANY_VIEW_PASSWORD :{BLACK}Parole -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Aizsargājiet savu uzņēmumu ar paroli, lai novērstu neatļautu lietotāju pievienošanos -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Iestatīt uzņēmuma paroli # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Sūtīt @@ -2574,6 +2561,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE} Jūsu s STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE} Jūsu servera nosaukums nav iestatīts. Nosaukumu var iestatīt vairākspēlētāju loga augšdaļā STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Klienta pārskats neatbilst servera pārskatam STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Nepareiza parole +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Jūs neesat atļauto klientu sarakstā STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Serveris ir pilns STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Šajā serverī jums ir aizliegums STR_NETWORK_ERROR_KICKED :{WHITE}Jūs esat izmests no šīs spēles @@ -2589,7 +2577,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Jūsu sp STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Iespējams savienojuma zudums STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Nav datu no servera jau {NUM} sekund{P i es ""} -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :galvenā kļūda STR_NETWORK_ERROR_CLIENT_DESYNC :asinhronizācijas kļūda STR_NETWORK_ERROR_CLIENT_SAVEGAME :nevar ielādēt karti @@ -2601,6 +2589,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :saņemta neder STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :nepareiza versija STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :šo vārdu jau lieto STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :nepareiza parole +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :nav atļauto sarakstā STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :VeiktKomandā nepareizs uzņēmums STR_NETWORK_ERROR_CLIENT_KICKED :serveris jūs izmeta STR_NETWORK_ERROR_CLIENT_CHEATER :mēģināja blēdīties @@ -2787,7 +2776,7 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magleva būvē STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Būvēt sliedes. Ctrl pārslēdz sliežu būvniecību/nojaukšanu. Shift parāda novērtētās izmaksas, neveicot būvēšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Būvēt dzelzceļu, izmantojot automātisko sliežu režīmu. Ctrl+klikšķis pārslēdz sliežu būvniecību/demolēšanu. Shift parāda novērtētās izmaksas, neveicot būvēšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Būvēt vilcienu depo (vilcienu pirkšanai un apkopei). Shift parāda novērtētās izmaksas, neveicot būvēšanu -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Izveidojiet ceļa punktu uz dzelzceļa. Ctrl ļauj pievienot vairākus pieturas punktus. Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Izveidot ceļa punktu uz dzelzceļa. Ctrl ļauj pievienot vairākus pieturas punktus. Shift parāda novērtētās izmaksas, neveicot būvēšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Būvēt dzelzceļa staciju. Ctrl+klikšķis iespējo staciju apvienošanu. Shift parāda izmaksas, neveicot būvēšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Būvējiet signālu uz dzelzceļa. Ctrl+klikšķis, lai izveidotu alternatīvu signāla stilu{}Velciet, lai atlasīto sliedes posmu aizpildītu ar signāliem izvēlētajā atstatumā. Velciet Ctrl+klikšķis, lai aizpildītu signālus līdz nākamajam krustojumam, stacijai vai signālam. Shift parāda izmaksas, neveicot būvēšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Būvēt dzelzceļa tiltu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu @@ -2806,7 +2795,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Izvēlē # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Pieturas punkts -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Izvēlēties pieturas punkta veidu # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Dzelzceļa stacijas izvēle @@ -2819,8 +2807,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Izvēlē STR_STATION_BUILD_DRAG_DROP :{BLACK}Vilkt un nomest STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Būvēt staciju izmantojot "vilkt un nomest" -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Izvēlēties kuru stacijas klasi rādīt -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Izvēlēties kuru stacijas veidu būvēt +STR_PICKER_MODE_ALL :Visi +STR_PICKER_MODE_ALL_TOOLTIP :Pārslēgt visu klašu vienumu rādīšanu +STR_PICKER_MODE_USED :Lietots +STR_PICKER_MODE_USED_TOOLTIP :Pārslēgt tikai esošo vienumu rādīšanu +STR_PICKER_MODE_SAVED :Saglabāts +STR_PICKER_MODE_SAVED_TOOLTIP :Pārslēgt tikai saglabāto vienumu rādīšanu + +STR_PICKER_STATION_CLASS_TOOLTIP :Izvēlieties rādāmo staciju klasi +STR_PICKER_STATION_TYPE_TOOLTIP :Izvēlieties izveidojamās stacijas veidu. Ctrl+klikšķis, lai pievienotu vai noņemtu saglabātos vienumus +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Izvēlieties rādāmo pieturas punkta klasi +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Izvēlieties ceļa punktu, ko veidot. Ctrl+klikšķis, lai pievienotu vai noņemtu saglabātos vienumus +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Izvēlieties parādāmās autoostas klasi +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Izvēlieties būvējamās autoostas veidu. Ctrl+klikšķis, lai pievienotu vai noņemtu saglabātos vienumus +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Izvēlieties parādāmās kravas automašīnas stacijas klasi +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Izvēlieties būvējamās kravas stacijas veidu. Ctrl+klikšķis, lai pievienotu vai noņemtu saglabātos vienumus +STR_PICKER_OBJECT_CLASS_TOOLTIP :Atlasiet rādāmo objekta klasi +STR_PICKER_OBJECT_TYPE_TOOLTIP :Atlasiet veidojamā objekta veidu. Ctrl+klikšķis, lai pievienotu vai noņemtu saglabātos vienumus. Vilkt Ctrl+klikšķis, lai atlasītu apgabalu pa diagonāli. Nospiediet arī taustiņu Shift, lai rādītu tikai izmaksu tāmi, neveicot iegādi +STR_PICKER_HOUSE_CLASS_TOOLTIP :Atlasiet pilsētas zonu, ko parādīt +STR_PICKER_HOUSE_TYPE_TOOLTIP :Izvēlieties būvējamās mājas veidu. Ctrl+klikšķis, lai pievienotu vai noņemtu saglabātos vienumus + +STR_HOUSE_PICKER_CAPTION :Māju izvēle + +STR_HOUSE_PICKER_CLASS_ZONE1 :Mala +STR_HOUSE_PICKER_CLASS_ZONE2 :Nomale +STR_HOUSE_PICKER_CLASS_ZONE3 :Ārējās priekšpilsētas +STR_HOUSE_PICKER_CLASS_ZONE4 :Iekšējās priekšpilsētas +STR_HOUSE_PICKER_CLASS_ZONE5 :Pilsētas centrs STR_STATION_CLASS_DFLT :Noklusējuma STR_STATION_CLASS_DFLT_STATION :Noklusējuma stacija @@ -2875,6 +2888,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Būvēt STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Būvēt tramvaju sliedes izmantojot automātisko paņēmienu. Ctrl+klikšķis pārslēdz tramvaju sliežu būvēšanu/nojaukšanu. Shift parāda novērtētās izmaksas, neveicot būvēšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Būvēt autotransporta depo (autotransporta līdzekļu pirkšanai un apkopei). Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Būvēt tramvaju depo (tramvaju pirkšanai un apkopei). Shift parāda izmaksas, neveicot būvēšanu +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Izveidot pieturas punktu uz ceļa. Ctrl+klikšķis, lai atlasītu citu ceļa punktu, kuram pievienoties. Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Izveidot pieturas punktu uz tramvaja ceļa. Ctrl+klikšķis, lai atlasītu citu ceļa punktu, kuram pievienoties. Shift parāda novērtētās izmaksas, neveicot būvēšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Būvēt autobusu pieturvietu. Ctrl+klikšķis ieslēdz pieturvietu apvienošanu. Shift+klikšķis parāda izmaksas, neveicot būvēšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Būvēt pasažieru tramvaju staciju. Ctrl+klikšķis, lai atlasītu citu staciju, kurai pievienoties. Nospiediet taustiņu Shift, lai rādītu izmaksu tāmi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Būvēt kravas automašīnu staciju. Ctrl+klikšķis iespējo staciju apvienošanu. Shift parāda izmaksas, neveicot būvēšanu @@ -2963,8 +2978,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Iegādā # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektu izvēle -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Izvēlēlaties buvējamo objektu. Ctrl atlasa apgabalu pa diagonāli. Shift parāda novērtētās izmaksas, neveicot būvēšanu -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Izvēlēties būvējamā objekta klasi STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objekta priekšskatījums STR_OBJECT_BUILD_SIZE :{BLACK}Izmērs: {GOLD}{NUM} x {NUM} lauciņi @@ -2979,11 +2992,11 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Novietoj STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Nejauši koki STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Stādīt nejaušus kokus visā ainavā STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normāls -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Stādiet atsevišķus kokus, velkot pāri ainavai. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Stādiet atsevišķus kokus, velkot pāri ainavai STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Birze -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Stādiet mazus mežus, velkot pāri ainavai. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Stādiet nelielus mežus, velkot pāri ainavai. STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Mežs -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Stādiet lielos mežus, velkot pāri ainavai. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Stādiet lielus mežus, velkot pāri ainavai # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Zemes radīšana @@ -3080,7 +3093,8 @@ STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dzelzce STR_LAND_AREA_INFORMATION_RAIL_OWNER.kas :{BLACK}Dzelzceļa īpašniece: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Pašvaldība: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neviena -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinātes: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinātes: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Lauciņa rādītājs: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Buvēts/atjaunots: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stacijas klase: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stacijas tips: {LTBLUE}{STRING} @@ -3198,7 +3212,7 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Kadru nomaiņas ātrums STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Simulācijas ātrums: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Spēles tikšķu skaits, ko simulēt vienā sekundē. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Spēles tikšķu skaits, ko simulēt vienā sekundē STR_FRAMERATE_RATE_BLITTER :{BLACK}Grafikas kadru ātrums: {STRING} STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Sekundē renderēto video kadru skaits. STR_FRAMERATE_SPEED_FACTOR :{BLACK}Pašreizējās spēles ātruma pakāpe: {DECIMAL}× @@ -3391,10 +3405,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vai jū STR_GENERATION_PROGRESS :{WHITE}{NUM}% pabeigti STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Pasaules radīšana +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Ainavu veidošana STR_GENERATION_RIVER_GENERATION :{BLACK}Upes radīšana -STR_GENERATION_TREE_GENERATION :{BLACK}Koka radīšana -STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekta radīšana STR_GENERATION_CLEARING_TILES :{BLACK}Nelīdzena un akmeņaina apvidus radīšana +STR_GENERATION_TOWN_GENERATION :{BLACK}Pilsētas veidošana +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Nozares veidošana +STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekta radīšana +STR_GENERATION_TREE_GENERATION :{BLACK}Koka radīšana STR_GENERATION_SETTINGUP_GAME :{BLACK}Iestatīt spēli STR_GENERATION_PREPARING_TILELOOP :{BLACK}Skrejošs nosaukums STR_GENERATION_PREPARING_SCRIPT :{BLACK}Strādājošs skripts @@ -3486,7 +3503,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Ceļa tips STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF mainīgā 60+x parametrs (heksadecimāls) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Gariņa līdzināšana {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Gariņu izlīdzināšana: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Gariņu izlīdzināšana: Darbība 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Gariņu izlīdzināšana: Darbība 0x5, tips {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nākamais gariņš STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Pāriet uz nākamo parasto gariņu, izlaižot visus pseido/pārkrāsotos/fonta gariņus STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Iet pie gariņa @@ -3495,6 +3514,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Iepriek STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Iet pie iepriekšējā parastā gariņa, izlaižot visus pseido/pārkrāsotos/fonta gariņus STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Atlasītā gariņa attēlojums. To attēlojot, izkārtojums netiek ievērots STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pārvietot gariņu, lai mainītu X un Y vērtības. Ctrl+klikšķis, lai vienā piegājienā pārvietotu gariņu par astoņām vienībām +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Nobīde centrēta @@ -3605,7 +3625,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Doties u STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Ievadīt zīmes nosaukumu # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Pilsētas +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Pilsētas ({COMMA} no {COMMA}) STR_TOWN_DIRECTORY_NONE :{G=m}{ORANGE}- Neviens - STR_TOWN_DIRECTORY_NONE.kas :{ORANGE}- Neviena - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) @@ -3736,7 +3756,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globāl STR_STORY_BOOK_SPECTATOR :Globālā stāstu grāmata STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :{NUM} lapa -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Pārlēkt uz specifisku lapu spiežot to zemāk esošajā sarakstā. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Pārlēkt uz konkrētu lapu spiežot to zemāk esošajā sarakstā STR_STORY_BOOK_PREV_PAGE :{BLACK}Iepriekšējā STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Doties uz iepriekšējo lapu STR_STORY_BOOK_NEXT_PAGE :{BLACK}Nākamā @@ -3942,7 +3962,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/periods # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Ražotnes +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Ražotnes ({COMMA} no {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{G=m}{ORANGE}- Neviens - STR_INDUSTRY_DIRECTORY_NONE.kas :{ORANGE}- Neviena - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} (pārvadāti {COMMA}%){BLACK} @@ -4032,12 +4052,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Negrupēti lida STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupas - klikšķināt uz grupas, lai iegūtu tās transportlīdzekļu sarakstu +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupas — klikšināt uz grupas, lai rādītu visus šīs grupas transportlīdzekļus. Vilkt un palaist grupas, lai sakārtotu hierarhiju STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikšķināt, lai izveidotu grupu STR_GROUP_DELETE_TOOLTIP :{BLACK}Dzēst izvēlēto grupu STR_GROUP_RENAME_TOOLTIP :{BLACK}Pārdēvēt izvēlēto grupu STR_GROUP_LIVERY_TOOLTIP :{BLACK}Mainīt izvēlētās grupas krāsu -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK} Noklikšķiniet, lai aizsargātu šo grupu no globālās automātiskās aizstāšanas. Ctrl+Noklikšķiniet, lai aizsargātu arī apakšgrupas. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK} Klikšiniet, lai aizsargātu šo grupu no globālās automātiskās aizstāšanas. Ctrl+klikšķis, lai aizsargātu arī apakšgrupas STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Grupas dzēšana STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Vai tiešām vēlaties dzēst šo grupu un tās atvases (ja ir)? @@ -4453,7 +4473,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ietilpī STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Pārvadājumu ieņēmumi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}{NBSP}dienas{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}{NBSP}minūtes{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}{NBSP}minūte{P s es ""}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Pēdējā apkalpošana: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Pēdējā apkope: pirms {LTBLUE}{NUM} minūtēm @@ -4851,8 +4871,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spēles skripts STR_AI_SETTINGS_CLOSE :{BLACK}Aizvērt STR_AI_SETTINGS_RESET :{BLACK}Atiestatīt STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4905,9 +4923,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Plānoti STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Notiek saglabāšana,{}lLūdzu uzgaidiet! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automātiskā saglabāšana neizdevās STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nevar lasīt disku -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spēles saglabāšana neizdevās{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spēles saglabāšana neizdevās... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nevar dzēst failu -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Spēles ielādēšana neizdevās{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Spēles ielāde neizdevās... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Iekšēja kļūda: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bojāts saglabātās spēles fails - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spēle ir saglabāta ar jaunāku versiju @@ -5001,7 +5019,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nevar no STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nevar uzbūvēt uzņēmuma biroju... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nevar būvēt pilsētas +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nevar būvēt pilsētas... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Nevar pārdēvēt pilsētu... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Šeit nevar būvēt jaunu pilsētu... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Nevar paplašināt pilsētu... @@ -5012,6 +5030,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... uz k STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Notiek ceļa remonts STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Šo pilsētu nevar dzēst...{}Kāda stacija vai depo attiecas uz pilsētu. Vai pilsētai pieder nenoņemams lauciņš STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... šās pilsētas centrā statujai nav piemērotas vietas +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Nevar uzcelt māju... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... pārāk daudz ražotņu @@ -5049,6 +5068,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Šeit ne STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Blakus atrodas vairāk nekā viena stacija/iekraušanas zona STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stacija ir pārāk izplesta +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... neatbalstīts sliežu skaits +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... neatbalstīts garums STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Pārāk daudz staciju/iekraušanas zonu STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Pārāk daudz dzelzceļa stacijas daļu STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Pārāk daudz autobusu pieturvietu @@ -5084,11 +5105,14 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Blakus a STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Pārāk tuvu citam pieturas punktam STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Šeit nevar uzbūvēt vilcienu pieturas punktu... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Šeit nevar izveidot ceļa pieturas punktu... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Šeit nevar novietot boju... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nevar pārdēvēt pieturas punktu... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Seit nevar noņemt vilcienu pieturas punktu... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Šeit nevar noņemt ceļa pieturas punktu... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Vispirms ir jānoņem dzelzceļa pieturas punktu +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Vispirms ir jānoņem ceļa pieturas punkts STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... ceļā boja STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boju jau izmanto cits uzņēmums! @@ -5289,6 +5313,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Mainiet STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Transportlīdzekļi vēl nav pieejami STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Sākt jaunu spēli pēc {DATE_SHORT} vai izmantot NewGRF, kas nodrošina agrīnus transporta līdzekļus +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Pilsētā būvējami ceļu veidi nav pieejami +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Mainiet savu NewGRF konfigurāciju +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Pagaidām nav pieejami pilsētā būvējamie ceļu veidi +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Sāciet jaunu spēli pēc {DATE_SHORT} vai izmantojiet NewGRF, kas nodrošina agrīnus pilsētu būvējamus ceļu veidus + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Vilciens nevar šķērsot signālu briesmās... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Vilcienu nevar apgriezt... @@ -5331,6 +5360,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Nav piet STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Šī lidmašīna nevar nolaisties šajā helikopteru lidlaukā STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Šis helikopters nevar nolaisties šajā lidostā STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Nav dzelzceļa pieturas punkta +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Nav ceļa pieturas punkta STR_ERROR_NO_BUOY :{WHITE}Bojas nav # Timetable related errors @@ -5818,6 +5848,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}tūkst. +STR_CURRENCY_SHORT_MEGA :{NBSP}milj. +STR_CURRENCY_SHORT_GIGA :{NBSP}mljrd. +STR_CURRENCY_SHORT_TERA :{NBSP}trlj. + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5834,6 +5869,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 97f7f64e46..466829ba00 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -385,23 +385,46 @@ STR_COLOUR_WHITE :Balta STR_COLOUR_RANDOM :Atsitiktinė ###length 17 +STR_COLOUR_SECONDARY_DARK_BLUE :Tamsiai mėlynas/-a +STR_COLOUR_SECONDARY_PALE_GREEN :Pilkšvai žalias/-a +STR_COLOUR_SECONDARY_SECONDARY_PINK :Rausvas/-a +STR_COLOUR_SECONDARY_YELLOW :Geltonas/-a +STR_COLOUR_SECONDARY_RED :Raudonas/-a +STR_COLOUR_SECONDARY_LIGHT_BLUE :Šviesiai mėlynas/-a +STR_COLOUR_SECONDARY_GREEN :Žalias/-a +STR_COLOUR_SECONDARY_DARK_GREEN :Tamsiai žalias/-a +STR_COLOUR_SECONDARY_BLUE :Mėlynas/-a +STR_COLOUR_SECONDARY_CREAM :Kremas +STR_COLOUR_SECONDARY_MAUVE :Pilkšvai mėlyna +STR_COLOUR_SECONDARY_PURPLE :Violetinis/-ė +STR_COLOUR_SECONDARY_ORANGE :Oranžinis/-ė +STR_COLOUR_SECONDARY_BROWN :Rudas/-a +STR_COLOUR_SECONDARY_GREY :Pilkas/-a +STR_COLOUR_SECONDARY_WHITE :Baltas/-a +STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Tokia pati kaip ir pradinė # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP}mph STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}km/h STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}m/s +STR_UNITS_VELOCITY_GAMEUNITS_DAY :{DECIMAL}{NBSP}langelių per dieną +STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}langelių per sekundę +STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}mazgai STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}AG STR_UNITS_POWER_METRIC :{DECIMAL}{NBSP}AG STR_UNITS_POWER_SI :{DECIMAL}{NBSP}kW +STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}ag/t STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}ag/t STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_SI :{DECIMAL}{NBSP}hp/Mg STR_UNITS_POWER_METRIC_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}ag/t STR_UNITS_POWER_METRIC_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}ag/t STR_UNITS_POWER_METRIC_TO_WEIGHT_SI :{DECIMAL}{NBSP}ag/Mg +STR_UNITS_POWER_SI_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}kW/t STR_UNITS_POWER_SI_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}kW/t +STR_UNITS_POWER_SI_TO_WEIGHT_SI :{DECIMAL}{NBSP}W/kg STR_UNITS_WEIGHT_SHORT_IMPERIAL :{DECIMAL}{NBSP}t STR_UNITS_WEIGHT_SHORT_METRIC :{DECIMAL}{NBSP}t @@ -432,9 +455,9 @@ STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP} # Common window strings -STR_LIST_FILTER_TITLE :{BLACK}Raktažodis: -STR_LIST_FILTER_OSKTITLE :{BLACK}Įveskite filtro raktažodį -STR_LIST_FILTER_TOOLTIP :{BLACK}Įveskite raktažodį sąrašui filtruoti +STR_LIST_FILTER_TITLE :{BLACK}Filtras: +STR_LIST_FILTER_OSKTITLE :{BLACK}Įveskite vieną ar daugiau raktažodžių sąrašui filtruoti +STR_LIST_FILTER_TOOLTIP :{BLACK}Įveskite vieną ar daugiau raktažodžių sąrašui filtruoti STR_TOOLTIP_GROUP_ORDER :{BLACK}Pasirinkti grupavimo tvarką STR_TOOLTIP_SORT_ORDER :{BLACK}Rikiavimo tvarka (didėjančiai/mažėjančiai) @@ -454,7 +477,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Tempkite STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Pakeisti lango matmenis STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Stačioji slankjuostė — paslenka sąrašą aukštyn ar žemyn STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Gulščioji slakjuostė — paslenka sąrašą kairėn ar dešinėn -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nugriauti pastatus, bėgius ar kitus objektus pasirinktame žemės plote. Velkant laikant nuspaudus Ctrl klavišą, plotas bus žymimas įstrižai. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nugriauti pastatus, bėgius ar kitus objektus pasirinktame žemės plote. Velkant laikant nuspaudus Ctrl klavišą, plotas bus žymimas įstrižai. Taip pat spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos # Show engines button ###length VEHICLE_TYPES @@ -473,7 +496,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Įjungus STR_BUTTON_DEFAULT :{BLACK}Numatytas STR_BUTTON_CANCEL :{BLACK}Atšaukti STR_BUTTON_OK :{BLACK}Gerai -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Perspėjimas: serverio administratoriai gali pamatyti tekstą, kurį čia įvesite # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -496,7 +518,9 @@ STR_SORT_BY_TYPE :tipą STR_SORT_BY_TRANSPORTED :pervežimus STR_SORT_BY_NUMBER :kiekį STR_SORT_BY_PROFIT_LAST_YEAR :pernykštį pelną +STR_SORT_BY_PROFIT_LAST_PERIOD :Pelnas paskutinį laikotarpį STR_SORT_BY_PROFIT_THIS_YEAR :šiųmetį pelną +STR_SORT_BY_PROFIT_THIS_PERIOD :Šių metų pelnas STR_SORT_BY_AGE :amžių STR_SORT_BY_RELIABILITY :patikimumą STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :bendrą talpą @@ -524,44 +548,49 @@ STR_SORT_BY_POPULATION :populiaciją STR_SORT_BY_RATING :reitingą STR_SORT_BY_NUM_VEHICLES :transporto priemonių skaičių STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :bendrąjį pernykštį pelną +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Bendras pernykštis pelnas STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :bendrąjį šiųmetį pelną +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Visas šių metų pelnas STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :vidutinį pernykšį pelną +STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Pernykštis vidutinis pelnas STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :vidutinį šiųmetį pelną +STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Vidutinis šių metų pelnas # Group by options for vehicle list STR_GROUP_BY_NONE :(tuščia) STR_GROUP_BY_SHARED_ORDERS :Bendrinamas užduotis # Order button in shared orders vehicle list +STR_GOTO_ORDER_VIEW :{BLACK}Užduotys STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Atidarykite užsakymo rodinį # Tooltips for the main toolbar ###length 31 STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pristabdyti žaidimą STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Pagreitinti žaidimą -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Parinktys +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Parinktys ir nustatymai STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Išsaugoti/nutraukti žaidimą arba užverti programą STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Rodyti žemėlapį, papildomą peržiūros langą arba ženklų sąrašą STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Rodyti miestų sąrašą STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Rodyti subsidijų sąrašą -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Rodyti stotelių sąrašą -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Rodyti kompanijos finansinę informaciją -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Rodyti bendrąją kompanijos informaciją +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Atidaryti kompanijos stotelių sąrašą +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Atidaryti kompanijos finansinę informaciją +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Atidaryti bendrąją kompanijos informaciją STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Rodyti scenarijų knygą -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Rodyti tikslų sąrašą -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Rodyti diagramas -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Rodyti kompanijų įvertinimus +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Atidaryti tikslų sąrašą +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Atidaryti kompanijos diagramas ir krovinio apmokėjimo įkainius +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Atidaryti kompanijų įvertinimus STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Rodyti pramonės įmonių sąrašą, gamybos grandines arba įsteigti naują pramonės įmonę -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Rodyti kompanijos traukinių, suskirstytų grupėmis, sąrašą. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atvertas langas su paprastu sąrašu -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Rodyti kompanijos automobilių, suskirstytų grupėmis, sąrašą. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atvertas langas su paprastu sąrašu -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Rodyti kompanijos laivų, suskirstytų grupėmis, sąrašą. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atvertas langas su paprastu sąrašu -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Rodyti kompanijos lėktuvų, suskirstytų grupėmis, sąrašą. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atvertas langas su paprastu sąrašu -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Priartinti vaizdą -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Nutolinti vaizdą -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Tiesti geležinkelius -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Tiesti kelius -STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Tiesti tramvajaus linijas -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Tiesti vandens kelius +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Atidaryti kompanijos traukinių, suskirstytų grupėmis, sąrašą. Spragtelėjus laikant nuspaustą Ctrl klavišą, galėsite rodyti arba paslėpti transporto priemonių grupes, priešingai pasirinktai nuostatai +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Atidaryti kompanijos automobilių, suskirstytų grupėmis, sąrašą. Spragtelėjus laikant nuspaustą Ctrl klavišą, galėsite rodyti arba paslėpti transporto priemonių grupes, priešingai pasirinktai nuostatai +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Atidaryti kompanijos laivų, suskirstytų grupėmis, sąrašą. Spragtelėjus laikant nuspaustą Ctrl klavišą, galėsite rodyti arba paslėpti transporto priemonių grupes, priešingai pasirinktai nuostatai +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Atidaryti kompanijos lėktuvų, suskirstytų grupėmis, sąrašą. Spragtelėjus laikant nuspaustą Ctrl klavišą, galėsite rodyti arba paslėpti transporto priemonių grupes, priešingai pasirinktai nuostatai +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Priartinti +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Nutolinti +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Tiesti geležinkelių infrastruktūrą +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Tiesti kelių infrastruktūrą +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Tiesti tramvajaus infrastruktūrą +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Tiesti vandens kelių infrastruktūrą STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Statyti oro uostus STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Formuoti kraštovaizdį, sodinti medžius arba statyti ženklus STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Rodyti garsų bei muzikos parinktis @@ -580,7 +609,7 @@ STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Rodyti STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Kraštovaizdžio kūrimas STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Miesto įkūrimas STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Pramonės kūrimas -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Kelio tiesimas +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Statyti kelio infrastruktūrą STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Tiesti tramvajaus linijas STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Sodinti medžius. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Statyti ženklus @@ -596,6 +625,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Uždaryti redak STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Išeiti + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Pagrindinės nuostatos @@ -682,14 +712,16 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Pašalinti visa # About menu STR_ABOUT_MENU_LAND_BLOCK_INFO :Žemės ploto informacija +STR_ABOUT_MENU_HELP :Pagalba ir gidai STR_ABOUT_MENU_TOGGLE_CONSOLE :Perjungti konsolę -STR_ABOUT_MENU_AI_DEBUG :AI / GameScript derinimas +STR_ABOUT_MENU_AI_DEBUG :DI / „GameScript“ derinimas STR_ABOUT_MENU_SCREENSHOT :Ekrano nuotrauka STR_ABOUT_MENU_SHOW_FRAMERATE :Kadrų dažniai STR_ABOUT_MENU_ABOUT_OPENTTD :Apie „OpenTTD“ STR_ABOUT_MENU_SPRITE_ALIGNER :Spruklių lygiuoklė STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Rodyti/slėpti apvadus STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Perjungti paveiktų blokų spalvinimą +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Perjungti valdiklių kontūrus ###length 31 STR_DAY_NUMBER_1ST :1 @@ -764,8 +796,9 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Įprasti STR_GRAPH_INCOME_CAPTION :{WHITE}Pajamų diagrama STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Prekių vienetų pervežta STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Kompanijos pajėgumo reitingas (didžiausias=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Kompanijos vertė +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Kompanijos vertės diagrama +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Paskutines 72 minutes STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Krovinių pervežimo tarifai STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Tarifai pervežant 10 vienetų (ar 10000 litrų) krovinių 20-ies langelių atstumu @@ -785,6 +818,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Paspausk # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Kompanijų lentelė STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inžinierius STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Eismo reguliuotojas STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transporto koordinatorius @@ -871,6 +905,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Paspausk STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Spragtelėjus takelį, jis pašalinamas iš dabartinės programos (tik „Speciali 1“ ir „Speciali 2“) # Highscore window +STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Aukščiausios kompanijos STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Komersantas STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Verslininkas @@ -972,6 +1007,8 @@ STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * P STR_STATUSBAR_AUTOSAVE :{RED}AUTOMATINIS SAUGOJIMAS STR_STATUSBAR_SAVING_GAME :{RED}* * Išsaugomas žaidimas * * +STR_STATUSBAR_SPECTATOR :{WHITE}(stebėtojas) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(begaliniai pinigai) # News message history STR_MESSAGE_HISTORY :{WHITE}Žinučių istorija @@ -1056,6 +1093,8 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} labai paseno ir skubiai reikalauja pakeitimo STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} negali rasti kelio STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} pasimetė +STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :{WHITE}{VEHICLE} praeitų metų pelnas buvo {CURRENCY_LONG} +STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}{VEHICLE} pernykštis pelnas buvo {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} Negalima patekti į sekančią paskirties vietą nes ji yra per toli STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} sustojo nes nepavyko nurodytas remontas @@ -1067,10 +1106,17 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Naujas{S STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Atverti grupių langą, susijusį su šia transporto priemone +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} nebepriima: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} dabar priima: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subsidijų pasiūlymas baigėsi:{}{}{STRING.ko} pervežimas iš {STRING.ko} į {STRING.ka} daugiau nebesubsidijuojamas. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidijų laikas baigėsi:{}{}{STRING.ko} transportavimas iš {STRING} į {STRING} daugiau nebesubsidijuojamas. +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsidijų pasiūlymas:{}{}Pirmasis pervežęs {STRING.ka} iš {STRING} į {STRING} gaus {UNITS_YEARS_OR_MINUTES} vietinės valdžios subsidiją! ###length 4 +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsidijos suteiktos {STRING}!{}{}{STRING} pervėžimas is {STRING} į {STRING} bus apmokamas 50% ateinantiems {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subsidijos suteiktos {STRING}!{}{}{STRING} pervėžimas is {STRING} į {STRING} bus apmokamas dvigubai ateinantiems {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsidijos suteiktos {STRING}!{}{}{STRING} pervėžimas is {STRING} į {STRING} bus apmokamas trigubai ateinantiems {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsidijos suteiktos {STRING}!{}{}{STRING} pervėžimas is {STRING} į {STRING} bus apmokamas keturgubai ateinantiems {UNITS_YEARS_OR_MINUTES}! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transporto monopolija! @@ -1084,14 +1130,27 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Įkelti # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Pagrindinės nuostatos +STR_GAME_OPTIONS_TAB_GENERAL :Bendras +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Pasirinkti bendrus nustatymus +STR_GAME_OPTIONS_TAB_GRAPHICS :Vaizdas +STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Pasirinkti vaizdo nustatymus +STR_GAME_OPTIONS_TAB_SOUND :Garsas +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Pasirinkti garso ir muzikos nustatymus +STR_GAME_OPTIONS_TAB_SOCIAL :Socialumas +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Pasirinkti socialumo integracijos nustatymus +STR_GAME_OPTIONS_VOLUME :Tūris +STR_GAME_OPTIONS_SFX_VOLUME :Garso efektai +STR_GAME_OPTIONS_MUSIC_VOLUME :Muzika +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valiuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valiutos pasirinkimas +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Svarai sterlingų STR_GAME_OPTIONS_CURRENCY_USD :Amerikos Doleris STR_GAME_OPTIONS_CURRENCY_EUR :Eurai @@ -1134,6 +1193,8 @@ STR_GAME_OPTIONS_CURRENCY_HKD :Honkongo doleri STR_GAME_OPTIONS_CURRENCY_INR :Indijos rupijos STR_GAME_OPTIONS_CURRENCY_IDR :Indonezijos rupijos STR_GAME_OPTIONS_CURRENCY_MYR :Malaizijos ringitai +STR_GAME_OPTIONS_CURRENCY_LVL :Latvių latas +STR_GAME_OPTIONS_CURRENCY_PTE :Portugalijos eskudai STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatinis išsaugojimas STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pasirink, kaip dažnai išsaugoti žaidimą @@ -1141,6 +1202,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pasirink # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Išjungta +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Kas 10 minučių +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Kas 30 minučių +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Kas 60 minučių +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Kas 120 minučių STR_GAME_OPTIONS_LANGUAGE :{BLACK}Kalba STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Pasirinkite aplinkos kalbą @@ -1161,18 +1226,30 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Kad pake STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}Vertikalioji sinchronizacija (VSync) STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Pažymėkite šį langelį, norėdami v-sync ekraną. Pakeistas nustatymas bus pritaikytas tik paleidus žaidimą iš naujo. Veikia tik įjungus aparatūros pagreitį -STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Dabartinis vairuotojas: {STRING} +STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Dabartinė tvarkyklė: {STRING} +STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Sąsajos dydis +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Vilkite slankiklį, kad nustatyti sąsajos dydį. Vilkite laikant nuspaustą Ctrl klavišą nuolatiniam reguliavimui STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Automatinis dydžio nustatymas STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Pažymėkite šį langelį, kad automatiškai aptiktumėte sąsajos dydį STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skalės nuožulniai STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Pažymėkite šį langelį, jei norite keisti kampus pagal sąsajos dydį +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Naudoti tradicišką spruklių šriftą +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Pažymėkite šį langelį, jeigu teikiate pirmenybę tradiciškui fiksuoto dydžio spruklio raštui +STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Išlyginti šriftus +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Pasirinkite šį langelį, kad išlyginti šriftus -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatinė apklausa +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Dalyvauti automatinėje apklausoje +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Kai įjungta, OpenTTD išeinant iš žaidimo išsiųs apklausą +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Apie apklausą ir privatumą +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Atidaryti naršyklę su daugiau informacijos apie automatizuotą apklausą +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Peržiūrėti apklausos rezultatus +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Rodyti dabartinio žaidimo apklausos rezultatą STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafika @@ -1182,19 +1259,32 @@ STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Didesnis nei 60Hz kadrų dažnis gali sulėtinti žaidimą. STR_GAME_OPTIONS_BASE_GRF :{BLACK}Bazinis grafikos rinkinys -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pasirinkti naudojimui bazinę grafikos rinkinį +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pasirinkti naudojimui bazinį grafikos rinkinį (negali būti pakeista žaidime, tik pagrindiniame ekrane) STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Papildoma informacija apie bazinės grafikos rinkinį STR_GAME_OPTIONS_BASE_SFX :{BLACK}Bazinis garsų rinkinys -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Pasirinkite, kurį bazinių garsų rinkinį naudoti +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Pasirinkite, kurį bazinių garsų rinkinį naudoti (negali būti pakeista žaidime, tik pagrindiniame ekrane) STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Papildoma informacija apie bazinių garsų rinkinį STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Bazinis muzikos rinkinys STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Pasirinkti naudojimui bazinę muziką STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Papildoma informacija apie bazinę muziką +STR_GAME_OPTIONS_ONLINE_CONTENT :Parsisiųsti turinį +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Tikrinti, ar nėra naujo ir atnaujinto turinio atsisiuntimui +STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(plėtinių socialinių platformų integravimui nėra įdiegta) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Platforma: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Papildinio būsena: + +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Veikia +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Nepavyko inicijuoti +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} neveikia +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Dubliuotas papildinys +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}Nepalaikoma versija +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Netinkamas parašas STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nepavyko gauti palaikomų ekrano raiškų sąrašo @@ -1208,10 +1298,11 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Sumažin STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Padidinti valiutos kiekį vienu svaru (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Nustatyti valiutos keitimo kursą vienam svarui (£) + STR_CURRENCY_PREFIX :{LTBLUE}Priešdėlis: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Nustatyti prefiksą valiutai +STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Nustatyti priešdėlį valiutai STR_CURRENCY_SUFFIX :{LTBLUE}Pavadinimas: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Nustatyti suffix'a valiutai +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Nustatyti priesagą valiutai STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Pereiti prie Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Pereiti prie Euro: {ORANGE}niekada @@ -1291,7 +1382,7 @@ STR_TERRAIN_TYPE_CUSTOM_VALUE :Pasirinktinis ( STR_CITY_APPROVAL_LENIENT :Atlaidus STR_CITY_APPROVAL_TOLERANT :Tolerantiškas STR_CITY_APPROVAL_HOSTILE :Priešiškas -STR_CITY_APPROVAL_PERMISSIVE :Atlaidus +STR_CITY_APPROVAL_PERMISSIVE :Atlaidus (jokio poveikio ant kompanijos veiksmų) STR_WARNING_NO_SUITABLE_AI :{WHITE}Nerasta tinkamų DI...{}Galite parsisiųsti keletą DI naudonat 'Turinio internete' sistemą @@ -1300,7 +1391,9 @@ STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Išplės STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtras: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Išskleisti viską STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Suskleisti viską +STR_CONFIG_SETTING_RESET_ALL :{BLACK}Iš naujo nustatyti visas vertes STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(paaiškinimo nėra) +STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR} STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Numatytoji reikšmė: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Nuostatos galiojimo lygmuo: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :programos (galioja visiems žaidimams) @@ -1308,6 +1401,7 @@ STR_CONFIG_SETTING_TYPE_GAME_MENU :žaidimo (įra STR_CONFIG_SETTING_TYPE_GAME_INGAME :žaidimo (įrašoma kiekvieną kartą išsaugant žaidimą. Galioja tik šiuo metu aktyviai kompanijai ir tik aktyviam žaidimui) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :kompanijos (įrašoma pradedant naują žaidimą) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :kompanijos (įrašoma kiekvieną kartą išsaugant žaidimą. Galioja tik šiuo metu aktyviai kompanijai) +STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_CAPTION :{WHITE}Atsargiai! STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_TEXT :{WHITE}Šis veiksmas iš naujo nustatys visus žaidimo nustatymus į numatytąsias vertes.{}Ar tikrai norite tęsti? STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorija: @@ -1354,9 +1448,12 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centruoti STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dešinėje +STR_CONFIG_SETTING_INFINITE_MONEY :Begaliniai pinigai: {STRING} +STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Leisti begalinį išleidimą ir išjungti kompanijų bankrutavimą STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Didžiausia pradinė paskola: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Didžiausia paskola, kokią kompanija gali gauti iš banko (neatsižvelgiant į infliaciją) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special STR_CONFIG_SETTING_INTEREST_RATE :Palūkanų norma: {STRING} @@ -1378,6 +1475,7 @@ STR_CONFIG_SETTING_SUBSIDY_DURATION :Subsidijų truk ###length 2 STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Pasirinkite vietinės valdžios subsidijų trukmę metais +STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR_PERIODS} ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Be subsidijų @@ -1393,7 +1491,7 @@ STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Įgalinus šią STR_CONFIG_SETTING_DISASTERS :Katastrofos: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Įgalinti atsitiktines katastrofas, kurių metų gali būti apgadintos ar sunaikintos transporto priemonės bei infrastruktūra -STR_CONFIG_SETTING_CITY_APPROVAL :Miestų gyventojų požiūris į triukšmą ir aplinkos darkymą: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Vietinės institucijos požiūris: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Nustatyti miestų požiūrį į statybas, triukšmą ir kraštovaizdžio keitimą. Nuo to priklauso kompanijos reitingas bei leidimasstatyti įvairius objektus STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Didžiausias žemėlapio aukštis: {STRING} @@ -1410,7 +1508,7 @@ STR_CONFIG_SETTING_CATCHMENT :Aptarnaujamos t STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Skirtingų tipų (traukinių, automobilių, laivų bei lėktuvų) stotelės aptarnauja skirtingo dydžio teritorijas. Paprastai automobilių stotelė aprėpia mažiausią plotą, o oro uostas — didžiausią STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Leisti kompanijos stotims aptarnauti pramonės įmones su nuosavomis neutraliomis stotimis: {STRING} -STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Įgalinus šią nuostatą, pramonės įmonės su nuosavomis stotimis (pvz, naftos platformos) taip pat galės būti aptarnautos žaidėjų stočių, įrengtų netoliese. Išjungus šią nuostatą, minėtos pramonės įmonės galės būti aptarnautos tik iš nuosavų stočių. Tokiu atveju žaidėjų įrengtos stotys įmonės aptarnauti negalės, o įmonės stotis aptarnaus tik pačią įmonę. +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Įgalinus šią nuostatą, pramonės įmonės su nuosavomis stotimis (pvz, naftos platformos) taip pat galės būti aptarnautos žaidėjų stočių, įrengtų netoliese. Išjungus šią nuostatą, minėtos pramonės įmonės galės būti aptarnautos tik iš nuosavų stočių. Tokiu atveju žaidėjų įrengtos stotys įmonės aptarnauti negalės, o įmonės stotis aptarnaus tik pačią įmonę STR_CONFIG_SETTING_EXTRADYNAMITE :Leisti griauti miestams priklausančius tiltus, kelius ir kt.: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Palengvinti miestams priklausančios infrastruktūros (kelių, tiltų, namų ir kitų objektų) pašalinimą @@ -1528,9 +1626,11 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Jokių STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Retesni STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalus +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Leisti statyti geležinkelio pervažas konkurentams priklausančiuose keliuose ar bėgiuose: {STRING} +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Leisti statyti geležinkelio pervažas konkurentams priklausančiuose keliuose ar bėgiuose -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Leisti pravažiuojamąsias stoteles miesto keliuose: {STRING} -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Leidžia statyti pravažiuojamojo tipo stoteles miestams priklausiančiuose keliuose +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Leisti pravažiuojamąsias stoteles miesto priklausančiuose keliuose: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Leisti statyti pravažiuojamojo tipo stoteles miestams priklausiančiuose keliuose STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Leisti pravažiuojamąsias stoteles priešininko keliuose: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Leidžia statyti pravažiuojamojo tipo stoteles kitiems priešininkams priklausiančiuose keliuose STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Neįmanoma pakeisti nuostatos kai yra tr. priemonių. @@ -1541,6 +1641,8 @@ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Infrastruktūro STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Kompanijos pradinė spalva: {STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Pasirinkite pradinę kompanijos spalvą +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Kompanijos antrinė spalva: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Pasirinkite antrinę spalvą kompanijai, jei naudojamas plėtinys, kuriam jos reikia STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Oro uostai niekada nepasensta: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Kartą atsiradę, oro uostų tipai niekada nebepasens ir galimybė juos statyti niekuomet nebus pašalinta @@ -1557,16 +1659,23 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :Peržiūrėti v STR_CONFIG_SETTING_WARN_INCOME_LESS :Perspėti, jei transporto priemonė yra nuostolinga: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Jei transporto priemonė kalendorinius metus baigė nuostolingai, parodomas atitinkamas informacinis pranešimas +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Jei transporto priemonė metus baigė nuostolingai, parodomas atitinkamas informacinis pranešimas + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Transporto priemonės niekada nepasensta: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kartą atsiradę, transporto priemonės niekuomet nebepasens ir jas visada bus galima nusipirkti +STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Tvarkaraštis: {STRING} ###length 2 +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalendorius +STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minutės per metus: {STRING} +STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special +STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (kalendoriaus laikas užšalęs/sustabdytas) +STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatiškai atnaujinti transporto priemonę, kai ji pasensta: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Transporto priemonė, eksploatacijos laikotarpiui artėjant prie pabaigos, bus automatiškai bus atnaujinta, jei tik atnaujinimo sąlygos bus išpildytos @@ -1596,7 +1705,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grafikų linij STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grafikų linijų storis. Plonesnė linija yra tikslesnė, tačiau storesnę lengviau pastebėti bei atskirti jos spalvą STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Rodyti plėtinio pavadinimą perkant naują trasnporto priemonę: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Perkant naują transporto priemonę, lange atsiras papildoma eilutė, nurodanti, kuriam plėtiniui priklauso pažymėta transporto priemonė. +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Perkant naują transporto priemonę, lange atsiras papildoma eilutė, nurodanti, kuriam plėtiniui priklauso pažymėta transporto priemonė STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Jei įjungta, transporto priemonės gabenamas krovinys bus rodomas virš jo transporto priemonių sąrašuose STR_CONFIG_SETTING_LANDSCAPE :Kraštovaizdis: {STRING} @@ -1746,6 +1855,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Išjungta STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Užverti langą dešiniuoju pelės klavišo spustelėjimu: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Užveria langą dešiniuoju pelės klavišu spustelėjus ant jo. Išjungia patarimą dešiniuoju pelės klavišu spustelėjimu! ###length 3 +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Ne +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Taip STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Išsaugant žaidimą, pavadinimuose naudoti {STRING} datos formatą STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Datos formatas išsaugoto žaidimo failo pavadinime @@ -1771,7 +1882,11 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Išplėstinio ( STR_CONFIG_SETTING_LOADING_INDICATORS :Rodyti krovos indikatorius: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Krovos indikatoriai rodomi virš pakraunamų bei iškraunamų tansporto priemonių +STR_CONFIG_SETTING_TIMETABLE_MODE :Laiko vienetai tvarkaraščiams: {STRING} +STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Pasirinkite laiko vienetus transporto priemonių tvarkaraščiams ###length 3 +STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Dienos +STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Sekundės STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Rodyti arvykimą ir išvykimą tvarkaraščiuose: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Tvarkaraščiuose rodyti numatomas atvykimo ir išvykimo datas @@ -1793,10 +1908,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Palikti statymo STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Laikyti statybų įrankius tiltams, tuneliams ir pnš. atidarytus po panaudojimo STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatiškai išmontuoti semaforus, tiesiant naujus bėgius: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Semaforai bus automatiškai išmontuoti, jei trukdys tiesti naujus bėgius. Atkreipkite dėmesį, tokia veiksena gali lemti traukinių susidūrimą. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Semaforai bus automatiškai išmontuoti, jei trukdys tiesti naujus bėgius. Atkreipkite dėmesį, tokia veiksena gali lemti traukinių susidūrimą STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Pagreitinto žaidimo spartos riba: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Didžiausias galimas žaidimo modeliavimo greitis, įgalinus pagreitinto žaidimo veikseną. Parinkus 0, riba taikoma nebus, tad modeliavimo greitis priklausys tik nuo jūsų kompiuterio spartos. Vertės, mažesnės už 100, žaidimą sulėtins. Reali pasiekiama modeliavimo sparta priklauso nuo jūsų kompiuterio spartos bei nuo pačio žaidimo sudėtingumo. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Didžiausias galimas žaidimo modeliavimo greitis, įgalinus pagreitinto žaidimo veikseną. Parinkus 0, riba taikoma nebus, tad modeliavimo greitis priklausys tik nuo jūsų kompiuterio spartos. Vertės, mažesnės už 100, žaidimą sulėtins. Reali pasiekiama modeliavimo sparta priklauso nuo jūsų kompiuterio spartos bei nuo pačio žaidimo sudėtingumo STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}%, lyginant su normalia sparta ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Netaikyti (kiek tik leis kompiuteris) @@ -1855,10 +1970,10 @@ STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Įjungus šį n STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Leisti DI Interneto režime: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Leisti DI kompiuterio žaidėjus dalyvauti Interneto režime -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opkodai prieš skriptus yra nevykdomi: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opkodai prieš scenarijus yra nevykdomi: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Didžiausias skaičius skaičiavimų žingsnių, kuriuos scenarijus vykdo viename ėjime -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Didžiausias skriptui leistinas atminties suvartojimas: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Jei skriptas sunaudos nurodytą kiekį operatyviosios atminties, jis bus priverstinai išjungtas. Didesniuose žemėlapiuose skriptams reikia daugiau atminties +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Didžiausias scenarijui leistinas atminties suvartojimas: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Jei scenarijus sunaudos nurodytą kiekį operatyviosios atminties, jis bus priverstinai išjungtas. Didesniuose žemėlapiuose scenarijams gali reikėti daugiau atminties STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Techninės apžiūros intervalas procentais: {STRING} @@ -1872,7 +1987,9 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Lėktuvų techn STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Numatytoji naujo lėktuvo techninės apžiūros intervalo reikšmė STR_CONFIG_SETTING_SERVINT_SHIPS :Laivų techninės apžiūros intervalas: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Numatytoji naujo laivo techninės apžiūros intervalo reikšmė -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dien{P a os ų}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Išjungta @@ -1896,6 +2013,7 @@ STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Avarijos / nela STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Rodyti naujienraštį atsitikus incidentui ar katastrofai STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER :Konkurentų transporto priemonių avarijos: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER_HELPTEXT :Rodyti laikraštį apie konkurentų transporto priemonių avarijas STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Kompanijos informacija: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Rodyti naujienraštį įsikūrus naujai kompanijai (arba esamai susidūrus su sunkumais) @@ -1948,7 +2066,7 @@ STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Niekada STR_CONFIG_SETTING_ECONOMY_TYPE :Ekonomika: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Tolygioje ekonomikoje gamyklų produkcija keičiasi mažesniais ir dažnesniais žingsniais. Fiksuotoje ekonomikoje jokie pokyčiai nevyksta. Nuostata gali neveikti pramonės įmonėms, įdiegtoms per plėtinius. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Tolygioje ekonomikoje gamyklų produkcija keičiasi mažesniais ir dažnesniais žingsniais. Fiksuotoje ekonomikoje jokie pokyčiai nevyksta. Nuostata gali neveikti pramonės įmonėms, įdiegtoms per plėtinius ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Originali STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Tolygi @@ -1967,8 +2085,9 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatiškai s STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Metai, kuriais elektriniai signalai pakeičia semaforus (abiejų rūšių signalai veikia visiškai vienodai, tik skirtingai atrodo) STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Pereiti tam tikrus signalų tipus: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Pasirinkite, kurie signalų tipai vykdys ciklą, kai Ctrl+paspaudę statyti signalą signalų įrankiuose +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Pasirinkite, kurie signalų tipai vykdys ciklą kai Ctrl+paspaudę statyti signalą signalų įrankiuose ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Tik dabartinė grupė STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Visus matomus STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Rodyti signalus: {STRING} @@ -1991,7 +2110,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Leisti miestams STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Miestams leidžiama statyti sankryžas tame pačiame lygyje: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Įjungus šį nustatymą miestams bus galima statyti pervažas -STR_CONFIG_SETTING_NOISE_LEVEL :Leisti miestams kontroliuoti oro uostų triukšmo lygį: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL :Riboti oro uostų išdėstymą pagal triukšmo lygį: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Išjungus šį nustatymą, gali būti tik du oro uostai kiekviename mieste. Įjungus šį nustatymą, oro uostų skaičius mieste yra ribojamas pagal miesto triukšmo lygio palankumo, kurį nurodo gyventojų skaičius, oro uosto dydis bei atstumas STR_CONFIG_SETTING_TOWN_FOUNDING :Naujų miestų kūrimas žaidime: {STRING} @@ -2043,7 +2162,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4 kartai STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8 kartai STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Didžiausia leistina spruklio raiška: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Spruklio raiška nebus didesnė, nei ši nustatyta riba, net jeigu aukštesnės raiškos grafiniai objektai ir bus pasiekiami. Šis būdas leidžia šiek tiek suvienodinti grafinį atvaizdavimą, kai viename žadime yra ir aukštos, ir žemos raiškos grafikos rinkinių. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Spruklio raiška nebus didesnė, nei ši nustatyta riba, net jeigu aukštesnės raiškos grafiniai objektai ir bus pasiekiami. Šis būdas leidžia šiek tiek suvienodinti grafinį atvaizdavimą, kai viename žadime yra ir aukštos, ir žemos raiškos grafikos rinkinių ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2066,15 +2185,16 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nenaudojamas STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Pradinis miestų dydžio daugiklis: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Vidutinis miestų dydis santykiu su normaliais miestais žaidimo pradžioje +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Atnaujinti pasiskirstymo diagramą kas {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX :Keleivių paskirstymas: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :„Simetriškas“ reiškia, jog iš stoties A į stotį B keliaus apytiksliai toks pat keleivių srautas, kaip ir iš B į A. „Asimetriško“ režimo atveju, srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :„Simetriškas“ reiškia, jog iš stoties A į stotį B keliaus apytiksliai toks pat keleivių srautas, kaip ir iš B į A. „Asimetriško“ režimo atveju, srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Pasiskirstymo režimas paštui: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :„Simetriškas“ reiškia, jog iš stoties A į stotį B bus išsiųsta apytiksliai tiek pat pašto maišų, kaip ir iš B į A. „Asimetriško“ režimo atveju, pašto srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad pašto srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :„Simetriškas“ reiškia, jog iš stoties A į stotį B bus išsiųsta apytiksliai tiek pat pašto maišų, kaip ir iš B į A. „Asimetriško“ režimo atveju, pašto srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad pašto srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Pasiskirstymo režimas „šarvuotoms“ krovinių rūšims: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :„Šarvuotų“ krovinių rūšiai priskiriamos brangenybės (vidutinio klimato juostoje), deimantai (subtropinio klimato juostoje) ir auksas (subarktinio klimato juostoje), bet tai dar gali priklausyti ir nuo aktyvių plėtinių. „Simetriškas“ reiškia, jog iš stoties A į stotį B bus vežamas apytiksliai toks pat krovinių srautas, kaip ir iš B į A. „Asimetriško“ režimo atveju, srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime. Žaidžiant subarktinio klimato juostoje, rekomenduojama pasirinkti asimetrišką krovinių paskirstymo algoritmą, nes bankai, priėmę auksą, atgal nieko nesiųs. Kitose klimato juostose galima pasirinkti ir asimetrišką algoritmą, nes kroviniai gali keliauti į abi maršruto puses. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Pasiskirstymo režimas kitoms krovinių rūšims: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :„Simetriškas“ reiškia, jog iš stoties A į stotį B bus vežamas apytiksliai toks pat krovinių srautas, kaip ir iš B į A. „Asimetriško“ režimo atveju, srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime. Rekomenduojama pasirinkti arba asimetrinį, arba originalų algoritmą. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :„Simetriškas“ reiškia, jog iš stoties A į stotį B bus vežamas apytiksliai toks pat krovinių srautas, kaip ir iš B į A. „Asimetriško“ režimo atveju, srautai pirmyn ir atgal gali skirtis. „Originalus“ reiškia, kad srautai nebus reguliuojami ir veiks kaip ir originaliame TTD žaidime. Rekomenduojama pasirinkti arba asimetrinį, arba originalų algoritmą ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :originalus STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetriškas @@ -2095,21 +2215,25 @@ STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC.kur :simetriškame STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC.kreip :simetriškas STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Pasiskirstymo tikslumas: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Kuo didesnė ši vertė, tuo tiksliau bus apskaičiuojamas krovinių pasiskirstymo grafas, tačiau žaidimas gali sulėtėti. Pasirinktus didesnę reikšmę, grafas bus netikslus ir kroviniai gali būti paskirstomi neoptimaliai. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Kuo didesnė ši vertė, tuo tiksliau bus apskaičiuojamas krovinių pasiskirstymo grafas, tačiau žaidimas gali sulėtėti. Pasirinktus didesnę reikšmę, grafas bus netikslus ir kroviniai gali būti paskirstomi neoptimaliai STR_CONFIG_SETTING_DEMAND_DISTANCE :Įtakos nuo atstumo tarp stotelių daugiklis: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Šį daugiklį prilyginus nuliui, „Cargodist“ posistemė nekreips dėmesio, kaip toli nuo pradinės stotelės A yra krovinio paskirties stotelė B. Kuo daugiklis bus didesnis, tuo labiau „Cargodist“ pirmenybę teiks artimesnėms stotelėms. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Šį daugiklį prilyginus nuliui, „Cargodist“ posistemė nekreips dėmesio, kaip toli nuo pradinės stotelės A yra krovinio paskirties stotelė B. Kuo daugiklis bus didesnis, tuo labiau „Cargodist“ pirmenybę teiks artimesnėms stotelėms STR_CONFIG_SETTING_DEMAND_SIZE :Grįžtančių krovinių daugiklis simetriškam režimui: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nustačius šį parametrą žemiau nei 100%, simetrinis pasiskirstymas panašėja į asimetrinį pasiskirstymą. Jei krovinio į stotį bus atvežama mažiau, nei tam tikra nustatyta riba, jis bus priverstinai išsiųstas atgal. Jei bus nustatyta 0% riba, simetrinis pasiskirstymas taps asimetriniu. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nustačius šį parametrą žemiau nei 100%, simetrinis pasiskirstymas panašėja į asimetrinį pasiskirstymą. Jei krovinio į stotį bus atvežama mažiau, nei tam tikra nustatyta riba, jis bus priverstinai išsiųstas atgal. Jei bus nustatyta 0% riba, simetrinis pasiskirstymas taps asimetriniu STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Tolimesni maršrutai nebus planuojami kol trumpesniųjų apkrova nepasieks bent: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Dažnai tarp dviejų stotelių yra ne vienas galimas maršrutas. „Cargodist“ posistemė pirmiausia stengsis krovinius nukreipti trumpiausiu įmanomu maršrutu, o kai šis bus pilnai apkrautas, imtis tolimesniųjų. Maršruto apkrova yra apytiksliai įvertinama atsižvelgiant į maršruto pajėgumus ir planuojamus krovinių srautus. Kai tik „Cargodist“ posistemė pilnai apkraus visus galimus maršrutus, ji vėl ims didinti apkrovas visiems maršrutams, pradėdama nuo pačių talpiausiųjų, taip faktiškai juos perkraudama. Tačiau, vėlgi, „Cargodist“ algoritmas yra apytikslis, todėl įmanoma, kad trumpesni maršrutai jau bus perkrauti dar pilnai neišnaudojus tolimesniųjų. Šia nuostata nustatomas slenkstis, ties kuriuo trumpesnis maršrutas jau laikomas optimaliai apkrautu ir kroviniai pradedami skirstyti tolimesniais maršrutais. Rekomenduojama nustatyti mažiau, nei 100%, kad būtų išvengta perkrovų dėl netikslaus „Cargodist“ veikimo. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Dažnai tarp dviejų stotelių yra ne vienas galimas maršrutas. „Cargodist“ posistemė pirmiausia stengsis krovinius nukreipti trumpiausiu įmanomu maršrutu, o kai šis bus pilnai apkrautas, imtis tolimesniųjų. Maršruto apkrova yra apytiksliai įvertinama atsižvelgiant į maršruto pajėgumus ir planuojamus krovinių srautus. Kai tik „Cargodist“ posistemė pilnai apkraus visus galimus maršrutus, ji vėl ims didinti apkrovas visiems maršrutams, pradėdama nuo pačių talpiausiųjų, taip faktiškai juos perkraudama. Tačiau, vėlgi, „Cargodist“ algoritmas yra apytikslis, todėl įmanoma, kad trumpesni maršrutai jau bus perkrauti dar pilnai neišnaudojus tolimesniųjų. Šia nuostata nustatomas slenkstis, ties kuriuo trumpesnis maršrutas jau laikomas optimaliai apkrautu ir kroviniai pradedami skirstyti tolimesniais maršrutais. Rekomenduojama nustatyti mažiau, nei 100%, kad būtų išvengta perkrovų dėl netikslaus „Cargodist“ veikimo -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Greičio vienetai: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Greičio vienetai (sausumoje): {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Greičio vienetai (jūroje): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Vienetai, kuriais matuojamas greitis STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :imperiniai (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :metriniai (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Žaidimo vienetai (langeliai per dieną) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Žaidimo vienetai (langeliai per sek) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Mazgai STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Galios vienetai: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Vienetai, kuriais matuojama galia @@ -2159,29 +2283,23 @@ STR_CONFIG_SETTING_ACCOUNTING :Apskaita STR_CONFIG_SETTING_VEHICLES :Transporto priemonės STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizika STR_CONFIG_SETTING_VEHICLES_ROUTING :Maršrutas +STR_CONFIG_SETTING_VEHICLES_ORDERS :Užduotys STR_CONFIG_SETTING_LIMITATIONS :Ribos STR_CONFIG_SETTING_ACCIDENTS :Katastrofos ir incidentai STR_CONFIG_SETTING_GENWORLD :Žemėlapio kūrimas STR_CONFIG_SETTING_ENVIRONMENT :Aplinka +STR_CONFIG_SETTING_ENVIRONMENT_TIME :Laikas STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Valdžia STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Miestai STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Gamyklos STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Krovinių pasiskirstymas +STR_CONFIG_SETTING_ENVIRONMENT_TREES :Medžiai STR_CONFIG_SETTING_AI :Konkurentai STR_CONFIG_SETTING_AI_NPC :Kompiuterio žaidėjai STR_CONFIG_SETTING_NETWORK :Žaidimas tinkle -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Traukinių maršrutų paieškos algoritmas: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Maršruto naudojamas ieškotojas traukiniams -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Automobilių maršrutų paieškos algoritmas: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Maršruto naudojamas ieškotojas kelių transporto priemonėms -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Laivų maršrutų paieškos algoritmas: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Maršruto naudojamas ieškotojas laivams STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Apsisukimas prie šviesoforų: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Leisti traukiniams apsisukti ir bandyti važiuoti priešinga kryptimi, jei ties šviesoforu jiems tenka laukti pernelyg ilgai -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Rekomenduojama) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Keisti reikšmes @@ -2208,6 +2326,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nepavyko # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Vaizdo nuostatų klaida... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... nepavyko rasti tinkamos vaizdo plokštės. Aparatinis spartinimas buvo išjungtas +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}...Vaizdo plokštės tvarkyklė sulaužė žaidimą. Aparatinis spartinimas išjungtas # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2221,10 +2340,12 @@ STR_INTRO_MULTIPLAYER :{BLACK}Žaisti STR_INTRO_GAME_OPTIONS :{BLACK}Pagrindinės nuostatos STR_INTRO_HIGHSCORE :{BLACK}Nugalėtojų lentelė +STR_INTRO_HELP :{BLACK}Pagalba ir vadovai STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Išplėstinės nuostatos STR_INTRO_NEWGRF_SETTINGS :{BLACK}Plėtiniai STR_INTRO_ONLINE_CONTENT :{BLACK}Interneto turinys STR_INTRO_AI_SETTINGS :{BLACK}DI Nustatymai +STR_INTRO_GAMESCRIPT_SETTINGS :{BLACK}Žaidimo scenarijaus nustatymai STR_INTRO_QUIT :{BLACK}Išeiti STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Pradėti naują žaidimą. Spragtelėjus laikant nuspaustą Ctrl klavišą, naujas žemėlapis bus sugeneruotas nedelsiant ir nieko nebeklausiant @@ -2239,12 +2360,13 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Subarkti STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Subtropinio klimato žemėlapis STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Žaislinis žemėlapis -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Rodyti pagrindines žaidimo nuostatas -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rodyti nugalėtojų lentelę -STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Rodyti išplėstines nuostatas -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Rodyti parsisiųstus plėtinius ir jų nuostatas +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Atidaryti pagrindines žaidimo nuostatas +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Atverti nugalėtojų lentelę +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Atidaryti išplėstines nuostatas +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Atidaryti parsisiųstus plėtinius ir jų nuostatas STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tikrinti, ar nėra naujų plėtinių arba atnaujinimų jau atsisiųstiems plėtiniams -STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Rodyti DI nustatymus +STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Atidaryti DI nustatymus +STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Atidaryti žaidimo scenarijaus nustatymus STR_INTRO_TOOLTIP_QUIT :{BLACK}Išeiti iš „OpenTTD“ žaidimo STR_INTRO_BASESET :{BLACK}Šiuo metu pasirinktame grafikos rinkinyje trūksta {NUM} sprukl{P io ių ių}. Patikrinkite, ar nėra naujinių. @@ -2262,6 +2384,17 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Ar tikr STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ar tikrai norite išeiti iš šio scenarijaus? # Help window +STR_HELP_WINDOW_CAPTION :{WHITE}Pagalba ir Vadovai +STR_HELP_WINDOW_WEBSITES :{BLACK}Svetainės +STR_HELP_WINDOW_DOCUMENTS :{BLACK}Dokumentai +STR_HELP_WINDOW_README :{BLACK}SKAITYKMANE +STR_HELP_WINDOW_CHANGELOG :{BLACK}Pakeitimų sąrašas +STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Žinomos klaidos +STR_HELP_WINDOW_LICENSE :{BLACK}Licencija +STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD +STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Vadovas / Vikipedija +STR_HELP_WINDOW_BUGTRACKER :{BLACK}Pranešti apie klaidą +STR_HELP_WINDOW_COMMUNITY :{BLACK}Bendruomenė # Cheat window STR_CHEATS :{WHITE}Sukčiavimai @@ -2275,6 +2408,7 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Keisti d STR_CHEAT_CHANGE_DATE :{LTBLUE}Pakeisti datą: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Pakeisti dabartinius metus STR_CHEAT_SETUP_PROD :{LTBLUE}Leisti keisti produkcijos vertes: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Užstatyti stočių įvertinimus į 100%: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Kompanijos spalvos @@ -2284,9 +2418,15 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Rodyti t STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Rodyti automobilių spalvas STR_LIVERY_SHIP_TOOLTIP :{BLACK}Rodyti laivų spalvas STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Rodyti lėktuvų spalvas +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Rodyti traukinių grupių spalvas +STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Rodyti laivų grupių spalvas +STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Rodyti lėktuvų grupių spalvas STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Pasirinkite pirminę spalvą pasirinktai schemai. Spustelėjus laikant nuspaustą Ctrl klavišą, pasirinkta spava bus nustatyta visoms schemoms. -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Pasirinkite antrinę spalvą pasirinktai schemai. Spustelėjus laikant nuspaustą Ctrl klavišą, pasirinkta spava bus nustatyta visoms schemoms. +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Pasirinkite antrinę spalvą pasirinktai schemai. Spustelėjus laikant nuspaustą Ctrl klavišą, pasirinkta spava bus nustatyta visoms schemoms STR_LIVERY_PANEL_TOOLTIP :{BLACK}Pasirinkite objektą, kurio spalvas norite pakeisti. Spragsint laikant nuspaustą Ctrl klavišą, galėsite pasirinkti iškart kelis objektus. +STR_LIVERY_TRAIN_GROUP_EMPTY :Nėra nustatytų traukinių grupių +STR_LIVERY_SHIP_GROUP_EMPTY :Nėra nustatytų laivų grupių +STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Lėktuvų grupės nesudarytos ###length 23 STR_LIVERY_DEFAULT :Numatytosios spalvos @@ -2392,6 +2532,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Žemėla STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Žaidimo žemėlapio dydis{}Pragtelėjus rušiuojama pagal dydį STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Data STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Dabartinė data +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}val. {NUM}min. +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Žaidimo laikas +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Laiko žaista kol{}žaidimas nebuvo sustabdytas STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Kalba, serverio versija ir kt. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Pasirink iš sąrašo žaidimą @@ -2404,8 +2547,10 @@ STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Gamtos STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Žemėlapio dydis: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Serverio versija: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Serverio adresas: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Pakvietimo kodas: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Žaidimo pradžia: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Dabartinė data: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Žaidimo laikas: {WHITE}{NUM}val. {NUM}min. STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Žaidimo scenarijus: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Apsaugota slaptazodžiu! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVERIS IŠJUNGTAS @@ -2424,7 +2569,7 @@ STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Ieškoti STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Ieškoti vietiniame tinkle STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Ieškoti serverių vietiniame tinkle STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Pridėti serverį -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Prideda serverį į sąrašą, kuris tikrinamas ieškant žaidimų +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Prideda serverį į sąrašą. Tai gali būti arba serverio adresas arba pakvietimo kodas STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Sukurti serverį STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Sukurti savo serverį @@ -2439,7 +2584,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Žaidimo STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nustatyti slaptažodi STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Apsaugokite savo žaidimą slaptažodžiu, jei nenorite, kad jis būtų viešai prieinamas -STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Matomumas +STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Matomumas: STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :Serverio matomumo nuostata STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P as ai ų} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Didžiausias klientų skaičius: @@ -2470,29 +2615,42 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Gaunama STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Atsijungti STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serveris apsaugotas. Įvesk slaptažodį -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Kompanija apsaugota. Įvesk slaptažodį # Network company list added strings -STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Žaidėjų sąrašas +STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Internetiniai žaidėjai STR_NETWORK_COMPANY_LIST_SPECTATE :Žiūrėti # Network client list STR_NETWORK_CLIENT_LIST_CAPTION :{WHITE}Internetiniai žaidėjai +STR_NETWORK_CLIENT_LIST_SERVER :{BLACK}Serveris STR_NETWORK_CLIENT_LIST_SERVER_NAME :{BLACK}Vardas STR_NETWORK_CLIENT_LIST_SERVER_NAME_TOOLTIP :{BLACK}Serverio kuriame žaidžiate pavadinimas +STR_NETWORK_CLIENT_LIST_SERVER_NAME_EDIT_TOOLTIP :{BLACK}Pakeisti savo serverio pavadinimą +STR_NETWORK_CLIENT_LIST_SERVER_NAME_QUERY_CAPTION :Serverio pavadinimas STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY :{BLACK}Matomumas +STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE :{BLACK}Pakvietimo kodas STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE_TOOLTIP :{BLACK}Kvietimo kodas, kurį kiti žaidėjai gali naudoti norėdami prisijungti prie šio serverio +STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE :{BLACK}Ryšio tipas STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP :{BLACK}Ar ir kaip jūsų serverį gali pasiekti kiti +STR_NETWORK_CLIENT_LIST_PLAYER :{BLACK}Žaidėjas STR_NETWORK_CLIENT_LIST_PLAYER_NAME :{BLACK}Vardas +STR_NETWORK_CLIENT_LIST_PLAYER_NAME_TOOLTIP :{BLACK}Jūsų žaidėjo vardas STR_NETWORK_CLIENT_LIST_PLAYER_NAME_EDIT_TOOLTIP :{BLACK}Įveskite žaidėjo pavadinimą +STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Jūsų žaidėjo vardas STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Šiam klientui atliktini administraciniai veiksmai +STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Prisijungti prie šios kompanijos +STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Siųsti žinutę šiam žaidėjui +STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Siųsti žinutę visiems žaidėjams šioje kompanijoje STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Siųsti žinutę visiems žiūrovams +STR_NETWORK_CLIENT_LIST_SPECTATORS :Stebėtojai STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(Nauja kompanija) +STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Sukurti naują įmonę ir prie jos prisijungti STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}Tai esi tu STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Tai yra žaidimo šeimininkas # Matches ConnectionType ###length 5 +STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_UNKNOWN :{BLACK}Vietinis STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_ISOLATED :{RED}Nuotoliniai žaidėjai negali prisijungti STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_DIRECT :{BLACK}Viešas STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_STUN :{BLACK}Už NAT @@ -2500,9 +2658,12 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Per rel STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Atjungti STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Blokuoti +STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Ištrinti/Pašalinti STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Administratoriaus veiksmas -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Ar tikrai norite iš naujo nustatyti įmonės slaptažodį '{COMPANY}'? +STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Ar tikrai norite išmesti žaidėją '{STRING}'? +STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Ar tikrai norite uždrausti žaidėją '{STRING}'? +STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Ar tikrai norite panaikinti kompaniją '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Naudotis tarpiniu perdavimu? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Nepavyko prisijungti prie serverio '{STRING}'.{}Ar norite pabandyti jungtis per tarpinę stotelę '{STRING}'? @@ -2510,22 +2671,18 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Ne STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Taip, bet tik šįkart STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Taip, ir prašau nebeklausti +STR_NETWORK_ASK_SURVEY_CAPTION :Dalyvauti automatinėje apklausoje? +STR_NETWORK_ASK_SURVEY_TEXT :Ar norėtumėte dalyvauti automatizuotoje apklausoje?{}OpenTTD išsiųs apklausą išeinant iš žaidimo.{}Jūs visada galėsite pakeisti savo pasirinkimą po "Pagrindinės nuostatos". +STR_NETWORK_ASK_SURVEY_PREVIEW :Peržiūrėti apklausos rezultatus +STR_NETWORK_ASK_SURVEY_LINK :Apie apklausą ir privatumą +STR_NETWORK_ASK_SURVEY_NO :Ne +STR_NETWORK_ASK_SURVEY_YES :Taip STR_NETWORK_SPECTATORS :Stebėtojai -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neišsaugotas įvestas slaptažodis -STR_COMPANY_PASSWORD_OK :{BLACK}Suteiktas kompanijai naujas slaptažodis -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Kompanijos slaptažodis -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Numatytasis kompanijos slaptažodis -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Naudoti kompanijos slaptažodį kaip pagrindinį naujoms kompanijoms - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Prisijungti STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Prisijunkite ir žaiskite kaip šios kompanijos -STR_COMPANY_VIEW_PASSWORD :{BLACK}Slaptažodis -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Apsaugok savo kompaniją slaptažodžiu nuo neleistinų vartotojų prisijungimo -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Įvesti slaptažodį # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Siųsti @@ -2538,6 +2695,7 @@ STR_NETWORK_CHAT_TO_COMPANY :[Komandai] {STR STR_NETWORK_CHAT_CLIENT :[Privačiai] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privačiai] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Visiems] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_EXTERNAL :[{3:STRING}] {0:STRING}: {WHITE}{1:STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Įveskite tekstą internetiniam pokalbiui # Network messages @@ -2553,6 +2711,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE} Įveski STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Jūsų serverio pavadinimas nenustatytas. Pavadinimą galima nustatyti kelių žaidėjų lango viršuje STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Žaidimo versija neatitinka serverio žaidimo versijos STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Blogas slaptažodis +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Jūs nesate leistinų žaidėjų sąraše STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Serveris pilnas STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Tau uždrausta prisijungti prie šio serverio (BAN) STR_NETWORK_ERROR_KICKED :{WHITE}Tu išmestas iš žaidimo (KICK) @@ -2563,11 +2722,12 @@ STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Jūs per STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Jūsų kompiuteris užtruko per ilgai prisijungiant STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Per ilgai užtrukote parsisiųsdami žemėlapį STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Per ilgai užtrukote jungdamiesi prie serverio +STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Jūsų žaidėjo vardas netinkamas STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Galimas ryšio praradimas STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Paskutines {NUM} sekund{P ė ės žių} jokių duomenų iš serverio -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :klaida STR_NETWORK_ERROR_CLIENT_DESYNC :sinchronizacijos klaida STR_NETWORK_ERROR_CLIENT_SAVEGAME :negali užkrauti žemėlapio @@ -2579,6 +2739,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :gautas neteisin STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :bloga versija STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :toks vardas jau naudojamas STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :blogas žaidimo slaptažodis +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :nėra leidžiamųjų sąraše STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :neteisinga kompanija DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :išmestas serverio STR_NETWORK_ERROR_CLIENT_CHEATER :bandė sukčiauti @@ -2603,18 +2764,18 @@ STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Žaidimas palei STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :žaidėjų skaičius STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :jungiasi žaidėjai STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :rankinis -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :žaidimo skriptas +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :žaidimo scenarijus STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :laukiama, kol atsinaujins saitai STR_NETWORK_MESSAGE_CLIENT_LEAVING :išeinama STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} prisijungė prie žaidimo -STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} pasijungė į žaidimą (Client #{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} prisijungė prie #{2:NUM} +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {0:STRING} pasijungė į žaidimą (Client #{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {0:STRING} prisijungė prie #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} prisijungė prie stebėtojų -STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} pradėjo naują kompaniją (#{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} paliko žaidimą ({2:STRING}) -STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} pasikeitė vardą į {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} persiuntė {2:CURRENCY_LONG} žaidėjui {1:STRING} +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {0:STRING} pradėjo naują kompaniją (#{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {0:STRING} paliko žaidimą ({2:STRING}) +STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} pasikeitė savo vardą į {STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {0:STRING} persiuntė {2:CURRENCY_LONG} žaidėjui {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serveris užsidarė STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Serveris persikrauna...{}Prašau palaukti... STR_NETWORK_MESSAGE_KICKED :*** {STRING} buvo išmestas. Priežastis: ({STRING}) @@ -2640,7 +2801,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Ieškoti STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Paliekate OpenTTD programą! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Turinio parsisiuntimo sąlygos įvairiose išorinėse svetainėse skiriasi.{}Norėdami įdiegti turinį, turėsite sekti nurodymus, pateikiamus tose svetainėse.{}Ar tęsti? STR_CONTENT_FILTER_TITLE :{BLACK}Žymės/pavadinimo filtravimas: -STR_CONTENT_OPEN_URL :{BLACK}Aplankyti svetainę +STR_CONTENT_OPEN_URL :{BLACK}Svetainė STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Aplankyti šio turinio svetainę STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Atsisiųsti STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Pradedama siųsti pažymėta turinį @@ -2676,7 +2837,7 @@ STR_CONTENT_TYPE_SCENARIO :Scenarijus STR_CONTENT_TYPE_HEIGHTMAP :Teminis žemėlapis STR_CONTENT_TYPE_BASE_SOUNDS :Baziniai garsai STR_CONTENT_TYPE_BASE_MUSIC :Bazinė muzika -STR_CONTENT_TYPE_GAME_SCRIPT :Žaidimo skriptas +STR_CONTENT_TYPE_GAME_SCRIPT :Žaidimo scenarijus STR_CONTENT_TYPE_GS_LIBRARY :GS biblioteka # Content downloading progress window @@ -2736,6 +2897,8 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Nerodyti STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Rodyti stotelės aptarnaujamą teritoriją STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Priima: {GOLD}{CARGO_LIST.ka} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Tiekia: {GOLD}{CARGO_LIST.ka} +STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Priežiūros išlaidos: {GOLD}{CURRENCY_SHORT} per metus +STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Priežiūros išlaidos: {GOLD}{CURRENCY_SHORT} per metus # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Sujungti stoteles @@ -2775,7 +2938,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Pasirink # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Kontrolės punktas -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Pasirinkite punkto tipą # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Pasirinkite stotelės parametrus @@ -2788,10 +2950,15 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Pasirink STR_STATION_BUILD_DRAG_DROP :{BLACK}Vilkti STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Statyti stotelę vilkimo būdu -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Pasirinkti stoties klasę rodymui -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Pasirinkti stoties statymo tipą +STR_PICKER_MODE_ALL :Visi -STR_STATION_CLASS_DFLT :Numatytoji stotelė + + +STR_HOUSE_PICKER_CLASS_ZONE1 :Kraštas + +STR_STATION_CLASS_DFLT :Numatytoji +STR_STATION_CLASS_DFLT_STATION :Numatytoji stotelė +STR_STATION_CLASS_DFLT_ROADSTOP :Numatytoji kelio stotelė STR_STATION_CLASS_WAYP :Keliarodžiai # Signal window @@ -2809,7 +2976,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Išvaži STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinuotasis signalas{}Veikia ir kaip įvažiavimo, ir kaip išvažiavimo signalas. Reikalingas kuriant sudėtingesnes, medžio tipo signalų sistemas STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Rezervuotojo kelio signalas{}Leidžia į vieną bėgių bloką įvažiuoti daugiau nei vienam traukiniui, jei jie važiuoja saugiu stabdymui atstumu. Gali būti pravažiuojamas iš galinės pusės STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Vienpusis rezervuotojo kelio signalas{}Leidžia į vieną bėgių bloką įvažiuoti daugiau nei vienam traukiniui, jei jie važiuoja saugiu stabdymui atstumu. Negali būti pravažiuojamas iš galinės pusės -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signalų keitiklis{}Aktyvavus ir spragtelėjus esamą signalą (semaforą), jis bus pakeistas į pasirinktąjį. Spragtelėjus esamą signalą (semaforą) laikant nuspaustą Ctrl klavišą, elektrinis signalas bus pakeistas į analogišką semaforą ir atvirkščiai. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signalų keitiklis{}Spragtelėjus esamą signalą (semaforą), jis bus pakeistas į pasirinktąjį. Spragtelėjus esamą signalą (semaforą) laikant nuspaustą Ctrl klavišą, elektrinis signalas bus pakeistas į analogišką semaforą ir atvirkščiai. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Atstumas langeliais tarp signalų, statomų vilkimo būdu STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Sumažinti atstumą tarp signalų, statomų vilkimo būdu STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Padidinti atstumą tarp signalų, statomų vilkimo būdu @@ -2818,6 +2985,10 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Padidint STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Pasirinkite geležinkelio tilto tipą STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Pasirinkite automobilių tilto tipą STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Tilto statyba — spragtelkite ant pageidaujamo tilto +STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY} +STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_BRIDGE_NAME_SUSPENSION_STEEL :Kabantis plieninis STR_BRIDGE_NAME_GIRDER_STEEL :Plieno sijų STR_BRIDGE_NAME_CANTILEVER_STEEL :Gembinis plieninis @@ -2831,21 +3002,21 @@ STR_BRIDGE_TUBULAR_SILICON :Vamzdinis silic # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Kelių tiesimas STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tramvajaus linijų tiesimas -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Tiesti vienos krypties kelią. Ctrl klavišas suaktyvina laikiną kelio šalinimo veikseną. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Tiesti vienos krypties kelią. Ctrl klavišas suaktyvina laikiną kelio šalinimo veikseną. Taip pat spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Tiesti tramvajaus bėgius. Ctrl klavišas suaktyvina laikiną bėgių šalinimo veikseną. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Tiesti kelią visomis kryptimis. Ctrl klavišas suaktyvina laikiną kelio šalinimo veikseną. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Tiesti tramvajaus bėgius visomis kryptimis. Ctrl klavišas įjungia laikiną bėgių šalinimo veikseną. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Statyti garažą automobilių pirkimui ir aptarnavimui. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Statyti garažą automobilių pirkimui ir aptarnavimui. Spragtelėjus laikant nuspaustą Shift klavišą, bus tik parodytos numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Statyti depą tramvajų pirkimui ir aptarnavimui. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Statyti autobusų stotelę. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus galima naująją stotelę sujungti su jau egzistuojančia. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Statyti keleivinio tramvajaus stotelę. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus galima naująją stotelę sujungti su jau egzistuojančia. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Statyti sunkvežimių krovos stotelę. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus galima naująją stotelę sujungti su jau egzistuojančia. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Statyti krovininio tramvajaus stotelę. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus galima naująją stotelę sujungti su jau egzistuojančia. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktyvinti vienos krypties kelių tiesimo veikseną -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Statyti automobilių tiltą. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Statyti automobilių tiltą. Taip pat spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Statyti tramvajaus tiltą. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Statyti automobilių tunelį. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Statyti tramvajaus tunelį. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Statyti automobilių tunelį. Taip pat spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Statyti tramvajaus tunelį. Taip pat spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Aktyvinti automobilių kelių ir stotelių šalinimo veikseną STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Aktyvinti tramvajaus bėgių ir stotelių šalinimo veikseną STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Pakeisti kelio tipą. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos @@ -2873,14 +3044,14 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Pasirink # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Vandens kelių tiesimas STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Kanalai -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Kasti kanalus. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Statyti šliuzus. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Statyti doką laivų pirkimui ir aptarnavimui. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Kasti kanalus. Taip pat galite nuspausti Shift klavišą, kad būtų parodytos numatomos išlaidos +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Statyti šliuzus. Taip pat spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Statyti doką laivų pirkimui ir aptarnavimui. Taip pat spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Statyti laivų prieplauką. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus galima naująją prieplauką sujungti su jau egzistuojančia stotele. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Statyti plūdurą, kuris gali būti naudojamas kaip tarpinė stotelė. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Statyti akveduką. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Kasti kanalus{}Jūros lygyje spragtelėjus laikant nuspaustą Ctrl klavišą, aplinka bus užlieta -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Kasti upes +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Statyti akveduką. Taip pat galite nuspausti Shift klavišą, kad būtų parodytos numatomos išlaidos +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Kasti kanalus. Jūros lygyje spragtelėjus laikant nuspaustą Ctrl klavišą, aplinka bus užlieta +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Kasti upes. Velkant laikant nuspaustą Ctrl klavišą, plotas bus žymimas įstrižai # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Pasirinkite doko kryptį @@ -2891,7 +3062,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Prieplau # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Oro uostų statyba -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Statyti oro uostą. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus galima naująjį oro uostą sujungti su jau egzistuojančia stotele. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Statyti oro uostą. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus galima naująjį oro uostą sujungti su jau egzistuojančia stotele. Taip pat spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Pasirinkite oro uosto parametrus @@ -2925,8 +3096,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Nusipirk # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Pasirinkite objektą -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Pasirinkite norimą objektą statymui. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Pasirinkite objekto tipą STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objekto peržiūra STR_OBJECT_BUILD_SIZE :{BLACK}Dydis langeliais: {GOLD}{NUM} x {NUM} @@ -2964,11 +3133,12 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ar tikra # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Miesto įkūrimas STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Naujas miestas -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Įkurti naują miestą. Shift+Click tik parodys kainą +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Įkurti naują miestą. Taip pat nuspaudus Shift klavišą bus parodyta tik numatoma kaina STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Atsitiktinis miestas STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Pastatyti miestą atsitiktinėje vietoje STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Daug atsitiktinių miestų STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Sukuria miestus atsitiktinėse žemėlapio vietose +STR_FOUND_TOWN_EXPAND_ALL_TOWNS :{BLACK}Išplėsti visus miestus STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}Kad visi miestai šiek tiek didėtų STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Miesto pavadinimas: @@ -2995,7 +3165,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 tink STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Atsitiktinai # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Pramonės įmonių steigimas +STR_FUND_INDUSTRY_CAPTION :{WHITE}Pramonės apmokėjimas STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Pasirinkite norimą įmonę iš sąrašo STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Įsteigti daug atsitiktinių įmonių STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Įsteigia pramonės įmones atsitiktinėse žemėlapio vietose @@ -3018,7 +3188,7 @@ STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Priiman STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Namai STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Spragtelkite, jei norite pamatyti šios pramonės įmonės tiekėjus ir pirkėjus STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Spragtelkite, jei norite pamatyti šio krovinio tiekėjus ir pirkėjus -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Parodyti grandinę +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Pramonės grandinė STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Parodyti krovinį tiekiančias ir priimančias pramonės įmones STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Nuoroda į žemėlapį STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Parodyti pasirinktą grandinę žemėlapyje @@ -3029,7 +3199,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Pasirink # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informacija apie žemės plotą -STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centruoti šį žemės lopinėlį pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šį lopinėlį +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centruoti šį žemės lopinėlį pagrindiniame lange. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad atidarytumėte naują peržiūros langą su vaizdu į šį lopinėlį STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Išvalymo kaina: {LTBLUE}NĖRA STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Išvalymo kaina: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}pajamos ištrynus: {LTBLUE}{CURRENCY_LONG} @@ -3040,8 +3210,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvaja STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Geležinkelio savininkas: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Vietos valdžia: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nėra -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatės: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Pastatytas: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatės: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Pastatytas ar renovuotas: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stotelės rūšis: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stotelės tipas: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Oro uosto klasė: {LTBLUE}{STRING} @@ -3107,7 +3277,7 @@ STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusiniai aug STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Geležinkelio stotelė STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Lėktuvo angaras STR_LAI_STATION_DESCRIPTION_AIRPORT :Oro uostas -STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Sunkvežimių pakrovimo aikštelė +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Sunkvežimių stotelė STR_LAI_STATION_DESCRIPTION_BUS_STATION :Autobusų stotelė STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Laivų prieplauka STR_LAI_STATION_DESCRIPTION_BUOY :Plūduras @@ -3152,17 +3322,17 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanijos žem STR_ABOUT_OPENTTD :{WHITE}Apie OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pradinės versijos teisės priklauso {COPYRIGHT} 1995 Chris Sawyer, Visos teisės saugomos STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-{STRING} OpenTTD komanda +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}„OpenTTD“ {COPYRIGHT}2002-{STRING} „OpenTTD“ komanda # Framerate display window -STR_FRAMERATE_CAPTION :Kadrų dažniai +STR_FRAMERATE_CAPTION :{WHITE}Kadrų dažnis STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Modeliavimo sparta: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Pagrindinio ciklo vykdymo sparta. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Pagrindinio ciklo vykdymo sparta STR_FRAMERATE_RATE_BLITTER :{BLACK}Vaizdo kadrų dažnis: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK} Per sekundę pateiktų vaizdo kadrų skaičius. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Per sekundę pateiktų vaizdo kadrų skaičius STR_FRAMERATE_SPEED_FACTOR :{BLACK}Dabartinis žaidimo spartos faktorius: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Parodo, kiek kartų žaidimas vyksta sparčiau, lyginant su normalia modeliavimo sparta. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Parodo, kiek kartų žaidimas vyksta sparčiau, lyginant su normalia modeliavimo sparta STR_FRAMERATE_CURRENT :{WHITE}Dabartinė STR_FRAMERATE_AVERAGE :{WHITE}Vidutinė STR_FRAMERATE_MEMORYUSE :{WHITE}Atmintis @@ -3191,7 +3361,7 @@ STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Perži STR_FRAMERATE_VIDEO :{BLACK}Vaizdo išvestis STR_FRAMERATE_SOUND :{BLACK}Garsų maišymas: STR_FRAMERATE_ALLSCRIPTS :{BLACK} Iš viso GS/DI: -STR_FRAMERATE_GAMESCRIPT :{BLACK} Žaidimo skriptas: +STR_FRAMERATE_GAMESCRIPT :{BLACK} Žaidimo scenarijus: STR_FRAMERATE_AI :{BLACK} DI {NUM} {STRING} ###length 15 @@ -3207,8 +3377,8 @@ STR_FRAMETIME_CAPTION_DRAWING :Grafinis vaizda STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Peržiūros langai STR_FRAMETIME_CAPTION_VIDEO :Vaizdo išvestis STR_FRAMETIME_CAPTION_SOUND :Garsų maišymas -STR_FRAMETIME_CAPTION_ALLSCRIPTS :GS/DI skriptai iš viso: -STR_FRAMETIME_CAPTION_GAMESCRIPT :Žaidimo skriptas +STR_FRAMETIME_CAPTION_ALLSCRIPTS :GS/DI scenarijai iš viso: +STR_FRAMETIME_CAPTION_GAMESCRIPT :Žaidimo scenarijus STR_FRAMETIME_CAPTION_AI :DI {NUM} {STRING} @@ -3234,7 +3404,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Žaidimo STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nėra informacijos STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}Plėtiniai: {WHITE}{STRING} -STR_SAVELOAD_FILTER_TITLE :{BLACK} Filtro eilutė: +STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtras: STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Perrašyti bylą STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Ar tikrai norite pakeisti jau esamą failą? STR_SAVELOAD_DIRECTORY :{STRING} (Aplankas) @@ -3248,10 +3418,13 @@ STR_MAPGEN_MAPSIZE :{BLACK}Žemėla STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Pasirinkite žemėlapio dydį langeliais. Prieinamų langelių skaičius bus šiek tiek mažesnis. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Miestų kiekis: +STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Pasirinkti gyvenviečių tankumą, arba pasirinktinę reikšmę STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Miestų pavadinimai: STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Pasirink miestų pavadinimų tipą STR_MAPGEN_DATE :{BLACK}Pradžios data: +STR_MAPGEN_DATE_TOOLTIP :{BLACK}Pasirinkite pradžios datą STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Pramonės įmonių kiekis: +STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Pasirinkti pramonės tankumą, arba pasirinktinę reikšmę STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Didžiausias aukštis STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Padidinti didžiausią galimą reljefo aukštį vienetu STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Sumažinti didžiausią galimą reljefo aukštį vienetu @@ -3265,15 +3438,18 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Sumažin STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Vietovės tipas: STR_MAPGEN_SEA_LEVEL :{BLACK}Jūros lygis: +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Pasirinkti jūros lygį STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Upių kiekis: STR_MAPGEN_SMOOTHNESS :{BLACK}Jautrumas: STR_MAPGEN_VARIETY :{BLACK}Įvairovės paskirstymas: STR_MAPGEN_GENERATE :{WHITE}Sukurti +STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Sukurti pasaulį ir žaisti OpenTTD! STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF Nustatymai -STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Rodyti NewGRF nustatymus +STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Atidaryti NewGRF nustatymus +STR_MAPGEN_AI_SETTINGS :{BLACK}DI nustatymai STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Rodyti DI nustatymus STR_MAPGEN_GS_SETTINGS :{BLACK}Žaidimo scenarijaus nustatymai -STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Rodyti žaidimo scenarijaus nustatymus +STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Atidaryti žaidimo scenarijaus nustatymus ###length 21 STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Anglų (Oginalus) @@ -3300,6 +3476,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Katalonų # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Žemėlapio kraštai: +STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Pasirinkite žaidimo pasaulio ribas STR_MAPGEN_NORTHWEST :{BLACK}Šiaurės vakarai STR_MAPGEN_NORTHEAST :{BLACK}Šiaurės rytai STR_MAPGEN_SOUTHEAST :{BLACK}Pietryčiai @@ -3327,6 +3504,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Lygi že STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Sukurti lygią žemę STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Atsitiktinis reljefas STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Lygumos aukštis: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Pasirinkite žemės aukštį virš jūros lygio STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Pakeisti lygumos aukštį vienu žemyn STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Pakelti žemės lygį vienu aukščiu @@ -3340,13 +3518,16 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Ar jus STR_GENERATION_PROGRESS :{WHITE}{NUM}% užbaigta STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Pasaulio generacija +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Peizažo generavimas STR_GENERATION_RIVER_GENERATION :{BLACK}Upių generavimas -STR_GENERATION_TREE_GENERATION :{BLACK}Medžių generacija -STR_GENERATION_OBJECT_GENERATION :{BLACK}Nejudinama generacija STR_GENERATION_CLEARING_TILES :{BLACK}Daubų ir uolų generacija +STR_GENERATION_TOWN_GENERATION :{BLACK}Miestų generavimas +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Pramonės generavimas +STR_GENERATION_OBJECT_GENERATION :{BLACK}Nejudinama generacija +STR_GENERATION_TREE_GENERATION :{BLACK}Medžių generacija STR_GENERATION_SETTINGUP_GAME :{BLACK}Sukurti zaidima STR_GENERATION_PREPARING_TILELOOP :{BLACK}Paleidžiamas tile-loop -STR_GENERATION_PREPARING_SCRIPT :{BLACK}Skriptas veikia +STR_GENERATION_PREPARING_SCRIPT :{BLACK}Veikiantis scenarijus STR_GENERATION_PREPARING_GAME :{BLACK}Ruošiamas žaidimas # NewGRF settings @@ -3413,6 +3594,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Išsaugo STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Išsaugoti rinkinį pasiriktu pavadinimu # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Pakeisti bazinius grafikos parametrus STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Plėtinio nuostatos STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Užverti STR_NEWGRF_PARAMETERS_RESET :{BLACK}Atstatyti @@ -3429,11 +3611,12 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Apžiūr STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ties {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objektas STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Bėgio tipas +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Kelio tipas STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Plėtinio kintamojo 60+x parametras (šešioliktainėje sistemoje) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Lygiuojamas spruklys {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Lygiuojamas spruklis: ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Tolesnis spruklys STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Įkelti tolesnį spruklį STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Nurodyti spruklį @@ -3442,6 +3625,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Ankstesn STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Įkelti ankstesnį spruklį STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Pasirinkto spruklio atvaizdas, nekreipiant dėmesio į lygiavimą STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Paslinkti spruklį, keičiant X ir Y poslinkius. Spragtelėjus laikant nuspaustą Ctrl klavišą, spruklys bus slenkamas po aštuonis vienetus +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Poslinkis centre @@ -3463,16 +3647,18 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING STR_NEWGRF_ERROR_MSG_WARNING :{RED}Įspėjimas: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Klaida: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Lemtingoji klaida: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Naujasis plėtinys "{STRING}" grąžino lemtingą klaidą:{}{STRING} +STR_NEWGRF_ERROR_POPUP :{WHITE}Naujasis plėtinys "{STRING}" grąžino klaidą:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} neveiks su TTDPatch versija nurodyta pagal OpenTTD -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} skirtas {STRING} TTD versijai. -STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} yra pritaikytas naudojimui su {STRING} -STR_NEWGRF_ERROR_INVALID_PARAMETER :Neteisingas parametras {1:STRING}: parametras {STRING} ({NUM}) -STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} turi būti įkeltas prieš {STRING} -STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} turi būti įkeltas po {STRING} -STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} reikalauja OpenTTD versijos {STRING} arba naujesnės +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} skirtas {2:STRING} TTD versijai. +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} yra pritaikytas naudojimui su {2:STRING} +STR_NEWGRF_ERROR_INVALID_PARAMETER :Neteisingas parametras {1:STRING}: parametras {2:STRING} ({3:NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} turi būti įkeltas prieš {2:STRING} +STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} turi būti įkeltas po {2:STRING} +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} reikalauja OpenTTD versijos {2:STRING} arba naujesnės STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF failas, kurį turėjo išversti STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Įkelta per daug plėtinių -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Plėtinio {1:STRING} įkėlimas su {STRING} gali išderinti žaidimą +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Plėtinio {1:STRING} įkėlimas su {2:STRING} gali išderinti žaidimą STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Netikėtas spruklys ({3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Nežinoma veiksmo 0 savybė {4:HEX} (spruklys {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Bandymas panaudoti neteisingą ID (spruklys {3:NUM}) @@ -3541,14 +3727,13 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Įjungti # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Redaguoti ženklo tekstą -STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centruoti ženklą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šį ženklą. +STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centruoti ženklą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šį ženklą STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Eiti prie kito ženklo STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Eiti prie ankstesnio ženklo STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Įrašykite ženklo pavadinimą # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Miestai STR_TOWN_DIRECTORY_NONE :{ORANGE}Nėra STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Miestas){BLACK} ({COMMA}) @@ -3566,6 +3751,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} pristatyta STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (vis dar reikia) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (pristatyta) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Miestas auga kas {ORANGE}{UNITS_DAYS_OR_SECONDS} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Miestas auga kas {ORANGE}{UNITS_DAYS_OR_SECONDS}(paremtas) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Miestas {RED}ne{BLACK}didėja STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Triukšmo limitas mieste: {ORANGE}{COMMA}{BLACK} daugiausia: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centruoti šį miestą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šį miestą @@ -3621,7 +3808,7 @@ STR_GOALS_TEXT :{ORANGE}{STRING STR_GOALS_NONE :{ORANGE}- Nieko - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Centruoti tikslo objektą pagrindiniame lange. Spragtelėjus laikant nuspaustą „Ctrl“ klavišą, bus atidarytas papildomas peržiūros langas su vaizdu į tą objektą +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Centruoti tikslo objektą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas papildomas peržiūros langas su vaizdu į tą objektą # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Klausimas @@ -3653,9 +3840,15 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Uždaryti # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidijos STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Dar nepanaudotos subsidijos: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} iš {STRING} į {STRING}{YELLOW} ({STRING}) STR_SUBSIDIES_NONE :{ORANGE}- Niekas - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Jau subsidijuojama: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} iš {STRING} į {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Paspauskite ant paslaugos, norėdami pamatyti pramonės vietą/miestą. Ctrl+Paspaudimas atidaro naują langą su pramonės vietos/miesto vaizdu +STR_SUBSIDIES_OFFERED_EXPIRY_DATE :iki {DATE_SHORT} +STR_SUBSIDIES_OFFERED_EXPIRY_TIME :per {UNITS_MONTHS_OR_MINUTES} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :iki {DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :liko {UNITS_MONTHS_OR_MINUTES} # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Scenarijaus knyga @@ -3678,6 +3871,10 @@ STR_STATION_LIST_STATION :{YELLOW}{STATIO STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Nieko - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Pažymėti visus pastatus +STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Visi kargo tipai ir jokio reitingo +STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Keli krovinių tipai +STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Jokių krovinių tipų +STR_STATION_LIST_CARGO_FILTER_EXPAND :Rodyti daugiau... # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} @@ -3745,7 +3942,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Uždraus STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Rodyti kontrolės punktą lango centre.Ctrl+Paspaudimas atidaro naują langą su kontrolės punkto vazidu. STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Keisti waypoint pavadinimą -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centruoti plūdurą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šį plūdurą +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centruoti plūdurą pagrindiniame lange. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad atidarytumėte naują peržiūros langą su vaizdu į šį plūdurą STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Pakeisti plūduro pavadinimą STR_EDIT_WAYPOINT_NAME :{WHITE}Redaguoti punkto vardą @@ -3753,34 +3950,44 @@ STR_EDIT_WAYPOINT_NAME :{WHITE}Redaguot # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finansai {BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_YEAR_CAPTION :{WHITE}Metai +STR_FINANCES_PERIOD_CAPTION :{WHITE}Periodas ###length 3 +STR_FINANCES_REVENUE_TITLE :{WHITE}Pajamos +STR_FINANCES_OPERATING_EXPENSES_TITLE :{WHITE}Veikimo sąnaudos STR_FINANCES_CAPITAL_EXPENSES_TITLE :{WHITE}Kapitalinės išlaidos ###length 13 STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstrukcijos STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nauja technika -STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Traukinių sąnaudos -STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Automobilių sąnaudos -STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Lėktuvų sąnaudos -STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Laivų sąnaudos +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Traukiniai +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Kelio transporto priemonės +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Lėktuvai +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Laivai +STR_FINANCES_SECTION_INFRASTRUCTURE :{GOLD}Infrastruktūra STR_FINANCES_SECTION_TRAIN_REVENUE :{GOLD}Traukiniai +STR_FINANCES_SECTION_ROAD_VEHICLE_REVENUE :{GOLD}Transporto priemonės STR_FINANCES_SECTION_AIRCRAFT_REVENUE :{GOLD}Lėktuvas +STR_FINANCES_SECTION_SHIP_REVENUE :{GOLD}Laivai STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Paskolos palūkanos STR_FINANCES_SECTION_OTHER :{GOLD}Kita -STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} +STR_FINANCES_TOTAL_CAPTION :{WHITE}Iš viso +STR_FINANCES_NEGATIVE_INCOME :-{CURRENCY_LONG} STR_FINANCES_ZERO_INCOME :{CURRENCY_LONG} -STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} +STR_FINANCES_POSITIVE_INCOME :+{CURRENCY_LONG} STR_FINANCES_PROFIT :{WHITE}Pelnas STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Sąskaitos balansas +STR_FINANCES_OWN_FUNDS_TITLE :{WHITE}Nuosavos lėšos STR_FINANCES_LOAN_TITLE :{WHITE}Paskola +STR_FINANCES_INTEREST_RATE :{WHITE}Paskolų palūkanos: {BLACK}{NUM}% STR_FINANCES_MAX_LOAN :{WHITE}Didžiausia paskola: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BANK_BALANCE :{WHITE}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Skolintis {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Skolintis daugiau. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus pasiskolinta didžiausia įmanoma suma +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Skolintis daugiau. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad pasiskolinti didžiausią įmanomą sumą STR_FINANCES_REPAY_BUTTON :{BLACK}Grąžinti {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Grąžinti paskolos dalį. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus grąžinta didžiausia įmanoma suma STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktūra @@ -3816,6 +4023,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Išsamia STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Peržiūrėti detalesnę infrastruktūros informaciją STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Pervesti pinigų STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Pervesti šiai kompanijai pinigų +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Priešiškas perėmimas +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Priešiškai perimti šią kompaniją STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Veidas STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Keičia direktoriaus veidą @@ -3843,9 +4052,11 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanalai STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stotys: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stoties langeliai STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Oro uostai +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENCY_LONG}/per metus +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG} per metus # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Gamyklos +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Gamyklos ({COMMA} iš {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nieko - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transportuota){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3853,7 +4064,7 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} ir {NUM} daugiau... -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Pramonės pavadinimai - spragtelėjus ant pavadinimo, pramonė rodoma ekrano centre. Ctrl+Paspaudimas atidaro nauja langą su pramonės vaizdu +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Pramonės pavadinimai - spragtelėjus ant pavadinimo, pramonė rodoma ekrano centre. Spragtelėjus laikant nuspaustą Ctrl klavišą atidarysite naują langą su pramonės vaizdu STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Priimami kroviniai: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Tiekiami kroviniai: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Visi krovinių tipai @@ -3862,6 +4073,7 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :(tuščia) # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Praėjusio mėnesio produkcija: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Praėjusios minutės produkcija: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportuota) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centruoti gamyklą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šią gamyklą STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Gamybos sparta: {YELLOW}{COMMA}% @@ -3872,7 +4084,7 @@ STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Gamina: STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Priima: -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{0:STRING}{BLACK}{3:STRING} STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} laukia{STRING} STR_CONFIG_GAME_PRODUCTION :{WHITE}Keisti gamybos apimtį (8 daugiklis, iki 2040) @@ -3901,7 +4113,10 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Tvarkyti STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Siųsti nurodymus visoms šio sąrašo tr. priemonėms STR_VEHICLE_LIST_REPLACE_VEHICLES :Keisti tr. priemones STR_VEHICLE_LIST_SEND_FOR_SERVICING :Siųsti techninės apžiūros +STR_VEHICLE_LIST_CREATE_GROUP :Sukurti grupę STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Šių metų pelnas: {CURRENCY_LONG} (praėjusių metų: {CURRENCY_LONG}) +STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] +STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Siųsti į depą STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Siųsti į depą @@ -3945,7 +4160,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Iškelti visas STR_GROUP_RENAME_CAPTION :{BLACK}Pervadinti grupę STR_GROUP_PROFIT_THIS_YEAR :Šio mėnesio pelnas: +STR_GROUP_PROFIT_THIS_PERIOD :Šių metų pelnas: STR_GROUP_PROFIT_LAST_YEAR :Pernykštis pelnas: +STR_GROUP_PROFIT_LAST_PERIOD :Pernykštis pelnas: STR_GROUP_OCCUPANCY :Dabartinė apkrova: STR_GROUP_OCCUPANCY_VALUE :{NUM}% @@ -3972,6 +4189,8 @@ STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Greitis: STR_PURCHASE_INFO_SPEED :{BLACK}Greitis: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Greitis vandenyne: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Greitis kanale/upėje: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}Veikimo išlaidos: {GOLD}{CURRENCY_LONG} per metus +STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Veikimo išlaidos: {GOLD}{CURRENCY_LONG} per metus STR_PURCHASE_INFO_CAPACITY :{BLACK}Talpa: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(permontuojamas) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Sukurtas: {GOLD}{NUM}{BLACK} Tarnavimo laikas: {GOLD}{COMMA} met{P ai ai ų} @@ -3994,12 +4213,14 @@ STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipas: { ###length 3 STR_CARGO_TYPE_FILTER_ALL :Visų rūšių kroviniai +STR_CARGO_TYPE_FILTER_FREIGHT :Krovinys +STR_CARGO_TYPE_FILTER_NONE :Nėra ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lokomotyvų ir vagonų sąrašas. Spragtelėjus bus parodyta platesnė informacija. Spragtelėjus laikant nuspaustą Ctrl klavišą, lokomotyvas ar vagonas bus slepiamas/rodomas sąraše STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Automobilių sąrašas. Spragtelėjus bus parodyta platesnė informacija. Spragtelėjus laikant nuspaustą Ctrl klavišą, automobilis bus slepiamas/rodomas sąraše STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Laivų sąrašas. Spragtelėjus bus parodyta platesnė informacija. Spragtelėjus laikant nuspaustą Ctrl klavišą, laivas bus slepiamas/rodomas sąraše -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lėktuvų sąrašas. Spragtelėjus bus parodyta platesnė informacija. Spragtelėjus laikant nuspaustą Ctrl klavišą, lėktuvas bus slepiamas/rodomas sąraše +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lėktuvų sąrašas. Spragtelėjus bus parodyta platesnė informacija. Spragtelėjus laikant nuspaustą Ctrl klavišą, lėktuvas bus rodomas/slepiamas sąraše ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Pirkti @@ -4014,16 +4235,16 @@ STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Pirkti i STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Pirkti ir pertvarkyti lėktuvą ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą lokomotyvą ir/ar vagonus. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą automobilį. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą laivą. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą lėktuvą. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą lokomotyvą ir/ar vagonus. Taip pat nuspaudus Shift klavišą bus parodyta tik numatoma kaina +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą automobilį. Taip pat nuspaudus Shift klavišą, bus parodyta tik pirkinio numatoma kaina +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą laivą. Taip pat nuspaudus Shift klavišą bus parodyta tik numatoma kaina +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą lėktuvą. Taip pat nuspaudus Shift klavišą bus parodyta tik numatoma kaina ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą lokomotyvą ir/ar vagonus. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkti ir pertvarkyti pažymėtą automobilį. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant -STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkti ir pertvarkyti pažymėtą laivą. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkti ir pertvarkyti pažymėtą lėktuvą. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodyta pirkinio kaina nieko realiai nenuperkant +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkti pažymėtą lokomotyvą ir/ar vagonus. Taip pat nuspaudus Shift klavišą bus parodyta tik numatoma kaina +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkti ir pertvarkyti pažymėtą automobilį. Taip pat nuspaudus Shift klavišą bus parodyta tik numatoma kaina +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkti ir pertvarkyti pažymėtą laivą. Taip pat nuspaudus Shift klavišą bus parodyta tik numatoma kaina +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkti ir pertvarkyti pažymėtą lėktuvą. Taip pat nuspaudus Shift klavišą bus parodyta tik numatoma kaina ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Pervardinti @@ -4115,15 +4336,15 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Kopijuot STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kopijuoti lėktuvą ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Nupirkti traukinio kopiją įskaitant visus vagonus. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Nupirkti automobilio kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Nupirkti laivo kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Nupirkti lėktuvo kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Nupirkti traukinio kopiją įskaitant visus vagonus. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Nupirkti automobilio kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Nupirkti laivo kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Nupirkti lėktuvo kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centruoti traukinių depą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šį depą -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centruoti automobilių garažą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šį garažą -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centruoti laivų doką pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šį doką +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centruoti traukinių depą pagrindiniame lange. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad atidaryti naują peržiūros langą su vaizdu į šį depą +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centruoti automobilių garažą pagrindiniame lange. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad atidaryti naują peržiūros langą su vaizdu į šį garažą +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centruoti laivų doką pagrindiniame lange. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad atidaryti naują peržiūros langą su vaizdu į šį doką STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centruoti lėktuvų angarą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šį angarą ###length VEHICLE_TYPES @@ -4198,6 +4419,17 @@ STR_ENGINE_PREVIEW_SHIP.ka :laivą STR_ENGINE_PREVIEW_SHIP.kuo :laivu STR_ENGINE_PREVIEW_SHIP.kur :laive +STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING} +STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING} +STR_ENGINE_PREVIEW_COST_WEIGHT :Kaina: {CURRENCY_LONG} Svoris: {WEIGHT_SHORT} +STR_ENGINE_PREVIEW_COST_MAX_SPEED :Kaina: {CURRENCY_LONG} Maksimalus greitis: {VELOCITY} +STR_ENGINE_PREVIEW_SPEED_POWER :Greitis: {VELOCITY} Galia: {POWER} +STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Greitis: {VELOCITY} Galia: {POWER} Maks. „T.E“.: {FORCE} +STR_ENGINE_PREVIEW_TYPE :Lėktuvo tipas: {STRING} +STR_ENGINE_PREVIEW_RUNCOST_YEAR :Veikimo išlaidos: {CURRENCY_LONG} per metus +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Veikimo išlaidos: {CURRENCY_LONG} per metus +STR_ENGINE_PREVIEW_CAPACITY :Talpa: {CARGO_LONG} +STR_ENGINE_PREVIEW_CAPACITY_2 :Talpa: {CARGO_LONG}, {CARGO_LONG} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Keisti tr. priemones {STRING} - {STRING} @@ -4268,7 +4500,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Nukreipt ###length VEHICLE_TYPES STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Nupirkti traukinio kopiją įskaitant visus vagonus. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Nupirkti automobilio kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Nupirkti automobilio kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos tik numatomos išlaidos STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Nupirkti laivo kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Nupirkti lėktuvo kopiją. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus bendrinamos kopijos ir originalo užduotys. Spragtelėjus laikant nuspaustą Shift klavišą, bus parodytos numatomos išlaidos @@ -4307,20 +4539,22 @@ STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Išvyks STR_VEHICLE_STATUS_CRASHED :{RED}Avarija! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Sugedęs STR_VEHICLE_STATUS_STOPPED :{RED}Sustabdytas -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stabdomas, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Stabdomas STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Nėra energijos STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Laukia laisvo kelio STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Paskirties oro uostas per toli -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Vyksta į „{STATION}“, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Neturi užduočių, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Vyksta į „{WAYPOINT}“, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Vyksta į „{DEPOT}“, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Vyksta techninei apžiūrai į „{DEPOT}“, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Vyksta į‌ ‌{0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Neturi užduočių +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Vyksta į ‌{0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Vyksta į ‌{0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Vyksta techninei apžiūrai į {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Iškrauti ir vykti į techninę apžiūrą į {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Nepavyksta pasiekti {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Negalima pasiekti {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Nepavyksta pasiekti {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Negali pasiekti {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Negali pasiekti {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Negali pasiekti {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Negali pasiekti {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4342,7 +4576,8 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Pervardi STR_VEHICLE_INFO_AGE :{COMMA} met{P ai ai ų} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} met{P ai ai ų} ({COMMA}) -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Amžius: {LTBLUE}{STRING}{BLACK} Eksploatavimo išlaidos: {LTBLUE}{CURRENCY_LONG} per metus +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Amžius: {LTBLUE}{STRING}{BLACK} Veikimo išlaidos: {LTBLUE}{CURRENCY_LONG} per metus +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Amžius: {LTBLUE}{STRING}{BLACK} Veikimo išlaidos: {LTBLUE}{CURRENCY_LONG} per metus STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Didž. greitis: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maks. greitis: {LTBLUE}{VELOCITY} {BLACK}Lėktuvo tipas: {LTBLUE}{STRING} @@ -4352,6 +4587,7 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Svoris: STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Šių metų pelnas: {LTBLUE}{CURRENCY_LONG} (praėjusiųjų: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Šių metų pelnas: {LTBLUE}{CURRENCY_LONG} (praeitais metais: {CURRENCY_LONG}) {BLACK}Min. įvykdymas: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Pelnas šį periodą: {LTBLUE}{CURRENCY_LONG} (praeito periodo: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Patikimumas: {LTBLUE}{COMMA}% {BLACK}Gedimų nuo paskutinės apžiūros: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Pagamintas: {LTBLUE}{NUM}{BLACK} Vertė: {LTBLUE}{CURRENCY_LONG} @@ -4362,9 +4598,19 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Talpa: { STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Pervesti už tiekėjų sistemas: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Techninė apžiūra kas: {LTBLUE}{COMMA}{NBSP}dien{P ą as ų}{BLACK}{STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Siųsti techninei apžiūrai patikimumui nukritus iki: {LTBLUE}{COMMA}%{BLACK} {STRING} +STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Paskutine apžiūra: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Padidinti techninės priežiūros intervalą 10 dienų. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad padidinti intervalą 5 dienomis +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Padidinti techninės priežiūros intervalą 5 minutėmis. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad padidinti intervalą 1 minute +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Padidinti techninės priežiūros intervalą 10 procentų. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad padidinti intervalą 5 procentais +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Sumažinti techninės priežiūros intervalą 10 dienų. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad sumažinti intervalą 5 dienomis +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Sumažinti techninės priežiūros intervalą 5 minutėmis. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad sumažinti intervalą 1 minute +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Sumažinti techninės priežiūros intervalą 10 procentų. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad sumažinti intervalą 5 procentais STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Techninės apžiūros intervalo tipas STR_VEHICLE_DETAILS_DEFAULT :Numatytasis +STR_VEHICLE_DETAILS_DAYS :Dienos STR_VEHICLE_DETAILS_PERCENT :Procentai ###length VEHICLE_TYPES @@ -4428,8 +4674,9 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Tvarkaraštis STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Pereiti į tvarkaraštį -STR_ORDERS_LIST_TOOLTIP :{BLACK}Užduočių sąrašas — užduotis pažymima ant jos spragtelėjus. Spragtelėjus laikant nuspaustą Ctrl klavišą, užduoties tikslo vieta bus centruojama pagrindiniame ekrane +STR_ORDERS_LIST_TOOLTIP :{BLACK}Užduočių sąrašas — užduotis pažymima ant jos spragtelėjus. Spragtelėjus laikant nuspaustą Ctrl klavišą, kad užduoties tikslo vieta būtų centruojama pagrindiniame ekrane STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Užduočių pabaiga- - STR_ORDERS_END_OF_SHARED_ORDERS :- - Bendrų užduočių pabaiga - - @@ -4466,6 +4713,7 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Galimam krovini STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vykti visuomet STR_ORDER_DROP_SERVICE_DEPOT :Vykti, jei reikia STR_ORDER_DROP_HALT_DEPOT :Nuvykti ir sustoti +STR_ORDER_DROP_UNBUNCH :Iškrauti # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES @@ -4499,7 +4747,7 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Reikšm STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Įveskite reikšmę, su kuria bus lyginama STR_ORDERS_SKIP_BUTTON :{BLACK}Praleisti -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Praleisti šiuo metų vykdomą užduotį ir imtis kitos. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus pradėta vykdyti pažymėtoji užduotis +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Praleisti šiuo metų vykdomą užduotį ir imtis kitos. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad pradėtumėte vykdyti pasirinktą užduotį STR_ORDERS_DELETE_BUTTON :{BLACK}Šalinti STR_ORDERS_DELETE_TOOLTIP :{BLACK}Šalinti pažymėtąją užduotį @@ -4548,6 +4796,7 @@ STR_ORDER_REFIT_ORDER :(pertvarkyti {S STR_ORDER_REFIT_STOP_ORDER :(pertvarkyti {STRING.kam} ir sustoti) STR_ORDER_STOP_ORDER :(sustoti) +STR_ORDER_WAIT_TO_UNBUNCH :(Palaukti iškrovimo) STR_ORDER_GO_TO_STATION :{STRING} „{STATION}“ {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Negalima naudotis stotimi){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4628,7 +4877,9 @@ STR_TIMETABLE_STATUS_LATE :{BLACK}Transpor STR_TIMETABLE_STATUS_EARLY :{BLACK}Transporto priemonė skuba {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Tvarkaraštis dar nėra aktyvintas +STR_TIMETABLE_START :{BLACK}Pradėti tvarkaraštį +STR_TIMETABLE_START_SECONDS_QUERY :Sekundės iki tvarkaraščio pradžios STR_TIMETABLE_CHANGE_TIME :{BLACK}Keisti trukmę STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Keisti pažymėtos užduoties trukmę @@ -4664,11 +4915,11 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Pasirink # AI debug window -STR_AI_DEBUG :{WHITE}DI / GameScript derinimas +STR_AI_DEBUG :{WHITE}DI / „GameScript“ derinimas STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Skripto pavadinimas +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Scenarijaus pavadinimas STR_AI_DEBUG_SETTINGS :{BLACK}Nustatymai -STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Keisti skripto nustatymus +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Keisti scenarijaus nustatymus STR_AI_DEBUG_RELOAD :{BLACK}Perkrauti AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Išbraukti DI, perkrauti skritpą, ir perkrauti DI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Įjungti/išjungti stabdymą, jei DI žurnalo žinutė sutampa su stabdos žinute @@ -4679,20 +4930,23 @@ STR_AI_DEBUG_MATCH_CASE :{BLACK}Skirti d STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Įjungti didžiūjų raidžių skyrimą, kai DI registro žinutės tikrinamos su eilučių skirtuku STR_AI_DEBUG_CONTINUE :{BLACK}Tęsti STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Pratęsti žaidimą ir tęsti simuliatorių -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Rodyti DI derinimo režimo išeigą -STR_AI_GAME_SCRIPT :{BLACK}Žaidimo skriptas -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Patikrinti Žaidimo Skripto įrašus +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Rodyti DI derinimo režimo išeigą. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad atidarytumėte naujame lange +STR_AI_GAME_SCRIPT :{BLACK}Žaidimo scenarijus +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Patikrinti žaidimo scenarijaus įrašus. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad atidarytumėte naujame lange STR_ERROR_AI_NO_AI_FOUND :Nerasta jokio tinkamo DI.{}Šis DI yra netikras ir nieko nedarys.{}Galite parsisiųsti keletą DI per 'Turinio internete' sistemą. -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Vienas iš paleistų skriptų išsijungė. Praneškite apie tai šio skripto autoriui su skripto debug lango vaizdu -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}DI / GameScript derinimo langas yra pasiekiamas tik iš serverio +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Vienas iš paleistų scenarijų išsijungė. Praneškite apie tai šio scenarijaus autoriui su scenarijaus derinimo lango vaizdu +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}DI / „GameScript“ derinimo langas yra pasiekiamas tik iš serverio # AI configuration window -STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Žaidimo skriptas bus įkeltas sekančiame žaidime +STR_AI_CONFIG_CAPTION_AI :{WHITE}DI nustatymai +STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}Žaidimo scenarijaus nustatymai +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Žaidimo scenarijus bus įkeltas sekančiame žaidime STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}DI'ai bus įkelti sekančiame žaidime STR_AI_CONFIG_HUMAN_PLAYER :Žaidėjas Žmogus STR_AI_CONFIG_RANDOM_AI :Atsitiktinis DI STR_AI_CONFIG_NONE :(tuščia) +STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Didžiausias priešininkų skaičius: {ORANGE}{COMMA} STR_AI_CONFIG_MOVE_UP :{BLACK}Perkelti aukščiau @@ -4700,30 +4954,30 @@ STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Perkelti STR_AI_CONFIG_MOVE_DOWN :{BLACK}Perkelti žemiau STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Perkelti pasirinktą DI žemiau -STR_AI_CONFIG_GAMESCRIPT :{SILVER}Žaidimo skriptas +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Žaidimo scenarijus STR_AI_CONFIG_GAMESCRIPT_PARAM :{SILVER}Parametrai STR_AI_CONFIG_AI :{SILVER}DI'ai -STR_AI_CONFIG_CHANGE_AI :DI -STR_AI_CONFIG_CHANGE_GAMESCRIPT :Žaidimo skriptas -STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Užkrauti kitą skriptą +STR_AI_CONFIG_CHANGE_AI :{BLACK}Pasirinkti DI +STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Pasirinkti žaidimo scenarijų +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Užkrauti kitą scenarijų. Spragtelėkite laikant nuspaustą Ctrl klavišą, kad parodyti visas prieinamas versijas STR_AI_CONFIG_CONFIGURE :{BLACK}Derinti -STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Suderinti skripto nustatymus +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Suderinti scenarijaus nustatymus # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Prieinamas {STRING} STR_AI_LIST_CAPTION_AI :DI'ai -STR_AI_LIST_CAPTION_GAMESCRIPT :Žaidimo skriptai -STR_AI_LIST_TOOLTIP :{BLACK}Pasirinkite skriptą paspausdami +STR_AI_LIST_CAPTION_GAMESCRIPT :Žaidimo scenarijai +STR_AI_LIST_TOOLTIP :{BLACK}Paspauskite, kad pasirinkti scenarijų STR_AI_LIST_AUTHOR :{LTBLUE}Autorius: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Versija: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Priimti -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Pasirinkti pažymėtą skriptą +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Pasirinkti pažymėtą scenarijų STR_AI_LIST_CANCEL :{BLACK}Atšaukti -STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Nekeisti skripto +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Nekeisti scenarijaus STR_SCREENSHOT_CAPTION :{WHITE}Padaryti ekrano kopiją STR_SCREENSHOT_SCREENSHOT :{BLACK}Įprasta kopija @@ -4734,22 +4988,31 @@ STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Teminio STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Mini žemėlapio kopija # Script Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametrai STR_AI_SETTINGS_CAPTION_AI :DI +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Žaidimo scenarijus STR_AI_SETTINGS_CLOSE :{BLACK}Uždaryti STR_AI_SETTINGS_RESET :{BLACK}Atstatyti STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window +STR_TEXTFILE_JUMPLIST :{WHITE}Turinys +STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} STR_TEXTFILE_WRAP_TEXT :{WHITE}Skaidyti tekstą STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Skaidyti tekstą taip, kad jis visas tilpų lange -STR_TEXTFILE_VIEW_README :{BLACK}Peržiūrėti SKAITYKMANE +STR_TEXTFILE_VIEW_README :{BLACK}SKAITYKMANE +STR_TEXTFILE_VIEW_README_TOOLTIP :Rodyti SKAITYKMANE šiam turiniui STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Pasikeitimai +STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Rodyti pakeitimų sąrašą šiam turiniui STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licencija +STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Rodyti licencija šiam turiniui ###length 5 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} aprašymas {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} pasikeitimai {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licencija {STRING} +STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Peržiūrėti apklausos rezultatą +STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD dokumentas '{STRING}' # Vehicle loading indicators @@ -4780,9 +5043,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Numatomo STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Vyksta išsaugojimas,{}palaukite kol baigsis! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatinis išsaugojimas nepavyko STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Negali pasiekti disko -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Žaidimo išsaugoti nepavyko{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Žaidimo išsaugoti nepavyko... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Failo ištrinti nepavyko -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Žaidimo atverti nepavyko{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Žaidimo atverti nepavyko... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Vidinė klaida: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Sugadintas išsaugotas žaidimas - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Išsaugotas žaidimas iš naujesnės versijos @@ -4876,7 +5139,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Neįmano STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Neįmanoma pastatyti įmonės būstinės... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Neimanoma statyti jokiu miestu +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Neįmanoma statyti jokių miestų... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Miesto pervardinti negalima... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Negalima įkurti miesto... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Negalima praplėsti miestelio... @@ -4993,6 +5256,7 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Negalima STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Netinkamas depo tipas # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... gali turėti tik vieną iškrovimo užduotį # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} yra per ilgas po pakeitimo @@ -5078,6 +5342,7 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Kelyje o STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... trukdo įmonės būstinė STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Neįmanoma užsisakyti šio langelio... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... jis ir taip priklauso jums! +STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE} ...pasiektas objektų statybos limitas # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Neįmanoma sukurti grupę... @@ -5135,7 +5400,7 @@ STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Negalima ###length VEHICLE_TYPES STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Neimanoma pervardinti traukinio tipo... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Negali pervardinti automobliu tipo... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Negali pervardinti automoblio tipo... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Laivo vardo pakeisti negalima... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Negalima pakeisti lektuvo vardo... @@ -5157,6 +5422,8 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Pakeiski STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Kol kas negalima įsigyti jokių transporto priemonių STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Pradėkite žaidimą vėliau, nei {DATE_SHORT}, arba įdiekite plėtinių, kurie leistų įsigyti transporto priemonių šiame ankstyvame laikotarpyje +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Pakeisti savo plėtinio konfigūracija + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Neįmanoma priversti traukinio važiuoti nesaugiai... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Traukinio vaziavimo krypties pakeisti negalima... @@ -5188,11 +5455,21 @@ STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... per STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... lėktuvui paskirties vieta yra per toli # Extra messages which go on the third line of errors, explaining why orders failed +STR_ERROR_NO_RAIL_STATION :{WHITE}Nėra geležinkelio stoties +STR_ERROR_NO_BUS_STATION :{WHITE}Nėra autobusų stoties +STR_ERROR_NO_TRUCK_STATION :{WHITE}Nėra sunkvežimio stoties +STR_ERROR_NO_DOCK :{WHITE}Nėra doko +STR_ERROR_NO_AIRPORT :{WHITE}Nėra jokio oro ar sraigtasparnio uosto +STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Nėra jokių stabdymų su palaikomu keliu (tipu) +STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Nėra jokių stabdymų su palaikomu tramvajaus tipu +STR_ERROR_NO_BUOY :{WHITE}Nėra plūduro # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Neįmanoma sudaryti grafiko... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Transporto priemonė gali laukti tik stotelėse. STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ši transporto priemonė nestoja šioje stotyje. +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... tvarkaraštis neužbaigtas +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... tvarkaraštis dar neprasidėjo # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... per daug ženklų @@ -5903,6 +6180,7 @@ STR_UNKNOWN_STATION :Nežinoma stote STR_DEFAULT_SIGN_NAME :Ženklas STR_COMPANY_SOMEONE :kažkas +STR_SAVEGAME_DURATION_REALTIME :{NUM}val. {NUM}min. STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Stebėtojas, {1:STRING} @@ -5936,18 +6214,26 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}tūkst. +STR_CURRENCY_SHORT_GIGA :{NBSP}mlrd. + STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} +STR_JUST_DECIMAL :{DECIMAL} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index ca0ae58bee..5c0162e2ca 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -308,7 +308,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Mat dës STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Ofbriechen STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Warnung: Server-Administratoren kënnen all Text aus desem Feld liesen. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :§1234567890'^\qwertzuiopè¨asdfghjkléà yxcvbnm,.- . @@ -438,6 +437,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Eraus aus dem E STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Eraus + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Spilloptiounen @@ -956,18 +956,13 @@ STR_GAME_OPTIONS_VOLUME :Volume STR_GAME_OPTIONS_SFX_VOLUME :Soundeffekter STR_GAME_OPTIONS_MUSIC_VOLUME :Musik -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Währungseenheet STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Währungseenheet wielen STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Pond STR_GAME_OPTIONS_CURRENCY_USD :Dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1057,11 +1052,6 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Klick d STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias Schrëften STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Klick dës Optioun fir verännerbar Schrëften ze anti-aliasen -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatesch Emfro STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}An enger automatescher Emfro matmaachen @@ -1090,6 +1080,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis Mu STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Wiel de Basis Musikset dee soll benotzt ginn STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Méi Informatiounen iwwer de Basis Musikset + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(keng Plugins déi mat Social Platforms kommunizéiren installéiert) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1117,6 +1108,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Setz de STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Setz de Betrag Suen dee fir 1 Pond (£) gebraucht gëtt erop STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Setzt de Wiesselcours fir deng Währung fir 1 Pond (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Setz de Separator fir deng Wähung + STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Setzt de Prefix fir deng Währung STR_CURRENCY_SUFFIX :{LTBLUE}Suffix: {ORANGE}{STRING} @@ -1271,10 +1265,10 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Endlos Geld: {S STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Erlaab fir endlos Geld auszeginn an schalt de Bankrott vu Firmen aus STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximalen Ufanksloun: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximalwäert den eng Firma kann léinen (ouni Inflatioun matzerechnen) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximalwäert den eng Firma ka léinen (ouni Inflatioun matzerechnen). Wann "keen Kredit" gewielt gouf, gëtt et kee Geld ausser e Game Script, oder d'"Endlos geld" Astellung gëtt es. STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Kee Kredit {RED}Spill-Script muss am Ufank e Geldbetrag zur Verfügung ginn +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Kee Kredit STR_CONFIG_SETTING_INTEREST_RATE :Zënssaz: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Zënssaz; kontrolléiert och d'Inflatioun wann ugeschalt @@ -1487,11 +1481,12 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Warnen wann en STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Wann ugeschalt, gëtt e Noorichtemessage gesent, wann e Gefier ee Joer laang kee Profit gemeet huet STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Wann ugeschalt gëtt e Message geschéckt wann e Gefier eng Period laang kee Profit gemet huet + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Gefierer lafen nie of: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Wann ugeschalt, bleiwen all Modeller vu Gefierer éiweg verfügbar STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Zäitmiessung: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Wiel d'Zäitmiessungsuniten déi am Spill benotzt ginn. Dat kann spéider net méi geännert ginn.{}{}Kalennerbaséiert ass d'standart OpenTTD Erfahrung, wou all Joer 12 Méint huet an all Mount 28-31 Deeg.{}{}Wann d'Auer un der Mauer ausgewielt gëtt, si Gefierbewegungen, Wuereproduktioun an finanziell Saachen op 1-Minut-Schrëtt baséiert, wat ongeféiert esou laang ass wéi en 30 Deeg Mount am kalennerbaséierte Modus. Déi si gruppéiert an 12-Minute Perdioden, equivalent zu engem Joer am kalennerbaséierte Modus.{}{}An béide Modi gëtt et emmer e klassesche Kalenner de gebraucht fir d'Aféirungsdaten fir Gefier, Häiser an aner Infrastrukturen. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Wiel d'Zäitmiessungsuniten déi am Spill benotzt ginn. Dat kann spéider net méi geännert ginn.{}{}Kalennerbaséiert ass d'standart OpenTTD Erfahrung, wou all Joer 12 Méint huet an all Mount 28-31 Deeg.{}{}Wann d'Auer un der Mauer ausgewielt gëtt, Wuereproduktioun an finanziell Saachen op 1-Minut-Schrëtt baséiert, wat ongeféiert esou laang ass wéi en 30 Deeg Mount am kalennerbaséierte Modus. Déi si gruppéiert an 12-Minute Perdioden, equivalent zu engem Joer am kalennerbaséierte Modus.{}{}An béide Modi gëtt et emmer e klassesche Kalenner de gebraucht fir d'Aféirungsdaten fir Gefier, Häiser an aner Infrastrukturen. ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalenner STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Auer un der Mauer @@ -1828,7 +1823,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard Revisi STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Definéiert de Standardrevisiounsintervall fir nei Fligeren, wann keen expliziten Revisiounsintervall uginn ass STR_CONFIG_SETTING_SERVINT_SHIPS :Standard Revisiounsintervall fir Schëffer: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definéiert de Standardrevisiounsintervall fir nei Schëffer, wann keen expliziten Revisiounsintervall uginn ass -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}D{P 0 ag eeg}/Minutt{P 0 "" en}% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Ausgeschalt @@ -2128,17 +2124,8 @@ STR_CONFIG_SETTING_AI :Géigner STR_CONFIG_SETTING_AI_NPC :Computergéigner STR_CONFIG_SETTING_NETWORK :Netzwierk -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pfadfinder fir Zich: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pfadfinder dee fir Zich benotzt gëtt -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pfadfinder fir Stroossegefierer: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pfadfinder dee fir Gefierer benotzt gëtt -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pfadfinder fir Schëffer: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Pfadfinder dee fir Schëffer benotzt gëtt STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatescht Emdréinen bei Signaler: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Erlab Zich bei engem Signal emzedréinen, wann se eng laang Zäit geward hunn -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(recommandéiert) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Astellung änneren @@ -2457,7 +2444,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Ruffen d STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Verbindung trennen STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server ass geschützt. Passwuert aginn -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma ass geschützt. Passwuert aginn # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Online Spiller @@ -2506,13 +2492,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via e Re STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Kicken STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Bannen STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Läschen -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Password entspären STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Administrativ Actioun STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Bassde sécher dass du de Spiller '{STRING}' kicke wëlls? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Bass du sécher, dass du de Spiller '{STRING}' banne wëlls? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Bass du sécher, dass du d'Firma '{COMPANY}' läsche wëlls? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Bassde sécher dass du d'Password vun der Firma '{COMPANY}' wëlls reseten? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Relay benotzen? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Konnt keng Verbindung tëschend dir an dem Server '{STRING}' opbauen.{}Wëlls du des Verbindung iwwert de Relay '{STRING}' man? @@ -2529,19 +2513,9 @@ STR_NETWORK_ASK_SURVEY_YES :Jo STR_NETWORK_SPECTATORS :Zuschauer -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Späicher d'Passwuert net -STR_COMPANY_PASSWORD_OK :{BLACK}Benotz daat neit Passwuert fir d'Firma -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Firma-Passwuert -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standard Firma-Passwuert -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Benotzt dëst Passwuert als Standard fir nei Firmen - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Bäitrieden STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Bäitrieden an mat deser Firma spillen -STR_COMPANY_VIEW_PASSWORD :{BLACK}Passwuert -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Setzt en Passwuert fir nëmmen authoriséiert Benotzer spillen ze loossen -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Setzt d'Firmen-Passwuert # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Ofschécken @@ -2585,7 +2559,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Däi Spi STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Méigleche Verbindungsverloscht STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Déi lescht {NUM} Sekonn{P "" e} si keng Date vum Server komm -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :generellen Feeler STR_NETWORK_ERROR_CLIENT_DESYNC :desync Feeler STR_NETWORK_ERROR_CLIENT_SAVEGAME :konnt d'Kaart net lueden @@ -2802,7 +2776,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Wielt d' # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Weepunkt -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Wielt de Weepunktyp # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Gare Auswiel @@ -2815,8 +2788,13 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Wielt d' STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}D'Statioun per drag & drop bauen -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Wielt eng Statiounsklass déi ugewise gëtt -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Wielt den Typ vu Statioun dee gebaut gëtt + + + +STR_HOUSE_PICKER_CLASS_ZONE1 :Rand +STR_HOUSE_PICKER_CLASS_ZONE2 :Ausseberäich +STR_HOUSE_PICKER_CLASS_ZONE3 :Aner Viruerter +STR_HOUSE_PICKER_CLASS_ZONE4 :Bannescht Viruerter STR_STATION_CLASS_DFLT :Standard STR_STATION_CLASS_DFLT_STATION :Standardstatioun @@ -2959,8 +2937,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kaf Land # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objetsauswiel -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Wiel den Objet dee gebaut gëtt. Ctrl+Klick+Zéien wielt d'Areal diagonal. Dréck Shift fir nëmmen déi ongeféier Käschten unzeweisen -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Wiel d'Klass vun dem Objet dee sollt gebaut ginn STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Preview vum Objet STR_OBJECT_BUILD_SIZE :{BLACK}Gréisst: {GOLD}{NUM} x {NUM} Felder @@ -3075,7 +3051,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramschi STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Schinnebesëtzer: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Gemeng: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Keng -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinaten: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinaten: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Feldindex: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Gebaut/renovéiert: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Statiounsklass: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Statiounstyp: {LTBLUE}{STRING} @@ -3387,9 +3364,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% k STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Welt-Generatioun STR_GENERATION_RIVER_GENERATION :{BLACK}Generéiren vu Flëss -STR_GENERATION_TREE_GENERATION :{BLACK}Baam Generatioun -STR_GENERATION_OBJECT_GENERATION :{BLACK}Objets-Generatioun STR_GENERATION_CLEARING_TILES :{BLACK}Generatioun vu knubbelegem a stengege Land +STR_GENERATION_OBJECT_GENERATION :{BLACK}Objets-Generatioun +STR_GENERATION_TREE_GENERATION :{BLACK}Baam Generatioun STR_GENERATION_SETTINGUP_GAME :{BLACK}Spill gëtt opgestallt STR_GENERATION_PREPARING_TILELOOP :{BLACK}Felder-Verdeelung STR_GENERATION_PREPARING_SCRIPT :{BLACK}Lafende Script @@ -3481,7 +3458,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Stroossentyp STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF Variabel 60+x Parameter (hexadezimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alignéiren d'Sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nächst Sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Géi weider op déi nächst normal Sprite, iwwersprang all pseudo/recolour/font Sprite an sprang un den Ufank no der leschter. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Géi op Sprite @@ -3598,7 +3574,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Géi bei STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Gëff en Numm fir d'Schëld an # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Stied STR_TOWN_DIRECTORY_NONE :{ORANGE}- Keng - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Stad){BLACK} ({COMMA}) @@ -3932,7 +3907,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/Period # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrien STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Keng - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transportéiert){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4381,22 +4355,22 @@ STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Warden STR_VEHICLE_STATUS_CRASHED :{RED}Accident! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Pann STR_VEHICLE_STATUS_STOPPED :{RED}Gestoppt -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stoppt, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Am gaang ze stoppen STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Keng Energie STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Waard op en fräie Wee STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Ze wäit op nächst Destinatioun -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Ennerwee op {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Keng Opträg, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Ennerwee op {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Ennerwee an den {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Revisioun am {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Verspreeën a Revisioun am Schapp {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Ennerwee op {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Keng Opträg +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Ennerwee op {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Ennerwee an den {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Revisoun am {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Verspreeën a Revisioun am Schapp {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Kann {STATION} net erreechen, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Kann {WAYPOINT} net erreechen, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Kann {DEPOT} net erreechen, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Kann den {DEPOT} net erreechen, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Kann {0:STATION} net erreechen +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Kann {0:WAYPOINT} net erreechen +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Kann {0:DEPOT} net erreechen, +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Kann den {0:DEPOT} net erreechen # Vehicle stopped/started animations ###length 2 @@ -4610,7 +4584,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Géi an den noo STR_ORDER_GO_TO_NEAREST_HANGAR :Géi an den noosten Hangar STR_ORDER_CONDITIONAL :Bedéngten Optragssprong STR_ORDER_SHARE :Opträg deelen -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Setzt en neien Optrag firun den ungewielten Optrag, oder un d'Enn vun der Lëscht. Ctrl+Klick op eng Statioun fir 'voll belueden mat all Wueren', op e Weepunkt fir den 'non-stop Standard' emzeschalten, oder op e Schapp fir eng 'Revisioun'. Klick op e Gefier fir seng Opträg ze kopéieren oder Ctrl+Klick fir seng Opträg ze deelen. En Depot Optrag schalt d'automatesch Revisioun vum Gefier aus +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Setzt en neien Optrag firun den ungewielten Optrag, oder un d'Enn vun der Lëscht. Ctrl+Klick op eng Statioun fir 'voll belueden mat all Wueren', op e Weepunkt fir den 'non-stop Standard' emzeschalten, oder op e Schapp fir ze 'verspreeën'. Klick op e Gefier fir seng Opträg ze kopéieren oder Ctrl+Klick fir seng Opträg ze deelen. En Depot Optrag schalt d'automatesch Revisioun vum Gefier aus STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Weis all Gefierer déi dësen Plang deelen @@ -4840,8 +4814,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spill-Script STR_AI_SETTINGS_CLOSE :{BLACK}Zoumaachen STR_AI_SETTINGS_RESET :{BLACK}Reset STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4894,9 +4866,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Geschät STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Nach amgaangen ze späicheren.{} W.e.g. waarde bis daat fäerdeg ass! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fehler beim Autospäicheren STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kann net um Laafwierk liesen -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Fehler beim Späicheren{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kann d'Datei net läschen -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fehler beim Lueden{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne Feeler: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Futtissen Späicherstand - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillstand ass mat enger méi neier Versioun gemaach @@ -5278,6 +5248,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Änner d STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nach keng Gefierer verfügbar STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}En neit Spill no {DATE_SHORT} ufenken oder benotz en NewGRF den al Gefierer erlaabt + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kann den Zuch net bei Gefor durch d'Signal schécken... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kann d'Richtung vum Zuch net änneren... @@ -5807,6 +5778,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}m +STR_CURRENCY_SHORT_GIGA :{NBSP}mia +STR_CURRENCY_SHORT_TERA :{NBSP}bn + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index f5049b3f5d..c38bc1af10 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -358,6 +358,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Напушти STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Напушти + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :игра опции @@ -762,7 +763,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци -###length 43 +###length 44 # Autosave dropdown @@ -787,6 +788,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци + # Custom currency window @@ -795,6 +797,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци + STR_NUM_CUSTOM_NUMBER :Прилагодено ({NUM}) @@ -911,6 +914,7 @@ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Инфраст ###length 2 + ###length 2 @@ -1019,6 +1023,8 @@ STR_CONFIG_SETTING_SOUND_VEHICLE :Возила: { STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#ОПкодови пред скрипти се суспендирани: {STRING} +###length 3 + ###setting-zero-is-special @@ -1121,7 +1127,6 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x ###length 3 -###length 2 # Config errors @@ -1214,8 +1219,6 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x -# Network set password - # Network company info join/password # Network chat @@ -1225,7 +1228,7 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Ти беше испраќање премногу команди на серверот -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :испраќа премногу команди # Network related errors @@ -1286,6 +1289,9 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Изгр + + + # Signal window STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Влез сигнализација (електрика){}Зелено е се додека има барем еден зелен излез-сигнал во продолжението на траката, во спротивно е црвено. STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Излез Сигнализација (електрика){}Се однесува на ист начин како блок-сигналот, но потребно е да ја има точната боја на влезен и комбо пресигнал. @@ -1333,7 +1339,6 @@ STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Поди # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Избор на објект -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Одберете објект да се изгради STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Преглед на објектот STR_OBJECT_BUILD_SIZE :{BLACK}Големина: {GOLD}{NUM} x {NUM} плочки @@ -2116,6 +2121,7 @@ STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... во + # Specific vehicle errors @@ -2220,6 +2226,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/malay.txt b/src/lang/malay.txt index 2e359372a6..adfa5350b4 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -363,6 +363,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Abai penyunting STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Keluar + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Pilihan permainan @@ -829,7 +830,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unit kew STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Pilihan unit kewangan -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Paun British STR_GAME_OPTIONS_CURRENCY_USD :Dolar Amerika STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -907,6 +908,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Maklumat + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Gagal untuk mendapat senarai resolusi yang disokong STR_ERROR_FULLSCREEN_FAILED :{WHITE}Mod skrin penuh gagal dilakukan @@ -918,6 +920,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Kurangka STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Tambahkan nilai matawang anda untuk satu Pound (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Tetapkan kadar pertukaran mata wang anda untuk stau Paun (£) + STR_CURRENCY_PREFIX :{LTBLUE}Imbuhan awalan: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Tetapkan permulaan untuk mata wang anda STR_CURRENCY_SUFFIX :{LTBLUE}Imbuhan akhiran: {ORANGE}{STRING} @@ -1232,6 +1235,7 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :Semua kenderaan STR_CONFIG_SETTING_WARN_INCOME_LESS :Beri amaran jika pendapatan kenderaan adalah negatif: {STRING} ###length 2 + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Kenderaan tidak akan tamat tempohnya: {STRING} ###length 2 @@ -1436,7 +1440,8 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Pilih sama ada STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Tetapkan selang masa servis untuk pesawat baru kepada tetapan asal jika tiada selang masa servis yang jelas ditetapkan untuk pesawat tersebut STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Tetapkan selang masa servis untuk kapal baru kepada tetapan asal jika tiada selang masa servis yang jelas ditetapkan untuk kapal tersebut -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}hari{P 0 "" s}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Dilumpuhkan @@ -1593,14 +1598,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industri-indust STR_CONFIG_SETTING_AI :Pesaing STR_CONFIG_SETTING_AI_NPC :Pemain komputer -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pencari laluan untuk keretapi: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pencari laluan untuk kenderaan jalanraya: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pencari laluan untuk kapal: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Berundur secara automatik di isyarat: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Benarkan keretapi berundur di lampu isyarat, jika ia menuggu lama -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Disyorkan) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Tukar nilai tetapan @@ -1867,7 +1866,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Sedang m STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Terputus STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Pelayan dilindungi. Masukkan kata laluan -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Syarikat ini dilindungi. Masukkan kata laluan # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Senarai klien @@ -1883,19 +1881,9 @@ STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Senarai klien STR_NETWORK_SPECTATORS :Penyaksi -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Jangan simpan kata laluan ini -STR_COMPANY_PASSWORD_OK :{BLACK}Berikan syarikat kata laluan yang baru -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Kata laluan syarikat -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Kata laluan syarikat yang lazim -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Gunakan kata laluan syarikat ini sebagai yang lazim untuk syarikat baru - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Sertai STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Sertai dan main sebagai syarikat ini -STR_COMPANY_VIEW_PASSWORD :{BLACK}Kata laluan -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Lindungi syarikat anda dengan kata laluan untuk mengelak daripada penyertaan pengguna tanpa izin. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Tetapkan kata laluan syarikat # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Hantar @@ -1934,7 +1922,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Komputer STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mungkin kehilangan penyambungan STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Tiada data diterima pada beberapa {NUM} saat yang terakhir -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :kesilapan am STR_NETWORK_ERROR_CLIENT_DESYNC :kesilapan sinkronisasi (desync) STR_NETWORK_ERROR_CLIENT_SAVEGAME :tidak boleh membuka peta @@ -2121,7 +2109,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Pilih pe # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Tandatuju -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Pilih jenis tandatuju # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Pilihan Stesen Keretapi @@ -2134,8 +2121,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Pilih ke STR_STATION_BUILD_DRAG_DROP :{BLACK}Seret & Lepas STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bina stesen menggunakan kaedah seret & lepas -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Pilih kelas stesen untuk dipaparkan -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Pilih jenis stesen untuk dibina + + + STR_STATION_CLASS_DFLT :Stesen lazim STR_STATION_CLASS_WAYP :Tandatuju @@ -2266,8 +2254,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Beli tan # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Pilihan Objek -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Pilih objek untuk dibina. Shift untuk anggaran kos -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Pilih kelas untuk objek yang ingin dibina STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Pranonton objek STR_OBJECT_BUILD_SIZE :{BLACK}Saiz: {GOLD}{NUM} x {NUM} petak @@ -2367,7 +2353,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Pemilik STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Pemilik landasan keretapi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Pihak berkuasa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Tiada -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinat: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Dibina: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Kelas stesen: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Jenis stesen: {LTBLUE}{STRING} @@ -2587,9 +2572,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% s STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Penjanaan dunia STR_GENERATION_RIVER_GENERATION :{BLACK}Penjanaan sungai -STR_GENERATION_TREE_GENERATION :{BLACK}Penjanaan pokok -STR_GENERATION_OBJECT_GENERATION :{BLACK}Penjanaan objek-objek yang tidak boleh digerakkan STR_GENERATION_CLEARING_TILES :{BLACK}Penjanaan kawasan berbatu dan tanah kasar +STR_GENERATION_OBJECT_GENERATION :{BLACK}Penjanaan objek-objek yang tidak boleh digerakkan +STR_GENERATION_TREE_GENERATION :{BLACK}Penjanaan pokok STR_GENERATION_SETTINGUP_GAME :{BLACK}Permainan sedang diuruskan STR_GENERATION_PREPARING_TILELOOP :{BLACK}Lingkaran petak sedang dijalankan STR_GENERATION_PREPARING_SCRIPT :{BLACK}Skrip sedang berjalan @@ -2669,7 +2654,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Jenis landasan STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Pemboleh ubah NewGRF, parameter 60+x (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Megalih peperi {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Peperi seterusnya STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Teruskan ke peperi seterusan yang biasa, melangkau sebarang peperi pseudo/warna kembali/fon dan memusing balik semula STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Pergi ke peperi @@ -2771,7 +2755,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Pergi ke STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Masukkan nama untuk papan tanda # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bandar-bandar STR_TOWN_DIRECTORY_NONE :{ORANGE}- Tiada - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Senarai bandar - klik nama bandar untuk memusatkan pemandangan ke bandar. Ctrl+Klik untuk membuka tetingkap pemandangan di lokasi bandar @@ -3014,7 +2997,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Petak st STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lapangan Terbang # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industri STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Tiada - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nama industri - klik pada nama untuk memusatkan pemandangan ke industri. Ctrl+Klik membuka tetingkap pemandangan di lokasi industri @@ -3808,9 +3790,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Jangkaan STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Penyimpanan sedang berlaku,{}sila tunggu sehingga selesai! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Penyimpanan automatik gagal dilakukan STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Gagal dalam membaca cakera -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Penyimpanan Permainan Gagal{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Tidak boleh memadamkan fail -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Pembukaan Permainan Gagal{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Kesilapan dalaman: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Simpanan permainan yang rosak - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Simpanan permainan ini telah dibuat dengan versi yang lebih baru @@ -4164,6 +4144,7 @@ STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... kend STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Mulakan permainan baru selepas {DATE_SHORT} atau gunakan NewGRF yang digunakan kenderaan terdahulu + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Keretapi tidak boleh melanggar isyarat kerana terdapat kemungkinan bahaya... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Keretapi tidak boleh ditukar arah... @@ -4673,6 +4654,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/maltese.txt b/src/lang/maltese.txt index 821c75b6ca..6ae059a396 100644 --- a/src/lang/maltese.txt +++ b/src/lang/maltese.txt @@ -272,6 +272,7 @@ STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Ibni ind ###length 7 STR_SCENEDIT_FILE_MENU_SEPARATOR : + # Settings menu ###length 16 @@ -398,7 +399,7 @@ STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE -###length 43 +###length 44 # Autosave dropdown @@ -426,6 +427,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn + # Custom currency window @@ -434,6 +436,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn + ###length 5 ###length 6 @@ -557,6 +560,7 @@ STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avza jekk jinti ###length 2 + ###length 2 @@ -664,6 +668,8 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ippermetti l-uz +###length 3 + ###setting-zero-is-special @@ -738,7 +744,6 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ippermetti l-uz ###length 3 -###length 2 # Config errors @@ -810,8 +815,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} -# Network set password - # Network company info join/password # Network chat @@ -820,7 +823,7 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} # Network messages -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :reviżjoni ħażina STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :isem diġa qed jintuża STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :password ħażin @@ -872,6 +875,9 @@ STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} + + + # Signal window # Bridge selection window @@ -900,7 +906,6 @@ STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} # Landscaping toolbar # Object construction window -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Aghzel il-klassi tal-oggett li se tibni # Tree planting window (last eight for SE only) @@ -1467,6 +1472,7 @@ STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Hemm wis + # Specific vehicle errors STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ma tistax tbiddel id-direzzjoni tal-ferrovija... @@ -1746,6 +1752,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index f9c9c8f416..323f43b57b 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -352,6 +352,7 @@ STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :उद्दे STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :बंद करा + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :खेळाचे पर्याय @@ -670,7 +671,7 @@ STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLAC -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :पौंड STR_GAME_OPTIONS_CURRENCY_USD :डोल्लर STR_GAME_OPTIONS_CURRENCY_EUR :युरो @@ -724,6 +725,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य + # Custom currency window @@ -732,6 +734,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य + ###length 5 ###length 6 @@ -846,6 +849,7 @@ STR_CONFIG_SETTING_WARN_LOST_VEHICLE : वाहन ###length 2 + ###length 2 @@ -951,6 +955,8 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :सर्व +###length 3 + ###setting-zero-is-special @@ -1026,7 +1032,6 @@ STR_CONFIG_SETTING_STATUSBAR_POS :स्टेट ###length 3 -###length 2 # Config errors @@ -1134,8 +1139,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} -# Network set password - # Network company info join/password # Network chat @@ -1146,7 +1149,7 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE} संपर्क तुटला असण्याची शक्यता STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE} गेल्या {NUM} सेकंदांत सर्वरकडून काहीच माहिती आलेली नाही -###length 21 +###length 22 # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} @@ -1195,6 +1198,9 @@ STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} + + + # Signal window # Bridge selection window @@ -1866,6 +1872,7 @@ STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}पू + # Specific vehicle errors @@ -2094,6 +2101,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index ce9d362794..1ce7300d1b 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -32,7 +32,7 @@ STR_CARGO_PLURAL_COAL :Kull STR_CARGO_PLURAL_MAIL :Post STR_CARGO_PLURAL_OIL :Olje STR_CARGO_PLURAL_LIVESTOCK :Buskap -STR_CARGO_PLURAL_GOODS :Gods +STR_CARGO_PLURAL_GOODS :Varer STR_CARGO_PLURAL_GRAIN :Korn STR_CARGO_PLURAL_WOOD :Tømmer STR_CARGO_PLURAL_IRON_ORE :Jernmalm @@ -66,7 +66,7 @@ STR_CARGO_SINGULAR_COAL :Kull STR_CARGO_SINGULAR_MAIL :Post STR_CARGO_SINGULAR_OIL :Olje STR_CARGO_SINGULAR_LIVESTOCK :Buskap -STR_CARGO_SINGULAR_GOODS :Gods +STR_CARGO_SINGULAR_GOODS :Vare STR_CARGO_SINGULAR_GRAIN :Korn STR_CARGO_SINGULAR_WOOD :Tømmer STR_CARGO_SINGULAR_IRON_ORE :Jernmalm @@ -100,7 +100,7 @@ STR_QUANTITY_COAL :{WEIGHT_LONG} k STR_QUANTITY_MAIL :{COMMA}{NBSP}postsekk{P "" er} STR_QUANTITY_OIL :{VOLUME_LONG} olje STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}enhet{P "" er} buskap -STR_QUANTITY_GOODS :{COMMA}{NBSP}kasse{P "" r} gods +STR_QUANTITY_GOODS :{COMMA}{NBSP}kasse{P "" r} varer STR_QUANTITY_GRAIN :{WEIGHT_LONG} korn STR_QUANTITY_WOOD :{WEIGHT_LONG} tømmer STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} jernmalm @@ -192,18 +192,46 @@ STR_COLOUR_WHITE :Hvit STR_COLOUR_RANDOM :Tilfeldig ###length 17 +STR_COLOUR_SECONDARY_DARK_BLUE :Mørkeblå +STR_COLOUR_SECONDARY_PALE_GREEN :Lysegrønn +STR_COLOUR_SECONDARY_SECONDARY_PINK :Rosa +STR_COLOUR_SECONDARY_YELLOW :Gul +STR_COLOUR_SECONDARY_RED :Rød +STR_COLOUR_SECONDARY_LIGHT_BLUE :Lyseblå +STR_COLOUR_SECONDARY_GREEN :Grønn +STR_COLOUR_SECONDARY_DARK_GREEN :Mørkegrønn +STR_COLOUR_SECONDARY_BLUE :Blå +STR_COLOUR_SECONDARY_CREAM :Kremgul +STR_COLOUR_SECONDARY_MAUVE :Rødlilla +STR_COLOUR_SECONDARY_PURPLE :Lilla +STR_COLOUR_SECONDARY_ORANGE :Oransje +STR_COLOUR_SECONDARY_BROWN :Brun +STR_COLOUR_SECONDARY_GREY :Grå +STR_COLOUR_SECONDARY_WHITE :Hvit +STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Samme som primær # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP}mi/t +STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP}mph STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}km/t STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}m/s +STR_UNITS_VELOCITY_GAMEUNITS_DAY :{DECIMAL}{NBSP}ruter/dag +STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}ruter/sek +STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}knop STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}hk STR_UNITS_POWER_METRIC :{DECIMAL}{NBSP}hk STR_UNITS_POWER_SI :{DECIMAL}{NBSP}kW +STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}hk/t +STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}hk/t +STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_SI :{DECIMAL}{NBSP}hk/Mg +STR_UNITS_POWER_METRIC_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}hk/t +STR_UNITS_POWER_METRIC_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}hk/t +STR_UNITS_POWER_METRIC_TO_WEIGHT_SI :{DECIMAL}{NBSP}hk/Mg STR_UNITS_POWER_SI_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}kW/t +STR_UNITS_POWER_SI_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}kW/t +STR_UNITS_POWER_SI_TO_WEIGHT_SI :{DECIMAL}{NBSP}W/kg STR_UNITS_WEIGHT_SHORT_IMPERIAL :{DECIMAL}{NBSP}t STR_UNITS_WEIGHT_SHORT_METRIC :{DECIMAL}{NBSP}t @@ -215,7 +243,7 @@ STR_UNITS_WEIGHT_LONG_SI :{DECIMAL}{NBSP} STR_UNITS_VOLUME_SHORT_IMPERIAL :{DECIMAL}{NBSP}gal STR_UNITS_VOLUME_SHORT_METRIC :{DECIMAL}{NBSP}l -STR_UNITS_VOLUME_SHORT_SI :{DECIMAL} m³ +STR_UNITS_VOLUME_SHORT_SI :{DECIMAL}{NBSP}m³ STR_UNITS_VOLUME_LONG_IMPERIAL :{DECIMAL}{NBSP}gallon STR_UNITS_VOLUME_LONG_METRIC :{DECIMAL}{NBSP}liter @@ -230,15 +258,22 @@ STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP} STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m # Time units used in string control characters +STR_UNITS_DAYS :{COMMA}{NBSP}dag{P "" er} +STR_UNITS_SECONDS :{COMMA}{NBSP}sekund{P "" er} +STR_UNITS_TICKS :{COMMA}{NBSP}tikk +STR_UNITS_MONTHS :{NUM}{NBSP}måned{P "" er} +STR_UNITS_MINUTES :{NUM}{NBSP}minutt{P "" er} +STR_UNITS_YEARS :{NUM}{NBSP}år +STR_UNITS_PERIODS :{NUM}{NBSP}period{P "" er} # Common window strings -STR_LIST_FILTER_TITLE :{BLACK}Filterstreng: -STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv inn søkefilter -STR_LIST_FILTER_TOOLTIP :{BLACK}Skriv inn et søkeord for å filtrere listen med +STR_LIST_FILTER_TITLE :{BLACK}Filtrer: +STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv inn ett eller flere nøkkelord for å søkeord for å filtrere listen med +STR_LIST_FILTER_TOOLTIP :{BLACK}Skriv inn ett eller flere nøkkelord for å søkeord for å filtrere listen med -STR_TOOLTIP_GROUP_ORDER :{BLACK}Velg grupperings-rekkefølge +STR_TOOLTIP_GROUP_ORDER :{BLACK}Velg grupperingsrekkefølge STR_TOOLTIP_SORT_ORDER :{BLACK}Velg sorteringsrekkefølge (synkende/stigende) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Velg sorteringskriterier STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Velg filtreringskriterier @@ -256,7 +291,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Klikk og STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Veksle mellom stor/liten vindustørrelse STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - ruller listen opp/ned STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - ruller listen til venstre/høyre -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv bygninger osv. på et landområde. Ctrl velger område diagonalt. Shift slår av/på kostnadsestimat +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv bygninger osv. på et landområde. Ctrl+klikk+dra for å velge området diagonalt. Trykk også Shift for kun å vise kostnadsestimat # Show engines button ###length VEHICLE_TYPES @@ -275,11 +310,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ved å a STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Avbryt STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Advarsel: Server-administratorer kan lese tekst som blir skrevet her. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Lengde: {NUM} @@ -298,11 +332,13 @@ STR_SORT_BY_TYPE :Type STR_SORT_BY_TRANSPORTED :Transportert STR_SORT_BY_NUMBER :Nummer STR_SORT_BY_PROFIT_LAST_YEAR :Fortjeneste i fjor +STR_SORT_BY_PROFIT_LAST_PERIOD :Fortjeneste forrige periode STR_SORT_BY_PROFIT_THIS_YEAR :Fortjeneste i år +STR_SORT_BY_PROFIT_THIS_PERIOD :Fortjeneste denne periode STR_SORT_BY_AGE :Alder STR_SORT_BY_RELIABILITY :Pålitelighet STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Total kapasitet per varetype -STR_SORT_BY_MAX_SPEED :Maks hastighet +STR_SORT_BY_MAX_SPEED :Topphastighet STR_SORT_BY_MODEL :Modell STR_SORT_BY_VALUE :Verdi STR_SORT_BY_LENGTH :Lengde @@ -319,16 +355,20 @@ STR_SORT_BY_POWER :Kraft STR_SORT_BY_TRACTIVE_EFFORT :Trekkraft STR_SORT_BY_INTRO_DATE :Introduksjonsdato STR_SORT_BY_RUNNING_COST :Driftskostnad -STR_SORT_BY_POWER_VS_RUNNING_COST :Effekt-/Driftskostnad +STR_SORT_BY_POWER_VS_RUNNING_COST :Effekt/Driftskostnad STR_SORT_BY_CARGO_CAPACITY :Lastekapasitet STR_SORT_BY_RANGE :Rekkevidde STR_SORT_BY_POPULATION :Folketall STR_SORT_BY_RATING :Rangering STR_SORT_BY_NUM_VEHICLES :Antall kjøretøy -STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Total profitt i fjor -STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Total profitt i år -STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Gjennomsnittlig profitt i fjor -STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Gjennomsnittlig profitt i år +STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Total fortjeneste i fjor +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Total fortjeneste forrige periode +STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Total fortjeneste i år +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Total fortjeneste denne perioden +STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Gjennomsnittlig fortjeneste i fjor +STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Gjennomsnittlig fortjeneste forrige periode +STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Gjennomsnittlig fortjeneste i år +STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Gjennomsnittlig fortjeneste denne periode # Group by options for vehicle list STR_GROUP_BY_NONE :Ingen @@ -343,33 +383,33 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Åpne or STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Sett spillet på pause STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Dobbel hastighet på spillet STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Innstillinger -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Lagre, avbryt spillet, avslutt OpenTTD -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vis kart, ekstra tilleggsvindu eller skiltliste -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Vis byoversikt -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Vis subsidier -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vis liste over firmaets stasjoner -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Vis firmaenes økonomiske data -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Vis firmaenes generelle data -STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Vise historiebok -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Vise målliste -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vis grafer -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Vis firmarangeringstabell -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansier bygging av ny industri eller vis liste over industrier -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vis gruppe- og kjøretøyliste over firmaets tog. Ctrl+klikk viser kun kjøretøyliste -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Vis gruppe- og kjøretøyliste over firmaets lastebiler/busser. Ctrl+klikk viser kun kjøretøyliste -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Vis gruppe- og kjøretøyliste over firmaets skip. Ctrl+klikk viser kun kjøretøyliste -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vis gruppe- og kjøretøyliste over firmaets luftfartøy. Ctrl+klikk viser kun kjøretøyliste +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Lagre, last eller avbryt spillet, avslutt program +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Åpne kart, ekstra tilleggsvindu, vareflyt eller skiltliste +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Åpne bykatalog eller grunnlegg by +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Åpne subsidieliste +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Åpne liste over selskapets stasjoner +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Åpne selskapets økonomiske informasjon +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Åpne generell selskapsinformasjon +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Åpne historiebok +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Åpne målliste +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Åpne selskapsgrafer og satser for varebetaling +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Åpne selskapsrangeringstabell +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Åpne industrikatalog, industrikjede, eller finansier bygging av ny industri +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Åpne liste over selskapets tog. Ctrl+klikk for å vise eller skjule transportmiddelgrupper, motsatt av valgt innstilling +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Åpne liste over selskapets kjøretøy. Ctrl+klikk for å vise eller skjule transportmiddelgrupper, motsatt av valgt innstilling +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Åpne liste over selskapets skip. Ctrl+klikk for å vise eller skjule transportmiddelgrupper, motsatt av valgt innstilling +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Åpne liste over selskapets luftfartøy. Ctrl+klikk for å vise eller skjule transportmiddelgrupper, motsatt av valgt innstilling STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zoom inn STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Zoom ut -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jernbanespor -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bygg veier -STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Bygg trikkespor -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bygg havner +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jernbaneinfrastruktur +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bygg veiinfrastruktur +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Bygg trikkeinfrastruktur +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bygg havneinfrastruktur STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bygg flyplasser -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Åpne landskapsverktøylinjen for å heve/senke land, plante trær, osv. -STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Vis lyd-/musikkinnstillinger -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Vis siste melding/nyhet, vis meldingsinnstillinger -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informasjon om landområde, konsoll, skriptfeilsøking, skjermbilder, om OpenTTD +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Åpne landskapsmenyen, tremenyen eller plassere et skilt +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Åpne lyd-/musikkinnstillinger +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Åpne siste melding/nyhet, meldingshistorikk eller slette alle meldinger +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Åpne informasjon om landområde, skjermbildemeny, om OpenTTD, eller utviklerverktøy STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skift verktøylinjer # Extra tooltips for the scenario editor toolbar @@ -379,15 +419,15 @@ STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Rediger STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Flytt startdatoen tilbake ett år STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Flytt startdatoen frem ett år STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klikk her for å taste inn startåret -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vis kart og byoversikt -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landskapsgenerering -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bygenerering -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industrigenerering -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Veibygging -STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Bygg trikkespor -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plant trær. Shift slår av/på kostnadsestimat +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Åpne kart, ekstra tillegssvindu, tegnliste, eller by- eller industrikatalog +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Åpne landskapsmeny eller generer en ny verden +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bygg eller generer byer +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Bygg eller generer industrier +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Bygg veiinfrastruktur +STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Bygg trikkeinfrastruktur +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plant trær. Ctrl+klikk+dra for å velge arealet diagonalt. Trykk også Shift for å kun vise kostnadsestimat STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Plasser skilt -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Plasser objekt. Shift slår av/på kostnadsestimat +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Plasser objekt. Ctrl+klikk+dra for å velge arealet diagonalt. Trykk også Shift for å kun vise kostnadsestimat # Scenario editor file menu ###length 7 @@ -399,20 +439,25 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Avslutt rediger STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Avslutt +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Generer byer +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Plasser hus + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Spillinnstillinger STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Innstillinger -STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :Innstillinger for spill-skript +STR_SETTINGS_MENU_AI_SETTINGS :KI-innstilinger +STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :Innstillinger for Game Script STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-innstillinger +STR_SETTINGS_MENU_SANDBOX_OPTIONS :Sandkasseinnstillinger STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Instillinger for gjennomsiktighet STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Vis bynavn STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Vis stasjonsnavn -STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Vis kontrollpunkt +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Vis veipunktnavn STR_SETTINGS_MENU_SIGNS_DISPLAYED :Vis skilt -STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Vis motstanderskilt og -navn +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Vis konkurrenters skilt og navn STR_SETTINGS_MENU_FULL_ANIMATION :Fullstending animasjon -STR_SETTINGS_MENU_FULL_DETAIL :Maks detaljer +STR_SETTINGS_MENU_FULL_DETAIL :Alle detaljer STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Gjennomsiktige bygninger STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gjennomsiktige skilt @@ -440,11 +485,11 @@ STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Graf over fortj STR_GRAPH_MENU_INCOME_GRAPH :Graf over Inntekter STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Graf over leverte varer STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Graf over prestasjonhistorikk -STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graf over firmaverdi +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graf over selskapsverdi STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Varetakster # Company league menu -STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Firmarangeringstabell +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Selskapsrangeringstabell STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detaljert prestasjonrating STR_GRAPH_MENU_HIGHSCORE :Tavle med høyeste poengsummer @@ -454,20 +499,20 @@ STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Industrikjeder STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Finansier ny industri # URailway construction menu -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Bygg jernbane -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Bygg elektrisk jernbane -STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Bygg monorail -STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Bygg maglev +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Bygge jernbane +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Bygge elektrisk jernbane +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Bygge monorail +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Bygge maglev # Road construction menu -STR_ROAD_MENU_ROAD_CONSTRUCTION :Bygg vei -STR_ROAD_MENU_TRAM_CONSTRUCTION :Bygg trikkespor +STR_ROAD_MENU_ROAD_CONSTRUCTION :Bygge vei +STR_ROAD_MENU_TRAM_CONSTRUCTION :Bygge trikkespor # Waterways construction menu -STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Bygg vannveier +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Bygge vannveier # Aairport construction menu -STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Bygg flyplass +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Bygge flyplass # Landscaping menu STR_LANDSCAPING_MENU_LANDSCAPING :Landskapsverktøy @@ -484,14 +529,16 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Slett alle meld # About menu STR_ABOUT_MENU_LAND_BLOCK_INFO :Informasjon om landområde +STR_ABOUT_MENU_HELP :Hjelp og manualer STR_ABOUT_MENU_TOGGLE_CONSOLE :Vis/skjul konsoll -STR_ABOUT_MENU_AI_DEBUG :AI/Spillskript-feilsøking +STR_ABOUT_MENU_AI_DEBUG :KI/Game Script-feilsøking STR_ABOUT_MENU_SCREENSHOT :Skjermbilde -STR_ABOUT_MENU_SHOW_FRAMERATE :Vis bildehastighet +STR_ABOUT_MENU_SHOW_FRAMERATE :Vis oppdateringsrate STR_ABOUT_MENU_ABOUT_OPENTTD :Om 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Spriteforskyver STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Vis/skjul markeringsramme STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Veksle mellom farger på skitne blokker +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Vis/skjul modulomriss ###length 31 STR_DAY_NUMBER_1ST :1. @@ -527,18 +574,18 @@ STR_DAY_NUMBER_30TH :30. STR_DAY_NUMBER_31ST :31. ###length 12 -STR_MONTH_ABBREV_JAN :Jan -STR_MONTH_ABBREV_FEB :Feb -STR_MONTH_ABBREV_MAR :Mar -STR_MONTH_ABBREV_APR :Apr -STR_MONTH_ABBREV_MAY :Mai -STR_MONTH_ABBREV_JUN :Jun -STR_MONTH_ABBREV_JUL :Jul -STR_MONTH_ABBREV_AUG :Aug -STR_MONTH_ABBREV_SEP :Sep -STR_MONTH_ABBREV_OCT :Okt -STR_MONTH_ABBREV_NOV :Nov -STR_MONTH_ABBREV_DEC :Des +STR_MONTH_ABBREV_JAN :jan +STR_MONTH_ABBREV_FEB :feb +STR_MONTH_ABBREV_MAR :mar +STR_MONTH_ABBREV_APR :apr +STR_MONTH_ABBREV_MAY :mai +STR_MONTH_ABBREV_JUN :jun +STR_MONTH_ABBREV_JUL :jul +STR_MONTH_ABBREV_AUG :aug +STR_MONTH_ABBREV_SEP :sep +STR_MONTH_ABBREV_OCT :okt +STR_MONTH_ABBREV_NOV :nov +STR_MONTH_ABBREV_DEC :des ###length 12 STR_MONTH_JAN :januar @@ -565,11 +612,14 @@ STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COM STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Fortjenestegraf STR_GRAPH_INCOME_CAPTION :{WHITE}Inntektsgraf STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Vareenheter levert -STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Prestasjonsvurdering av firma (maks poeng=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Firmaverdier +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Prestasjonsvurdering av selskap (største poengsum=1000) +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Graf over selskapsverdi +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Siste 72 minutter STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Varetakster +STR_GRAPH_CARGO_PAYMENT_RATES_DAYS :{TINY_FONT}{BLACK}Dager underveis +STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLACK}Sekunder underveis STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Betaling for levering av ti vareenheter (eller 10,000 liter) over en avstand på 20 ruter STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Vis alle STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Skjul alle @@ -581,36 +631,37 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Vis detaljerte prestasjonsmålinger # Graph key window -STR_GRAPH_KEY_CAPTION :{WHITE}Nøkkel til firmagraf -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klikk her for å vise/skjule firmaet i grafen. +STR_GRAPH_KEY_CAPTION :{WHITE}Nøkkel til selskapsgrafer +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klikk her for å vise/skjule grafen for selskapet # Company league window -STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Firmarangering +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Selskapsrangering STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingeniør STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Trafikkleder STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transportkoordinator STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Oppsynsmann STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direktør -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Sjefsleder +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Toppsjef STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Formann STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Finansfyrste # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}Detaljert prestasjonsrating +STR_PERFORMANCE_DETAIL :{WHITE}Detaljert prestasjonrating STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detaljer STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}{NBSP}% -STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Vis detaljer om dette firmaet +STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Vis detaljer om dette selskapet ###length 10 STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Kjøretøy: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stasjoner: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. fortjeneste: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inntekt: -STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks inntekt: +STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Største inntekt: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Levert: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Varer: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Penger: @@ -618,13 +669,17 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lån: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totalt: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Antall transportmidler som gikk med overskudd forrige år. Dette inkluderer kjøretøy, tog, skip og luftfartøy. +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Antall transportmidler som gikk med overskudd forrige periode. Dette inkluderer kjøretøy, tog, skip og luftfartøy. STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Antall nylig betjente stasjonsdeler. Hver del av en stasjon (f.eks. togstasjon, bussholdeplass, flyplass) er medregnet, selv om de er tilkoblet en stasjon. +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Inntekten til fartøyet med lavest inntekt (bare fartøy eldre enn to år er tatt med) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Inntekten til fartøyet med lavest inntekt (bare fartøy eldre enn to perioder er tatt med) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Inntekt i det kvartalet med minst fortjeneste de siste 12 kvartalene STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Inntekt i det kvartalet med størst fortjeneste de siste 12 kvartalene STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Vareenheter levert de siste fire kvartalene. STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Antall varetyper levert det siste kvartalet. -STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Hvor mye penger dette firmaet har i banken -STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Størrelsen på firmaets lån +STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Hvor mye penger dette selskapet har i banken +STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Størrelsen på selskapets lån STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Totale poeng av mulige poeng # Music window @@ -673,6 +728,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klikk p STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klikk på et musikkspor for å fjerne det fra nåværende program (Gjelder bare egendefinert 1 og 2) # Highscore window +STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Beste selskaper STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Forretningsmann STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entreprenør @@ -706,7 +762,7 @@ STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Vis tran STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Vis vegetasjon på kartet STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Vis landeiere på kartet STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikk på en industritype for å slå på dens visning. Ctrl+klikk deaktiverer alle typer unntatt den valgte. Ctrl+klikk på den igjen for å slå på visning av alle industrier -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikk på et firma for å slå på visning av firmaets eiendom. Ctrl+klikk deaktiverer visning av alle firmaene unntatt det valgte. Ctrl+klikk på firmaet igjen for å slå på visning av alle firmaene +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikk på et selskap for å slå på visning av selskapets eiendom. Ctrl+klikk deaktiverer visning av alle selskapene unntatt det valgte. Ctrl+klikk på selskapet igjen for å slå på visning av alle selskapene STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klikk på en varetype for å veksle mellom å vise dens egenskap. Ctrl + Klikk deaktiverer alle varetyper utenom den valgte. Ctrl + klikk på den igjen for å aktivere alle varetyper STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Veier @@ -721,7 +777,7 @@ STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transportruter STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Skog STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Jernbanestasjon -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Lasteterminal +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Godsterminal STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Busstasjon STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Flyplass/Helikopterplass STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Havn @@ -739,7 +795,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Ørken STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snø -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Skru av/på bynavn på kartet +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Skru av/på bynavn STR_SMALLMAP_CENTER :{BLACK}Midstill oversiktskartet på gjeldende posisjon STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -748,11 +804,13 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Deaktiver alle STR_SMALLMAP_ENABLE_ALL :{BLACK}Aktiver alle STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Vis høyde +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Vis industrinavn STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Ikke vis industrier på kartet STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Vis alle industrier på kartet STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Veksle mellom visning av høydekart -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ikke vis firmaeiendommer på kartet -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Vis alle firmaeiendommer på kartet +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Skru av/på industrinavn +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ikke vis selskapseiendommer på kartet +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Vis alle selskapseiendommer på kartet STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Ikke vis noen varetyper på kartet STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Vis alle varetyper på kartet @@ -765,6 +823,7 @@ STR_STATUSBAR_AUTOSAVE :{RED}AUTOLAGRIN STR_STATUSBAR_SAVING_GAME :{RED}* * LAGRER SPILL * * STR_STATUSBAR_SPECTATOR :{WHITE}(spectator) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(uendelig med penger) # News message history STR_MESSAGE_HISTORY :{WHITE}Meldingshistorikk @@ -796,16 +855,16 @@ STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLAC STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Gruvegangkollaps fører til store ødeleggelser i nærheten av {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Flom!{}Minst {COMMA} savnet eller antatt død{P "" e} etter voldsom oversvømmelse! -STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportfirma i trøbbel! -STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} vil selges eller slås konkurs hvis ikke firmaets økonomi bedrer seg snart! -STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportfirmaer fusjonerer! +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportselskap i trøbbel! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} vil selges eller slås konkurs hvis ikke resultatet bedrer seg snart! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportselskaper fusjonerer! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} har blitt solgt til {STRING} for {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Konkurs! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} har blitt nedlagt av kreditorene og alle aktiva har blitt solgt! -STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nytt transportfirma opprettet! +STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nytt transportselskap opprettet! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} starter opp i nærheten av {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} har blitt kjøpt opp av {STRING}! -STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Sjef) +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} har blitt kjøpt opp av {STRING} for et ukjent beløp! +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Leder) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponset grunnleggelsen av den nye byen {TOWN}! STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}En ny by kalt {TOWN} har blitt reist! @@ -838,7 +897,7 @@ STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE ###next-name-looks-similar # Order review system / warnings -STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} har for få ordre på ruteplanen +STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} har for få ordre på ordrelisten STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} har en tom ordre STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} har doble ordre STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} har en ugyldig stasjon i ordrelisten @@ -849,10 +908,12 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} er veldig gammel, og bør byttes ut snarest STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kan ikke finne en rute å fortsette på. STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} har kjørt seg vill +STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :{WHITE}{VEHICLE}s fortjeneste forrige år var {CURRENCY_LONG} +STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}{VEHICLE}s fortjeneste forrige periode var {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kan ikke kjøre til neste destinasjon fordi den er utenfor rekkevidde -STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stoppet fordi ombyggingsordre feilet -STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Kunne ikke autofornye {VEHICLE}{}{STRING} +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stoppet fordi ombyggingsordre mislyktes +STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Kunne ikke fornye {VEHICLE}{}{STRING} automatisk STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Ny{G "" "" tt} {STRING} er nå tilgjengelig! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} @@ -860,12 +921,23 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Ny{G "" STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Vis gruppe- og kjøretøyliste basert på kjøretøyets gruppe +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} aksepter ikke lengre: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} aksepterer nå: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subsidietilbud har gått ut:{}{}{STRING} fra {STRING} til {STRING} vil ikke subsidieres. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidie er trukket tilbake:{}{}Transport av {STRING} fra {STRING} til {STRING} subsidieres ikke lenger. +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsidietilbud:{}{}Første transport av {STRING} fra {STRING} til {STRING} vil subsidieres av lokale myndigheter i {UNITS_YEARS_OR_MINUTES}! ###length 4 +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsidie gitt til {STRING}!{}{}{STRING} fra {STRING} til {STRING} vil gi 50% ekstra betaling neste {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subsidie gitt til {STRING}!{}{}Transport av {STRING} fra {STRING} til {STRING} vil gi dobbel betaling det neste {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsidie gitt til {STRING}!{}{}Transport av {STRING} fra {STRING} til {STRING} vil gi trippel betaling neste {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsidie gitt til {STRING}!{}{}Transport av {STRING} fra {STRING} til {STRING} vil gi firedobbel betaling neste {UNITS_YEARS_OR_MINUTES}! -STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transport monopol! +STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Trafikkaos i {TOWN}!{}{}Veibyggingsprogram finansiert av {STRING} fører til 6 måneder med elendighet for sjåfører! +STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Trafikkaos i {TOWN}!{}{}Veibyggingsprogram finansiert av {STRING} fører til 6 minutter med elendighet for sjåfører! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportmonopol! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}Lokale myndigheter i {TOWN} signerer kontrakt med {STRING} om 12 måneder med eksklusive transportrettigheter! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}Lokale myndigheter i {TOWN} signerer kontrakt med {STRING} om 12 minutter med eksklusive transportrettigheter! # Extra view window STR_EXTRA_VIEWPORT_TITLE :{WHITE}Tilleggsvindu {COMMA} @@ -877,57 +949,71 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}flytt pl # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spillinnstillinger +STR_GAME_OPTIONS_TAB_GENERAL :Generelt +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Velg generelle innstillinger +STR_GAME_OPTIONS_TAB_GRAPHICS :Grafikk +STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Velg grafikkinnstillinger +STR_GAME_OPTIONS_TAB_SOUND :Lyd +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Velg lyd- og musikkinnstillinger +STR_GAME_OPTIONS_TAB_SOCIAL :Sosial +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Velg sosiale integrasjonsinnstillinger +STR_GAME_OPTIONS_VOLUME :Volum STR_GAME_OPTIONS_SFX_VOLUME :Lydeffekter +STR_GAME_OPTIONS_MUSIC_VOLUME :Musikk +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaenhet STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Velg valutaenhet som skal brukes +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 -STR_GAME_OPTIONS_CURRENCY_GBP :Britisk pund -STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar +###length 44 +STR_GAME_OPTIONS_CURRENCY_GBP :Britiske pund +STR_GAME_OPTIONS_CURRENCY_USD :Amerikanske dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro -STR_GAME_OPTIONS_CURRENCY_JPY :Japansk yen -STR_GAME_OPTIONS_CURRENCY_ATS :Østerriksk shilling -STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc +STR_GAME_OPTIONS_CURRENCY_JPY :Japanske yen +STR_GAME_OPTIONS_CURRENCY_ATS :Østerrikske shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgiske franc STR_GAME_OPTIONS_CURRENCY_CHF :Sveitsisk franc -STR_GAME_OPTIONS_CURRENCY_CZK :Tsjekkisk koruna -STR_GAME_OPTIONS_CURRENCY_DEM :Tysk mark -STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krone -STR_GAME_OPTIONS_CURRENCY_ESP :Spansk pesetas -STR_GAME_OPTIONS_CURRENCY_FIM :Finsk mark -STR_GAME_OPTIONS_CURRENCY_FRF :Fransk franc -STR_GAME_OPTIONS_CURRENCY_GRD :Gresk drakme -STR_GAME_OPTIONS_CURRENCY_HUF :Ungarsk forint -STR_GAME_OPTIONS_CURRENCY_ISK :Islandsk krone -STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lire -STR_GAME_OPTIONS_CURRENCY_NLG :Hollandsk guilder -STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krone -STR_GAME_OPTIONS_CURRENCY_PLN :Polsk złoty -STR_GAME_OPTIONS_CURRENCY_RON :Rumensk leu -STR_GAME_OPTIONS_CURRENCY_RUR :Russisk rubel -STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar -STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krone -STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkisk lire -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk koruna -STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real -STR_GAME_OPTIONS_CURRENCY_EEK :Estlandsk krone -STR_GAME_OPTIONS_CURRENCY_LTL :Litauisk litas -STR_GAME_OPTIONS_CURRENCY_KRW :Sørkoreansk won +STR_GAME_OPTIONS_CURRENCY_CZK :Tsjekkiske koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Tyske mark +STR_GAME_OPTIONS_CURRENCY_DKK :Danske kroner +STR_GAME_OPTIONS_CURRENCY_ESP :Spanske pesetas +STR_GAME_OPTIONS_CURRENCY_FIM :Finske mark +STR_GAME_OPTIONS_CURRENCY_FRF :Franske franc +STR_GAME_OPTIONS_CURRENCY_GRD :Greske drakmer +STR_GAME_OPTIONS_CURRENCY_HUF :Ungarske forinter +STR_GAME_OPTIONS_CURRENCY_ISK :Islandske kroner +STR_GAME_OPTIONS_CURRENCY_ITL :Italienske lire +STR_GAME_OPTIONS_CURRENCY_NLG :Nederlandske gylden +STR_GAME_OPTIONS_CURRENCY_NOK :Norske kroner +STR_GAME_OPTIONS_CURRENCY_PLN :Polske złoty +STR_GAME_OPTIONS_CURRENCY_RON :Rumenske leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russiske rubler +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenske tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Svenske kroner +STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkiske lire +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakiske koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianske real +STR_GAME_OPTIONS_CURRENCY_EEK :Estiske kroner +STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske litas +STR_GAME_OPTIONS_CURRENCY_KRW :Sørkoreanske won STR_GAME_OPTIONS_CURRENCY_ZAR :Sørafrikanske rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Egendefinert... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgisk lari -STR_GAME_OPTIONS_CURRENCY_IRR :Iransk rial -STR_GAME_OPTIONS_CURRENCY_RUB :Ny russisk rubel -STR_GAME_OPTIONS_CURRENCY_MXN :Meksikansk peso -STR_GAME_OPTIONS_CURRENCY_NTD :Ny Taiwan Dollar -STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar -STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupi -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk Ringgit +STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranske rial +STR_GAME_OPTIONS_CURRENCY_RUB :Nye russiske rubler +STR_GAME_OPTIONS_CURRENCY_MXN :Meksikanske peso +STR_GAME_OPTIONS_CURRENCY_NTD :Nye taiwanske dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Kinesiske renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong dollar +STR_GAME_OPTIONS_CURRENCY_INR :Indiske rupi +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesiske rupi +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysiske ringgit +STR_GAME_OPTIONS_CURRENCY_LVL :Latviske lats +STR_GAME_OPTIONS_CURRENCY_PTE :Portugisiske escudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk lagring STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Velg intervall for automatisk lagring @@ -935,6 +1021,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Velg int # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Av +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Hvert 10. minutt +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Hvert 30. minutt +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Hvert 60. minutt +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Hvert 120. minutt STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Velg språk som skal brukes @@ -953,16 +1043,32 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Merk av STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Innstillingen vil ikke tre i kraft før spillet er restartet STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync -STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Merk av i denne boksen for å v-synkronisere skjermen. Endring av innstillinger krever omstart av spillet. Fungerer bare med maskinvareakselerasjon aktivert +STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Merk av i denne boksen for å aktivere VSync for skjermen. Endring av innstilling krever omstart av spillet. Fungerer bare med maskinvareakselerasjon aktivert +STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Aktiv driver: {STRING} +STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Grensesnittstørrelse +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Dra for å endre grensesnittstørrelse. Ctrl+dra for kontinuerlig justering +STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Detekter størrelse automatisk +STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Kryss av denne knappen for å detektere grensesnittstørrelsen automatisk +STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaler faser +STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Kryss av denne knappen for å skalere faser med størrelsen på grensesnittet +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Bruk tradisjonell sprite-skrift +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Kryss av denne knappen hvis du foretrekker den tradisjonelle sprite-skriften med fast størrelse +STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Kantutjevning av skrift +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Kryss av denne knappen for å kantutjevne skalerbar skrift -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatisert undersøkelse +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Delta i automatisert undersøkelse +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Når aktivert, OpenTTD vi sende en undersøkelse når spillet forlates +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Om undersøkelser og personvern +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Dette åpner en nettleser med mer informasjon om den automatiserte undersøkelsen +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Forhåndsvis undersøkelsesresultater +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Vis undersøkelsesresultatene fra det pågående spillet STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafikk @@ -972,20 +1078,35 @@ STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Oppdateringsfrekvens høyere enn 60Hz kan påvirke ytelsen. STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Velg grafikksett som skal brukes +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Velg grafikksett som skal brukes (kan ikke endres inne i spillet, kun fra hovedmenyen) STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om grafikksettet STR_GAME_OPTIONS_BASE_SFX :{BLACK}Lydsett -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Velg lydsett som skal brukes +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Velg lydsett som skal brukes (kan ikke endres inne i spillet, bare fra hovedmenyen) STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om lydsettet STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musikksett STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Velg musikksett som skal brukes STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Ytterligere informasjon om det originale musikksettet +STR_GAME_OPTIONS_ONLINE_CONTENT :Hent innhold +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Se etter nytt og oppdatert innhold for nedlasting +STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(ingen moduler for integrasjon med sosiale plattformer er installert) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Plattform: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Status for tilleggsmodul: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Kjører +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Kunne ikke initialisere +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} kjører ikke +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Ikke lastet +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Doblet tilleggsmodul +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}Ikke støttet versjon +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Ugyldig signatur + +STR_BASESET_STATUS :{STRING} {RED}({NUM} manglende/korrupt{P "" e} fil{P "" er}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Mislyktes med å hente en liste over støttede oppløsninger STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskjermmodus mislyktes @@ -998,6 +1119,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Reduser STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Øk valutaen din i forhold til ett pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Still inn valutakursen din i forhold til ett pund (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Skille: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Velg skille for din valuta + STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Velg prefiks for din valuta STR_CURRENCY_SUFFIX :{LTBLUE}Suffiks: {ORANGE}{STRING} @@ -1078,19 +1202,21 @@ STR_TERRAIN_TYPE_CUSTOM :Egendefinert h STR_TERRAIN_TYPE_CUSTOM_VALUE :Egendefinert høyde ({NUM}) ###length 4 +STR_CITY_APPROVAL_LENIENT :Mild STR_CITY_APPROVAL_TOLERANT :Tolerant STR_CITY_APPROVAL_HOSTILE :Fiendtlig -STR_CITY_APPROVAL_PERMISSIVE :Ettergivende +STR_CITY_APPROVAL_PERMISSIVE :Tillatende (ingen betydning for selskapets handlinger) -STR_WARNING_NO_SUITABLE_AI :{WHITE}Ingen egnet AI tilgjengelig...{}Du kan laste ned flere AIer fra nettet med spillets nedlastingssystem. +STR_WARNING_NO_SUITABLE_AI :{WHITE}Ingen egnet KI tilgjengelig...{}Du kan laste ned flere KI-er fra nettet med spillets nedlastingssystem. # Settings tree window STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Innstillinger -STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrer streng: +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrer: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Vis alle STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Skjul alle STR_CONFIG_SETTING_RESET_ALL :{BLACK}Tilbakestill alle verdier STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(ingen forklaring tilgjengelig) +STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR} STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Standard verdi: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Instillings type: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Klient innstilling (ikke lagret i lagringsfilene, påvirker alle spill) @@ -1115,8 +1241,8 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle instilling STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klientinnstillinger (lagres ikke i lagringsfiler; påvirker alle spill) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spillinnstillinger (lagres i lagringsfil; påvirker bare nye spill) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spillinnstillinger (lagres i lagringsfilen; påvirker bare gjeldende spill) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firmainnstillinger (lagres i lagringsfilen; påvirker bare nye spill) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firmainnstillinger (lagret i lagringsfilen; påvirker bare gjeldende selskap) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Selskapsinnstillinger (lagret i lagringsfilen; påvirker bare nye spill) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Selskapsinnstillinger (lagret i lagringsfilen; påvirker bare gjeldende selskap) STR_CONFIG_SETTINGS_NONE :{WHITE}- Ingen - ###length 3 @@ -1131,8 +1257,8 @@ STR_CONFIG_SETTING_DISABLED :Deaktivert ###length 3 STR_CONFIG_SETTING_COMPANIES_OFF :Av -STR_CONFIG_SETTING_COMPANIES_OWN :Eget firma -STR_CONFIG_SETTING_COMPANIES_ALL :Alle firmaer +STR_CONFIG_SETTING_COMPANIES_OWN :Eget selskap +STR_CONFIG_SETTING_COMPANIES_ALL :Alle selskaper ###length 3 STR_CONFIG_SETTING_NONE :Ingen @@ -1144,11 +1270,16 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Venstre STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Midtstilt STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Høyre +STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}sekund{P 0 "" er} +STR_CONFIG_SETTING_INFINITE_MONEY :Uendelig med penger: {STRING} +STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Tillat uendelig pengebruk og ikke la selskaper gå konkurs -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimalt innledende lån: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Det maksimale beløp et selskap kan låne (uten å ta inflasjon i betraktning) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Største innledende lån: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Det største beløp et selskap kan låne (uten å ta inflasjon i betraktning). Hvis satt til "Ingen lån", vil ingen penger være tilgjengelig hvis ikke anskaffet av et Game Script eller innstillingen "Uendelig med penger" +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Ingen lån STR_CONFIG_SETTING_INTEREST_RATE :Lånerente: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lånerente; kontrollerer også inflasjonen, hvis aktivert @@ -1157,7 +1288,7 @@ STR_CONFIG_SETTING_RUNNING_COSTS :Driftskostnader STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Still nivå av vedlikehold og driftskostnader for kjøretøy og infrastruktur STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Byggehastighet: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Begrens mengden av byggetiltak hos datastyrte motsandere +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Begrens mengden av byggetiltak hos KI-er STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Havarerte kjøretøy: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Kontrollér hvor ofte mangelfullt vedlikeholdte kjøretøy kan bryte sammen @@ -1168,7 +1299,9 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Angi hvor mye s STR_CONFIG_SETTING_SUBSIDY_DURATION :Subsidiens varighet: {STRING} ###length 2 STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Angi antall år som subsidiet tildeles for +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Angi antall perioder som subsidiet tildeles for +STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR_PERIODS} ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Ingen subsidier @@ -1176,38 +1309,38 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Byggekostnader: STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Still kostnadsnivå for bygging og kjøp STR_CONFIG_SETTING_RECESSIONS :Resesjoner: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Hvis aktivert, resesjoner kan forekomme med noen års mellomrom. Under en lavkonjunktur vil all produksjon være betydelig lavere (den returnerer til tidligere nivå når resesjonen er over) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Hvis aktivert, lavkonjunkturer kan forekomme innimellom. Under en lavkonjunktur vil all produksjon være betydelig lavere (den returnerer til tidligere nivå når lavkonjunktur er over) STR_CONFIG_SETTING_TRAIN_REVERSING :Forby reversering av tog i stasjoner: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Hvis aktivert, vil ikke toget rygge i ikke-terminus stationer, selv om det er en kortere vei til deres neste stasjon ved å rygge +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Hvis aktivert, vil ikke togene reversere i ikke-endestasjoner, selv om det er en kortere vei til neste stasjon ved å rygge STR_CONFIG_SETTING_DISASTERS :Katastrofer: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Aktiver/inaktiver katastrofer som tidvis kan blokkere eller ødelegge kjøretøy og infrastruktur -STR_CONFIG_SETTING_CITY_APPROVAL :Bystyrets holdning til restrukturering av området: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Velg hvor mye støy og miljøskader forårsaket av selskaper påvirker deres anseelse i byen og muligheter for ytterligere utbygging i nærområdet +STR_CONFIG_SETTING_CITY_APPROVAL :Lokale myndigheters holdning: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Velg hvor mye støy og miljøskader forårsaket av selskaper påvirker deres anseelse i byen og muligheter for ytterligere utbygging i byen STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Karthøydegrense: {STRING} -STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Still inn maksimal høyde på kartterrenget. Med "(auto)" vil en god verdi bli valgt etter terrenggenerering +STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Still inn største høyde på kartterrenget. Med "(auto)" vil en god verdi bli valgt etter terrenggenerering STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(auto) -STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Du kan ikke sette den maksimale karthøyden til denne verdien. Minst ett fjell på kartet er høyere +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Du kan ikke sette den største karthøyden til denne verdien. Minst ett fjell på kartet er høyere STR_CONFIG_SETTING_AUTOSLOPE :Tillat endring av landskap under bygninger, spor, osv.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tillat endring av landskapet under bygninger og spor uten å fjerne dem -STR_CONFIG_SETTING_CATCHMENT :Mer realistisk størrelse på oppfangingsområder: {STRING} -STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Ha oppsamlingsområder i forskjellige størrelser for forskjellige typer stasjoner og lufthavner +STR_CONFIG_SETTING_CATCHMENT :Mer realistisk størrelse på dekningsområder: {STRING} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Ha dekningssområder i forskjellige størrelser for forskjellige typer stasjoner og lufthavner -STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Firmaets stasjoner kan betjene industrier med tilknyttede nøytrale stasjoner: {STRING} -STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Hvis aktivert, vil industrier med egne stasjoner (slik som oljerigger) også kunne betjenes av firma-stasjoner bygget i nærheten. Hvis deaktivert, vil disse industriene bare kunne betjenes av sine egne stasjoner. Nærliggende firma-stasjoner vil ikke kunne betjene dem, heller ikke vil den egne stasjonen betjene noe annet enn den tilhørende industrien. +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Selskapets stasjoner kan betjene industrier med tilknyttede nøytrale stasjoner: {STRING} +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Hvis aktivert, vil industrier med tilknyttede stasjoner (slik som oljerigger) også kunne betjenes av selskapseide stasjoner bygget i nærheten. Hvis deaktivert, vil disse industriene bare kunne betjenes av sine tilknyttede stasjoner. Nærliggende selskapsstasjoner vil ikke kunne betjene dem, heller ikke vil den tilknyttede stasjonen betjene noe annet enn industrien STR_CONFIG_SETTING_EXTRADYNAMITE :Tillat fjerning av flere veier, broer osv. eid av byene: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Gjør det enklere å fjerne infrastruktur og bygninger som tilhører byer -STR_CONFIG_SETTING_TRAIN_LENGTH :Maksimal toglengde: {STRING} -STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Sett maksimumlengde for tog +STR_CONFIG_SETTING_TRAIN_LENGTH :Største toglengde: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Sett største lengde for tog STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} rute{P 0 "" r} STR_CONFIG_SETTING_SMOKE_AMOUNT :Mengde med kjøretøyrøyk/gnister: {STRING} @@ -1223,29 +1356,29 @@ STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Skråningens br STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Brattheten av et skrått kartelement for et tog. Høyere verdier gjør det vanskeligere å klatre en bakke STR_CONFIG_SETTING_PERCENTAGE :{COMMA} % -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Skråningens bratthet for veikjøretøy: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Brattheten av et skrått kartelement for et veikjøretøy. Høyere verdier gjør det vanskeligere å kjøre opp bakken +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Skråningens bratthet for kjøretøy: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Brattheten av et skrått kartelement for et kjøretøy. Høyere verdier gjør det vanskeligere å kjøre opp bakken STR_CONFIG_SETTING_FORBID_90_DEG :Forby tog å gjøre 90° svinger: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-graders svinger oppstår når et horisontalt spor etterfølges av et vertikalt spor på tilstøtende kartelement, som medfører at toget må svinge 90 grader når det krysser kartelementet, i stedet for de vanlige 45 grader for andre spor-kombinasjoner. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-graders svinger oppstår når et horisontalt spor etterfølges av et vertikalt spor på den tilstøtende ruten, som medfører at toget må svinge 90 grader når det krysser ruten, i stedet for de vanlige 45 grader for andre sporkombinasjoner STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillat sammenslåing av stasjoner som ikke ligger inntil hverandre: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Gjør det mulig å legge til deler til en stasjon uten at de er direkte ved siden av hverandre. Bruk Ctrl+klikk for å bygge slike stasjoner. +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Gjør det mulig å legge til deler til en stasjon uten at de er direkte ved siden av hverandre, ved å Ctrl+klikke når nye deler plasseres STR_CONFIG_SETTING_INFLATION :Inflasjon: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Aktiver inflasjon i økonomien, der kostnader stiger litt raskere enn betalinger -STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksimal brolengde: {STRING} -STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimal lengde for broer +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Største brolengde: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Største lengde for broer -STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksimal brohøyde: {STRING} -STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksimal høyde for å bygge broer +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Største brohøyde: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Største høyde for å bygge broer -STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksimal tunnellengde: {STRING} -STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimal lengde for tunneller +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Største tunnellengde: {STRING} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Største lengde for tunneller STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Konstruksjonsmetode for primærindustri: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metode for finansiering av primærindustri. 'Ingen' betyr at det ikke er mulig å finansiere noen. 'Prospekterer' betyr at finansiering er mulig, men oppbyggingen skjer på et tilfeldig sted på kartet, og det er rimelig sjanse for at den mislykkes. 'Som andre industrier' betyr at råvareindustri kan bygges opp av firmaer hvor som helst på kartet på samme måte som prosessindustri +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metode for finansiering av primærindustri. 'Ingen' betyr at det ikke er mulig å finansiere noen. 'Prospekterer' betyr at finansiering er mulig, men oppbyggingen skjer på et tilfeldig sted på kartet, og det er rimelig sjanse for at den mislykkes. 'Som andre industrier' betyr at råvareindustri kan bygges opp av selskaper hvor som helst på kartet på samme måte som prosessindustri ###length 3 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ingen STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Som andre industrier @@ -1261,56 +1394,59 @@ STR_CONFIG_SETTING_SIGNALSIDE :Vis signaler: { STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Velg på hvilken side av skinnene signalene blir plassert ###length 3 STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Til venstre -STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :På kjøre-siden +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :På kjøresiden STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Til høyre ###length 2 -STR_CONFIG_SETTING_SHOWFINANCES :Vis regnskap ved nyttår: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES :Vis økonomivinduet ved nyttår: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :Vis økonomivinduet ved slutten av perioden: {STRING} ###length 2 STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Hvis aktivert, spretter økonomivinduet opp på slutten av hvert år for å muliggjør en enkel inspeksjon av selskapets økonomiske status +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :Hvis aktivert, spretter økonomivinduet opp på slutten av hvert periode for å muliggjør en enkel inspeksjon av selskapets økonomiske status STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nye ordre er 'direkte' som standard: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalt vil et kjøretøy stoppe på alle stasjoner det passerer. Ved å aktivere denne innstillingen, vil det kjøre gjennom alle stasjoner på vei til sin endelige destinasjon uten å stoppe. Merk at denne innstillingen bare definerer en standardverdi for nye ordre. Individuelle ordre kan uansett settes til begge atferder -STR_CONFIG_SETTING_STOP_LOCATION :Nye togordre stopper som standard ved {STRING} av plattformen -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Plass hvor toget vil stoppe på plattformen som standard. Valget 'near end' betyr nær inngangspunktet og 'far end' betyr langt unna inngangspunktet. Merk at denne innstillingen bare definerer en standardverdi for nye ordre. Individuelle ordre kan uansett settes til begge atferder +STR_CONFIG_SETTING_STOP_LOCATION :Nye togordre stopper som standard ved {STRING} av perrongen +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Plass hvor toget vil stoppe på perrongen som standard. Valget 'nærenden' betyr nær inngangspunktet, 'midten' betyr midt på perrongen og 'bortenden' betyr langt unna inngangspunktet. Merk at denne innstillingen bare definerer en standardverdi for nye ordre. Individuelle ordre kan velge hvor de skal stoppe ved å klikke på ordreteksten ###length 3 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :nærenden STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :midten STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :bortenden -STR_CONFIG_SETTING_AUTOSCROLL :Flytt på bildet hvis pilen er nær ytterkantene av skjermen: {STRING} -STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Når aktivert, vil synsfeltet begynne å rulle når musen er nær kanten av vinduet +STR_CONFIG_SETTING_AUTOSCROLL :Panorer hvis pilen er nær ytterkantene av skjermen: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Når aktivert, vil synsfeltet begynne å panorere når musen er nær kanten av vinduet ###length 4 STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Deaktivert STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hovedvindu, bare fullskjerm STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hovedvindu STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :alle tilleggsvindu -STR_CONFIG_SETTING_BRIBE :Tillat bestikkelser av bystyret: {STRING} +STR_CONFIG_SETTING_BRIBE :Tillat bestikkelser av lokale myndigheter: {STRING} ###length 2 -STR_CONFIG_SETTING_BRIBE_HELPTEXT :Tillat firmaer å prøve å bestikke de lokale myndighetene i byen. Hvis bestikkelsen blir oppdaget av en inspektør, vil selskapet ikke være i stand til å gjøre forretninger i byen de neste seks månedene -STR_CONFIG_SETTING_BRIBE_HELPTEXT.small :firma +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Tillat selskap å prøve å bestikke de lokale myndighetene i byen. Hvis bestikkelsen blir oppdaget av en inspektør, vil selskapet ikke være i stand til å gjøre forretninger i byen de neste seks månedene +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Tillat selskap å prøve å bestikke de lokale myndighetene i byen. Hvis bestikkelsen blir oppdaget av en inspektør, vil selskapet ikke kunne gjøre forretninger i byen de neste seks minuttene STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Tillat kjøp av eksklusive transportrettigheter: {STRING} ###length 2 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Om et firma kjøper eksklusive transportrettigheter for en by, vil ikke motstandernes stasjoner motta varer eller passasjorer på ett år. +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Om et selskap kjøper eksklusive transportrettigheter for en by, vil ikke motstandernes stasjoner motta varer eller passasjerer på tolv måneder +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :Hvis et selskap kjøper eksklusive transportrettigheter for en by, vil ikke motstandernes stasjoner (passasjerer og varer) motta noen varer i tolv minutter STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Tillat finansiering av bygninger: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Tillat firmaer å gi penger til byer til bygging av nye bygninger +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Tillat selskap å gi penger til byer til bygging av nye bygninger -STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Tillat finansiering av lokal veikonstruksjon: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Tillat firmaer å gi penger til byer for omlegging av veinettet for å sabotere veibaserte tjenester i byen +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Tillat finansiering av lokal veibygging: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Tillat selskap å gi penger til byer for omlegging av veinettet for å sabotere veibaserte tjenester i byen -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Tillat pengeoverføring til andre firmaer: {STRING} -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Tillat firmaer å overføre penger til andre firmaer i flerspillermodus +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Tillat pengeoverføring til andre selskap: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Tillat overføring av penger mellom selskap i flerspillermodus STR_CONFIG_SETTING_FREIGHT_TRAINS :Vektmultiplikator for last for å simulere tunge tog: {STRING} -STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Still virkningen av å frakte gods i tog. En høyere verdi gjør det mer krevende for tog å frakte gods, spesielt i bakker +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Still virkningen av å frakte gods på tog. En høyere verdi gjør det mer krevende for tog å frakte gods, spesielt i bakker STR_CONFIG_SETTING_PLANE_SPEED :Flyfart faktor: {STRING} -STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Still den relative hastigheten til fly sammenlignet med andre kjøretøy, for å redusere inntekter ved luftfrakt +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Still den relative hastigheten til fly sammenlignet med andre kjøretøy, for å redusere inntekter ved flytransport STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Antall flystyrter: {STRING} @@ -1320,20 +1456,23 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ingen* STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Redusert STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalt +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Tillat krysning i plan med veier og jernbaner eid av konkurrenter: {STRING} +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Tillat krysning i plan med veier og jernbaner eid av konkurrenter -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Tillat stoppesteder med gjennomkjøring på by-eide veier: {STRING} -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Tillat bygging av stoppesteder med gjennomkjøring på by-eide veier -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Tillat stoppesteder med gjennomkjøring på motstander-eide veier: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Tillat stoppesteder med gjennomkjøring på veier eid av byer: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Tillat bygging av stoppesteder med gjennomkjøring på veier eid av byer +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Tillat stoppesteder med gjennomkjøring på veier eid av konkurrenter: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Tillat bygging av gjennomkjørbare lastestasjoner på veier eid av andre selskaper -STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Det er ikke mulig å endre denne innstillingen når det allerede finnes kjøretøy. +STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Det er ikke mulig å endre denne innstillingen når det finnes transportmidler STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Vedlikehold av infrastruktur: {STRING} -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Når aktivert, medfører infrastruktur vedlikeholdskostnader. Kostnadene vokser over-proporsjonalt med nettverkets størrelse, og påvirker dermed større selskaper mer enn de små +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Når aktivert, medfører infrastruktur vedlikeholdskostnader. Kostnadene vokser overproporsjonalt med nettverkets størrelse, og påvirker dermed større selskaper mer enn de små -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Startifarge for firmaet: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Velg startfarge for firmaet +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Startfarge for selskapet: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Velg startfarge for selskapet -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Oppstarsselskapets sekundære farge:{STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Oppstartsselskapets sekundære farge: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Velg sekundær startfarge for selskapet, hvis en NewGRF som tillater det er i bruk STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flyplasser utgår aldri: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Aktivering av denne innstillingen gjør at hver type flyplass forblir tilgjengelig for alltid etter at sin introduksjon @@ -1348,36 +1487,53 @@ STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nei STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, men utelukk stoppede kjøretøy STR_CONFIG_SETTING_ORDER_REVIEW_ON :Alle kjøretøy -STR_CONFIG_SETTING_WARN_INCOME_LESS :Advar hvis inntekten til et kjøretøy er negativ: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS :Varsle hvis inntekten til et kjøretøy er negativ: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Når aktivert, vil en nyhetsmelding vises når et kjøretøy ikke har tjent penger i løpet av ett kalenderår +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Når aktivert, vil en nyhetsmelding vises når et kjøretøy ikke har tjent penger i løpet av ett år +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Når aktivert, vil en nyhetsmelding vises når et kjøretøy ikke har tjent penger i løpet av en periode + +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Varsle hvis et kjøretøy begynner å bli gammelt: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Når aktivert, vil en nyhetsmelding vises når et kjøretøy er i ferd med å bli gammelt STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Kjøretøy utgår aldri: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Når aktivert, vil alle kjøretøysmodeller være tilgjengelig for alltid etter de introduseres +STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Tidtagning: {STRING} +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Velg enhet for tidtagning i spillet. Dette kan ikke endres seinere.{}{}Kalenderbasert er den klassiske OpenTTD-opplevelsen, med et år bestående av 12 måneder, hvor hver måned har 28-31 dager.{}{}Med veggurbasert tid, er vareproduksjon og økonomi i stedet basert på 1-minutts skritt, som er omtrent så lang tid som en 30-dags måned tar i kalenderbasert modus. Disse er gruppert i 12-minutters periode, tilsvarende et år i kalenderbasert modus.{}{}I begge moduser er det alltid en klassisk kalender, som brukes til introduksjonsdatoer for transportmidler, hus og annen infrakstruktur ###length 2 +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalender +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Veggur +STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minutter per år: {STRING} +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Velg antall minutter i et kalenderår. Standard er 12 minutter. Sett til 0 for å hindre kalendertiden i å endre seg. Å øke lengden på kalenderåret utsetter introduksjonen av transportmidler, hus og annen infrastruktur. Denne innstillingen påvirker ikke økonomisimuleringen i spillet, og er kun tilgjengelig med veggurtidtaking +STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special +STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (frosset kalendertid) +STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Skaler en bys vareproduksjon: {STRING} +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skaler vareproduksjonen i byer med denne prosenten +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Skaler en industris vareproduksjon: {STRING} +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skaler vareproduksjonen til industrier med denne prosenten +STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoforny kjøretøy når det blir gammelt: {STRING} -STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Når aktivert, blir et kjøretøy som nærmer seg slutten av sin levetid automatisk erstattet når betingelsene for fornyelse er oppfylt +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Forny transportmiddel automatisk når det blir gammelt: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Når aktivert, blir et transportmiddel som nærmer seg slutten av sin levetid automatisk erstattet når betingelsene for fornyelse er oppfylt -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autoforny kjøretøy når det er {STRING} maks alder -STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativ alder når kjøretøy burde bli vurdert autofornyet +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Forny transportmiddel automatisk når det er {STRING} høyeste alder +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativ alder når et transportmiddel bør bli vurdert fornyet automatisk ###length 2 STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} måned{P 0 "" er} før STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} måned{P 0 "" er} etter -STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimum formue for autofornyelse av kjøretøy: {STRING} -STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minste pengemengde som må være igjen i banken for å vurdere automatisk fornying av kjøretøy +STR_CONFIG_SETTING_AUTORENEW_MONEY :Minste formue for automatisk fornyelse av kjøretøy: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minste pengebeløp som må være igjen i banken for å vurdere automatisk fornying av transportmidler STR_CONFIG_SETTING_ERRMSG_DURATION :Varighet av feilmelding: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Varighet for visning av feilmeldinger i et rødt vindu. Vær oppmerksom på at noen (kritiske) feilmeldinger ikke lukkes automatisk etter dette tidspunktet, men må lukkes manuelt STR_CONFIG_SETTING_HOVER_DELAY :Vis verktøytips: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Forsinkelse før verktøytips vises når musen svever over elementer i grensesnittet. Alternativt kan verktøytips bindes til den høyre museknappen +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Forsinkelse før verktøytips vises når musen svever over elementer i grensesnittet. Alternativt kan verktøytips knyttes til den høyre museknappen når denne verdien er satt til 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hovre i {COMMA} millisekunder{P 0 "" s} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Høyreklikk @@ -1389,10 +1545,12 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Graflinjenes ty STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Linjebredde i grafene. En tynn linje er mer presis å lese av, mens en tykkere linje er lettere å se, og farger er lettere å skille STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Vis NewGRF's navn i kjøretøysbyggevinduet: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Legg til en linje i bygg kjøretøy vinduet, som viser hvilken NewGRF det valgte kjøretøyet kommer fra. +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Legg til en linje i vinduet for å bygge transportmidler, som viser hvilken NewGRF det valgte transportmiddelet kommer fra +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Vis varene kjøretøyene kan frakte i listevinduene: {STRING} +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Hvis aktivert vil kjøretøyets last vises over i kjøretøylisten STR_CONFIG_SETTING_LANDSCAPE :Landskap: {STRING} -STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskap definerer grunnleggende spill-scenarier med forskjellige laster og byers vekstkrav. NewGRF og spill-skript tillater imidlertid finere kontroll +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskap definerer grunnleggende spillscenarier med forskjellige laster og byers vekstkrav. NewGRF og Game Script tillater imidlertid finere kontroll STR_CONFIG_SETTING_LAND_GENERATOR :Landskapsgenerator: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Den opprinnelige generatoren avhenger av det originale grafikksettet, og komponerer faste landskapsformer. TerraGenesis er en Perlin støybasert generator med finere kontrollinnstillinger @@ -1401,27 +1559,27 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Orginal STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TERRAIN_TYPE :Terrengtype: {STRING} -STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis bare) Hvor kupert landskapet er +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Velg høyden til bakker og fjell i landskapet STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industritetthet: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Angi hvor mange næringer som skal genereres og hvilket nivå som skal opprettholdes i løpet av spillet -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maks avstand fra kant for Oljeraffinerier: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olje rafinerier er bare bygd nær kartets kanter, det er ved kysten på øy kart +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Største avstand fra kant for oljeraffinerier: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Grense for hvor langt fra kartkanten oljeraffinerier og oljerigger kan bygges. På øykart sørger dette for at de er nær kysten. På kart større enn 256 ruter, er denne verdien skalert opp STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snøgrense: {STRING} -STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Kontroller på hvilken høyde snøen begynner i sub-arktiske landskap. Snø påvirker også industrigenerering og byers vekstkrav +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Velg på hvilken høyde snøen begynner i subarktisk landskap. Snø påvirker også industrigenerering og byers vekstkrav. Kan kun endres i scenarie-redigering og er ellers beregnet fra "snødekning" STR_CONFIG_SETTING_SNOW_COVERAGE :Snødekning: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Kontrollerer den omtrentlige mengden snø i det subarktiske landskapet. Snø påvirker også industriproduksjon og byvekstkrav. Brukes bare under kartgenerering. Land rett over havet er alltid uten snø +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Kontrollerer den omtrentlige mengden snø i det subarktiske landskapet. Snø påvirker også industriproduksjon og krav til byvekst. Brukes bare under kartgenerering. Ruter på havnivå og kystruter har aldri snø STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Ørkendekning: {STRING} -STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Kontroller den omtrentlige mengden ørken i det tropiske landskapet. Ørkener påvirker også industrigenerering. Brukes bare ved kartgenerering +STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Velg den omtrentlige mengden ørken i det tropiske landskapet. Ørken påvirker også industrigenerering og vilkår for byvekst. Brukes bare ved kartgenerering STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Grad av ujevnhet i terreng: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis bare) Velg frekvensen av åser: Glatte landskap har færre og mer utbredte åser. Røffe landskap har mange åser, som kan fremstå repeterende +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Velg formen på og antallet åser. Slette landskap har færre, brede åser, mens røffe landskap har mange, mindre åser ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Veldig jevnt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Jevnt @@ -1429,7 +1587,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ulendt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Veldig ulendt STR_CONFIG_SETTING_VARIETY :Variasjonsspredning: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis bare) Kontrollere om kartet inneholder både fjellrike og flate områder. Siden dette bare gjør kartet flatere, bør andre innstillinger settes til fjellrik +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Velg om kartet inneholder både fjellrike og flate områder. Jo høyere variasjon, dess større forskjeller i høyde mellom fjellrike og flate områder STR_CONFIG_SETTING_RIVER_AMOUNT :Elvemengde: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Velg hvor mange elver som genereres @@ -1441,14 +1599,15 @@ STR_CONFIG_SETTING_TREE_PLACER_NONE :Ingen STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Forbedret -STR_CONFIG_SETTING_ROAD_SIDE :Veikjøretøy: {STRING} -STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Velg kjøre-siden +STR_CONFIG_SETTING_ROAD_SIDE :Kjøretøy: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Velg kjøresiden ###length 2 STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Venstrekjøring STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Høyrekjøring STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Høydekartrotering: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Velg hvilken vei høydekartet er rotert for å passe inn i spillverdenen ###length 2 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Mot klokka STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Med klokka @@ -1458,8 +1617,8 @@ STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Høydenivå et STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}En eller flere ruter ved den nordlige kanten av kartet er ikke tom(me) STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}En eller flere ruter ved en av kantene på kartet er ikke vann -STR_CONFIG_SETTING_STATION_SPREAD :Maks stasjonspredning: {STRING} -STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maksimalt areal som delene av en enkelt stasjon kan spres ut på. Vær oppmerksom på at høye verdier vil gjøre spillet tregere +STR_CONFIG_SETTING_STATION_SPREAD :Største stasjonsspredning: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Største areal som delene av en enkelt stasjon kan spres ut på. Vær oppmerksom på at høye verdier vil gjøre spillet tregere STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatisk vedlikehold ved helikopterplass: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Utfør vedlikehold av helikoptre etter hver landing, selv om det ikke er noen depot på flyplassen @@ -1474,44 +1633,50 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grønn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mørkegrønn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fiolett +STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Farger for vareflyt: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Velg selskapsfarge for vareflyt ###length 4 +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Grønn til rød (original) +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Grønn til blå +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Grå til rød +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Gråtoner -STR_CONFIG_SETTING_SCROLLMODE :Rulleoppførsel for vindu: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Oppførsel ved rulling av kart +STR_CONFIG_SETTING_SCROLLMODE :Panoreringsoppførsel for synsfelt: {STRING} +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Oppførsel ved panorering av kart. Alternativene med "museposisjon låst" virker ikke på alle systemer, som web-baserte versjoner, touchskjermer, Linux med Wayland, og andre ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Flytt synsfelt med høyre museknapp, museposisjon låst -STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Rull kartet med høyre museknapp, museposisjon låst -STR_CONFIG_SETTING_SCROLLMODE_RMB :Rull kartet med høyre museknapp -STR_CONFIG_SETTING_SCROLLMODE_LMB :Rull kartet med venstre museknapp +STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Panorer kartet med høyre museknapp, museposisjon låst +STR_CONFIG_SETTING_SCROLLMODE_RMB :Panorer kartet med høyre museknapp +STR_CONFIG_SETTING_SCROLLMODE_LMB :Panorer kartet med venstre museknapp -STR_CONFIG_SETTING_SMOOTH_SCROLLING :Myk rulling: {STRING} -STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Velge hvordan synsfeltet ruller til en bestemt posisjon når du klikker på det lille kartet, eller ved utstedelse av en kommando for å gå til et bestemt objekt på kartet. Hvis aktivert, ruller synsfeltet jevnt, og hvis deaktivert hopper det direkte til det valgte punktet +STR_CONFIG_SETTING_SMOOTH_SCROLLING :Myk panorering av synsfelt: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Velge hvordan synsfeltet panorerer til en bestemt posisjon når du klikker på det lille kartet, eller ved utstedelse av en kommando for å gå til et bestemt objekt på kartet. Hvis aktivert, panorerer synsfeltet jevnt, og hvis deaktivert hopper det direkte til det valgte punktet STR_CONFIG_SETTING_MEASURE_TOOLTIP :Vis målingsverktøy ved bruk av byggingsverktøy: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Vise avstander mellom kartelementer samt høydeforskjeller når du drar linjer ved byggevirksomhet -STR_CONFIG_SETTING_LIVERIES :Vis utleiefirma etter kjøretøytype: {STRING} -STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrollér bruken av kjøretøystype-spesifikke lakkeringer (i motsetning til selskaps-spesifikke) +STR_CONFIG_SETTING_LIVERIES :Vis design spesifikke for type transportmidler: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrollér bruken av kjøretøystypespesifikke design (i motsetning til selskapsspesifikke) ###length 3 STR_CONFIG_SETTING_LIVERIES_NONE :Ingen -STR_CONFIG_SETTING_LIVERIES_OWN :Eget firma -STR_CONFIG_SETTING_LIVERIES_ALL :Alle firmaer +STR_CONFIG_SETTING_LIVERIES_OWN :Eget selskap +STR_CONFIG_SETTING_LIVERIES_ALL :Alle selskaper STR_CONFIG_SETTING_PREFER_TEAMCHAT :Foretrekk lagsamtale med : {STRING} -STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Bytte bindingen av firmaets interne og offentlige kommunikasjon til , henholdsvis +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Bytte bindingen av selskapet interne og offentlige kommunikasjon til , henholdsvis STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Rullehjulets hastighet på kartet: {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontroller sensitiviteten til rulling med muse-hjulet +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontroller følsomheten til panorering med musehjulet STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Rullehjulets funksjon: {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Tillat rulling med todimensjonale musehjul +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Tillat panorering med todimensjonale musehjul ###length 3 STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom kartet -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Rull kartet +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Panorer kartet STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Av STR_CONFIG_SETTING_OSK_ACTIVATION :Skjermtastatur: {STRING} -STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Velg metode for å åpne skjerm-tastaturet for inntasting av tekst i tekstbokser ved hjelp av pekeenheten. Dette er ment for små enheter uten fysisk tastatur +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Velg metode for å åpne skjermtastaturet for inntasting av tekst i tekstbokser ved hjelp av pekeenheten. Dette er ment for små enheter uten fysisk tastatur ###length 4 STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Deaktivert STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dobbeltklikk @@ -1519,7 +1684,7 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enkelt klikk (v STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enkelt klikk (umiddelbart) STR_CONFIG_SETTING_USE_RELAY_SERVICE :Bruk videresendingstjeneste: {STRING} -STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Hvis opprettelsen av en tilkobling til serveren mislykkes, kan man bruke en videresendingstjeneste til å opprette en tilkobling. "Aldri" tillater dette, "spør" vil spørre først, "tillat" vil tillate det uten å spørre +STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Hvis opprettelsen av en tilkobling til tjeneren mislykkes, kan man bruke en videresendingstjeneste til å opprette en tilkobling. "Aldri" tillater dette, "spør" vil spørre først, "tillat" vil tillate det uten å spørre ###length 3 STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER :Aldri STR_CONFIG_SETTING_USE_RELAY_SERVICE_ASK :Spør @@ -1535,7 +1700,9 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Av STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Lukk vinduet med høyreklikk: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Lukker et vindu ved å høyreklikke i det. Deaktiverer verktøytipset med høyreklikk! ###length 3 +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Nei STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Ja +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Ja, unntatt klebrige STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Bruk {STRING} datoformat i navn på lagrede spill. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Datoformat i lagrede spills filnavn @@ -1551,24 +1718,28 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Når spillet er STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Velg hvilke handlinger som kan bli gjort når spillet er pauset ###length 4 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ingen handlinger -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alt utenom konstruksjon +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alt utenom byggeaktivitet STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alt utenom landskapsendringer STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle handlinger STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Bruk grupper i kjøretøyliste: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Aktiver bruk av avanserte kjøretøylister for guppering av kjøretøy -STR_CONFIG_SETTING_LOADING_INDICATORS :Bruk lastingsindikatorer: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS :Bruk lasteindikatorer: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Velg hvorvidt lasteindikatorer vises over kjøretøy som lastes eller losses +STR_CONFIG_SETTING_TIMETABLE_MODE :Tidsenhet for rutetabeller: {STRING} +STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Velg tidsenhet for rutetabeller ###length 3 +STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Dager STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Sekunder +STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Tikk STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Vis ankomst og avgang i rutetabeller: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vise forventede ankomst- og avgangstider i rutetabeller STR_CONFIG_SETTING_QUICKGOTO :Rask opprettelse av kjøretøyordre: {STRING} -STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Forhåndsvelg 'gå til markøren' når ordre-vinduet åpnes +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Forhåndsvelg 'gå til markøren' når ordrevinduet åpnes STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standard jernbanetype (etter nytt/innlastet spill): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Jernbanetype som velges når man starter eller laster et spill. 'første tilgjengelige' velger den eldste typen spor, 'siste tilgjengelige' velger den nyeste typen spor og 'mest brukt' velger den typen som for tiden er mest i bruk @@ -1578,16 +1749,16 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Siste tilgjenge STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest brukt STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Vis reserverte spor: {STRING} -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Gi reserverte spor en annen farge for å bistå med problemer hvor tog nekter å entre sti-baserte blokker +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Gi reserverte spor en annen farge for å bistå med problemer hvor tog nekter å entre stibaserte blokker STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :La byggingsverktøy være aktive etter bruk: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Holde verktøylinjen for bruer, tunneler, osv åpnet etter bruk STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatisk fjerne signaler mens jernbane bygges: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatisk fjerne signaler mens jernbane bygges dersom signalene er i veien. Vær oppmerksom på at dette kan potensielt lede til togkrasj. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Fjern signaler automatisk når jernbane bygges dersom signalene er i veien. Vær oppmerksom på at dette potensielt kan føre til ulykker STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Grense for hvor fort spillet kjører: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Begrens hvor fort spillet går når hurtigspoling er aktivert. 0 = ingen begrensning (så raskt som din pc tillater). Verdier under 100% gjør spillet tregere. Den øvre grensen avhenger av spesifikasjonene til din pc og kan variere avhengig av spillet. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Begrens hvor fort spillet går når hurtigspoling er aktivert. 0 = ingen begrensning (så raskt som din datamaskin tillater). Verdier under 100% gjør spillet tregere. Den øvre grensen avhenger av spesifikasjonene til din datamaskin og kan variere avhengig av spillet STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normal hastighet ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Ingen grense (så fort som maskinen din tillater) @@ -1600,12 +1771,14 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spille av lyd v ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR :Utgangen av år: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Slutt på periode: {STRING} ###length 2 -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spille av lydeffekt ved utgangen av et år som oppsummerer selskapets resultater i løpet av året i forhold til året før +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spill av lydeffekt ved utgangen av et år som oppsummerer selskapets resultater i løpet av året i forhold til året før +STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Spill av lydeffekt ved utgangen av en periode som oppsummerer selskapets resultater i løpet av perioden i forhold til forrige periode -STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruksjon: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spille av lydeffekt ved fullførte konstruksjoner eller andre tiltak +STR_CONFIG_SETTING_SOUND_CONFIRM :Byggeaktivitet: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spille av lydeffekt ved fullført byggeaktivitet eller andre tiltak STR_CONFIG_SETTING_SOUND_CLICK :Tastetrykk: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pipetone ved tastetrykk @@ -1619,60 +1792,66 @@ STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spill lydeffekt STR_CONFIG_SETTING_SOUND_AMBIENT :Omgivelse: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spille lyder fra omgivelsene av landskapet, industrier og tettsteder -STR_CONFIG_SETTING_MAX_TRAINS :Maks antall tog per firma: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimalt antall tog som et firma kan ha +STR_CONFIG_SETTING_MAX_TRAINS :Største antall tog per selskap: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Største antall tog som et selskap kan ha -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks antall veikjøretøy per firma: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimalt antall veikjøretøy som et firma kan ha +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Største antall kjøretøy per selskap: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Største antall kjøretøy som et selskap kan ha -STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks antall luftfartøy per firma: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimalt antall fly som et firma kan ha +STR_CONFIG_SETTING_MAX_AIRCRAFT :Største antall luftfartøy per selskap: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Største antall luftfartøy som et selskap kan ha -STR_CONFIG_SETTING_MAX_SHIPS :Maks antall skip per firma: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimalt antall skip som et firma kan ha +STR_CONFIG_SETTING_MAX_SHIPS :Største antall skip per selskap: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Største antall skip som et selskap kan ha STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Hindre datamaskinen i å bygge tog: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Aktivering av denne innstillingen gjør bygging av tog umulig for en datamaskin-spiller +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Aktivering av denne innstillingen gjør bygging av tog umulig for en datamaskinspiller -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Hindre datamaskinen i å bygge veikjøretøy: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Aktivering av denne innstillingen gjør bygging av veikjøretøy umulig for en datamaskin-spiller +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Hindre datamaskinen i å bygge kjøretøy: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Aktivering av denne innstillingen gjør bygging av kjøretøy umulig for en datamaskinspiller STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Hindre datamaskinen i å bygge luftfartøy: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Aktivering av denne innstillingen gjør bygging av fly umulig for en datamaskin-spiller +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Aktivering av denne innstillingen gjør bygging av fly umulig for en datamaskinspiller STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Hindre datamaskinen i å bygge skip: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Aktivering av denne innstillingen gjør bygging av skip umulig for en datamaskin-spiller +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Aktivering av denne innstillingen gjør bygging av skip umulig for en datamaskinspiller -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillat AI-er i flerspiller: {STRING} -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillat datamaskin-spillere å delta i flerspiller-spill +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillat KI-er i flerspiller: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillat datamaskinspillere å delta i flerspillerspill STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes før skript er avbrutt: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maksimalt antall beregningstrinn et skript kan ta i én omgang -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maks minnebruk pr. script: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Hvor mye minne ett enkelt script kan bruke før det blir stoppet av systemet. Denne verdien må kanskje økes for store kart. +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Største antall beregningstrinn et skript kan gjøre i én omgang +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Største minnebruk per skript: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Hvor mye minne ett enkelt skript kan bruke før det blir stanset. Denne verdien må kanskje økes for store kart. STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Vedlikeholdsintervaller er i prosent: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Velge om vedlikehold av kjøretøyer utløses av tiden som er forløpt fra siste gjennomførte vedlikehold, eller av at pålitelighet dropper under en bestemt prosent av maksimal pålitelighet +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Når aktivert vil transportmidler forsøke å få utført vedlikehold når påliteligheten faller med en gitt prosent fra største pålitelighet.{}{}For eksempel, hvis et transportmiddels største pålitelighet er 90% og vedlikeholdsintervallet er 20%, vil transportmiddelet forsøke å få utført vedlikehold når den når 72% pålitelighet STR_CONFIG_SETTING_SERVINT_TRAINS :Standard vedlikeholdsintervall for tog: {STRING} -STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Angi standard vedlikeholdsintervall for nye skinnegående kjøretøy, hvis det ikke er satt noe serviceintervall for kjøretøyet -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard vedlikeholdsintervall for veikjøretøy: {STRING} -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Angi standard vedlikeholdsintervall for nye veikjøretøy, hvis det ikke er satt noe vedlikeholdsintervall for kjøretøyet +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Angi standard vedlikeholdsintervall for nytt jernbanemateriell, hvis det ikke er satt noe vedlikeholdsintervall for materiellet +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard vedlikeholdsintervall for kjøretøy: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Angi standard vedlikeholdsintervall for nye kjøretøy, hvis det ikke er satt noe vedlikeholdsintervall for kjøretøyet STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard vedlikeholdsintervall for fly: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Angi standard vedlikeholdsintervall for nye fly, hvis det ikke er angitt noe vedlikeholdsintervall for flyet STR_CONFIG_SETTING_SERVINT_SHIPS :Standard vedlikeholdsintervall for skip: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Angi standard vedlikeholdsintervall for nye skip, hvis det ikke er angitt noe vedlikeholdsintervall for fartøyet -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dag{P 0 "" er}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Dag{P 0 "" er} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minutt{P 0 "" er} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktivert STR_CONFIG_SETTING_NOSERVICE :Deaktiver vedlikehold når havarier er slått av: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Når aktivert, vil kjøretøy ikke bli vedlikeholdt hvis de ikke kan bryte sammen +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Lastehastighet reduseres for tog som er lengre enn stasjonen:{STRING} +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Når aktivert vil tog som er for lange for stasjonen laste saktere enn tog som passer til stasjonen. Denne innstillingen påvirker ikke rutesøking STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktiver fartsgrenser for vogner: {STRING} -STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Når aktivert, brukes også fartsgrenser til vogner for å avgjøre den maksimale hastigheten til et tog +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Når aktivert, brukes også fartsgrenser til vogner for å avgjøre topphastigheten til et tog STR_CONFIG_SETTING_DISABLE_ELRAILS :Deaktiver elektriske spor: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Aktivering av denne innstillingen deaktiverer kravet om å elektrifisere spor for å tillate at elektriske motorer kan kjøre på dem @@ -1680,8 +1859,8 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Aktivering av d STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Første kjøretøy ankommer spillers stasjon: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vis en nyhetsoppdatering når det første kjøretøyet ankommer stasjonen til en ny spiller -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Første kjøretøy ankommer motstanders stasjon: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vise nyhetsoppdatering når det første kjøretøyet ankommer stasjonen til en ny motstander +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Første kjøretøy ankommer konkurrents stasjon: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vise nyhetsoppdatering når det første kjøretøyet ankommer stasjonen til en ny konkurrent STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ulykker / katastrofer: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vise nyhetsoppdatering når ulykker eller katastrofer inntreffer @@ -1689,7 +1868,7 @@ STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vise nyhetsoppd STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER :Ulykker med konkurrentens kjøretøy: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER_HELPTEXT :Vis en avis om havarerte kjøretøy for konkurrenter -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Firmainformasjon: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Selskapsinformasjon: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Vise nyhetsoppdatering når nye selskaper starter opp, eller når selskaper er konkurstruet STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Åpning av industrier: {STRING} @@ -1701,26 +1880,26 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Vise nyhetsoppd STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Økonomiske endringer: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Vis en nyhetsoppdatering om globale forandringer i økonomi -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produksjonsendringer hos industrier ekspedert av firmaet: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produksjonsendringer hos industrier betjent av selskapet: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Vise nyhetsoppdateringer når produksjonsnivået endrer seg for industrier som er tilknyttet selskapet -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produksjonsendringer hos industrier ekspedert av motspiller(e): {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produksjonsendringer hos industrier betjent av konkurrent(er): {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Vise nyhetsoppdateringer når produksjonsnivået endrer seg for industrier som er tilknyttet konkurrentene STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Andre industriproduksjonsendringer: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Vise nyhetsoppdatering når produksjonsnivået endrer seg for industrier som ikke er tilknyttet selskapet eller andre konkurrenter -STR_CONFIG_SETTING_NEWS_ADVICE :Forslag / informasjon om firmaets kjøretøyer: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE :Forslag / informasjon om selskapets kjøretøyer: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vise meldinger om kjøretøy som trenger oppmerksomhet STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nye kjøretøy: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Vise nyhetsoppdatering når nye kjøretøystyper blir tilgjengelig STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Endringer i godtatte varer: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vise meldinger om stasjoners skiftende aksept av godstyper +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vise meldinger om stasjoners skiftende aksept av varetyper STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidier: {STRING} -STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vise nyhetsoppdateringer om subsidie-relaterte hendelser +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vise nyhetsoppdateringer om subsidierelaterte hendelser STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Generell informasjon: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Vise avis for generelle hendelser, som for eksempel kjøp av eksklusive rettigheter eller finansiering av veibygging @@ -1734,19 +1913,19 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Året der avisa STR_CONFIG_SETTING_STARTING_YEAR :Start spillet i år: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Poengsum ved slutten av året: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Året spillet slutter med tanke på poeng. På slutten av dette året, vil firmaets poengsum bli lagret og tavlen med høyeste poengsummer vil vises. Spilleren kan fortsette å spille etter dette.{}Hvis dette er før start året, vil tavlen med høyeste poengsummer aldri vises. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Året spillet slutter å beregne poeng. På slutten av dette året vil selskapets poengsum bli lagret og tavlen med høyeste poengsum vil vises, men spilleren kan fortsette å spille etter dette.{}Hvis dette er før startåret, vil tavlen med høyeste poengsum aldri vises. STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Aldri STR_CONFIG_SETTING_ECONOMY_TYPE :Økonomi type: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Jevn økonomi medfører at produksjonen endres oftere, og i mindre steg. Frossen økonomi stopper produksjon endringer og industri stenges. Denne innstillingen kan ha ingen effekt dersom industri typene er gitt av NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Jevn økonomi medfører at produksjonen endres oftere, og i mindre steg. Frossen økonomi stopper produksjonsendringer og industrinedleggelser. Denne innstillingen kan ha ingen effekt hvis industritypene kommer fra en NewGRF. ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Jevnt STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Frossen -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prosentandel av etappe-overskudd som skal betales i innmatingssystem: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prosentandel av etappeoverskudd som skal betales i innmatingssystem: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Andel av inntekten gitt til de mellomliggende etapper i et overføringssystem, noe som gir mer kontroll over inntektene STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Når du drar en linje, plasser signaler hver: {STRING} @@ -1761,6 +1940,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Angi året når STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Bla gjennom signaltyper: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Velg hvilke signaltyper å gå gjennom når Ctrl+klikke på et bygd signal med signalverktøyet ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Kun gjeldende gruppe STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle synlige STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Vis signaltyper: {STRING} @@ -1779,12 +1959,12 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 Rutenett STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Tilfeldig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Byer kan bygge veier: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Tillat byer å bygge veier for å vokse. Deaktiver for å forhindre bystyrer å bygge veier på egenhånd +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Tillat byer å bygge veier for å vokse. Deaktiver for å hindre lokale myndigheter i å bygge veier på egenhånd STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Byer har lov å bygge planoverganger: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ved å aktivere denne innstillingen, tillates byer å bygge planoverganger -STR_CONFIG_SETTING_NOISE_LEVEL :Tillat bykontrollert støynivå for flyplasser: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Når denne innstillingen er deaktivert, kan det være to flyplasser i hver by. Når denne innstillingen er aktivert, blir antall flyplasser i en by bestemt av graden av støytoleranse i byen. Graden avhenger av innbyggertall, flyplasstørrelse og avstand +STR_CONFIG_SETTING_NOISE_LEVEL :Begrens plassering av flyplasser basert på støynivå: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :La byer blokkere flyplassbygging basert på støygrenser, som er basert på byens innbyggertall og flyplassens størrelse og avstand. His denne innstillingen er deaktivert, vil byer kun tillate to flyplasser hvis ikke lokale myndigheters holdning er "Tillatende". STR_CONFIG_SETTING_TOWN_FOUNDING :Grunnlegging av byer i spillet: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ved å aktivere denne innstillingen tillates spillere å grunnlegge nye byer i spillet @@ -1816,16 +1996,16 @@ STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Avstanden mello STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piks{P 0 el ler} ###setting-zero-is-special STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Deaktivert -STR_CONFIG_SETTING_SOFT_LIMIT :Maksimalt antall flytende vinduer: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT :Største antall ikke-klebrige vinduer: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Antall ikke-klebrige åpne vinduer før gamle vinduer automatisk blir lukket for å gi plass til nye vinduer STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} ###setting-zero-is-special STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :deaktivert -STR_CONFIG_SETTING_ZOOM_MIN :Maks zoom-inn nivå: {STRING} -STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maksimalt forstørrelsesnivå for synsfelt. Vær oppmerksom på at aktivering av høyere forstørrelsesnivå øker minnekravet -STR_CONFIG_SETTING_ZOOM_MAX :Maks zoom-ut nivå: {STRING} -STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maksimalt 'zoom-ut' nivå for synsfelt. Høye ut-zoomingsnivåer kan føre til hakking når det brukes +STR_CONFIG_SETTING_ZOOM_MIN :Største zoom-inn nivå: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Største forstørrelsesnivå for synsfelt. Vær oppmerksom på at aktivering av høyere forstørrelsesnivå øker minnekravet +STR_CONFIG_SETTING_ZOOM_MAX :Største zoom-ut nivå: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Største 'zoom-ut' nivå for synsfelt. Høye ut-zoomingsnivåer kan føre til hakking når det brukes ###length 6 STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x @@ -1835,7 +2015,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Høyeste oppløsning effekter kan bruke: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Begrens maks oppløsning effektene kan bruke. Å begrense oppløsningen vil unngå å bruke høy oppløsning selv når den er tilgjengelig. Dette kan bidra til å holde spillets utseende enhetlig når du bruker en blanding av GRF-filer med og uten grafikk med høy oppløsning. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Begrens største oppløsning spritene kan bruke. Å begrense oppløsningen vil unngå å bruke høyoppløst grafikk selv når det er tilgjengelig. Dette kan bidra til gjøre spillets uttrykk enhetlig når en blanding av GRF-filer med og uten høyoppløst grafikk er i bruk ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -1859,69 +2039,76 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Innledende byst STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Gjennomsnittsstørrelse på (stor)byer i forhold til vanlige byer ved begynnelsen av spillet STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Oppdater distribusjonsgraf hvert {STRING} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tid mellom hver rekalkulering av koblingsgrafen. Hver rekalkulering kalkulerer planene for en komponent på grafen. Dette betyr at verdi X for denne innstillingen ikke innebærer at hele grafen vil bli oppdatert hvert X sekund. Kun noen komponenter vil. Jo kortere du setter den, jo mer CPU-tid vil være nødvendig for å kalkulere den. Jo lenger du setter den, jo lenger vil det ta før varedistribusjonen kommer i gang på nye ruter +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Ta {STRING} for rekalkulering av distribusjonsgraf +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tid for hver rekalkulering av en komponent i koblingsgrafen. Når en rekalkulering starter, opprettes en tråd som får kjøre et oppgitte antallet sekunder. Jo kortere du setter den, jo mer sannsynlig er det at tråden ikke er ferdig når den skal. Da stopper spille til det er ("lag"). Jo lenger du setter den, jo lenger tar det før distribusjonen blir oppdatert når ruter endres STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribusjonsmodus for passasjerer: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetrisk" betyr at omtrent like mange passasjerer vil reise fra stasjon A til stasjon B som omvendt (fra B til A). "asymmetrisk" betyr at et vilkårlig antall passasjerer vil reise i begge retninger. "manuelt" betyr at det ikke vil forekomme automatisk distribusjon for passasjerene +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetrisk" betyr at omtrent like mange passasjerer vil reise fra stasjon A til stasjon B som fra B til A. "Asymmetrisk" betyr at et vilkårlig antall passasjerer kan reise i begge retninger. "Manuell" betyr at ingen automatisk distribusjon vil forekomme for passasjerer STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distribusjonsmodus for post: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisk" betyr at omrent samme mengde post vil bli sent fra stasjon A til stasjon B som omvendt (fra B til A). "asymmetrisk" betyr at vilkårlige mengder post kan bli sendt i begge retninger. "manuelt" betyr at ingen automatisk distribusjon vil forekomme for post. -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribusjonsmodus for den pansrede gods-klassen: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Den PANSREDE godsklassen inneholder verdisaker i det tempererte klimaet, diamanter i det subtropiske, og gull i det subarktiske. NewGRF-er kan endre på dette. "symmetrisk" betyr at omtrent like mye gods vil bli sendt fra stasjon A til stasjon B som omvendt (fra B til A). "asymmetrisk" betyr at vilkårlige mengder gods kan sendes i begge retninger. "manuelt" betyr at ingen automatisk distribusjon vil forekomme for lasten. Det anbefales å sette denne til asymmetrisk eller manuell når du spiller subarktisk, siden banker ikke vil sende noe gull tilbake til gullgruver. For temperert og subtropisk klima kan du også velge symmetrisk, da banker fint kan velge å sende verdisaker tilbake til opprinnelig bank. -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribusjonsmodus for andre godsklasser: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetrisk" betyr at vilkårlige mengder gods kan sendes i begge retninger. "manuelt" betyr at ingen automatisk distribusjon av gods vil forekomme for disse godstypene. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetrisk" betyr at omtrent samme mengde post vil bli sent fra stasjon A til stasjon B som fra B til A. "Asymmetrisk" betyr at vilkårlige mengder post kan bli sendt i begge retninger. "Manuell" betyr at ingen automatisk distribusjon vil forekomme for post +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribusjonsmodus for den PANSREDE vareklassen: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Den PANSREDE vareklassen inneholder verdisaker i det tempererte klimaet, diamanter i det subtropiske, og gull i det subarktiske. NewGRF-er kan endre på dette. "Symmetrisk" betyr at omtrent like mye varer vil bli sendt fra stasjon A til stasjon B som fra B til A. "Asymmetrisk" betyr at vilkårlige mengder varer kan sendes i begge retninger. "Manuell" betyr at ingen automatisk distribusjon vil forekomme for varene. Det anbefales å sette denne til asymmetrisk eller manuell når du spiller subarktisk eller subtropisk, siden banker kun mottar varer i disse klimaene. For temperert klima kan du også velge symmetrisk, da banker fint kan sende verdisaker tilbake til opprinnelig bank +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribusjonsmodus for andre vareklasser: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymmetrisk" betyr at vilkårlige mengder varer kan sendes i begge retninger. "Manuell" betyr at ingen automatisk distribusjon vil forekomme for disse varene ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrisk STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrisk -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribusjons-nøyaktighet: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Jo høyere du setter denne, desto mer prosessor-tid vil beregningen av koblingsgrafen ta. Hvis dette bruker for lang tid, vil du oppleve etterslep. Hvis du setter den til en lav verdi, vil distribusjonen bli mer unøyaktig, og du vil kunne oppleve at gods ikke blir sendt til de stedene du forventer at den skal gå. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribusjonsnøyaktighet: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Jo høyere du setter denne, desto mer prosessortid vil beregningen av koblingsgrafen ta. Hvis dette bruker for lang tid, vil du kunne oppleve etterslep. Hvis du setter den til en lav verdi, derimot, vil distribusjonen bli mer unøyaktig, og du vil kunne oppleve at varer ikke blir sendt til de stedene du forventer at de skal STR_CONFIG_SETTING_DEMAND_DISTANCE :Efffekten av avstand på behov: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Hvis du setter denne til en verdi større enn 0, vil avstanden mellom opprinnelsesstasjonen (A) og en mulig destinasjon (B) ha en effekt på mengden av last som sendes fra A til B. Jo lengre vekk B er fra A, desto mindre gods vil bli sent. Jo høyere du setter den, desto mindre gods vil bli sendt til stasjoner langt vekk, og en større andel gods vil bli sendt til mer nærliggende stasjoner. -STR_CONFIG_SETTING_DEMAND_SIZE :Mengde retur-last ved symmetrisk modus: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ved å sette denne til mindre enn 100%, vil symmetrisk distribusjon oppføre seg mer som den asymmetriske: Mindre gods vil ved automatikk bli sendt tilbake til den opprinnelige stasjonen. Hvis du setter denne til 0% vil symmetrisk distribusjon oppføre seg akkurat som den asymmetriske. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Hvis du setter denne til en verdi større enn 0, vil avstanden mellom opprinnelsesstasjonen A for noen varer og en mulig destinasjon B ha en effekt på mengden av varer som sendes fra A til B. Jo lengre vekk B er fra A, desto færre varer vil bli sent. Jo høyere du setter den, desto mindre varer vil bli sendt til stasjoner langt vekk, og en større andel varer vil bli sendt til nærliggende stasjoner +STR_CONFIG_SETTING_DEMAND_SIZE :Mengde returlast ved symmetrisk modus: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ved å sette denne til mindre enn 100%, vil symmetrisk distribusjon oppføre seg mer som den asymmetriske: Færre varer vil bli returnert hvis en viss mengde blir sendt til stasjonen. Hvis du setter den til 0% vil symmetrisk distribusjon oppføre seg akkurat som asymmetrisk STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Metning av korte stier før man anvender rommelige stier: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Ofte er det flere stier mellom to gitte stasjoner. Varedistribusjons-algoritmen vil mette den korteste strekning først. Deretter vil den bruke den neste korteste veien inntil den er mettet, og så videre. Metning bestemmes ut fra en vurdering av kapasitet og planlagt bruk. Når den har mettet alle veier, vil den, hvis det fortsatt er etterspørsel, overbelaste alle veier, og foretrekke de med høy kapasitet. Algoritmen vil imidlertid ikke estimere kapasitet nøyaktig, mesteparten av tiden. Med denne innstillingen kan du angi opptil hvilken prosentandel en kortere sti må være metter før man velger en en lengre (ledig) sti. Sett denne til mindre enn 100% for å unngå overfylte stasjoner i tilfeller hvor kapasiteten overvurderes. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Ofte er det flere veier mellom to gitte stasjoner. Varedistribusjonsalgoritmen vil fylle den korteste veien først. Deretter vil den bruke den neste korteste veien inntil den er full, og så videre. Fyllingsgrad bestemmes ut fra en vurdering av kapasitet og planlagt bruk. Når den har fylt alle veier, vil den, hvis det fortsatt er etterspørsel, overbelaste alle veier, og foretrekke de med høy kapasitet. Algoritmen vil imidlertid ikke estimere kapasiteten nøyaktig mesteparten av tiden. Denne innstillingen lar deg angi opptil hvilken prosent en kortere vei må være full før man velger en en lengre vei. Sett denne til mindre enn 100% for å unngå overfylte stasjoner i tilfeller hvor kapasiteten overvurderes -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighetsenheter: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighetsenheter (land): {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Hastighetsenheter (nautisk): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Når en hastighet vises i brukergrensesnittet, vise det i de valgte enheter -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Det britiske imperiets enhetssystem (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperisk (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisk (km/t) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Spillenheter (ruter/dag) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Spillenheter (ruter/sek) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Knop STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Kjøretøys effektenheter: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Når et kjøretøys effekt er vist i brukergrensesnittet, vise det i de valgte enheter ###length 3 -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Det britiske imperiets enhetssystem (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperisk (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisk (HK) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Vekt-enheter: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Vektenheter: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Når vektene vises i brukergrensesnittet, vis dem i de utvalgte enhetene ###length 3 -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Det britiske imperiets enhetssystem ('short t'/tonn) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperisk (amerikansk t/tonn) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisk (t/tonn) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volumenheter: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Når volumene vises i brukergrensesnittet, vis dem i de utvalgte enhetene ###length 3 -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Det britiske imperiets enhetssystem (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperisk (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisk (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Enhet for trekkraft: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Trekkraftenheter: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Når trekkarbeid, også kjent som trekkraft, er vist i brukergrensesnittet, vis det i de utvalgte enhetene ###length 3 -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Det britiske imperiets enhetssystem (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperisk (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisk (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Høyde-enheter: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Høydeenheter: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Når en høyde vises i brukergrensesnittet, vis den i de valgte enhetene ###length 3 -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Det britiske imperiets enhetssystem (fot) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperisk (fot) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) @@ -1931,13 +2118,14 @@ STR_CONFIG_SETTING_SOUND :Lydeffekter STR_CONFIG_SETTING_INTERFACE :Grensesnitt STR_CONFIG_SETTING_INTERFACE_GENERAL :Generelt STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Synsfelt -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruksjon +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Byggeaktivitet STR_CONFIG_SETTING_ADVISORS :Nyheter / Rådgivere -STR_CONFIG_SETTING_COMPANY :Firma +STR_CONFIG_SETTING_COMPANY :Selskap STR_CONFIG_SETTING_ACCOUNTING :Regnskap STR_CONFIG_SETTING_VEHICLES :Kjøretøy STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fysikk STR_CONFIG_SETTING_VEHICLES_ROUTING :Ruting +STR_CONFIG_SETTING_VEHICLES_ORDERS :Ordre STR_CONFIG_SETTING_LIMITATIONS :Begrensninger STR_CONFIG_SETTING_ACCIDENTS :Katastrofer / Ulykker STR_CONFIG_SETTING_GENWORLD :Verdensgenerering @@ -1946,22 +2134,14 @@ STR_CONFIG_SETTING_ENVIRONMENT_TIME :Tid STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Myndigheter STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Byer STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrier -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Gods-distribusjon -STR_CONFIG_SETTING_AI :Motstandere -STR_CONFIG_SETTING_AI_NPC :Datamaskinstyrte spillere +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Varedistribusjon +STR_CONFIG_SETTING_ENVIRONMENT_TREES :Trær +STR_CONFIG_SETTING_AI :Konkurrenter +STR_CONFIG_SETTING_AI_NPC :Datamaskinspillere STR_CONFIG_SETTING_NETWORK :Nettverk -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Veifinner for tog: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Stifinner som skal brukes for tog -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Veifinner for kjøretøy: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Stifinner som skal brukes for kjøretøyer -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Veifinner for skip: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Stifinner som brukes for skip STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatisk reversering ved signaler: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :La tog reversere ved signaler om de har ventet der lenge -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Anbefalt) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Endre verdi @@ -1983,11 +2163,12 @@ STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... igno STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorerer Grunn Lyd set '{STRING}': ikke funnet STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorerer Grunn Musikk set '{STRING}': ikke funnet STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Tomt for minne -STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Tildeling av {BYTES} fra spritecachen feilet. Spritecachen ble redusert til {BYTES}. Dette senke ytelsen av OpenTTD. For å redusere minneforbruken kan du forsøke å slå av 32bpp grafikk og/eller zoomnivå. +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Tildeling av {BYTES} fra spritecachen mislyktes. Spritecachen ble redusert til {BYTES}. Dette senke ytelsen av OpenTTD. For å redusere minneforbruken kan du forsøke å slå av 32bpp grafikk og/eller zoomnivå. # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Feil med skjerminstillingene... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... ingen kompatibel GPU funnet. Maskinvareakselerasjon deaktivert +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... GPU-driveren krasjet spillet. Maskinvareakselerasjon deaktivert # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2001,10 +2182,12 @@ STR_INTRO_MULTIPLAYER :{BLACK}Flerspil STR_INTRO_GAME_OPTIONS :{BLACK}Spillinnstillinger STR_INTRO_HIGHSCORE :{BLACK}Tavle med høyeste poengsummer +STR_INTRO_HELP :{BLACK}Hjelp og manualer STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Innstillinger STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-innstillinger STR_INTRO_ONLINE_CONTENT :{BLACK}Se etter innhold på nettet -STR_INTRO_AI_SETTINGS :{BLACK}AI innstillinger +STR_INTRO_AI_SETTINGS :{BLACK}KI-innstillinger +STR_INTRO_GAMESCRIPT_SETTINGS :{BLACK}Game Script-innstillinger STR_INTRO_QUIT :{BLACK}Avslutt STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Start et nytt spill. Ctrl+klikk hopper over kartkonfigurering @@ -2012,19 +2195,21 @@ STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Last inn STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Start et nytt spill og bruk et høydekart som landskap STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Start et nytt spill som bruker et egendefinert scenario STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Opprett en egendefinert spillverden eller et scenario -STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Start et flerspiller-spill +STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Start et flerspillerspill STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Velg temperert miljø STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Velg subarktisk miljø STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Velg subtropisk miljø STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Velg leketøyland -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Vis spillinnstillinger -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Vise tavle over høyeste poengsummer -STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Vis innstillinger -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vis NewGRF-instillinger +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Åpne spillinnstillinger +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Åpne tabell med høyeste poengsummer +STR_INTRO_TOOLTIP_HELP :{BLACK}Få tilgang til dokumentasjon og ressurser på nettet +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Åpne innstillinger +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Åpne NewGRF-instillinger STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Se etter nytt og oppdatert innhold for nedlasting -STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Vis KI innstillinger +STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Åpne KI-innstillinger +STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Åpne Game Script-innstillinger STR_INTRO_TOOLTIP_QUIT :{BLACK}Avslutt 'OpenTTD' STR_INTRO_BASESET :{BLACK}Det valgte innebygde grafikksettet mangler {NUM} sprite{P "" r}. Se etter oppdateringer for settet. @@ -2042,40 +2227,60 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Er du s STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er du sikker på at du vil forlate dette scenariet? # Help window +STR_HELP_WINDOW_CAPTION :{WHITE}Hjelp og manualer +STR_HELP_WINDOW_WEBSITES :{BLACK}Nettsider +STR_HELP_WINDOW_DOCUMENTS :{BLACK}Dokumenter +STR_HELP_WINDOW_README :{BLACK}Hjelpefil +STR_HELP_WINDOW_CHANGELOG :{BLACK}Endringslogg +STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Kjente feil +STR_HELP_WINDOW_LICENSE :{BLACK}Lisens +STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD +STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Manual / Wiki +STR_HELP_WINDOW_BUGTRACKER :{BLACK}Rapporter en feil +STR_HELP_WINDOW_COMMUNITY :{BLACK}Fellesskap # Cheat window -STR_CHEATS :{WHITE}Juksekoder +STR_CHEATS :{WHITE}Sandkasseinnstillinger STR_CHEAT_MONEY :{LTBLUE}Øk pengebeholdningen med {CURRENCY_LONG} -STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiller som firma: {ORANGE}{COMMA} +STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiller som selskap: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldoser (fjern industrier, uflyttbare objekter): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunneler kan krysse hverandre: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetfly vil ikke krasje (regelmessig) på små flyplasser: {ORANGE} {STRING} -STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Rediger den maksimale karthøyden: {ORANGE}{NUM} -STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Rediger den maksimale fjellhøyden på kartet +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Rediger den største karthøyden: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Rediger den største fjellhøyden på kartet STR_CHEAT_CHANGE_DATE :{LTBLUE}Endre dato: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Endre nåværende år STR_CHEAT_SETUP_PROD :{LTBLUE}Tillat endring av produksjonsmengder: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Lås stasjonsvurdering til 100%: {ORANGE}{STRING} # Livery window -STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Firmafarge +STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Selskapsfarge STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Vis generelle fargetemaer STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Vis togfargetemaer STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Vis kjøretøyfargetemaer STR_LIVERY_SHIP_TOOLTIP :{BLACK}Vis skipsfargetemaer STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Vis luftfartøyfargetemaer -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Velg primærfarge for valgte tema. Ctrl+Klikk vil bruke denne fargen på alt -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Velg sekundærfarge for valgte tema. Ctrl+Klikk kommer til å bruke denne fargen for alle temaene. -STR_LIVERY_PANEL_TOOLTIP :{BLACK}Velg fargetemaet du ønsker å endre, eller flere fargetemaer med Ctrl+klikk. Klikk på boksen for å vise bruken av fargetemaene +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Vis farger i toggrupper +STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Vis fargene til kjøretøygrupper +STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Vis fargene til skipsgrupper +STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Vis fargene til luftfartøygrupper +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Velg primærfarge for valgte fargetema. Ctrl+klikk for å bruke denne fargen på alt +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Velg sekundærfarge for valgte tema. Ctrl+klikk for å bruke denne fargen på alt +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Velg fargetemaet du ønsker å endre, eller flere fargetemaer med Ctrl+klikk. Klikk på boksen for å vise bruken av fargetemaet +STR_LIVERY_TRAIN_GROUP_EMPTY :Ingen toggrupper satt opp +STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :Ingen kjøretøygrupper er satt opp +STR_LIVERY_SHIP_GROUP_EMPTY :Ingen skipsgrupper er satt opp +STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Ingen luftfartøygrupper er satt opp ###length 23 -STR_LIVERY_DEFAULT :Standardfarger +STR_LIVERY_DEFAULT :Standarddesign STR_LIVERY_STEAM :Damplokomotiv STR_LIVERY_DIESEL :Diesellokomotiv STR_LIVERY_ELECTRIC :Elektrisk lokomotiv STR_LIVERY_MONORAIL :Monorail-lokomotiv STR_LIVERY_MAGLEV :Maglev-lokomotiv -STR_LIVERY_DMU :Dieseltogsett (DMU) +STR_LIVERY_DMU :Dieselmotorvogn (DMU) STR_LIVERY_EMU :Elektrisk togsett (EMU) STR_LIVERY_PASSENGER_WAGON_STEAM :Passasjervogn (damp) STR_LIVERY_PASSENGER_WAGON_DIESEL :Passasjervogn (diesel) @@ -2113,7 +2318,7 @@ STR_FACE_LOAD :{BLACK}Last inn STR_FACE_LOAD_TOOLTIP :{BLACK}Last inn favorittansikt STR_FACE_LOAD_DONE :{WHITE}Ditt favorittansikt har blitt lastet inn fra OpenTTDs konfigurasjonsfil STR_FACE_FACECODE :{BLACK}Ansiktsnummer -STR_FACE_FACECODE_TOOLTIP :{BLACK}Vis og/eller endre ansiktsnummeret til firmaets leder +STR_FACE_FACECODE_TOOLTIP :{BLACK}Vis og/eller endre ansiktsnummeret til selskapets president STR_FACE_FACECODE_CAPTION :{WHITE}Vis og/eller endre lederens ansiktsnummer STR_FACE_FACECODE_SET :{WHITE}Ny ansiktsnummerkode har blitt satt STR_FACE_FACECODE_ERR :{WHITE}Kunne ikke endre lederens ansiktsnummer - må være et heltall mellom 0 og 4294967295! @@ -2166,12 +2371,15 @@ STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Navn STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Navn på spillet STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Klienter -STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klienter på nett / maks antall klienter{}Firmaer på nett / maks antall firmaer +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klienter på nett / største antall klienter{}Selskaper på nett / største antall selskap STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kartstørrelse STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kartstørrelsen på spillet{}Klikk for å sortere på område STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dato STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Gjeldende dato +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}t {NUM}m +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Spilletid +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Tid spilt mens{}spillet ikke var pauset STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Språk, tjenerversjon, osv. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klikk på et spill i listen for å velge det @@ -2187,11 +2395,12 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Tjenera STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Invitasjonskode: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Startdato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Nettverksdato: {WHITE}{DATE_SHORT} -STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Spillskript: {WHITE}{STRING} (v{NUM}) +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Spilletid: {WHITE}{NUM}t {NUM}m +STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Game Script: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Passordbeskyttet! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}TJENEREN ER FRAKOBLET STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}TJENEREN ER FULL -STR_NETWORK_SERVER_LIST_SERVER_BANNED :{SILVER}DU ER BANNET FRA SERVEREN +STR_NETWORK_SERVER_LIST_SERVER_BANNED :{SILVER}DU ER BANNET FRA TJENEREN STR_NETWORK_SERVER_LIST_SERVER_TOO_OLD :{SILVER}SERVEREN FOR GAMMEL STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}DU HAR EN ANNEN VERSJON ENN TJENEREN STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}DU HAR EN ANNEN NEWGRF ENN TJENEREN @@ -2201,16 +2410,16 @@ STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Oppdater STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Oppdater tjenerinfo STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :Søk på internett -STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Søk på internett for offentlige servere +STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Søk på Internett for offentlige tjenere STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Søk LAN -STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Søk lokalt nettverk for servere +STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Søk lokalt nettverk for tjenere STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Legg til tjener -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Legger til en tjener til listen. Dette kan enten være en serveradresse eller en invitasjonskode +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Legger til en tjener til listen. Dette kan enten være en tjeneradresse eller en invitasjonskode STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Start tjener STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start en egen tjener STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Skriv inn ditt navn -STR_NETWORK_SERVER_LIST_ENTER_SERVER_ADDRESS :{BLACK}Tast inn serveradresse og invitasjonskode +STR_NETWORK_SERVER_LIST_ENTER_SERVER_ADDRESS :{BLACK}Tast inn tjeneradresse og invitasjonskode # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start et nytt flerspillerspill @@ -2220,15 +2429,14 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Spillnav STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Sett passord STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskytt ditt spill med et passord hvis du ikke vil at hvem som helst skal bli med på det -STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Synlighet -STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Om andre mennesker kan se serveren din i den offentlige oppføringen +STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Synlighet: +STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Om andre mennesker kan se tjeneren din i den offentlige oppføringen STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" er} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks antall klienter: -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS.small :dra og slipp -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Velg maks antall klienter. Ikke alle plassene trenger å bli tatt -STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} firma{P "" er} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks antall firmaer: -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Begrens tjeneren til et bestemt antall firmaer +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Største antall klienter: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Velg største antall klienter. Ikke alle plassene trenger å bli tatt +STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} selskap{P "" er} +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Største antall selskap: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Begrens tjeneren til et bestemt antall selskap STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Skriv inn et navn for nettverksspillet @@ -2247,12 +2455,11 @@ STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) La STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Behandler data... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrerer... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Henter spillinformasjon... -STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Henter firmainformasjon... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Henter selskapsinformasjon... STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Koble fra STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tjeneren er beskyttet. Skriv inn passord -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firmaet er beskyttet. Skriv inn passord # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Påloggede spillere @@ -2262,31 +2469,34 @@ STR_NETWORK_COMPANY_LIST_SPECTATE :Se STR_NETWORK_CLIENT_LIST_CAPTION :{WHITE}Påloggede Spillere STR_NETWORK_CLIENT_LIST_SERVER :{BLACK}Server STR_NETWORK_CLIENT_LIST_SERVER_NAME :{BLACK}Navn -STR_NETWORK_CLIENT_LIST_SERVER_NAME_TOOLTIP :{BLACK}Navnet på serveren du spiller på -STR_NETWORK_CLIENT_LIST_SERVER_NAME_EDIT_TOOLTIP :{BLACK}Rediger navnet på serveren +STR_NETWORK_CLIENT_LIST_SERVER_NAME_TOOLTIP :{BLACK}Navnet på tjeneren du spiller på +STR_NETWORK_CLIENT_LIST_SERVER_NAME_EDIT_TOOLTIP :{BLACK}Rediger navnet på tjeneren STR_NETWORK_CLIENT_LIST_SERVER_NAME_QUERY_CAPTION :Servernavn STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY :{BLACK}Synlighet -STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY_TOOLTIP :{BLACK}Om andre mennesker kan se serveren din i den offentlige oppføringen +STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY_TOOLTIP :{BLACK}Om andre mennesker kan se tjeneren din i den offentlige oppføringen STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE :{BLACK}Invitasjonskode -STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE_TOOLTIP :{BLACK}Invitasjonskode andre spillere kan bruke for å koble til denne serveren +STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE_TOOLTIP :{BLACK}Invitasjonskode andre spillere kan bruke for å koble til denne tjeneren STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE :{BLACK}Tilkoblingstype -STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP :{BLACK}Hvorvidt og hvordan serveren din kan nås av andre +STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP :{BLACK}Hvorvidt og hvordan tjeneren din kan nås av andre STR_NETWORK_CLIENT_LIST_PLAYER :{BLACK}Spiller STR_NETWORK_CLIENT_LIST_PLAYER_NAME :{BLACK}Navn STR_NETWORK_CLIENT_LIST_PLAYER_NAME_TOOLTIP :{BLACK}Ditt spillernavn STR_NETWORK_CLIENT_LIST_PLAYER_NAME_EDIT_TOOLTIP :{BLACK}Rediger ditt spillernavn STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Ditt spillernavn STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Administrative handlinger å utføre for denne klienten -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Administrative tiltak å utføre for dette firmaet -STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Bli med i dette firmaet +STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Administrative tiltak å utføre for dette selskapet +STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Bli med i dette selskapet +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Autoriser denne klienten for å bli med dette selskapet STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Send en melding til denne spilleren -STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Send en melding til alle spillerne i dette firmaet +STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Send en melding til alle spillerne i dette selskapet STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Send en melding til alle tilskuerne STR_NETWORK_CLIENT_LIST_SPECTATORS :Tilskuere -STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(Nytt firma) -STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Opprett et nytt firma og bli med i det +STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(Nytt selskap) +STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Opprett et nytt selskap og bli med i det STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}Dette er deg STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Dette er verten for spillet +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} klient{P "" er} / {NUM}{NUM} selskap{P et er} +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}Antall tilkoblede klienter for øyeblikket, antall selskaper og største antall selskaper tillatt av administrator # Matches ConnectionType ###length 5 @@ -2299,36 +2509,30 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via vide STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Spark STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Utesteng STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Slett -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Låse opp passord STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Administratorhandling STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Er du sikker på at du vil utestenge spiller '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Er du sikker på at du vil utestenge spiller '{STRING}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Er du sikker på at du vil slette firmaet '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Er du sikker på at du vil tilbakestille passordet til firma '{COMPANY}'? +STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Er du sikker på at du vil slette selskapet '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Vil du bruke videresending? -STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Kunne ikke opprette en kobling mellom deg og serveren '{STRING}'.{}Vil du videresende denne økten via '{STRING}'? +STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Kunne ikke opprette en kobling mellom deg og tjeneren '{STRING}'.{}Vil du videresende denne økten via '{STRING}'? STR_NETWORK_ASK_RELAY_NO :{BLACK}Nei STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Ja, denne STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Ja, ikke spør igjen +STR_NETWORK_ASK_SURVEY_CAPTION :Delta i automatisert undersøkelse? +STR_NETWORK_ASK_SURVEY_TEXT :Ønsker du å delta i den automatiserte undersøkelsen?{}OpenTTD vil overføre en undersøkelse når et spill forlates.{}Du kan endre dette når som helst under "Spillinnstillinger". +STR_NETWORK_ASK_SURVEY_PREVIEW :Forhåndsvis undersøkelsesresultater +STR_NETWORK_ASK_SURVEY_LINK :Om undersøkelser og personvern +STR_NETWORK_ASK_SURVEY_NO :Nei +STR_NETWORK_ASK_SURVEY_YES :Ja STR_NETWORK_SPECTATORS :Tilskuere -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ikke lagre passordet -STR_COMPANY_PASSWORD_OK :{BLACK}Gi firmaet det nye passordet -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Firmapassord -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standard firmapassord -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Bruk dette passordet som standard for nye firmaer - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Bli med -STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Bli med og spill som dette firmaet -STR_COMPANY_VIEW_PASSWORD :{BLACK}Passord -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Passordbeskytt firmaet ditt for å forhindre uautoriserte brukere fra å bli med -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Velg firmapassord +STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Bli med og spill som dette selskapet # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send @@ -2346,23 +2550,24 @@ STR_NETWORK_CHAT_OSKTITLE :{BLACK}Skriv in # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Ingen nettverksadapter funnet -STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Tilkoblingen til serveren ble tidsavbrutt eller avslått +STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Tilkoblingen til tjeneren ble tidsavbrutt eller avslått STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Kunne ikke koble til pga. ulike versjoner av NewGRF -STR_NETWORK_ERROR_DESYNC :{WHITE}Synkronisering av nettverksspill feilet. +STR_NETWORK_ERROR_DESYNC :{WHITE}Synkronisering av nettverksspill mislyktes STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Mistet tilkobling til nettverksspill STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Kunne ikke laste inn lagret spill STR_NETWORK_ERROR_SERVER_START :{WHITE}Kunne ikke starte tjeneren STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Forbindelsen ble brutt pga. en protokollfeil STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Spillernavnet ditt er ikke angitt. Navnet kan angis øverst i flerspillervinduet -STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Du har ikke valgt servernavn. Navnet kan velges øverst i flerspillervinduet +STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Du har ikke valgt tjenernavn. Navnet kan velges øverst i flerspillervinduet STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Klientversjonen er ikke den samme som tjenerversjonen STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Feil passord +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Du står ikke på listen over tillatte klienter STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Tjeneren er full STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Du er bannlyst fra denne tjeneren STR_NETWORK_ERROR_KICKED :{WHITE}Du ble kastet ut av spillet STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Grunn: {STRING} STR_NETWORK_ERROR_CHEATER :{WHITE}Juksing er ikke tillatt på denne tjeneren -STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Du sendte for mange kommandoer til serveren +STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Du sendte for mange kommandoer til tjeneren STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Du brukte for lang tid på å skrive inn passordet STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Din datamaskin er ikke rask nok til å holde følge med tjeneren STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Din datamaskin brukte for lang tid på å laste ned kartet @@ -2370,9 +2575,9 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Din data STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Spillernavnet ditt er ugyldig STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mulig tap av tilkobling -STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE} Siste {NUM} sekund{P "" er} har ingen data ankommet fra serveren +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE} Siste {NUM} sekund{P "" er} har ingen data ankommet fra tjeneren -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :generell feil STR_NETWORK_ERROR_CLIENT_DESYNC :synkroniseringsfeil STR_NETWORK_ERROR_CLIENT_SAVEGAME :kunne ikke åpne kartet @@ -2384,7 +2589,8 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :mottok ugyldig STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :feil versjon STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :navnet er allerede i bruk STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :feil passord -STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :feil firma i DoCommand +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :ikke på tillattliste +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :feil selskap i DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :kastet ut av tjeneren STR_NETWORK_ERROR_CLIENT_CHEATER :prøvde å jukse STR_NETWORK_ERROR_CLIENT_SERVER_FULL :tjeneren er full @@ -2409,26 +2615,26 @@ STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spillet fortset STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :ikke nok spillere STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :kobler til klienter STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spillskript +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :Game Script STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :venter for koblingsgraf oppdatering STR_NETWORK_MESSAGE_CLIENT_LEAVING :forlater STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} har blitt med i spillet -STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} har blitt med i spillet (Klient #{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} har blitt med i firma nr. {2:NUM} +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {0:STRING} har blitt med i spillet (Klient nr. {2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {0:STRING} har blitt med i selskap nr. {2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} har blitt med som tilskuer -STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} har startet et nytt firma (nr. {2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} har forlatt spillet ({2:STRING}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {0:STRING} har startet et nytt selskap (nr. {2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {0:STRING} har forlatt spillet ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} har endret navnet sitt til {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ga {2:CURRENCY_LONG} til ditt firma{1:STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {0:STRING} ga {2:CURRENCY_LONG} til {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Tjeneren avsluttet spillet STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tjeneren starter på nytt...{}Vennligst vent... STR_NETWORK_MESSAGE_KICKED :*** {STRING} ble kastet ut. Grunn: ({STRING}) STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}Serverregistrering mislykket -STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}En annen server med samme invitasjons kode finnes. Bytter til "lokal" modus. +STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}En annen tjener med samme invitasjonskode finnes. Bytter til "lokal" modus. STR_NETWORK_ERROR_COORDINATOR_ISOLATED :{WHITE}Serveren din tillater ikke eksterne tilkoblinger -STR_NETWORK_ERROR_COORDINATOR_ISOLATED_DETAIL :{WHITE}Andre spillere vil ikke kunne koble seg til din server +STR_NETWORK_ERROR_COORDINATOR_ISOLATED_DETAIL :{WHITE}Andre spillere vil ikke kunne koble seg til din tjener # Content downloading window STR_CONTENT_TITLE :{WHITE}Laster ned innhold @@ -2448,7 +2654,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK} Søk et STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Du forlater OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE} Vilkårene for nedlasting av innhold fra eksterne nettsider kan variere.{}Du må henvende deg til de eksterne nettstedene for instruksjoner om hvordan du installerer innholdet i OpenTTD.{}Vil du fortsette? STR_CONTENT_FILTER_TITLE :{BLACK}Merke/Navnefilter: -STR_CONTENT_OPEN_URL :{BLACK}Besøk hjemmeside +STR_CONTENT_OPEN_URL :{BLACK}Nettside STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Besøk hjemmesiden for dette innholdet STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Last ned STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Start nedlastningen av det merkede innholdet @@ -2478,14 +2684,14 @@ STR_CONTENT_NO_ZLIB_SUB :{WHITE}...{NBSP # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Grafikk STR_CONTENT_TYPE_NEWGRF :NewGRF -STR_CONTENT_TYPE_AI :AI -STR_CONTENT_TYPE_AI_LIBRARY :AI-bibliotek +STR_CONTENT_TYPE_AI :KI +STR_CONTENT_TYPE_AI_LIBRARY :KI-bibliotek STR_CONTENT_TYPE_SCENARIO :Scenario STR_CONTENT_TYPE_HEIGHTMAP :Høydekart STR_CONTENT_TYPE_BASE_SOUNDS :Lyder STR_CONTENT_TYPE_BASE_MUSIC :Musikk -STR_CONTENT_TYPE_GAME_SCRIPT :Spillskript -STR_CONTENT_TYPE_GS_LIBRARY :Spillskriptbibliotek +STR_CONTENT_TYPE_GAME_SCRIPT :Game Script +STR_CONTENT_TYPE_GS_LIBRARY :Game Script-bibliotek # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Laster ned innhold... @@ -2505,7 +2711,7 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ja, last ned grafikken STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nei, avslutt OpenTTD -STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Nedlasting feilet +STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Nedlasting mislyktes STR_MISSING_GRAPHICS_ERROR :{BLACK}Kunne ikke laste ned grafikkpakken.{}Vennligst last den ned manuelt. STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Avslutt OpenTTD @@ -2515,10 +2721,11 @@ STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Gjennoms STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Gjennomsiktige trær. Ctrl+klikk for å låse STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Gjennomsiktige hus. Ctrl+klikk for å låse STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Gjennomsiktige industrier. Ctrl+klikk for å låse -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Gjennomsiktige stasjoner, garasjer, staller, hangarer, dokker og kontrollpunkt. Ctrl+klikk for å låse +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Gjennomsiktige stasjoner, garasjer, togstaller, hangarer, dokker og veipunkt. Ctrl+klikk for å låse STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Gjennomsiktige broer. Ctrl+klikk for å låse STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Gjennomsiktige bygg som fyrtårn og antenner. Ctrl+klikk for å låse STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Gjennomsiktige kontaktledninger. Ctrl+klikk for å låse +STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Gjennomsiktig tekst for lasting, kostnad og inntekt. Ctrl+klikk for å låse STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gjør objekter usynlige i stedet for gjennomsiktige # Linkgraph legend window @@ -2534,6 +2741,10 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overbelastet # Linkgraph tooltip +STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}{CARGO_LONG} å transportere per måned fra {STATION} til {STATION} ({COMMA}% av kapasitet){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG} å transportere per minutt fra {STATION} til {STATION} ({COMMA}% av kapasitet){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} å transportere tilbake ({COMMA}% av kapasitet) +STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Gjennomsnittlig reisetid: {UNITS_DAYS_OR_SECONDS} # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Markering av dekningsområde @@ -2543,13 +2754,15 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Ikke mar STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Marker dekningsområdet til den foreslåtte plasseringen STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Godtar: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Tilbyr: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Vedlikeholdskostnader: {GOLD}{CURRENCY_SHORT}/år +STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Vedlikeholdskostnader: {GOLD}{CURRENCY_SHORT}/periode # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Slå sammen stasjoner STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bygg separat stasjon -STR_JOIN_WAYPOINT_CAPTION :{WHITE}Slå sammen kontrollpunkter -STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg separat kontrollpunkt +STR_JOIN_WAYPOINT_CAPTION :{WHITE}Slå sammen veipunkter +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg et separat veipunkt # Generic toolbar STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Deaktivert da det ikke er noen kjøretøy tilgjengelig for denne infrastrukturen @@ -2560,16 +2773,16 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Bygg elektrisk STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Bygg monorail STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Bygg maglev -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jernbanespor. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bygg jernbane ved hjelp av autobanemodusen. Ctrl veksler mellom å bygge/fjerne. Shift slår av og på kostnadsestimat -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bygg togstall (trengs for å kjøpe og vedlikeholde tog). Shift slår av/på kostnadsestimat -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Gjør om jernbane til kontrollpunkt. Ctrl slår sammen kontrollpunkt. Shift slår av/på kostnadsestimat -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bygg jernbanestasjon. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bygg jernbanesignaler. Ctrl veksler mellom vingesignaler/lyssignaler{}Hold og dra for å bygge signaler langs en rett jernbanestrekning. Ctrl bygger signaler til det neste krysset eller signalet. Ctrl+klikk viser/skjuler signalvalgsvinduet. Shift bytter mellom bygging/vising av kostnadsestimat -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bygg jernbanebro. Shift slår av/på kostnadsestimat -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Bygg jernbanetunnel. Shift slår av/på kostnadsestimat -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Veksle mellom bygging/fjerning av jernbanespor, signaler, kontrollpunkt og stasjoner. Hold inne Ctrl for i tillegg å fjerne jernbanespor fra kontrollpunkt og stasjoner -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Konverter/oppgrader jernbanetypen. Shift slår av/på kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jernbanespor. Ctrl+klikk for å fjerne vei. Trykk også Shift for å kun vise kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bygg jernbanespor ved hjelp av autobanemodusen. Ctrl+klikk for å fjerne jernbanespor. Trykk også Shift for å kun vise kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bygg togstall (for å kjøpe og vedlikeholde tog). Trykk også Shift for å kun vise kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Bygg veipunkt på jernbane. Ctrl+klikk for å velge et annet veipunkt å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bygg jernbanestasjon. Ctrl+klikk for å velge en annen stasjon å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bygg jernbanesignaler. Ctrl+klikk for å bygge den alternative signaltypen{}Klikk+dra for å bygge signaler langs en rett jernbanestrekning med valgt avstand. Ctrl+klikk+dra for å bygge signaler til det neste krysset eller signalet. Trykk også Shift for kun å vise kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bygg jernbanebro. Trykk også Shift for å kun vise kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Bygg jernbanetunnel. Trykk også Shift for å kun vise kostnadsestimat +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Veksle mellom bygging/fjerning av jernbanespor, signaler, veipunkt og stasjoner. Ctrl+klikk for i tillegg å fjerne jernbanespor fra veipunkt og stasjoner +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Konverter/oppgrader type jernbane. Trykk også Shift for å kun vise kostnadsestimat STR_RAIL_NAME_RAILROAD :Jernbane STR_RAIL_NAME_ELRAIL :Elektrisk jernbane @@ -2581,8 +2794,7 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Togstall STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Velg togstallens retning # Rail waypoint construction window -STR_WAYPOINT_CAPTION :{WHITE}Kontrollpunkt -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Velg type kontrollpunkt +STR_WAYPOINT_CAPTION :{WHITE}Veipunkt # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Velg jernbanestasjonstype @@ -2590,33 +2802,61 @@ STR_STATION_BUILD_ORIENTATION :{BLACK}Retning STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Velg jernbanestasjonens retning STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Antall spor STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Velg antall spor jernbanestasjonen skal ha -STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Plattformlengde +STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Perronglengde STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Velg hvor lang jernbanestasjonen skal være STR_STATION_BUILD_DRAG_DROP :{BLACK}Dra og slipp STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bygg en stasjon med dra og slipp -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Velg en stasjonstype å vise -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Velg stasjonstypen du vil bygge +STR_PICKER_MODE_ALL :Alle +STR_PICKER_MODE_ALL_TOOLTIP :Vis elementer av alle typer +STR_PICKER_MODE_USED :Brukt +STR_PICKER_MODE_USED_TOOLTIP :Vis bare eksisterende elementer +STR_PICKER_MODE_SAVED :Lagret +STR_PICKER_MODE_SAVED_TOOLTIP :Vis bare lagrede elementer -STR_STATION_CLASS_DFLT :Standard stasjon -STR_STATION_CLASS_WAYP :Kontrollpunkter +STR_PICKER_STATION_CLASS_TOOLTIP :Velg stasjonsklassen du vil vise +STR_PICKER_STATION_TYPE_TOOLTIP :Velg type stasjon å bygge. Ctrl+klikk for å legge til eller fjerne lagrede elementer +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Velg veipunktklassen du vil vise +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Velg type veipunkt å bygge. Ctrl+klikk for å legge til eller fjerne lagrede elementer +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Velg type busterminal du vil vise +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Velg type bussterminal å bygge. Ctrl+klikk for å legge til eller fjerne lagrede elementer +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Velg en type godsterminal du vil vise +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Velg type godsterminal å bygge. Ctrl+klikk for å legge til eller fjerne lagrede elementer +STR_PICKER_OBJECT_CLASS_TOOLTIP :Velg objektklassen du vil vise +STR_PICKER_OBJECT_TYPE_TOOLTIP :Velg type objekt å bygge. Ctrl+klikk for å legge til eller fjerne lagrede elementer. Ctrl+klikk+dra for å velge areal diagonalt. Trykk også Shift for å kun vise kostnadsestimat +STR_PICKER_HOUSE_CLASS_TOOLTIP :Velg byområdet du vil vise +STR_PICKER_HOUSE_TYPE_TOOLTIP :Velg type hus å bygge. Ctrl+klikk for å legge til eller fjerne lagrede elementer + +STR_HOUSE_PICKER_CAPTION :Husvalg + +STR_HOUSE_PICKER_CLASS_ZONE1 :Kant +STR_HOUSE_PICKER_CLASS_ZONE2 :Ytterkant +STR_HOUSE_PICKER_CLASS_ZONE3 :Ytre forsteder +STR_HOUSE_PICKER_CLASS_ZONE4 :Indre forsteder +STR_HOUSE_PICKER_CLASS_ZONE5 :Bysentrum + +STR_STATION_CLASS_DFLT :Standard +STR_STATION_CLASS_DFLT_STATION :Standard stasjon +STR_STATION_CLASS_DFLT_ROADSTOP :Standard veistans +STR_STATION_CLASS_WAYP :Veipunkter +STR_STATION_CLASS_WAYP_WAYPOINT :Standard veipunkt # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalvalg STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Veksle mellom visning av avanserte signaltyper STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blokksignal (vingesignal){}Dette er den enkleste typen av signaler som tillater kun ett tog å kjøre om gangen. STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Inngangssignal (vingesignal){}Grønt så lenge det er ett eller flere grønne utgangssignal fra etterfølgende sporseksjon. Ellers rødt. -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Utgangssignal (vingesignal){}Oppfører seg på samme måte som et blokksignal, men er nødvendig for å utløse riktig farge på inngangs- og kombinasjons-forsignaler. +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Utgangssignal (vingesignal){}Oppfører seg på samme måte som et blokksignal, men er nødvendig for å utløse riktig farge på inngangs- og kombinasjonsforsignaler. STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (vingesignal){}Kombinasjonssignalet fungerer både som inn- og utgangssignal. Dette gjør at du kan bygge store "grener" med forsignaler. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Avansert signal (vingesignal){}Et avansert signal tillater flere tog å kjøre samtidig på samme signalblokk, dersom togene kan reservere en rute til et trygt stoppested. Vanlige avanserte signaler kan passeres bakfra. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Enveis avansert signal (vingesignal){}Et avansert signal tillater flere tog å kjøre samtidig på samme signalblokk, dersom togene kan reservere en rute til et trygt stoppested. Enveis avanserte signaler kan ikke passeres bakfra STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blokksignal (lyssignal){}Dette er den enkleste typen av signaler som tillater kun ett tog å kjøre om gangen. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Inngangssignal (lyssignal){}Grønt så lenge det er ett eller flere grønne utgangssignal fra etterfølgende sporseksjon. Ellers rødt. -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Utgangssignal (lyssignal){}Oppfører seg på samme måte som et blokksignal, men er nødvendig for å utløse riktig farge på inngangs- og kombinasjons-forsignaler. +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Utgangssignal (lyssignal){}Oppfører seg på samme måte som et blokksignal, men er nødvendig for å utløse riktig farge på inngangs- og kombinasjonsforsignaler. STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (lyssignal){}Kombinasjonssignalet fungerer både som inn- og utgangssignal. Dette gjør at du kan bygge store "grener" med forsignaler. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Avanserte signal (lyssignal){}Et avansert signal tillater flere tog å kjøre samtidig på samme signalblokk, dersom togene kan reservere en rute til et trygt stoppested. Vanlige avanserte signaler kan passeres bakfra. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Enveis avansert signal (lyssignal){}Et avansert signal tillater flere tog å kjøre samtidig på samme signalblokk, dersom togene kan reservere en rute til et trygt stoppested . Enveis avanserte signaler kan ikke passeres bakfra. -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Konverter signal{}Konverterer signaler til den valgte signaltypen. Ctrl+klikk vil endre eksisterende variant. Shift+klikk viser kostnadsestimat +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Konverter signal{}Klikk på et eksisterende signal for å konvertere det til valgt type og variant. Ctrl+klikk for å endre eksisterende variant. Shift+klikk viser kostnadsestimat STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Signaltetthet ved dra-og-slipp STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Senk signalavstand ved dra-og-slipp STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Øk signalavstand ved dra-og-slipp @@ -2625,38 +2865,44 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Øk sign STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Velg jernbanebrotype STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Velg veibrotype STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brovalg - klikk på broen du vil ha for å bygge den. +STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY} +STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_BRIDGE_NAME_SUSPENSION_STEEL :Hengebro, stål STR_BRIDGE_NAME_GIRDER_STEEL :Bjelker, stål -STR_BRIDGE_NAME_CANTILEVER_STEEL :Frittbærende, stål +STR_BRIDGE_NAME_CANTILEVER_STEEL :Fritt frambygg-bro, stål STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hengebro, betong STR_BRIDGE_NAME_WOODEN :Tre STR_BRIDGE_NAME_CONCRETE :Betong -STR_BRIDGE_NAME_TUBULAR_STEEL :Hvelv, stål -STR_BRIDGE_TUBULAR_SILICON :Hvelv, Silisium +STR_BRIDGE_NAME_TUBULAR_STEEL :Rør, stål +STR_BRIDGE_TUBULAR_SILICON :Rør, Silisium # Road construction toolbar -STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Bygg vei +STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Bygge vei STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Bygg trikkespor -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Bygg vei. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Bygg trikkestasjon. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Bygg veiseksjon ved bruk av autoveimodusen. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Bygg trikkespor ved bruk av autotrikkespormodusen. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bygg garasje (nødvendig for kjøp og vedlikehold av kjøretøy). Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bygg trikkestall (nødvendig for kjøp og vedlikehold av trikker). Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Bygg bussholdeplass. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bygg trikkestasjon for passasjerer. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Bygg lasteterminal. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Bygg trikkestasjon for varer. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Bygg vei. Ctrl+klikk for å fjerne vei. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Bygg trikkespor. Ctrl+klikk for å fjerne trikkespor. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Bygg vei ved bruk av autoveimodusen. Ctrl+klikk for å fjerne vei. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Bygg trikkespor ved bruk av autotrikkespormodusen. Ctrl+klikk for å fjerne trikkespor. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bygg garasje (for kjøp og vedlikehold av kjøretøy). Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bygg trikkestall (for kjøp og vedlikehold av trikker). Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Bygg veipunkt på vei. Ctrl+klikk for å velge et annet veipunkt å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Bygg veipunkt på trikkelinje. Ctrl+klikk for å velge et annet veipunkt å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Bygg bussholdeplass. Ctrl+klikk for å velge en annen holdeplass å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bygg trikkestopp for passasjerer. Ctrl+klikk for å velge en annen stasjon å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Bygg godsterminal. Ctrl+klikk for å velge en annen terminal å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Bygg trikkestopp for varer. Ctrl+klikk for å velge en annen stasjon å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Skru av/på enveiskjørte veier -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Bygg veibro. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Bygg trikkesporbro. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Bygg veitunnel. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Bygg trikkesportunnel. Shift slår av/på kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Bygg veibro. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Bygg trikkesporbro. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Bygg veitunnel. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Bygg trikkesportunnel. Trykk også Shift for å kun vise kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Veksle mellom bygging/fjerning for veibygging -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Veksle mellom bygging/fjerning for trikkesporkonstruksjon -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Konverter/oppgrader veitypen. Shift slår av/på kostnadsestimat -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Konverter/oppgrader trikketypen. Shift slår av/på kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Veksle mellom bygging/fjerning for trikkesporlegging +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Konverter/oppgrader type vei. Trykk også Shift for å kun vise kostnadsestimat +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Konverter/oppgrader type trikk. Trykk også Shift for å kun vise kostnadsestimat STR_ROAD_NAME_ROAD :Vei STR_ROAD_NAME_TRAM :Trikkespor @@ -2670,24 +2916,24 @@ STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Velg tri # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Bussterminalens retning STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Velg bussterminalens retning -STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Lasteterminalens retning -STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Velg lasteterminalens retning -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Passasjertrikkestasjonens retning -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velg passasjertrikkestasjonens retning -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Varetrikkestasjonens retning -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velg varetrikkestasjonens retning +STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Godsterminalens retning +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Velg godsterminalens retning +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Passasjertrikkestoppets retning +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velg passasjertrikkestoppets retning +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Varetrikkestoppets retning +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velg varetrikkestoppets retning # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Bygg vannveier STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Vannveier -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Bygg kanaler. Shift slår av/på kostnadsestimat -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Bygg sluser. Shift slår av/på kostnadsestimat -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Bygg skipsdokk (nødvendig for kjøp og vedlikehold av skip). Shift slår av/på kostnadsestimat -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Bygg havn. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Plasser en bøye, som kan brukes til å danne kontrollpunkter. Shift slår av/på kostnadsestimat -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Bygg akvedukt. Shift slår av/på kostnadsestimat -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Definer vannområde.{}Lag en kanal, unntatt hvis Ctrl holdes nede på havnivå, hvorpå området rundt vil fylles istedenfor -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Plasser elver. Ctrl velger området diagonalt +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Bygg kanaler. Trykk også Shift for å kun vise kostnadsestimat +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Bygg sluser. Trykk også Shift for å kun vise kostnadsestimat +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Bygg skipsdokk (for kjøp og vedlikehold av skip). Trykk også Shift for å kun vise kostnadsestimat +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Bygg havn. Ctrl+klikk for å velge en annen havn å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Plasser en bøye som kan brukes som et veipunkt. Trykk også Shift for å kun vise kostnadsestimat +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Bygg akvedukt. Trykk også Shift for å kun vise kostnadsestimat +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Bygg kanal. Ctrl+klikk på havnivå for å oversvømme med sjøvann i stedet +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Plasser elver. Ctrl+klikk for å velge diagonalt # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Skipsdokkens retning @@ -2698,7 +2944,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Havn # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Flyplasser -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Bygg flyplass. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Bygg flyplass. Ctrl+klikk for å velge en annen flyplass å slå sammen med. Trykk også Shift for å kun vise kostnadsestimat # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Velg flyplasstype @@ -2725,15 +2971,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Støy ge # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landskapsverktøy -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Senk et hjørne av et landområde. Dra for å senke det første valgte hjørnet, og jevne resten til samme høyde. Ctrl velger område diagonalt. Shift slår av/på kostnadsestimat -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Hev et hjørne av et landområde. Dra for å heve det første valgte hjørnet, og jevne resten til samme høyde. Ctrl velger område diagonalt. Shift slår av/på kostnadsestimat -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Jevn ut land til samme høyde som det første valgte hjørnet. Ctrl velger området diagonalt. Shift slår av/på kostnadsestimat -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kjøp land for fremtidig bruk. Shift slår av/på kostnadsestimat +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Senk et hjørne av et landområde. Klikk+dra for å senke det første valgte hjørnet, og planer det valgte arealet til den nye hjørnehøyden. Ctrl+klikk+dra for å velge området diagonalt. Trykk også Shift for kun å vise kostnadsestimat +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Hev et hjørne av et landområde. Ctrl+dra for å heve det første valgte hjørnet, og jevne resten av området til samme høyde. Ctrl+klikk+dra for å velge området diagonalt. Trykk også Shift for å kun vise kostnadsestimat +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Jevn ut et landareal til samme høyde som det første valgte hjørnet. Ctrl+klikk+dra for å velge arealet diagonalt. Trykk også Shift for å kun vise kostnadsestimat +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kjøp opp land for fremtidig bruk. Ctrl+klikk+dra for å velge arealet diagonalt. Trykk også Shift for å kun vise kostnadsestimat # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektvalg -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Velg objekt å bygge. Shift slår av/på kostnadsestimat -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Velg objektstype du vil bygge STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Forhåndsvisning av objektet STR_OBJECT_BUILD_SIZE :{BLACK}Størrelse: {GOLD}{NUM} x {NUM} ruter @@ -2744,39 +2988,40 @@ STR_OBJECT_CLASS_TRNS :Radiosendere STR_PLANT_TREE_CAPTION :{WHITE}Trær STR_PLANT_TREE_TOOLTIP :{BLACK}Velg typen tre som skal plantes. Hvis feltet allerede har et tre, vil dette plante flere typer trær uavhengig av den valgte typen STR_TREES_RANDOM_TYPE :{BLACK}Trær av tilfeldig type -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plasser trær av tilfeldig type. Shift slår av/på kostnadsestimat +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plasser trær av tilfeldig type. Ctrl+klikk+dra for å velge areal diagonalt. Trykk også Shift for å kun vise kostnadsestimat STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tilfeldige trær STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plasser trær tilfeldig i landskapet STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant ett og ett tre ved å dra over landskapet. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant ett og ett tre ved å dra over landskapet STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Vokse -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant små skoger ved å dra over landskapet. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant små skoger ved å dra over landskapet STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Skog -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant store skoger ved å dra over landskapet. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant store skoger ved å dra over landskapet # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landskapsgenerering STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Plasser steinete felt i landskapet -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definer ørkenområde.{}Hold inne Ctrl for å fjerne det +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definer ørkenområde.{}Ctrl+klikk for å fjerne ørkenområde STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Øk størrelse av landareal for heving/senking STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Reduser størrelse av landareal for heving/senking STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Generer tilfeldig landskap STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Opprett et nytt scenario STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Tilbakestill landskap -STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Fjern all spiller-eid eiendom fra kartet +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Fjern all selskapseid eiendom fra kartet STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Tilbakestill landskap -STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Er du sikker på at du vil fjerne all spiller-eid eiendom? +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Er du sikker på at du vil fjerne all selskapseid eiendom? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Bygenerering STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Ny by -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Grunnlegg en ny by. Shift+klikk viser kun beregnet kostnad +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Grunnlegg ny by. Trykk også Shift for å kun vise kostnadsestimat STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Tilfeldig by STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Grunnlegg en by på et tilfeldig sted STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Mange tilfeldige byer STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Dekk kartet med tilfeldig plasserte byer STR_FOUND_TOWN_EXPAND_ALL_TOWNS :{BLACK}Vis alle byer +STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}La alle byer vokse litt STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Navn på by: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Skriv inn navn på by @@ -2802,14 +3047,14 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 rute STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Tilfeldig # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Finansier ny industri +STR_FUND_INDUSTRY_CAPTION :{WHITE}Industrifinansiering STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Velg passende industri fra listen STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Mange tilfeldige industrier STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Dekk kartet med tilfeldig plasserte industrier STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Opprett tilfeldig industrier STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Er du sikker på at du vil lage mange tilfeldige industrier? STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Koster: {YELLOW}{CURRENCY_LONG} -STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospekt +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Utvikle STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bygg STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finansier STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Fjern alle industrier @@ -2818,14 +3063,14 @@ STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Fjern al STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Er du sikker på at du vil fjerne alle industriene? # Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrikjede for {STRING} -STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Industrikjede for {STRING} +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrikjede - {STRING} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Varekjede - {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Produserende industrier STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Aksepterende industrier STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Hus STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klikk på industrien for å se dens leverandører og kunder STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klikk på varen for å se dens leverandører og kunder -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Vis kjede +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Industrikjede STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Vis vareleverings- og vareaksepterende industrier STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link til oversiktskart STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Velg de viste industriene på oversiktskartet i tillegg @@ -2836,7 +3081,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Velg ind # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informasjon om landområde -STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Sentrer hovedvinduet på lokasjon. Ctrl+Klikk åpner et nytt tilleggsvindu på lokasjonen +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Sentrer hovedvinduet på lokasjon. Ctrl+Klikk for å åpne et nytt tilleggsvindu på rutelokasjonen STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Ryddingskostnad: {LTBLUE}Ikke tilgjengelig STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Ryddingskostnad: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Utbytte når ryddet: {LTBLUE}{CURRENCY_LONG} @@ -2845,10 +3090,11 @@ STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Eier: {L STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Eier av vei: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eier av trikkespor: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eier av jernbanespor: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bystyret: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokale myndigheter: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Bygget: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Ruteindex: {LTBLUE}{NUM} ({HEX}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Bygget/renovert: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasjonstype: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasjonstype: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Flyplasstype: {LTBLUE}{STRING} @@ -2870,7 +3116,7 @@ STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Ulendt terreng STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Bart land STR_LAI_CLEAR_DESCRIPTION_GRASS :Gress STR_LAI_CLEAR_DESCRIPTION_FIELDS :Jorder -STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snødekket land +STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snødekt land STR_LAI_CLEAR_DESCRIPTION_DESERT :Ørken STR_LAI_RAIL_DESCRIPTION_TRACK :Jernbanespor @@ -2895,13 +3141,13 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Jernbanespor me STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Jernbanespor med kombinasjon- og avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Jernbanespor med kombinasjon- og enveis avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Jernbanespor med avanserte- og enveis avanserte signaler -STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Jernbane-togstall +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Jernbanetogstall STR_LAI_ROAD_DESCRIPTION_ROAD :Vei STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Vei med gatelykter STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Aveny STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Garasje -STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Jernbaneovergang +STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Planovergang STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Trikkespor # Houses come directly from their building names @@ -2914,11 +3160,11 @@ STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusplanter STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :{G=masculine}Jernbanestasjon STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :{G=masculine}Hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :{G=feminine}Lufthavn -STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :{G=masculine}Lasteterminal +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :{G=masculine}Godsterminal STR_LAI_STATION_DESCRIPTION_BUS_STATION :{G=masculine}Bussterminal STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :{G=feminine}Havn STR_LAI_STATION_DESCRIPTION_BUOY :{G=feminine}Bøye -STR_LAI_STATION_DESCRIPTION_WAYPOINT :{G=neuter}Kontrollpunkt +STR_LAI_STATION_DESCRIPTION_WAYPOINT :{G=neuter}Veipunkt STR_LAI_WATER_DESCRIPTION_WATER :Vann STR_LAI_WATER_DESCRIPTION_CANAL :Kanal @@ -2934,26 +3180,26 @@ STR_LAI_TUNNEL_DESCRIPTION_ROAD :Veitunnel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Hengebro av stål (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Bjelkebro av stål (jernbane) -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Frittbærende bro av stål (jernbane) +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Fritt frambygg-bro av stål (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Hengebro av armert betong (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Trebro (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betongbro (jernbane) -STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Hvelvbro (jernbane) +STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Rørbro (jernbane) STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Hengebro av stål (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Bjelkebro av stål (vei) -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Frittbærende bro av stål (vei) +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Fritt frambygg-bro av stål (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Hengebro av armert betong (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Trebro (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betongbro (vei) -STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Hvelvbro (vei) +STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Rørbro (vei) STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvedukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Radiosender STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Fyrtårn -STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Firmaets hovedkontor -STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firma-eid landområde +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Selskapets hovedkontor +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Selskapseid landområde # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD @@ -2962,14 +3208,14 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-{STRING} OpenTTD-teamet # Framerate display window -STR_FRAMERATE_CAPTION :{WHITE}Bildehastighet +STR_FRAMERATE_CAPTION :{WHITE}Oppdateringsrate STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Simuleringshastighet: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Antall spill-tikk per sekund. -STR_FRAMERATE_RATE_BLITTER :{BLACK}Bildehastighet: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Antall bilder tegnet per sekund. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Antall spilltikk simulert per sekund +STR_FRAMERATE_RATE_BLITTER :{BLACK}Oppdateringsrate: {STRING} +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Antall bilder tegnet per sekund STR_FRAMERATE_SPEED_FACTOR :{BLACK}Gjeldende spillhastighetsfaktor: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hvor raskt spillet kjører i forhold til forventet hastighet ved normal simulering. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hvor raskt spillet kjører, sammenliknet med forventet hastighet ved normal simuleringsrate STR_FRAMERATE_CURRENT :{WHITE}Gjeldende STR_FRAMERATE_AVERAGE :{WHITE}Middels STR_FRAMERATE_MEMORYUSE :{WHITE}Minne @@ -2985,31 +3231,31 @@ STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COM STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s ###length 15 -STR_FRAMERATE_GAMELOOP :{BLACK}Spill-løkke totalt: +STR_FRAMERATE_GAMELOOP :{BLACK}Spillløkke totalt: STR_FRAMERATE_GL_ECONOMY :{BLACK} Godshåndtering: -STR_FRAMERATE_GL_TRAINS :{BLACK} Tog-tikk: -STR_FRAMERATE_GL_ROADVEHS :{BLACK} Veikjøretøy-tikk: -STR_FRAMERATE_GL_SHIPS :{BLACK} Skips-tikk: -STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Fly-tikk: -STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Spillverden-tikk: -STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Koblingsgraf-etterslep: +STR_FRAMERATE_GL_TRAINS :{BLACK} Togtikk: +STR_FRAMERATE_GL_ROADVEHS :{BLACK}Kjøretøytikk: +STR_FRAMERATE_GL_SHIPS :{BLACK} Skipstikk: +STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Flytikk: +STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Verdenstikk: +STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Koblingsgrafetterslep: STR_FRAMERATE_DRAWING :{BLACK}Grafikktegning: STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Synsfelt for spillverden: STR_FRAMERATE_VIDEO :{BLACK}Video output: STR_FRAMERATE_SOUND :{BLACK}Lydmiksing: STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/AI total: STR_FRAMERATE_GAMESCRIPT :{BLACK} Game script: -STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING} +STR_FRAMERATE_AI :{BLACK} KI {NUM} {STRING} ###length 15 -STR_FRAMETIME_CAPTION_GAMELOOP :Spill-løkke +STR_FRAMETIME_CAPTION_GAMELOOP :Spilløkke STR_FRAMETIME_CAPTION_GL_ECONOMY :Godshåndtering STR_FRAMETIME_CAPTION_GL_TRAINS :Tog-tikk -STR_FRAMETIME_CAPTION_GL_ROADVEHS :Veikjøretøy-tikk +STR_FRAMETIME_CAPTION_GL_ROADVEHS :Kjøretøytikk STR_FRAMETIME_CAPTION_GL_SHIPS :Skips-tikk -STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Fly-tikk -STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Verdens-tikk -STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Koblingsgrad-etterslep +STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Flytikk +STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Verdenstikk +STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Koblingsgradetterslep STR_FRAMETIME_CAPTION_DRAWING :Grafikktegning STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Tegning av synsfelt for spillverden STR_FRAMETIME_CAPTION_VIDEO :Video output @@ -3041,7 +3287,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spilldet STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ingen informasjon tilgjengelig. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} -STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtrer streng: +STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtrer: STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Overskriv fil STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Er du sikker på at du vil overskrive eksisterende fil? STR_SAVELOAD_DIRECTORY :{STRING} (Liste) @@ -3055,13 +3301,17 @@ STR_MAPGEN_MAPSIZE :{BLACK}Kartstø STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Velg størrelsen på kartet i ruter. Antall tilgjengelige ruter vil være litt mindre STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antall byer: +STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Velg tettheten av byer, eller et fritt tall STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Bynavn: STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Velg nasjonalitet på bynavn STR_MAPGEN_DATE :{BLACK}Dato: +STR_MAPGEN_DATE_TOOLTIP :{BLACK}Velg startdato STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antall industrier: +STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Velg tettheten av industrier, eller et fritt tall STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Høyeste fjelltopp: -STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Øk den maksimale høyden på den høyeste fjelltoppen på kartet med en -STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Reduser den maksimale høyden på den høyeste fjelltoppen med en +STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Velg den høyeste toppen spillet vil forsøke å opprette, målt i høyde over havnivå +STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Øk den største høyden på den høyeste fjelltoppen på kartet med én +STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Reduser den største høyden på den høyeste fjelltoppen på kartet med én STR_MAPGEN_SNOW_COVERAGE :{BLACK}Snødekning STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Øk snødekningen med ti prosent STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Øk snødekningen med ti prosent @@ -3072,36 +3322,45 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Reduser STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrengtype: STR_MAPGEN_SEA_LEVEL :{BLACK}Havnivå: +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Velg havnivået STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Elver: STR_MAPGEN_SMOOTHNESS :{BLACK}Jevnhet: STR_MAPGEN_VARIETY :{BLACK}Variasjonsspredning: STR_MAPGEN_GENERATE :{WHITE}Generer +STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Opprett verdenen og spill OpenTTD! +STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF-innstillinger +STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Åpne NewGRF-innstillinger +STR_MAPGEN_AI_SETTINGS :{BLACK}KI-innstillinger +STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Åpne KI-innstillinger +STR_MAPGEN_GS_SETTINGS :{BLACK}Game Script-innstillinger +STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Åpne Game Script-innstillinger ###length 21 -STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Engelsk (Original) -STR_MAPGEN_TOWN_NAME_FRENCH :Fransk -STR_MAPGEN_TOWN_NAME_GERMAN :Tysk -STR_MAPGEN_TOWN_NAME_ADDITIONAL_ENGLISH :Engelsk (utvidet) -STR_MAPGEN_TOWN_NAME_LATIN_AMERICAN :Latinamerikansk +STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Engelske (Original) +STR_MAPGEN_TOWN_NAME_FRENCH :Franske +STR_MAPGEN_TOWN_NAME_GERMAN :Tyske +STR_MAPGEN_TOWN_NAME_ADDITIONAL_ENGLISH :Engelske (Utvidet) +STR_MAPGEN_TOWN_NAME_LATIN_AMERICAN :Latinamerikanske STR_MAPGEN_TOWN_NAME_SILLY :Tåpelige -STR_MAPGEN_TOWN_NAME_SWEDISH :Svensk -STR_MAPGEN_TOWN_NAME_DUTCH :Nederlandsk -STR_MAPGEN_TOWN_NAME_FINNISH :Finsk -STR_MAPGEN_TOWN_NAME_POLISH :Polsk -STR_MAPGEN_TOWN_NAME_SLOVAK :Slovakisk -STR_MAPGEN_TOWN_NAME_NORWEGIAN :Norsk -STR_MAPGEN_TOWN_NAME_HUNGARIAN :Ungarsk -STR_MAPGEN_TOWN_NAME_AUSTRIAN :Østeriske -STR_MAPGEN_TOWN_NAME_ROMANIAN :Rumensk -STR_MAPGEN_TOWN_NAME_CZECH :Tsjekkisk -STR_MAPGEN_TOWN_NAME_SWISS :Sveitsisk -STR_MAPGEN_TOWN_NAME_DANISH :Dansk -STR_MAPGEN_TOWN_NAME_TURKISH :Tyrkisk -STR_MAPGEN_TOWN_NAME_ITALIAN :Italiensk -STR_MAPGEN_TOWN_NAME_CATALAN :Katalansk +STR_MAPGEN_TOWN_NAME_SWEDISH :Svenske +STR_MAPGEN_TOWN_NAME_DUTCH :Nederlandske +STR_MAPGEN_TOWN_NAME_FINNISH :Finske +STR_MAPGEN_TOWN_NAME_POLISH :Polske +STR_MAPGEN_TOWN_NAME_SLOVAK :Slovakiske +STR_MAPGEN_TOWN_NAME_NORWEGIAN :Norske +STR_MAPGEN_TOWN_NAME_HUNGARIAN :Ungarske +STR_MAPGEN_TOWN_NAME_AUSTRIAN :Østerrikske +STR_MAPGEN_TOWN_NAME_ROMANIAN :Rumenske +STR_MAPGEN_TOWN_NAME_CZECH :Tsjekkiske +STR_MAPGEN_TOWN_NAME_SWISS :Sveitsiske +STR_MAPGEN_TOWN_NAME_DANISH :Danske +STR_MAPGEN_TOWN_NAME_TURKISH :Tyrkiske +STR_MAPGEN_TOWN_NAME_ITALIAN :Italienske +STR_MAPGEN_TOWN_NAME_CATALAN :Katalanske # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Kartkanter: +STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Velg spillverdenens grenser STR_MAPGEN_NORTHWEST :{BLACK}Nordvest STR_MAPGEN_NORTHEAST :{BLACK}Nordøst STR_MAPGEN_SOUTHEAST :{BLACK}Sørøst @@ -3109,12 +3368,14 @@ STR_MAPGEN_SOUTHWEST :{BLACK}Sørvest STR_MAPGEN_BORDER_FREEFORM :{BLACK}Frihånds STR_MAPGEN_BORDER_WATER :{BLACK}Sjø STR_MAPGEN_BORDER_RANDOM :{BLACK}Tilfeldig -STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Tilfeldig -STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuell +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Tilfeldige +STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuelle STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Høydekartrotering: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Høydekartnavn: +STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}Navnet til høydekartfilen STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Størrelse: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}Størrelsen på høydekartet. For beste resultat, bør hver kant stemme med en tilgjengelig lengde for kartkanter i OpenTTD, som 256, 512, 1024, osv. STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Valgt fjelltopphøyde @@ -3129,6 +3390,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flatt la STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generer et flatt landskap STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Tilfeldig landskap STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Høyde på flatt land: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Velg høyden til landet over havnivå STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Flytt høyden på flatt land ett nivå ned STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Flytt høyden på flatt land ett nivå opp @@ -3142,12 +3404,15 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vil du STR_GENERATION_PROGRESS :{WHITE}{NUM}{NBSP}% ferdig STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Generer en verden +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Landskapsgenerering STR_GENERATION_RIVER_GENERATION :{BLACK}Skap elver -STR_GENERATION_TREE_GENERATION :{BLACK}Tregenerering -STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekt-generering STR_GENERATION_CLEARING_TILES :{BLACK}Generering av ulendt og steinete område +STR_GENERATION_TOWN_GENERATION :{BLACK}Bygenerering +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Industrigenerering +STR_GENERATION_OBJECT_GENERATION :{BLACK}Objektgenerering +STR_GENERATION_TREE_GENERATION :{BLACK}Tregenerering STR_GENERATION_SETTINGUP_GAME :{BLACK}Klargjør spillet -STR_GENERATION_PREPARING_TILELOOP :{BLACK}Kjører rute-løkke +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Kjører ruteløkke STR_GENERATION_PREPARING_SCRIPT :{BLACK}Kjører skript STR_GENERATION_PREPARING_GAME :{BLACK}Gjør klart spillet @@ -3157,7 +3422,7 @@ STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Detaljer STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktive NewGRF-filer STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Inaktive NewGRF-filer STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Velg forhåndsoppsett: -STR_NEWGRF_FILTER_TITLE :{ORANGE}Søkefilter: +STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtrer: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Last inn valgte forhåndsoppsett STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Lagre forhåndsoppsettet STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Lagre den nåværende listen som et forhåndsoppsett @@ -3215,6 +3480,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Lagre STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Lagre forhåndsinnstillingen med det valgte navnet # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Endre grunnleggende grafikkparametre STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Endre NewGRF-parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Lukk STR_NEWGRF_PARAMETERS_RESET :{BLACK}Tilbakestill @@ -3231,11 +3497,14 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspiser STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ved {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Jernbanetype +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Veitype STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF-variabel 60+x parameter (heksadesimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Forskyver sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Forskyver sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Forskyver sprite: Handling 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Forskyver sprite: Handling 0x5, type {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Neste sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over enhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved begynnelsen STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til sprite @@ -3244,8 +3513,11 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Forrige STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsett til forrige normale sprite og hopp over enhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved begynnelsen STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Forhåndsvisning av valgt sprite. Innrettingen ignoreres når spriten tegnes STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytt på ikonet for å endre X- og Y-forskyvningene. Ctrl+klikk for å flytte ikonet åtte enheter om gangen +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 +STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Offset sentrert +STR_SPRITE_ALIGNER_CENTRE_SPRITE :{BLACK}Sentrert sprite STR_SPRITE_ALIGNER_CROSSHAIR :{BLACK}Trådkors @@ -3263,25 +3535,27 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING STR_NEWGRF_ERROR_MSG_WARNING :{RED}Advarsel: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Feil: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}NewGRF-en "{STRING}" har returnert en fatal feil:{}{STRING} +STR_NEWGRF_ERROR_POPUP :{WHITE}NewGRF-en "{STRING}" har returnert en feil:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} virker ikke med TTDPatch-versjonen som er rapportert av OpenTTD -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} er for versjon {STRING} av TTD -STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} er laget for bruk med {STRING} -STR_NEWGRF_ERROR_INVALID_PARAMETER :Ugyldig parameter for {1:STRING}: parameter {STRING} ({NUM}) -STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} må lastes inn før {STRING}. -STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} må lastes inn etter {STRING}. -STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} krever OpenTTD versjon {STRING} eller nyere +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} er for versjon {2:STRING} av TTD +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} er laget for bruk med {2:STRING} +STR_NEWGRF_ERROR_INVALID_PARAMETER :Ugyldig parameter for {1:STRING}: parameter {2:STRING} ({3:NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} må lastes inn før {2:STRING}. +STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} må lastes inn etter {2:STRING}. +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} krever OpenTTD versjon {2:STRING} eller nyere STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF-filen den var laget for å oversette STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :For mange NewGRF-er er innlastet -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Å laste inn {1:STRING} som statisk NewGRF med {STRING} kan forårsake synkroniseringsfeil -STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Uventet sprite (figur {3:NUM}) -STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Ukjent Handling 0 egenskap {4:HEX} (figur {3:NUM}) +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Å laste inn {1:STRING} som statisk NewGRF med {2:STRING} kan forårsake synkroniseringsfeil +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Uventet sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Ukjent Handling 0 egenskap {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Forsøk på å bruke ugyldig ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inneholder en ødelagt sprite. Alle ødelagte spriter blir vist som røde spørsmålstegn (?). -STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneholder flere Handling 8-oppføringer (figur {3:NUM}) -STR_NEWGRF_ERROR_READ_BOUNDS :Leste forbi slutten av pseudo-sprite (figur {3:NUM}) -STR_NEWGRF_ERROR_GRM_FAILED :Etterspurte GRF-ressurser ikke tilgjengelig (figur {3:NUM}) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneholder flere Handling 8-oppføringer (sprite {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Leste forbi slutten av pseudo-sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_GRM_FAILED :Etterspurte GRF-ressurser ikke tilgjengelig (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ble deaktivert av {STRING} -STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjent sprite layout-format (figur {3:NUM}) +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjent sprite layoutformat (sprite {3:NUM}) STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :For mange elementer i fortegnelse over eiendomsverdier (sprite {3:NUM}, property {4:HEX}) STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ugyldig industriprodukjson callback (sprite {3:NUM}, "{2:STRING}") @@ -3291,7 +3565,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du er i STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan ikke legge til fil: GRF ID finnes allerede STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matchende fil ble ikke funnet (kompatibel GRF-fil lastet inn) -STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan ikke legge til fil: Maksgrense nådd for NewGRF-filer +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan ikke legge til fil: Grense nådd for NewGRF-filer STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF(er) lastet for manglende filer STR_NEWGRF_DISABLED_WARNING :{WHITE}Manglende GRF-fil(er) har blitt deaktivert @@ -3307,13 +3581,13 @@ STR_NEWGRF_LIST_MISSING :{RED}Manglende # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Atferden til NewGRF '{STRING}' vil trolig forårsake synkroniseringsfeil og/eller krasj. -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Det endret maskinvogn-tilstand for '{1:ENGINE}' mens det er utenfor en togstall. +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Det endret maskinvogntilstand for '{1:ENGINE}' mens det er utenfor en togstall. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Det endret kjøretøylengde for '{1:ENGINE}' når utenfor en togstall. STR_NEWGRF_BROKEN_CAPACITY :{WHITE} Det endret kjøretøykapasitet for '{1:ENGINE}' når ikke i et depot eller under ombygging STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tog '{VEHICLE}' tilhørende '{COMPANY}' har ugyldig lengde. Dette skyldes trolig problemer med NewGRF-er. Spillet kan bli usynkronisert eller krasje. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' gir feilaktig informasjon. -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Vare-/ombyggingsinformasjon for '{1:ENGINE}' er forskjellig fra kjøpelisten etter konstruksjonen. Dette kan resultere i at autofornying ikke fungerer på riktig måte. +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Vare-/ombyggingsinformasjon for '{1:ENGINE}' er forskjellig fra kjøpelisten etter konstruksjonen. Dette kan resultere i at automatisk fornyelse ikke fungerer på riktig måte. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' forårsaket en uendelig løkke i produksjonstilbakekallet. STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Tilbakekall {1:HEX} rapporterte ukjent/ugyldig resultat {2:HEX} STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' ugyldig varetype i produksjonscallback at {2:HEX} @@ -3341,18 +3615,18 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Veksle m # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Skriv inn skilttekst -STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Midtjuster hovedvinduet på skiltets lokalisasjon. Ctrl+Klikk åpner et nytt tilleggsvindu over skiltets lokalisasjon +STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Sentrer hovedvinduet på skiltets lokasjon. Ctrl+klikk for å åpne et nytt tilleggsvindu på skiltets lokasjon STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Gå til neste skilt STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gå til forrige skilt STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Skriv inn et navn på skiltet # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Byer +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Byer ({COMMA} av {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ingen - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (By){BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bynavn - klikk på navnet for å gå til byen. Ctrl+klikk åpner et nytt tilleggsvindu over byen +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bynavn - klikk på navnet for å gå til byen. Ctrl+klikk for å åpne et nytt tilleggsvindu over byen STR_TOWN_POPULATION :{BLACK}Verdensbefolkning: {COMMA} # Town view window @@ -3360,17 +3634,20 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Storby) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Innbyggertall: {ORANGE}{COMMA}{BLACK} Antall hus: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} siste måned: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} forrige minutt: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Varebehov for byvekst: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} påkrevd STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} nødvendig om vinteren STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} levert STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (fortsatt nødvendig) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (levert) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Byen vokser hver {ORANGE}{UNITS_DAYS_OR_SECONDS} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Byen vokser hver {ORANGE}{UNITS_DAYS_OR_SECONDS} (finansiert) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Byen vokser {RED}ikke{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Flystøy: {ORANGE}{COMMA}{BLACK} støygrense: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Gå til by. Ctrl+klikk åpner et nytt tilleggsvindu over byen -STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Bystyre -STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Vis informasjon om bystyret +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Sentrer hovedvisningen på bylokasjon. Ctrl+klikk for å åpne et nytt tilleggsvindu på bylokasjon +STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Lokale myndigheter +STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Vis informasjon om lokale myndigheter STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Endre navn på byen STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Utvid @@ -3381,10 +3658,10 @@ STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Slett de STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Endre bynavnet # Town local authority window -STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN}s bystyre +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN}s lokale myndigheter STR_LOCAL_AUTHORITY_ZONE :{BLACK}Område STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Vis zonene innenfor de lokale myndigheters grenser -STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Vurdering av transportfirma: +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Rangering av transportselskap: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Handlinger tilgjengelig: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Liste over ting som kan gjøres for/i byen - klikk på valg for mer informasjon @@ -3396,18 +3673,22 @@ STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Liten reklameka STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Middels stor reklamekampanje STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Stor reklamekampanje STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Finansier ombygging av byens veinett -STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Bygg statue av firmaets grunnlegger +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Bygg statue av selskapets grunnlegger STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Finansier nye bygninger STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Kjøp eksklusive transportrettigheter -STR_LOCAL_AUTHORITY_ACTION_BRIBE :Bestikk bystyret +STR_LOCAL_AUTHORITY_ACTION_BRIBE :Bestikk de lokale myndighetene ###next-name-looks-similar -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Start en liten lokal reklamekampanje for å tiltrekke deg flere passasjerer og mer varer til dine transporttjenester.{}Gir en midlertidig økning til stasjonsvurderingen i en liten radius rundt bysentrum.{}Kostnad: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Start en middels stor lokal reklamekampanje for å tiltrekke deg flere passasjerer og mer varer til dine transporttjenester.{}Gir en midlertidig økning til stasjonsvurderingen i en liten radius rundt bysentrum.{}Kostnad: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Start en stor lokal reklamekampanje for å tiltrekke deg flere passasjerer og mer varer til dine transporttjenester.{}Gir et midlertidig økning til stasjonsvurderingen i stor radius rundt bysentrum.{}Kostnad: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Bygg en statue for å ære firmaet.{}Gir en permanent økning i stasjonens rangering i denne byen.{}Kostnad: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Finansier byggingen av nye kommersielle bygninger i byen.{}Gir en midlertidig økning for veksten i denne byen.{}Kostnad: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Du kan bestikke bystyret for å forbedre vurderingen av firmaet ditt, men du risikerer å bli bøtelagt hvis du blir oppdaget.{}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Start en lien lokal reklamekampanje for å tiltrekke deg flere passasjerer og mer varer til dine transporttjenester.{}Gir en midlertidig økning til stasjonsvurderingen i en liten radius rundt bysentrum.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Start en middels lokal reklamekampanje for å tiltrekke deg flere passasjerer og mer varer til dine transporttjenester.{}Gir en midlertidig økning til stasjonsvurderingen i en middels radius rundt bysentrum.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Start en stor lokal reklamekampanje for å tiltrekke deg flere passasjerer og mer varer til dine transporttjenester.{}Gir en midlertidig økning til stasjonsvurderingen i en stor radius rundt bysentrum.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Finansier urbant veibyggingsprogram.{}Gir betydelige forstyrrelser i veitrafikken i opptil 6 måneder.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MINUTES :{PUSH_COLOUR}{YELLOW}Finansier urbant veibyggingsprogram.{}Gir betydelige forstyrrelser i veitrafikken i opptil 6 minutter.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Bygg en statue til ære for selskapet.{}Gir en permanent økning i stasjonsvurderingen i denne byen.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Finansier byggingen av nye kommersielle bygninger i byen.{}Gir en midlertidig økning av veksten i denne byen.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Kjøp eksklusive transportrettigheter i byen for 12 måneder.{}Byens myndigheter vil ikke la passasjerer og varer bruke dine konkurrenters stasjoner. En vellykket bestikkelse fra en konkurrent vil bryte denne kontrakten.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Kjøp eksklusive transportrettigheter i byen for 12 minutter.{}Byens myndigheter vil ikke la passasjerer og varer bruke dine konkurrenters stasjoner. En vellykket bestikkelse fra en konkurrent vil bryte denne kontrakten.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Du kan bestikke lokale myndigheter for å forbedre vurderingen din og stoppe en konkurrents eksklusive transportrettigheter, til risikoen av en betydelig straff hvis du blir tatt.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}{COMPANY} Målsetninger @@ -3415,13 +3696,13 @@ STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globale STR_GOALS_SPECTATOR :Globale mål STR_GOALS_GLOBAL_BUTTON :{BLACK}Global STR_GOALS_GLOBAL_BUTTON_HELPTEXT :{BLACK}Vis globale målsetninger -STR_GOALS_COMPANY_BUTTON :{BLACK}Firma +STR_GOALS_COMPANY_BUTTON :{BLACK}Selskap STR_GOALS_COMPANY_BUTTON_HELPTEXT :{BLACK}Vis selskapets målsetninger STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Ingen - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}klikk på mål for å gå til industri/by/rute . Ctrl+klikk åpner et nytt tilleggsvindu over industriens/byens/rutens beliggenhet +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk på mål for å sentrere hovedvisningen på industri/by/rute . Ctrl+klikk for å åpner et nytt tilleggsvindu på lokasjonen til industrien/byen/ruten # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Spørsmål @@ -3453,9 +3734,15 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Lukk # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidier STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subsidietilbud: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} fra {STRING} til {STRING}{YELLOW} ({STRING}) STR_SUBSIDIES_NONE :{ORANGE}- Ingen - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Tjenester som allerede subsidieres: -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk for å gå til industri/by. Ctrl+klikk åpner et nytt tilleggsvindu over industrien/byen +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} fra {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk på tjeneste for å sentrere hovedvisningen på industri/by. Ctrl+klikk for å åpne et nytt tilleggsvindu på industri-/bylokasjon +STR_SUBSIDIES_OFFERED_EXPIRY_DATE :innen {DATE_SHORT} +STR_SUBSIDIES_OFFERED_EXPIRY_TIME :i løpet av {UNITS_MONTHS_OR_MINUTES} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :til {DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} gjenstår # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Historiebok @@ -3463,7 +3750,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global h STR_STORY_BOOK_SPECTATOR :Global historiebok STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Side {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Gå til en bestemt side ved å velge den i denne nedtrekkslisten. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Gå til en bestemt side ved å velge den i denne nedtrekkslisten STR_STORY_BOOK_PREV_PAGE :{BLACK}Forrige STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Gå til forrige side STR_STORY_BOOK_NEXT_PAGE :{BLACK}Neste @@ -3471,13 +3758,20 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Gå til STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ugyldig mål-referanse # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Stasjonsnavn - klikk på navnet for å gå til stasjonen. Ctrl+klikk åpner et nytt tilleggsvindu over stasjonen. -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold inne Ctrl for å velge flere +STR_STATION_LIST_TOOLTIP :{BLACK}Stasjonsnavn - klikk på navnet for å sentrere hovedvisningen på stasjonen. Ctrl+klikk for å åpne et nytt tilleggsvindu på stasjonslokasjon. +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl+klikk for å velge flere elementer STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} stasjon{P "" er} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Ingen - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Velg alle anlegg +STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Alle varetyper og ingen vurdering +STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Flere varetyper +STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Ingen varetyper +STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :Bare ingen varevurdering +STR_STATION_LIST_CARGO_FILTER_SELECT_ALL :Velg alle og ingen vurdering +STR_STATION_LIST_CARGO_FILTER_NO_RATING :Ingen varevurdering +STR_STATION_LIST_CARGO_FILTER_EXPAND :Vis mer... # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} @@ -3493,6 +3787,8 @@ STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vurderinger STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vis stasjonsvurdering +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}Tilførsel per måned og lokal vurdering: +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}Tilførsel per minutt og lokal vurdering: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Gruppér etter @@ -3528,70 +3824,86 @@ STR_CARGO_RATING_VERY_GOOD :Veldig god STR_CARGO_RATING_EXCELLENT :Utmerket STR_CARGO_RATING_OUTSTANDING :Fremragende -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Gå til stasjon. Ctrl+klikk åpner et nytt tilleggsvindu over stasjonen +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Sentrer hovedvisningen på stasjonslokasjon. Ctrl+klikk for å åpne et nytt tilleggsvindu på stasjonslokasjon STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Endre stasjonens navn -STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Vis alle tog som har denne stasjonen på sin ruteplan -STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Vis alle kjøretøy som har denne stasjonen på sin ruteplan -STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Vis alle luftfartøy som har denne stasjonen på sin ruteplan -STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Vis alle skip som har denne stasjonen på sin ruteplan +STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Vis alle tog som har denne stasjonen på sin ordreliste +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Vis alle kjøretøy som har denne stasjonen på sin ordreliste +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Vis alle luftfartøy som har denne stasjonen på sin ordreliste +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Vis alle skip som har denne stasjonen på sin ordreliste -STR_STATION_VIEW_RENAME_STATION_CAPTION :Endre navnet til stasjon/lasteterminal +STR_STATION_VIEW_RENAME_STATION_CAPTION :Endre navnet til stasjon/godsterminal STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Steng flyplass STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Hindre fly i å lande på denne flyplassen. # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Gå til kontrollpunkt. Ctrl+klikk åpner et nytt tilleggsvindu over kontrollpunktet -STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Endre kontrollpunktets navn -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Midtjuster hovedvinduet på bøyens lokalisasjon. Ctrl+Klikk åpner et nytt tilleggsvindu over bøyens lokalisasjon +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Sentrer hovedvinduet på veipunktets lokasjon. Ctrl+klikk for å åpne et nytt tilleggsvindu på veipunktets lokasjon +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Endre veipunktets navn +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Sentrer hovedvinduet på bøyens lokasjon. Ctrl+klikk for å åpne et nytt tilleggsvindu på bøyens lokasjon STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Endre navn på bøye -STR_EDIT_WAYPOINT_NAME :{WHITE}Endre navn på kontrollpunkt +STR_EDIT_WAYPOINT_NAME :{WHITE}Endre navn på veipunkt # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY}s regnskap{BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_YEAR_CAPTION :{WHITE}År +STR_FINANCES_PERIOD_CAPTION :{WHITE}Periode ###length 3 +STR_FINANCES_REVENUE_TITLE :{WHITE}Omsetning +STR_FINANCES_OPERATING_EXPENSES_TITLE :{WHITE}Driftskostnader +STR_FINANCES_CAPITAL_EXPENSES_TITLE :{WHITE}Kapitalkostnader ###length 13 -STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstruksjon +STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Byggeaktivitet STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nye kjøretøy -STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Driftskostnader for tog -STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Driftskostnader for kjøretøy -STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Driftskostnader for luftfartøy -STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Driftskostnader for skip +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Tog +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Kjøretøy +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Luftfartøy +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Skip +STR_FINANCES_SECTION_INFRASTRUCTURE :{GOLD}Infrastruktur +STR_FINANCES_SECTION_TRAIN_REVENUE :{GOLD}Tog +STR_FINANCES_SECTION_ROAD_VEHICLE_REVENUE :{GOLD}Kjøretøy +STR_FINANCES_SECTION_AIRCRAFT_REVENUE :{GOLD}Luftfartøy +STR_FINANCES_SECTION_SHIP_REVENUE :{GOLD}Skip STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Renter STR_FINANCES_SECTION_OTHER :{GOLD}Annet -STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} -STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} +STR_FINANCES_TOTAL_CAPTION :{WHITE}Totalt +STR_FINANCES_NEGATIVE_INCOME :-{CURRENCY_LONG} +STR_FINANCES_ZERO_INCOME :{CURRENCY_LONG} +STR_FINANCES_POSITIVE_INCOME :+{CURRENCY_LONG} +STR_FINANCES_PROFIT :{WHITE}Fortjeneste STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Saldo +STR_FINANCES_OWN_FUNDS_TITLE :{WHITE}Egne midler STR_FINANCES_LOAN_TITLE :{WHITE}Lån -STR_FINANCES_MAX_LOAN :{WHITE}Maks lån: {BLACK}{CURRENCY_LONG} +STR_FINANCES_INTEREST_RATE :{WHITE}Lånerenter: {BLACK}{NUM}% +STR_FINANCES_MAX_LOAN :{WHITE}Største lån: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} +STR_FINANCES_BANK_BALANCE :{WHITE}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Lån ({CURRENCY_LONG}) -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Øk størrelsen på lånet. Ctrl+klikk tar opp maks lån +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Øk størrelsen på lånet. Ctrl+klikk for å låne så mye som mulig STR_FINANCES_REPAY_BUTTON :{BLACK}Betal tilbake ({CURRENCY_LONG}) -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Betal tilbake en del av lånet. Ctrl+klikk betaler ned så mye som mulig. +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Betal tilbake en del av lånet. Ctrl+klikk fo å betale ned så mye som mulig STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktur # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} -STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Sjef) +STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Leder) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Grunnlagt: {WHITE}{NUM} -STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Firmafarge: +STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Selskapsfarge: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Kjøretøy: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tog STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} kjøretøy STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} luftfartøy STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} skip STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Ingen -STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Firmaverdi: {WHITE}{CURRENCY_LONG} +STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Selskapsverdi: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktur: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} jernbanebit{P "" er} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} veibit{P "" er} @@ -3600,32 +3912,34 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} flyplass{P "" er} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Ingen -STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bygg firmaets hovedkontor -STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Bygg firmaets hovedkontor -STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Se firmaets hovedkontor -STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Vis firmaets hovedkontor -STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Flytt firmaets hovedkontor -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Gjenoppbygg (flytt) firmaets hovedkontor et annet sted til en kostnad av 1{NBSP}% av firmaverdien. Shift+klikk viser beregnet kostnad uten å flytte kontoret +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bygg hovedkontor +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Bygg selskapets hovedkontor +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Vis hovedkontor +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Vis selskapets hovedkontor +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Flytt selskapets hovedkontor +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Flytt selskapets hovedkontor til et annet sted for en kostnad av 1% av verdien til selskapet. Trykk også Shift for å kun vise kostnadsestimat STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljer STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Vis detaljert infrastrukturtelling STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Gi penger -STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Gi penger til dette firmaet +STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Gi penger til dette selskapet +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Fientlig overtakelse STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Gjør en fiendtlig overtagelse av dette selskapet STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nytt ansikt -STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Velg nytt ansikt på sjefen -STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Firmafarge -STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Endre firmafarge -STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Firmanavn -STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Endre firmanavn -STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Sjefens navn -STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Endre sjefens navn +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Velg nytt ansikt på leder +STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Selskapsfarge +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Endre selskapsfarge +STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Selskapsnavn +STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Endre selskapsnavn +STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Lederens navn +STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Endre lederens navn -STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Firmanavn -STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Sjefens navn +STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Selskapsnavn +STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Lederens navn STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Skriv inn hvor mye penger du vil gi -STR_BUY_COMPANY_MESSAGE :{WHITE}Vi ser etter et transportfirma som er villig til å overta oss.{}{}Vil du kjøpe {COMPANY} for {CURRENCY_LONG}? +STR_BUY_COMPANY_MESSAGE :{WHITE}Vi ser etter et transportselskap som er villig til å overta oss.{}{}Vil du kjøpe {COMPANY} for {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}I en fiendtlig overtakelse av {COMPANY} vil du kjøpe alle eiendelen, betale ned alle lån, og betale to års utbytte.{}{}Totalt estimert til {CURRENCY_LONG}.{}{}Ønsker du å fortsette denne fiendtlige overtakelsen? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastrukturen til {COMPANY} @@ -3638,9 +3952,11 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanaler STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stasjoner: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stasjonsruter STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flyplasser +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENCY_LONG}/år +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/periode # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrier +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrier ({COMMA} av {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ingen - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transportert){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3648,7 +3964,7 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} og {NUM} flere... -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrinavn - klikk på navn for å gå til industri. Ctrl+klikk åpner et nytt tilleggsvindu over industrien +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrinavn - klikk på navn for å sentrere hovedvisningen på industrien. Ctrl+klikk for å åpne et nytt tilleggsvindu på industrilokasjonen STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Godtatte varer:{SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Produserte varer: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Alle varetyper @@ -3657,8 +3973,9 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :Ingen # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produksjon forrige måned: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Produksjon forrige minutt: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}{NBSP}% transportert) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Gå til industri. Ctrl+klikk åpner et nytt tilleggsvindu over industrien +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Sentrer hovedvisningen på industrilokasjon. Ctrl+klikk for å åpne et nytt tilleggsvindu på industrilokasjon STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksjonsnivå: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Næringen har annonsert snarlig nedleggelse! @@ -3667,7 +3984,7 @@ STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Produser STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Krever: -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{0:STRING}{BLACK}{3:STRING} STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} venter{STRING} STR_CONFIG_GAME_PRODUCTION :{WHITE}Endre produksjon (multiplum av 8, opptil 2040) @@ -3696,7 +4013,11 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Administ STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Send instruksjoner til alle kjøretøy i denne listen STR_VEHICLE_LIST_REPLACE_VEHICLES :Bytt ut kjøretøy STR_VEHICLE_LIST_SEND_FOR_SERVICING :Send til vedlikehold +STR_VEHICLE_LIST_CREATE_GROUP :Lag gruppe STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Fortjeneste i år: {CURRENCY_LONG} (i fjor: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Fortjeneste denne perioden: {CURRENCY_LONG} (forrige periode: {CURRENCY_LONG}) +STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] +STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Send til togstallen STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Send til garasjen @@ -3705,7 +4026,7 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Send til hangar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klikk for å stoppe alle kjøretøy i listen STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klikk for å starte alle kjøretøy i listen -STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Se en liste over tilgjengelige modeller for denne kjøretøytypen. +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Se en liste over tilgjengelige lokomotivmodeller for denne typen jernbanemateriell STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Delte ordre av {COMMA} kjøretøy @@ -3724,12 +4045,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Ugrupperte luft STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - Klikk på en gruppe for å se alle kjøretøy i gruppen. Dra og slipp grupper for å arrangere dem hierarkisk +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - klikk på en gruppe for å se alle transportmidler i gruppen. Dra og slipp grupper for å sortere dem hierarkisk STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikk for å opprette en gruppe STR_GROUP_DELETE_TOOLTIP :{BLACK}Fjern den valgte gruppen STR_GROUP_RENAME_TOOLTIP :{BLACK}Gi nytt navn på den valgte gruppen -STR_GROUP_LIVERY_TOOLTIP :{BLACK}Endre firmafarger for valgt gruppe -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikk for å beskytte denne gruppen fra global autoerstatning. Ctrl+klikk for å også beskytte undergrupper +STR_GROUP_LIVERY_TOOLTIP :{BLACK}Endre design for den valgte gruppen +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikk for å beskytte denne gruppen fra global automatisk erstatning. Ctrl+klikk for å også beskytte undergrupper STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Slette gruppe STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Er du sikker på at du vil slette denne gruppen og eventuelle etterkommere? @@ -3739,25 +4060,27 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle kjø STR_GROUP_RENAME_CAPTION :{BLACK}Endre navn på gruppe -STR_GROUP_PROFIT_THIS_YEAR :Profitt i år: -STR_GROUP_PROFIT_LAST_YEAR :Profitt i fjor: +STR_GROUP_PROFIT_THIS_YEAR :Fortjeneste i år: +STR_GROUP_PROFIT_THIS_PERIOD :Fortjeneste denne periode: +STR_GROUP_PROFIT_LAST_YEAR :Fortjeneste i fjor: +STR_GROUP_PROFIT_LAST_PERIOD :Fortjeneste forrige periode: STR_GROUP_OCCUPANCY :Gjeldende bruk: STR_GROUP_OCCUPANCY_VALUE :{NUM} % # Build vehicle window ###length 4 -STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nye tog/vogner for jernbane -STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nye tog/vogner for elektrisk jernbane -STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nye tog/vogner for monorail -STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nye tog/vogner for maglev +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nytt jernbanemateriell +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nytt elektrisk jernbanemateriell +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nytt jernbanemateriell for monorail +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nytt jernbanemateriell for maglev STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nye kjøretøy STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Nye trikkekjøretøy # Vehicle availability ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nye tog/vogner -STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Nye veikjøretøy +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nytt jernbanemateriell +STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Nye kjøretøy STR_BUY_VEHICLE_SHIP_CAPTION :Nye skip STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nye luftfartøy @@ -3767,10 +4090,12 @@ STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hastighe STR_PURCHASE_INFO_SPEED :{BLACK}Hastighet: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Hastighet på havet: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Hastighet på kanal/elv: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}Driftskostnader: {GOLD}{CURRENCY_LONG}/år +STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Driftskostnader: {GOLD}{CURRENCY_LONG}/periode STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapasitet: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(ombyggbart) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Designet: {GOLD}{NUM}{BLACK} Levetid: {GOLD}{COMMA} år -STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks pålitelighet: {GOLD}{COMMA}{NBSP}% +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Største pålitelighet: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_COST_REFIT :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} (Ombyggingskostnad: {GOLD}{CURRENCY_LONG}{BLACK}) STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Vekt: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) @@ -3783,42 +4108,44 @@ STR_PURCHASE_INFO_ALL_TYPES :Alle varetyper STR_PURCHASE_INFO_NONE :Ingen STR_PURCHASE_INFO_ENGINES_ONLY :Kun lokomotiv STR_PURCHASE_INFO_ALL_BUT :Alt utenom {CARGO_LIST} -STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks trekkraft: {GOLD}{FORCE} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Største trekkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rekkevidde: {GOLD}{COMMA} ruter STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Flytype: {GOLD}{STRING} ###length 3 STR_CARGO_TYPE_FILTER_ALL :Alle cargo typer +STR_CARGO_TYPE_FILTER_FREIGHT :Frakt +STR_CARGO_TYPE_FILTER_NONE :Ingen ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Liste over tog/vogner - klikk på tog/vogn for mer informasjon. Ctrl+klikk for å skjule/vise denne typen -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liste over kjøretøy - klikk på kjøretøy for mer informasjon. Ctrl+klikk for å skjule/vise kjøretøytypen -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Liste over skip - klikk på skip for mer informasjon. Ctrl+klikk for å skjule/vise skiptypen -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Liste over luftfartøy - klikk på luftfartøy for mer informasjon. Ctrl+klikk for å skjule/vise luftfartøytypen +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Liste over jernbanemateriell. Klikk på materiellet for mer informasjon. Ctrl+klikk for å vise eller skjule denne materielltypen +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liste over kjøretøy. Klikk på kjøretøyet for mer informasjon. Ctrl+klikk for å vise eller skjule denne kjøretøytypen +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Liste over skip. Klikk på skipet for mer informasjon. Ctrl+klikk for å vise eller skjule denne skipstypen +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Liste over luftfartøy. Klikk på luftfartøyet for mer informasjon. Ctrl+klikk for å vise eller skjule denne typen luftfartøy ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kjøp tog/vogn +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kjøp jernbanemateriell STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kjøp kjøretøy STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Kjøp skip STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Kjøp luftfartøy ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Kjøp og bygg om kjøretøy +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Kjøp og bygg om materiell STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Kjøp og bygg om kjøretøy STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Kjøp og bygg om skip STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Kjøp og bygg om luftfartøy ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede tog/vogn. Shift+klikk viser estimert kostnad -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede kjøretøy. Shift+klikk viser estimert kostnad -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede skip. Shift+klikk viser estimert kostnad -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede luftfartøy. Shift+klikk viser estimert kostnad +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede jernbanemateriellet. Trykk også Shift for å kun vise kostnadsestimat +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede kjøretøyet. Trykk også Shift for å kun vise kostnadsestimat +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede skipet. Trykk også Shift for å kun vise kostnadsestimat +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede luftfartøyet. Trykk også Shift for å kun vise kostnadsestimat ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kjøp og bygg om merket tog/vogn. Shift+klikk viser anslått kostnad uten å kjøpe. -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kjøp og bygg om det merkede kjøretøyet. Shift+klikk viser anslått kostnad uten å kjøpe. -STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kjøp og bygg om det merkede skipet. Shift+klikk viser anslått kostnad uten å kjøpe. -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kjøp og bygg om det merkede luftfartøyet. Shift+klikk viser anslått kostnad uten å kjøpe. +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kjøp og bygg om det merkede jernbanemateriellet. Trykk også Shift for å kun vise kostnadsestimat +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kjøp og bygg om det merkede kjøretøyet. Trykk også Shift for å kun vise kostnadsestimat +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kjøp og bygg om det merkede skipet. Trykk også Shift for å kun vise kostnadsestimat +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kjøp og bygg om det merkede luftfartøyet. Trykk også Shift for å kun vise kostnadsestimat ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Endre navn @@ -3827,10 +4154,10 @@ STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Endre na STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Endre navn ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Gi nytt navn til tog-/vogntypen -STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Gi nytt navn til kjøretøytypen -STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Gi nytt navn til skipstypen -STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Gi nytt navn til luftfartøytypen +STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Endre navn på jernbanemateriell +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Endre navn på kjøretøytype +STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Endre navn på skipstype +STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Endre navn på luftfartøytype ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Skjul @@ -3845,13 +4172,13 @@ STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Vis STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Vis ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Veksle mellom å skjule/vise typen av jernbanekjøretøy -STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Veksle mellom å skjule/vise kjøretøystypen -STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Veksle mellom å skjule/vise skipstypen -STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bytte mellom å skjule/vise flytypen +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Veksle mellom å skjule/vise typen jernbanemateriell +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Veksle mellom å skjule/vise type kjøretøy +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Veksle mellom å skjule/vise type skip +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Bytte mellom å skjule/vise type luftfartøy ###length VEHICLE_TYPES -STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Gi tog/vogntype nytt navn +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Gi jernbanemateriell nytt navn STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Gi kjøretøytypen nytt navn STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Gi skipstypen nytt navn STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Gi luftfartøytypen nytt navn @@ -3859,7 +4186,7 @@ STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Gi luftf # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} -STR_DEPOT_RENAME_TOOLTIP :{BLACK}Endre navn på garasje/stall/hangar/dokk +STR_DEPOT_RENAME_TOOLTIP :{BLACK}Gi nytt navn til garasje/stall/hangar/dokk STR_DEPOT_RENAME_DEPOT_CAPTION :Endre navn på garasje/stall/hangar/dokk STR_DEPOT_NO_ENGINE :{BLACK}- @@ -3868,13 +4195,13 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} kj STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Tog - dra vogn/tog med venstreklikk for å legge til/fjerne fra tog, høyreklikk for mer informasjon. Hold inne Ctrl for å gjøre begge funksjonene gjeldende for hele togkjeden +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Tog - dra jernbanemateriell med venstreklikk for å legge til/fjerne fra tog, høyreklikk for informasjon. Ctrl+klikk for å utføre begge funksjonene på hele toget STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Kjøretøy - høyreklikk på kjøretøy for mer informasjon STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Skip - høyreklikk på skip for mer informasjon STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Luftfartøy - høyreklikk på luftfartøy for mer informasjon ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Dra tog/vogn hit for å selge det +STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Dra jernbanemateriell hit for å selge det STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Dra kjøretøy hit for å selge det STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Dra skip hit for å selge det STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Dra luftfartøy hit for å selge det @@ -3886,19 +4213,19 @@ STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Selg all STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Selg alle luftfartøy i hangaren ###length VEHICLE_TYPES -STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Autoerstatt alle tog i togstallen -STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Autoerstatt alle kjøretøy i garasjen -STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Autoerstatt alle skip i skipsdokken -STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Autoerstatt alle luftfartøy i hangaren +STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Erstatt alle tog i togstallen automatisk +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Erstatt alle kjøretøy i garasjen automatisk +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Erstatt alle skip i skipsdokken automatisk +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Erstatt alle luftfartøy i hangaren automatisk ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nye tog/vogner +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nytt jernbanemateriell STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nye kjøretøy STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nye skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nye luftfartøy ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Kjøp nytt tog/vogn +STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Kjøp nytt jernbanemateriell STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Kjøp nytt kjøretøy STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Kjøp nytt skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Kjøp nye luftfartøy @@ -3910,16 +4237,16 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Kopier s STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kopier luftfartøy ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dette vil kjøpe en kopi av et tog inkludert alle vognene. Klikk denne knappen og deretter på et tog utenfor eller inni togstallen. Ctrl+klikk deler ordrene. Shift+klikk viser estimert kostnad uten kjøp -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Dette vil skape en kopi av et kjøretøy. Klikk denne knappen og deretter på et kjøretøy utenfor eller inni garasjen. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Dette vil skape en kopi av et skip. Klikk denne knappen og deretter på et skip utenfor eller inni skipsdokken. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dette vil skape en kopi av et luftfartøy. Klikk denne knappen og deretter på et luftfartøy utenfor eller inni hangaren. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Kjøp en kopi av et tog inkludert alle vogner. Klikk på denne knappen og deretter på et tog inne i eller utenfor togstallen. Ctrl+klikk vil dele ordrene. Trykk også Shift for kun å vise kostnadsestimat +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Kjøp en kopi av et kjøretøy. Klikk på denne knappen og deretter på et kjøretøy inne i eller utenfor garasjen. Ctrl+klikk vil dele ordrene. Trykk også Shift for kun å vise kostnadsestimat +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Kjøp en kopi av et skip. Klikk på denne knappen og deretter på et skip inne i eller utenfor skipsdokken. Ctrl+klikk vil dele ordrene. Trykk også Shift for kun å vise kostnadsestimat +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Kjøp en kopi av et luftfartøy. Klikk på denne knappen og deretter på et luftfartøy inne i eller utenfor hangaren. Ctrl+klikk vil dele ordrene. Trykk også Shift for kun å vise kostnadsestimat ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Midtjuster hovedvinduet på togstallens lokalisasjon. Ctrl+Klikk åpner et nytt tilleggsvindu over togstallens lokalisasjon -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Midtjuster hovedvinduet på vegkjøretøyets garasje lokalisasjon. Dobbelklikk for å følge kjøretøyet i hovedvinduet. Ctrl+Klikk åpner et nytt tilleggsvindu over vegkjøretøyets garasje lokalisasjon -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Midtjuster hovedvinduet på skipsdokken lokalisasjon. Ctrl+Klikk åpner et nytt tilleggsvindu over skipsdokkens lokalisasjon -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Midtjuster hovedvinduet på hangar lokalisasjon. Ctrl+Klikk åpner et nytt tilleggsvindu over hangarens lokalisasjon +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Sentrer hovedvisningen på togstall. Ctrl+klikk for å åpne et nytt tilleggsvindu på togstall +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Sentrer hovedvisningen på garasjelokasjon. Ctrl+klikk for å åpne et nytt tilleggsvindu på garasjelokasjon +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Midtjuster hovedvinduet på skipsdokkens lokasjon. Dobbelklikk for å følge skipet i hovedvinduet. Ctrl+klikk åpner et nytt tilleggsvindu over skipsdokkens lokasjon +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Sentrer hovedvinduet på hangarens lokasjon. Ctrl+klikk for å åpne et nytt tilleggsvindu på hangarens lokasjon ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Få en liste over alle tog med denne togstallen i sine ordre @@ -3944,7 +4271,7 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Du er n # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Melding fra kjøretøysprodusent -STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Vi har nettopp designet e{G n i t} ny{G "" "" tt} {STRING} - er du interessert i ett års ekslusivt bruk av dette, slik at vi kan se hvordan det virker før det blir allment tilgjengelig? +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Vi har nettopp designet e{G n i t} ny{G "" "" tt} {STRING} - er du interessert i ett års ekslusivt bruk av de{G 0 n n t}, slik at vi kan se hvordan de{G 0 n n t} virker før de{G 0 n n t} blir allment tilgjengelig? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=neuter}lokomotiv STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :{G=neuter}elektrisk lokomotiv @@ -3957,6 +4284,18 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE :trikkekjøretø STR_ENGINE_PREVIEW_AIRCRAFT :{G=neuter}luftfartøy STR_ENGINE_PREVIEW_SHIP :{G=neuter}skip +STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING} +STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING} +STR_ENGINE_PREVIEW_COST_WEIGHT :Kostnad: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT} +STR_ENGINE_PREVIEW_COST_MAX_SPEED :Kostnad: {CURRENCY_LONG} Topphastighet: {VELOCITY} +STR_ENGINE_PREVIEW_SPEED_POWER :Hastighet: {VELOCITY} Kraft: {POWER} +STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Hastighet: {VELOCITY} Kraft: {POWER} Største TK.: {FORCE} +STR_ENGINE_PREVIEW_TYPE :Flytype: {STRING} +STR_ENGINE_PREVIEW_TYPE_RANGE :Flytype: {STRING} Rekkevidde: {COMMA} ruter +STR_ENGINE_PREVIEW_RUNCOST_YEAR :Running Cost: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Driftskostnader: {CURRENCY_LONG}/periode +STR_ENGINE_PREVIEW_CAPACITY :Kapasitet: {CARGO_LONG} +STR_ENGINE_PREVIEW_CAPACITY_2 :Kapasitet: {CARGO_LONG}, {CARGO_LONG} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Erstatte {STRING} - {STRING} @@ -3985,11 +4324,11 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} når g STR_REPLACE_VEHICLES_STOP :{BLACK}Stopp erstatning av kjøretøy STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikk denne knappen for å stoppe erstatning av lokomotivet som er valgt på venstresiden -STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Veksle mellom tog- og vognerstatningsvinduet +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Veksle mellom lokomotiv- og vognerstatningsvinduene STR_REPLACE_ENGINES :Lokomotiv STR_REPLACE_WAGONS :Vogner -STR_REPLACE_ALL_RAILTYPE :Alle jernbanekjøretøy -STR_REPLACE_ALL_ROADTYPE :Alle veikjøretøy +STR_REPLACE_ALL_RAILTYPE :Alt jernbanemateriell +STR_REPLACE_ALL_ROADTYPE :Alle kjøretøy ###length 2 STR_REPLACE_HELP_RAILTYPE :{BLACK}Velg jernbanetypen du vil bytte ut lokomotiv på @@ -3997,12 +4336,12 @@ STR_REPLACE_HELP_ROADTYPE :{BLACK}Velg vei ###next-name-looks-similar STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Viser hvilket lokomotiv som overtar for det valgte lokomotivet på venstresiden -STR_REPLACE_RAIL_VEHICLES :Jernbanekjøretøy -STR_REPLACE_ELRAIL_VEHICLES :Elektriske jernbanekjøretøy -STR_REPLACE_MONORAIL_VEHICLES :Monorail-kjøretøy -STR_REPLACE_MAGLEV_VEHICLES :Maglev-kjøretøy +STR_REPLACE_RAIL_VEHICLES :Jernbanemateriell +STR_REPLACE_ELRAIL_VEHICLES :Elektrisk jernbanemateriell +STR_REPLACE_MONORAIL_VEHICLES :Monorail-materiell +STR_REPLACE_MAGLEV_VEHICLES :Maglev-materiell -STR_REPLACE_ROAD_VEHICLES :Veikjøretøy +STR_REPLACE_ROAD_VEHICLES :Kjøretøy STR_REPLACE_TRAM_VEHICLES :Trikkekjøretøy STR_REPLACE_REMOVE_WAGON :{BLACK}Vognfjerning ({STRING}): {ORANGE}{STRING} @@ -4013,27 +4352,27 @@ STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Ctrl+ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Midtjuster hovedvinduet på togets lokalisasjon. Dobbelklikk for å følge toget i hovedvinduet. Ctrl+Klikk åpner et nytt tilleggsvindu over togets lokalisasjon -STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Midtjuster hovedvinduet på kjøretøyets lokalisasjon. Dobbelklikk for å følge kjøretøyet i hovedvinduet. Ctrl+Klikk åpner et nytt tilleggsvindu over kjøretøyets lokalisasjon -STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Midtjuster hovedvinduet på skipets lokalisasjon. Dobbelklikk for å følge skipet i hovedvinduet. Ctrl+Klikk åpner et nytt tilleggsvindu over skipets lokalisasjon -STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Midtjuster hovedvinduet på flyets lokalisasjon. Dobbelklikk for å følge flyet i hovedvinduet. Ctrl+Klikk åpner et nytt tilleggsvindu over flyets lokalisasjon +STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}{BLACK}Sentrer hovedvinduet på togets lokasjon. Dobbeltklikk for å følge toget i hovedvinduet. Ctrl+klikk for å åpne et nytt tilleggsvindu på togets lokasjon +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Sentrer hovedvinduet på kjøretøyets lokasjon. Dobbeltklikk for å følge kjøretøyet i hovedvinduet. Ctrl+klikk for å åpne et nytt tilleggsvindu på kjøretøyets lokasjon +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Sentrer hovedvinduet på skipets lokasjon. Dobbeltklikk for å følge skipet i hovedvinduet. Ctrl+klikk for å åpne et nytt tilleggsvindu på skipets lokasjon +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Midtjuster hovedvinduet på flyets lokasjon. Dobbelklikk for å følge flyet i hovedvinduet. Ctrl+klikk åpner et nytt tilleggsvindu over flyet lokasjon ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send toget til en togstall. Ctrl+klikk for kun å utføre vedlikehold -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send kjøretøyet til en garasje. Ctrl+klikk for kun å utføre vedlikehold -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send skipet til en skipsdokk. Ctrl+klikk for kun å utføre vedlikehold -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send luftfartøyet til en hangar. Ctrl+klikk for kun å utføre vedlikehold +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send toget til en togstall. Ctrl+klikk for kun vedlikehold +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send kjøretøyet til en garasje. Ctrl+klikk for kun vedlikehold +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send skipet til en skipsdokk. Ctrl+klikk for kun vedlikehold +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send luftfartøyet til en hangar. Ctrl+klikk for kun vedlikehold ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Dette vil skape en kopi av toget, inkludert alle vognene. Ctrl+klikk vil sørge for delte ordre. Shift+klikk viser estimert kostnad -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Dette vil skape en kopi av kjøretøyet. Ctrl+klikk vil sørge for delte ordre -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Dette vil skape en kopi av skipet. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Dette vil skape en kopi av luftfartøyet. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Kjøp en kopi av toget inkludert alle vognene. Ctrl+klikk for å dele ordre. Trykk også Shift for kun å vise kostnadsestimat +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Kjøp en kopi av kjøretøyet. Ctrl+klikk vil dele ordrene. Trykk også Shift for å vise kostnadsestimat +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Kjøp en kopi av skipet. Ctrl+klikk for å dele ordre. Trykk også Shift for kun å vise kostnadsestimat +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Kjøp en kopi av luftfartøyet. Ctrl+klikk vil dele ordrene. Trykk også Shift for å vise kostnadsestimat STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Tving toget til å fortsette uten å vente på klarsignal STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Snu togets kjøreretning -STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Tving kjøretøy til å snu om -STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Midtjuster hovedvinduet på ordrens lokalisasjon. Ctrl+Klikk åpner et nytt tilleggsvindu over ordrens lokalisasjon +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Tving kjøretøy til å snu +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Sentrer hovedvisningen på ordrens destinasjon. Ctrl+klikk for å åpne et nytt tilleggsvindu på lokasjonen til ordrens destinasjon ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Bygg om toget til å frakte en annen varetype @@ -4062,24 +4401,26 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Valgt lu # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Laster / Losser STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Forlater +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Venter på å fjerne klumping STR_VEHICLE_STATUS_CRASHED :{RED}Krasjet! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Havarert STR_VEHICLE_STATUS_STOPPED :{RED}Stoppet -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stopper, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Stopper STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Ingen strøm STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Venter på ledig rute STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}For langt til neste destinasjon -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}På vei til {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Ingen ordre, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Har kurs mot {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}På vei til {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Vedlikehold ved {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - På vei til {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Ingen ordre +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Har kurs mot {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - På vei til {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} Vedlikehold ved {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Fjern klumping og vedlikehold ved {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Kan ikke nå {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Kan ikke nå {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Kan ikke nå {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Kan ikke nå {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Kan ikke nå {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Kan ikke nå {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Kan ikke nå {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Kan ikke nå {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4101,7 +4442,8 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Navngi l STR_VEHICLE_INFO_AGE :{COMMA} år ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA}) -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alder: {LTBLUE}{STRING}{BLACK} Driftskostnader: {LTBLUE}{CURRENCY_LONG}/år +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alder: {LTBLUE}{STRING}{BLACK} Driftskostnader: {LTBLUE}{CURRENCY_LONG}/år +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Alder: {LTBLUE}{STRING}{BLACK} Driftskostnader: {LTBLUE}{CURRENCY_LONG}/periode STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Topphastighet: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Topphastighet: {LTBLUE}{VELOCITY} {BLACK}Flytype: {LTBLUE}{STRING} @@ -4110,19 +4452,35 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {L STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Topphastighet: {LTBLUE}{VELOCITY} {BLACK}Maks trekkraft: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Fortjeneste i år: {LTBLUE}{CURRENCY_LONG} (i fjor: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Fortjeneste dette år: {LTBLUE}{CURRENCY_LONG} (forrige år: {CURRENCY_LONG}) {BLACK}Min. ytelse: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Fortjeneste denne perioden: {LTBLUE}{CURRENCY_LONG} (forrige periode: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Fortjeneste denne perioden: {LTBLUE}{CURRENCY_LONG} (forrige periode: {CURRENCY_LONG}) {BLACK}Minste ytelse: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Pålitelighet: {LTBLUE}{COMMA}{NBSP}% {BLACK}Havarier siden siste vedlikehold: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Bygget: {LTBLUE}{NUM}{BLACK} Verdi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapasitet: {LTBLUE}Ingen{STRING} -STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasitet: {LTBLUE}{CARGO_LONG}{3:STRING} -STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasitet: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasitet: {LTBLUE}{0:CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasitet: {LTBLUE}{0:CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasitet: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Overføringskreditt: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Vedlikeholdsintervall: {LTBLUE}{COMMA}{NBSP}dager{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Vedlikeholdsintervall: {LTBLUE}{COMMA}{NBSP}minutt{P "" er}{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Vedlikeholdsintervall: {LTBLUE}{COMMA}{NBSP}%{BLACK} {STRING} +STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Forrige vedlikehold: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Forrige vedlikehold: {LTBLUE}{NUM} minutt{P "" er} siden +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Øk vedlikeholdsintervall med 10 dager. Ctrl+klikk for å øke vedlikeholdsintervall med 5 dager +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Reduser vedlikeholdsintervall med 5 minutter. Ctrl+klikk for å øke vedlikeholdsintervall med 1 minutt +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Øk vedlikeholdsintervall med 10 prosent. Ctrl+klikk for å øke vedlikeholdsintervall med 5 prosent +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Reduser vedlikeholdsintervall med 10 dager. Ctrl+klikk for å redusere vedlikeholdsintervall med 5 dager +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Reduser vedlikeholdsintervall med 5 minutt. Ctrl+klikk for å redusere vedlikeholdsintervall med 1 minutt +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Reduser vedlikeholdsintervall med 10 prosent. Ctrl+klikk for å redusere vedlikeholdsintervall med 5 prosent STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Enhet for vedlikeholdsintervall STR_VEHICLE_DETAILS_DEFAULT :Standard +STR_VEHICLE_DETAILS_DAYS :Dager +STR_VEHICLE_DETAILS_MINUTES :Minutter STR_VEHICLE_DETAILS_PERCENT :Prosentandel ###length VEHICLE_TYPES @@ -4136,8 +4494,8 @@ STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Verdi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total varekapasitet på dette toget: -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Tom STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} fra {STATION} @@ -4146,7 +4504,7 @@ STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_ STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Varer STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Vis detaljer om innholdet i vognene STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informasjon -STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Vis detaljer om tog/vogner +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Vis detaljer om jernbanemateriell STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapasitet STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Vis kapasiteten til vognene STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Total last @@ -4158,10 +4516,10 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapasite STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Bygg om) STR_REFIT_TITLE :{GOLD}Velg varetype: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}{}{BLACK}Kostnad for ombygging: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}{}{BLACK}Intekt fra ombygning: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}{}{BLACK}Inntekt fra ombygning: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Kostnad for ombygging: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Intekt fra ombygning: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Velg kjøretøy for ombygging. Dra med musen for å velge flere kjøretøy. Klikk på et tomt område for å velge hele kjøretøyet. Ctrl+klikk vil velge et kjøretøy og den følgende kjeden +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Inntekt fra ombygning: {GREEN}{CURRENCY_LONG} +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Velg transportmidler for ombygging. Klikk+dra for å velge flere transportmidler. Klikk på et tomt område for å velge hele transportmiddelet. Ctrl+klikk vil velge et transportmiddel og den følgende kjeden ###length VEHICLE_TYPES STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Velg hvilken varetype toget skal frakte @@ -4186,8 +4544,9 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Rutetabell STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Skift til rutetabellvisning -STR_ORDERS_LIST_TOOLTIP :{BLACK}Ordreliste - klikk på en ordre for å markere den. Ctrl+klikk viser ordrens endestasjon +STR_ORDERS_LIST_TOOLTIP :{BLACK}Ordreliste - klikk på en ordre for å markere den. Ctrl+klikk for å panorere til ordrens bestemmelsessted STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Slutt på ordre - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Slutt på delte ordre - - @@ -4217,16 +4576,21 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Endre lo STR_ORDER_REFIT :{BLACK}Bygg om STR_ORDER_REFIT_TOOLTIP :{BLACK}Velg hvilken varetype det skal bygges om til i denne ordren. Ctrl+klikk for å fjerne ombyggingsordren STR_ORDER_REFIT_AUTO :{BLACK}Ombygging på stasjon -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Velg hvilken godstype det skal bygges om til i denne ordren. Ctrl+klikk for å fjerne ombyggingsinstrukser. Ombygging blir kun utført hvis kjøretøyet tillater det +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Velg hvilken varetype det skal bygges om til i denne ordren. Ctrl+klikk for å fjerne ombyggingsinstrukser. Ombygging blir kun utført hvis transportmiddelet tillater det STR_ORDER_DROP_REFIT_AUTO :Fast varetype STR_ORDER_DROP_REFIT_AUTO_ANY :Tilgjengelig varetype STR_ORDER_DROP_GO_ALWAYS_DEPOT :Alltid gå STR_ORDER_DROP_SERVICE_DEPOT :Vedlikehold ved behov STR_ORDER_DROP_HALT_DEPOT :Stopp +STR_ORDER_DROP_UNBUNCH :Fjern klumping # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES +STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Velg hvilken handling å foreta i denne togstallen +STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Velg hvilken handling å foreta i denne garasjen +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Velg hvilken handling å foreta i denne skipsdokken +STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Velg hvilken handling å foreta i denne hangaren ###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Kjøretøydata å basere hopp på @@ -4240,16 +4604,16 @@ STR_ORDER_CONDITIONAL_AGE :Alder (år) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Trenger vedlikehold STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Alltid STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Gjenstående levetid (år) -STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Maksimal pålitelighet +STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Største pålitelighet ###next-name-looks-similar STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Hvordan sammenligne kjøretøyets data til den gitte verdi STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :er lik STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :er ikke lik STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :er mindre enn -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :er mindre eller lik +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :er mindre enn eller lik STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :er mer enn -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :er mer eller lik +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :er mer enn eller lik STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :er sant STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :er usant @@ -4257,22 +4621,22 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Verdien STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Skriv inn verdi til å sammenligne mot STR_ORDERS_SKIP_BUTTON :{BLACK}Hopp over -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Hopp over den nåværende ordren og begynn på neste. Ctrl+klikk hopper fram til valgte ordre +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Hopp over den nåværende ordren og begynn på neste. Ctrl+klikk for å hoppe fram til valgte ordre STR_ORDERS_DELETE_BUTTON :{BLACK}Slett STR_ORDERS_DELETE_TOOLTIP :{BLACK}Slett den merkede ordren STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Slett alle ordre STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Stopp deling -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stopp deling av ordreliste. Ctrl+klikk vil slette alle ordrer for dette kjøretøyet +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stans deling av ordrelisten. Ctrl+klikk for å slette alle ordre for dette transportmiddelet i tillegg STR_ORDERS_GO_TO_BUTTON :{BLACK}Kjør til STR_ORDER_GO_TO_NEAREST_DEPOT :Gå til nærmeste garasje/stall/hangar/dokk STR_ORDER_GO_TO_NEAREST_HANGAR :Gå til nærmeste hangar STR_ORDER_CONDITIONAL :Betinget ordrehopp STR_ORDER_SHARE :Del ordre -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Sett inn en ny ordre før den merkede ordren, eller legg til i slutten av listen. Ctrl gir ordren 'full last, enhver varetype', kontrollpunktordre 'direkte' og verkstedsordre 'vedlikehold'. 'Del ordrer' eller Ctrl lar dette kjøretøyet dele ordrer med det valgte kjøretøyet. Klikk på et kjøretøy for å kopiere ordrene fra det. En verkstedsordre slår av automatisk vedlikehold av kjøretøyet +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Sett inn en ny ordre før den merkede ordren, eller legg til i slutten av listen. Ctrl+klikk på en stasjon for 'full last av enhver vare', på et veipunkt for å invertere 'direkte' og et depot for 'dele'. Kilkk på et annet transportmiddel for å kopiere dets ordre, eller Ctrl+klikk for å dele ordre. En depotordre deaktiverer automatisk vedlikehold av transportmiddelet -STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Vis alle kjøretøy som deler denne ruteplanen +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Vis alle kjøretøy som deler denne ordretabellen # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Kjør via {WAYPOINT} @@ -4296,6 +4660,7 @@ STR_ORDER_REFIT_ORDER :(Bygg om til {S STR_ORDER_REFIT_STOP_ORDER :(Bygg om til {STRING} og stopp) STR_ORDER_STOP_ORDER :(Stopp) +STR_ORDER_WAIT_TO_UNBUNCH :(Vent for å fjerne klumping) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Kan ikke bruke stasjon){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4356,9 +4721,9 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Rutetabe STR_TIMETABLE_NO_TRAVEL :Ingen reise STR_TIMETABLE_NOT_TIMETABLEABLE :Reis (automatisk; settes på ruteplan med neste manuelle ordre) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reise (uten rutetabell) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis (uten rutetabell) med maks {2:VELOCITY} +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis (uten rutetabell) med inntil {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Reise i {STRING} -STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis i {STRING} med maks {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis i {STRING} med inntil {VELOCITY} STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Reise (i {STRING}, ikke oppsatt i rutetabell) STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Reise (i {STRING}, ikke oppsatt i rutetabell) med høyst {VELOCITY} STR_TIMETABLE_STAY_FOR_ESTIMATED :(opphold i {STRING}, ikke oppsatt i rutetabell) @@ -4373,31 +4738,40 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Dette kj STR_TIMETABLE_STATUS_LATE :{BLACK}Dette kjøretøyet er {STRING} for sent ute STR_TIMETABLE_STATUS_EARLY :{BLACK}Dette kjøretøyet er {STRING} for tidlig ute STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne rutetabellen har ikke blitt startet ennå +STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Denne rutetabellen vill starte {STRING} +STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Denne rutetabellen vil starte om {COMMA} sekunder +STR_TIMETABLE_START :{BLACK}Start rutetabell +STR_TIMETABLE_START_TOOLTIP :{BLACK}Velg når denne rutetabellen starter. Ctrl+klikk for å distribuere start av alle transportmidler som deler denne ordren basert på deres innbyrdes rekkefølge jevnt, hvis ordren er fullstendig beskrevet i rutetabellen +STR_TIMETABLE_START_SECONDS_QUERY :Sekunder til rutetabellen starter STR_TIMETABLE_CHANGE_TIME :{BLACK}Endre tid -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Endre varigheten for den merkede ordren +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Endre hvor lang tid den merkede ordren skal ta. Ctrl+klikk for å sette tiden for alle ordre STR_TIMETABLE_CLEAR_TIME :{BLACK}Nullstill tid -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Fjern varigheten for den merkede ordren +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Fjern varigheten for den merkede ordren. Ctrl+klikk for å fjerne varigheten for alle ordre STR_TIMETABLE_CHANGE_SPEED :{BLACK}Endre fartsgrense -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Endre maks reisehastighet for den merkede ordren +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Endre største reisehastighet for den merkede ordren. Ctrl+klikk for å sette hastigheten for alle ordre STR_TIMETABLE_CLEAR_SPEED :{BLACK}Fjern fartsgrense -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Fjern maks reisehastighet for den merkede ordren +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Fjern største reisehastighet for den merkede ordren. Ctrl+klikk for å fjerne hastigheten for alle ordre STR_TIMETABLE_RESET_LATENESS :{BLACK}Nullstill senhetsteller -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Nullstill senhetstelleren slik at kjøretøyet ankommer i tide +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Nullstill senhetstelleren slik at transportmiddelet ankommer i tide. Ctrl+klikk for å nullstille hele gruppen så det siste transportmiddelet ankommer i tid og alle andre vil være tidlig ute STR_TIMETABLE_AUTOFILL :{BLACK}Fyll automatisk -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fyll ut rutetabellen automatisk med verdiene fra neste tur (Ctrl+klikk for å prøve å beholde ventetider) +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fyll ut rutetabellen automatisk med verdiene fra neste tur Ctrl+klikk for å prøve å beholde ventetider STR_TIMETABLE_EXPECTED :{BLACK}Ventet STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Veksle mellom forventet og planlagt +STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY} +STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} sek +STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} sek # Date window (for timetable) @@ -4410,55 +4784,60 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Velg år # AI debug window -STR_AI_DEBUG :{WHITE}AI/Spillskript-feilsøking +STR_AI_DEBUG :{WHITE}KI/Game Script-feilsøking STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Navnet til AIen +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Navnet til KI-en STR_AI_DEBUG_SETTINGS :{BLACK}Innstillinger STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Endre skriptinnstillinger -STR_AI_DEBUG_RELOAD :{BLACK}Last inn AI på nytt -STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Slå av AI, last skript på nytt, og start AI på nytt -STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Tillat/nekt bryt når en AI-loggbeskjed tilsvarer brytstrengen +STR_AI_DEBUG_RELOAD :{BLACK}Last inn KI på nytt +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Slå av KI, last skript på nytt, og start KI på nytt +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Tillat/nekt bryt når en KI-loggbeskjed tilsvarer brytstrengen STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Bryt på: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Bryt på -STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Når en AI-loggbeskjed tilsvarer denne strengen, settes spillet på pause. +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Når en KI-loggbeskjed tilsvarer denne strengen, settes spillet på pause. STR_AI_DEBUG_MATCH_CASE :{BLACK}Skriftformgjenkjennelse -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Veksle mellom skriftformgjenkjennelse ved sammenligning av AI-loggbeskjeder mot bruddstrengen +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Veksle mellom skriftformgjenkjennelse ved sammenligning av KI-loggbeskjeder mot bruddstrengen STR_AI_DEBUG_CONTINUE :{BLACK}Fortsett -STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Slå av pause og fortsett AIen -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vis feilsøkingsresultater fra denne AIen -STR_AI_GAME_SCRIPT :{BLACK}Spillskript -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Sjekk spillskriptloggen +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Slå av pause og fortsett KI-en +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vis feilsøkningsresultater fra denne KI-en. Ctrl+klikk for å åpne i et nytt vindu +STR_AI_GAME_SCRIPT :{BLACK}Game Script +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Sjekk "Game Script"-loggen. Ctrl+klikk for å åpne i et nytt vindu -STR_ERROR_AI_NO_AI_FOUND :Ingen passende AI ble funnet.{}Denne AIen er en plassholder og vil ikke gjøre noe.{}Du kan laste ned flere AIer fra nettet med spillets nedlastingssystem. -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Et skript krasjet. Vennligst rapporter dette til skript-forfatteren med et skjermbilde av AI/Spillskript feilsøkingsvinduet -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Spillskript-feilsøkingsvindu er kun tilgjengelig for tjeneren +STR_ERROR_AI_NO_AI_FOUND :Fant ingen passende KI.{}Denne KI-en er en plassholder og vil ikke gjøre noe.{}Du kan laste ned flere KI-er via spillets system for nedlastning av innhold. +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Et skript krasjet. Vennligst rapporter dette til skriptforfatteren med et skjermbilde av feilsøkingsvinduet for KI/Game Script +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Feilsøkingsvindu for KI/Game Script er kun tilgjengelig for tjeneren # AI configuration window -STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Spillskriptet som vil bli lastet i neste spill -STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AI-ene som vil bli lastet i neste spill +STR_AI_CONFIG_CAPTION_AI :{WHITE}KI-innstillinger +STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}Game Script-innstillinger +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Game Script-et som vil bli lastet i neste spill +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}KI-ene som vil bli lastet i neste spill STR_AI_CONFIG_HUMAN_PLAYER :Menneskelig spiller -STR_AI_CONFIG_RANDOM_AI :Tilfeldig AI +STR_AI_CONFIG_RANDOM_AI :Tilfeldig KI STR_AI_CONFIG_NONE :(ingen) -STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Maks antall motstandere: {ORANGE}{COMMA} +STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} +STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Største antall konkurrenter: {ORANGE}{COMMA} +STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Intervall mellom start av konkurrenter: {ORANGE}{COMMA} minutt{P "" er} STR_AI_CONFIG_MOVE_UP :{BLACK}Flytt opp -STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Flytt valgte AI oppover i listen +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Flytt valgte KI oppover i listen STR_AI_CONFIG_MOVE_DOWN :{BLACK}Flytt ned -STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Flytt valgte AI nedover i listen +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Flytt valgte KI nedover i listen -STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spillskript -STR_AI_CONFIG_AI :{SILVER}AI-er +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Game Script +STR_AI_CONFIG_GAMESCRIPT_PARAM :{SILVER}Parametre +STR_AI_CONFIG_AI :{SILVER}KI-er -STR_AI_CONFIG_CHANGE_AI :AI -STR_AI_CONFIG_CHANGE_GAMESCRIPT :Spillskript -STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Last enda et skript +STR_AI_CONFIG_CHANGE_AI :{BLACK}Velg KI +STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Velg Game Script +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Last enda et skript. Ctrl+klikk for å vise alle tilgjengelige versjoner STR_AI_CONFIG_CONFIGURE :{BLACK}Konfigurer STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfigurer skriptparametrene # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Tilgjengelige {STRING} -STR_AI_LIST_CAPTION_AI :AI-er -STR_AI_LIST_CAPTION_GAMESCRIPT :Spillskript +STR_AI_LIST_CAPTION_AI :KI-er +STR_AI_LIST_CAPTION_GAMESCRIPT :Game Script STR_AI_LIST_TOOLTIP :{BLACK}Klikk for å velge et skript STR_AI_LIST_AUTHOR :{LTBLUE}Forfatter: {ORANGE}{STRING} @@ -4472,29 +4851,41 @@ STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ikke end STR_SCREENSHOT_CAPTION :WHITE}Ta skjermbilde STR_SCREENSHOT_SCREENSHOT :{BLACK}Normalt skjermbilde -STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Skjermbilde med maksimal zoom +STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Fullt innzoomet skjermbilde STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Standard zoomet skjermbilde STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Skjermbilde av hele kartat STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Høydekart skjermbilde STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Oversiktskart skjermbilde # Script Parameters -STR_AI_SETTINGS_CAPTION_AI :AI +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametre +STR_AI_SETTINGS_CAPTION_AI :KI +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script STR_AI_SETTINGS_CLOSE :{BLACK}Lukk STR_AI_SETTINGS_RESET :{BLACK}Tilbakestill STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window +STR_TEXTFILE_JUMPLIST :{WHITE}Innholdsfortegnelse +STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Hopp raskt til en seksjon i den viste filen med denne listen +STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} +STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Gå tilbake i navigasjonshistorikken +STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Gå fremover igjen i navigasjonshistorikken STR_TEXTFILE_WRAP_TEXT :{WHITE}Bryt teksten -STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Bryt teksten i vinduet så alt passer uten å måtte skrolle -STR_TEXTFILE_VIEW_README :{BLACK}Se på hjelpefilen +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Bryt teksten i vinduet så alt passer uten å måtte rulle +STR_TEXTFILE_VIEW_README :{BLACK}Hjelpefil +STR_TEXTFILE_VIEW_README_TOOLTIP :Vis hjelpefil for dette innholdet STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Endringslogg +STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Vis endringslogg for dette innholdet STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisens +STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Vis lisensen for dette innholdet ###length 5 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} hjelpefil til {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} endringslogg til {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} lisens til {STRING} +STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Forhåndsvis undersøkelsesresultater +STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD-dokument '{STRING}' # Vehicle loading indicators @@ -4523,11 +4914,11 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Anslått # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Lagring pågår enda,{}vennligst vent til den er klar! -STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autolagring feilet +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatisk lagring mislyktes STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke lese fra disk -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lagring av spillet mislyktes{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lagring av spillet mislyktes... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Feil ved lasting av spill{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Lasting av spill mislyktes... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern feil: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ødelagt lagret spill - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillet er lagret i en nyere versjon @@ -4582,7 +4973,7 @@ STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan ikke STR_ERROR_SITE_UNSUITABLE :{WHITE}...{NBSP}feltet er uegnet STR_ERROR_ALREADY_BUILT :{WHITE}... allerede bygget STR_ERROR_OWNED_BY :{WHITE}...{NBSP}eies av {STRING} -STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... området eies av et annet firma +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... området eies av et annet selskap STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... grense for landskapsendring er nådd STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... ruterensingens grense nådd STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... tre planterings grense nådd @@ -4591,9 +4982,9 @@ STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRIN STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ikke tillatt mens spillet er på pause # Local authority errors -STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN}s bystyre nekter deg å gjøre dette. -STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN}s bystyre tillater ikke flere flyplasser i denne byen -STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN}s bystyre nekter deg byggetillatelse til flyplass her pga. støybekymringer +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN}s lokale myndigheter nekter å tillate dette +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN}s lokale myndigheter tillater ikke enda en flyplass i denne byen +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN}s lokale myndigheter nekter deg byggetillatelse til flyplass på grunn av støybekymringer STR_ERROR_BRIBE_FAILED :{WHITE}Bestikkelsen du forsøkte har blitt oppdaget av en regional etterforsker # Levelling errors @@ -4607,21 +4998,21 @@ STR_ERROR_ALREADY_LEVELLED :{WHITE}... alle STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Etterpå vil broen over den være for høy. # Company related errors -STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan ikke endre firmaets navn... -STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Kan ikke endre sjefens navn... +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan ikke endre selskapets navn... +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Kan ikke endre lederens navn... -STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maks lån er {CURRENCY_LONG} +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... største tillatte lån er {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kan ikke låne mer penger... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... ingen lån å tilbakebetale STR_ERROR_CURRENCY_REQUIRED :{WHITE}... du trenger {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kan ikke betale tilbake lån... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kan ikke gi bort penger som er lånt fra banken... -STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Kan ikke gi bort penger til dette firmaet... -STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan ikke kjøpe firma... -STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan ikke bygge firmaets hovedkontor... +STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Kan ikke gi bort penger til dette selskapet... +STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan ikke kjøpe selskap... +STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan ikke bygge selskapets hovedkontor... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan ikke grunnlegge noen byer +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan ikke grunnlegge noen byer... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kan ikke endre navn på byen... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kan ikke grunnlegge by her... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kan ikke utvide byen... @@ -4630,14 +5021,16 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}...{NBSP STR_ERROR_TOO_MANY_TOWNS :{WHITE}...{NBSP}for mange byer STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... det er ikke mer plass på kartet STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Veiarbeid i gang -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan ikke fjerne denne byen...{}En stasjon eller garasje/stall/hangar/dokk henviser til byen eller en by-eid rute som ikke kan fjernes +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan ikke fjerne denne byen...{}En stasjon eller garasje/stall/hangar/dokk henviser til byen eller en byeid rute som ikke kan fjernes STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... det er ingen passende steder for en statue i sentrum av denne byen +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Kan ikke bygge hus... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... for mange industrier STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan ikke generere industrier... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kan ikke bygge {STRING} her... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Kan ikke bygge denne typen industri her... +STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}Kan ikke utvikle industri... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... for nærme en annen industri STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... må grunnlegge en by først STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...{NBSP}kun én tillates per by @@ -4652,28 +5045,32 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skog STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kan kun bygges over snøgrensen STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kan kun bygges under snøgrensen +STR_ERROR_PROSPECTING_WAS_UNLUCKY :{WHITE}Finansieringen mislyktes på grunn av uflaks; prøv igjen +STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}Det var ingen passende steder å utvikle denne industrien STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Det var ingen egnede steder for '{STRING}' bransjer -STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Endre parametrene for kart-generering for å få et bedre kart +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Endre parametrene for kartgenerering for å få et bedre kart # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan ikke bygge jernbanestasjon her... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikke bygge busstasjon... -STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan ikke bygge lasteterminal... -STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kan ikke bygge trikkestasjon for passasjerer... -STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kan ikke bygge trikkestasjon for varer... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan ikke bygge godsterminal... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kan ikke bygge trikkestopp for passasjerer... +STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kan ikke bygge trikkestopp for varer... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Kan ikke bygge havn her... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kan ikke bygge lufthavn her... -STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenser til mer enn én eksisterende stasjon/lasteterminal +STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenser til mer enn én eksisterende stasjon/godsterminal STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}...{NBSP}stasjonen er spredd for mye -STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}For mange stasjoner/lasteterminaler +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... ugyldig antall spor +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... ugyldig lengde +STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}For mange stasjoner/godsterminaler STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}For mange enkeltdeler på jernbanestasjonen STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}For mange bussholdeplasser -STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}For mange lasteterminaler +STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}For mange godsterminaler STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}For nærme enn annen havn STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}For nærme en annen flyplass STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Kan ikke endre stasjonens navn... -STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... denne veien er eid av en by +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... veien er eid av en by STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... veien vender i feil retning STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... gjennomkjøringsstopper kan ikke ha hjørner STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... gjennomkjøringsstopper kan ikke ha kryss @@ -4682,32 +5079,35 @@ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... gjen STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne del av stasjonen... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Må fjerne jernbanestasjon først STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kan ikke fjerne busstasjonen... -STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan ikke fjerne lasteterminalen... -STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kan ikke fjerne trikkestasjon for passasjerer... -STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kan ikke fjerne trikkestasjon for varer... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan ikke fjerne godsterminalen... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kan ikke fjerne trikkestopp for passasjerer... +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kan ikke fjerne trikkestopp for varer... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Må fjerne stoppested først STR_ERROR_THERE_IS_NO_STATION :{WHITE}... det finnes ingen stasjon her STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Må rive jernbanestasjon først STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Må rive bussterminal først -STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Må rive lasteterminal først -STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Må rive trikkestasjon for passasjerer først -STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Må rive trikkestasjon for varer først +STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Må rive godsterminal først +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Må rive trikkestopp for passasjerer først +STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Må rive trikkestopp for varer først STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Må rive havn først STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Må rive flyplass først # Waypoint related errors -STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenser til flere enn ett eksisterende kontrollpunkt -STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}For nærme et annet kontrollpunkt +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenser til flere enn ett eksisterende veipunkt +STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}For nærme et annet veipunkt -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan ikke bygge kontrollpunkt for tog her... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan ikke bygge veipunkt for tog her... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Kan ikke bygge veipunkt for vei her... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kan ikke plassere bøye her... -STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan ikke endre navn på kontrollpunkt... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan ikke endre navn på veipunkt... -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan ikke fjerne kontrollpunkt for tog her... -STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Må fjerne kontrollpunkt for tog først +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan ikke fjerne veipunkt for tog her... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Kan ikke fjerne veipunkt for vei her... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Må fjerne veipunkt for tog først +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Må fjerne veipunkt for vei først STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... bøyen er i veien -STR_ERROR_BUOY_IS_IN_USE :{WHITE}... bøyen er i bruk av et annet firma! +STR_ERROR_BUOY_IS_IN_USE :{WHITE}... bøyen er i bruk av et annet selskap! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan ikke bygge togstall her... @@ -4724,25 +5124,30 @@ STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... må STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Tog kan kun endres når det har stoppet i togstallen STR_ERROR_TRAIN_TOO_LONG :{WHITE}Toget er for langt -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kan ikke snu om kjøreretningen til kjøretøy... +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kan ikke reversere retningen til jernbanemateriell... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... består av flere deler STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Inkompatible jernbanetyper STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kan ikke flytte kjøretøy... -STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Bakre maskin vil alltid følge det fremste motstykket +STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Bakre lokomotiv vil alltid følge fremre lokomotiv STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Finner ingen rute til nærmeste garasje/stall/hangar/dokk STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan ikke finne en garasje/stall/hangar/dokk i nærheten STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Feil type garasje/stall/hangar/dokk # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... kan bare ha én ordre om å fjerne klumping +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... kan ikke bruke full last-ordre når kjøretøyet har en ordre om å fjerne klumping +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... kan ikke fjerne klumping på et kjøretøy med en full last-ordre +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... kan ikke bruke betingede ordre når kjøretøyet har en ordre om å fjerne klumping +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... kan ikke fjerne klumping på et kjøretøy med en betinget ordre # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} er for langt etter utskiftning -STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ingen autoerstatt/fornyelseregler satt. +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ingen autoerstatning/fornyelseregler satt STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(pengegrense) STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Nytt kjøretøy kan ikke frakte {STRING} -STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Nytt kjøretøy kan ikke bygges på nytt {NUM} +STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Nytt transportmiddel kan ikke bygges om i ordre {NUM} # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Umulig sporkombinasjon @@ -4818,9 +5223,10 @@ STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunn STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... for mange objekter STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Kan ikke bygge objekt... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objekt er i veien -STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... firmaets hovedkontor er i veien +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... selskapets hovedkontor er i veien STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kan ikke kjøpe dette landområdet... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... du eier det allerede! +STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}... nådd grense for byggetiltak # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan ikke opprette gruppe... @@ -4841,7 +5247,7 @@ STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Skip i v STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Luftfartøy i veien ###length VEHICLE_TYPES -STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Jernbanekjøretøyet er ikke tilgjengelig +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Jernbanemateriellet er ikke tilgjengelig STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Kjøretøyet er ikke tilgjengelig STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Skipet er ikke tilgjengelig STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Luftfartøyet er ikke tilgjengelig @@ -4865,25 +5271,25 @@ STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Kan ikke STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kan ikke stoppe/starte luftfartøy... ###length VEHICLE_TYPES -STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kan ikke sende tog til togstall... +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kan ikke sende tog til togstallen... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Kan ikke sende kjøretøy til garasjen... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kan ikke sende skip til skipsdokken... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kan ikke sende luftfartøy til hangar... ###length VEHICLE_TYPES -STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kan ikke kjøpe jernbanekjøretøy... +STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kan ikke kjøpe jernbanemateriell... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kan ikke kjøpe kjøretøy... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Kan ikke kjøpe skip... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Kan ikke kjøpe luftfartøy... ###length VEHICLE_TYPES -STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kan ikke gi lokomotiv-/vogntypen nytt navn... +STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kan ikke gi jernbanemateriellet nytt navn... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kan ikke gi kjøretøytypen nytt navn... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Kan ikke gi skipstypen nytt navn... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Kan ikke gi luftfartøytypen nytt navn... ###length VEHICLE_TYPES -STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kan ikke selge jernbanekjøretøy... +STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kan ikke selge jernbanemateriell... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kan ikke selge kjøretøy... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Kan ikke selge skip... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Kan ikke selge luftfartøy... @@ -4893,15 +5299,21 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}...{NBSP}kjøretøy er ødelagt +STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}... alle kjøretøy er ikke identiske STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ingen kjøretøyer vil være tilgjengelig i det hele tatt STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Endre din NewGRF konfigurasjon STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ingen kjøretøyer er tilgjengelig ennå STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Starte et nytt spill etter {DATE_SHORT}, eller bruke en NewGRF som inneholder tidlige kjøretøy +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Ingen veityper som kan bygges i byer er tilgjengelig +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Endre NewGRF-innstillingene dine +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Ingen veityper som kan bygges i byer er tilgjengelig ennå +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Start et nytt spill etter {DATE_SHORT} eller bruk en NewGRF som tilbyr tidlige veityper som kan bygges av byer + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikke tvinge tog til å passere signal ved fare... -STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikke snu om toget... +STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikke reversere toget... STR_ERROR_TRAIN_START_NO_POWER :Tog mangler kraft STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Kan ikke snu om kjøretøy... @@ -4920,19 +5332,36 @@ STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Kan ikke STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... kjøretøyet kan ikke nå alle stasjoner STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... kjøretøyet kan ikke gå til den stasjonen STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... et kjøretøy som deler denne ordren kan ikke gå til den stasjonen +STR_ERROR_CAN_T_COPY_ORDER_VEHICLE_LIST :{WHITE}... ikke alle kjøretøyene har like ordre +STR_ERROR_CAN_T_SHARE_ORDER_VEHICLE_LIST :{WHITE}... Alle transportmidler deler ikke ordre STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Kan ikke dele ordreliste... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Kan ikke stoppe deling av ordreliste... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Kan ikke kopiere ordreliste... -STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}...{NBSP}for langt i fra forrige destinasjon +STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... for langt fra forrige bestemmelsessted STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... luftfartøy har ikke stor nok rekkevidde # Extra messages which go on the third line of errors, explaining why orders failed +STR_ERROR_NO_RAIL_STATION :{WHITE}Det finnes ingen jernbanestasjon +STR_ERROR_NO_BUS_STATION :{WHITE}Det finnes ingen busstasjon +STR_ERROR_NO_TRUCK_STATION :{WHITE}Det finnes ingen godsterminal +STR_ERROR_NO_DOCK :{WHITE}Det finnes ingen havn +STR_ERROR_NO_AIRPORT :{WHITE}Det finnes ingen lufthavn +STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Det er ingen holdeplasser med en kompatibel veitype +STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Det er ingen holdeplasser med en kompatibel trikketype +STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Det er ingen holdeplasser som egner seg for leddede kjøretøy{}Leddede kjøretøy krever holdeplasser med gjennomkjøring +STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Dette flyet kan ikke lande på denne helikopterplassen +STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Dette helikopteret kan ikke lande på denne flyplassen +STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Det finnes ingen jernbaneveipunkt +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Det finnes ingen veipunkt for vei +STR_ERROR_NO_BUOY :{WHITE}Det finnes ingen bøye # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan ikke gi kjøretøyet rutetabell... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Kjøretøy kan bare vente på stasjoner STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Dette kjøretøyet stopper ikke på denne stasjonen. +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... rutetabell er ufullstendig +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... rutetabellen har ikke startet ennå # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... for mange skilt @@ -5008,7 +5437,7 @@ STR_INDUSTRY_NAME_FARM :{G=masculine}G STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=feminine}Kobbergruve STR_INDUSTRY_NAME_OIL_WELLS :{G=masculine}Oljebrønn STR_INDUSTRY_NAME_BANK :{G=masculine}Bank -STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=masculine}Matforedlingsfabrikk +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=masculine}Matvareindustri STR_INDUSTRY_NAME_PAPER_MILL :{G=masculine}Papirfabrikk STR_INDUSTRY_NAME_GOLD_MINE :{G=feminine}Gullgruve STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=masculine}Bank @@ -5040,7 +5469,7 @@ STR_INDUSTRY_NAME_SUGAR_MINE :{G=feminine}Suk STR_SV_EMPTY : STR_SV_UNNAMED :Uten navn STR_SV_TRAIN_NAME :Tog #{COMMA} -STR_SV_ROAD_VEHICLE_NAME :Vegkjøretøy #{COMMA} +STR_SV_ROAD_VEHICLE_NAME :Kjøretøy #{COMMA} STR_SV_SHIP_NAME :Skip #{COMMA} STR_SV_AIRCRAFT_NAME :Luftfartøy #{COMMA} @@ -5057,7 +5486,7 @@ STR_SV_STNAME_VALLEY :{STRING}dalen STR_SV_STNAME_HEIGHTS :{STRING}haugen STR_SV_STNAME_WOODS :{STRING}vollen STR_SV_STNAME_LAKESIDE :{STRING}sjøen -STR_SV_STNAME_EXCHANGE :{STRING}moen +STR_SV_STNAME_EXCHANGE :{STRING}krysset STR_SV_STNAME_AIRPORT :{STRING} lufthavn STR_SV_STNAME_OILFIELD :{STRING} oljefelt STR_SV_STNAME_MINES :{STRING}gruva @@ -5127,7 +5556,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sukkervogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Sukkerspinnvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Karamellvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Boblevogn -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Colavogn +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Colatankvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Godterivogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Leketøyvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Batterivogn @@ -5141,7 +5570,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Postvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kullvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Oljetankvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Buskapsvogn -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Godsvogn +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Varebil STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Kornvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Tømmervogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Jernmalmvogn @@ -5157,7 +5586,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sukkervogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Sukkerspinnvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Karamellvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Boblevogn -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Colavogn +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Colatankvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Godterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Leketøyvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Batterivogn @@ -5173,7 +5602,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Postvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kullvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Oljetankvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Buskapsvogn -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Godsvogn +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Varebil STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Kornvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Tømmervogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Jernmalmvogn @@ -5189,7 +5618,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sukkervogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Sukkerspinnvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Karamellvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Boblevogn -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Colavogn +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Colatankvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Godterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Leketøyvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Batterivogn @@ -5219,9 +5648,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry-tankbil f STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott-lastebil for buskap STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl-lastebil for buskap STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster-lastebil for buskap -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh-lastebil for gods -STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead-lastebil for gods -STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss-lastebil for gods +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh-lastebil for varer +STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead-lastebil for varer +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss-lastebil for varer STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford-lastebil for korn STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas-lastebil for korn STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss-lastebil for korn @@ -5294,10 +5723,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP-passasjerfe STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300-luftputeskip STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug-passasjerferje STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake-passasjerferje -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate kontainerskip -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell kontainerskip -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover kontainerskip -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut kontainerskip +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate-kontainerskip +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell-kontainerskip +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover-kontainerskip +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut-kontainerskip ###length 41 STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 @@ -5349,7 +5778,7 @@ STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM} -STR_FORMAT_COMPANY_NUM :(Firma {COMMA}) +STR_FORMAT_COMPANY_NUM :(Selskap {COMMA}) STR_FORMAT_GROUP_NAME :Gruppe {COMMA} STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} @@ -5359,8 +5788,8 @@ STR_FORMAT_BUOY_NAME :{TOWN} Bøye STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Bøye #{COMMA} ###length 2 -STR_FORMAT_WAYPOINT_NAME :{TOWN} Kontrollpunkt -STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Kontrollpunkt # {COMMA} +STR_FORMAT_WAYPOINT_NAME :{TOWN} Veipunkt +STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Veipunkt #{COMMA} ###length 6 STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Togstall @@ -5378,6 +5807,7 @@ STR_UNKNOWN_STATION :ukjent stasjon STR_DEFAULT_SIGN_NAME :Skilt STR_COMPANY_SOMEONE :noen +STR_SAVEGAME_DURATION_REALTIME :{NUM}t {NUM}m STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Tilskuer, {1:STRING} @@ -5411,18 +5841,28 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}mill +STR_CURRENCY_SHORT_GIGA :{NBSP}mrd +STR_CURRENCY_SHORT_TERA :{NBSP}bn + STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} +STR_JUST_DECIMAL :{DECIMAL} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 9cfadd3aab..afbde4eb18 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -382,6 +382,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Avbryt redigeri STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Avslutt + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Spelinstillingar @@ -855,7 +856,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaei STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Vel valutaeining -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Pund STR_GAME_OPTIONS_CURRENCY_USD :Dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -934,6 +935,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Tilleggs + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Kunne ikkje henta liste over støtta oppløysingar STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskjermvising feila @@ -945,6 +947,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Reduser STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Auk verdien av din valuta sett opp mot eitt pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Sett valutakursen for eitt pund (£) + STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Vel prefiks for din valuta STR_CURRENCY_SUFFIX :{LTBLUE}Suffiks: {ORANGE}{STRING} @@ -1264,6 +1267,7 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :Alle køyretøy STR_CONFIG_SETTING_WARN_INCOME_LESS :Åtvar dersom eit køyretøy har negativ inntekt: {STRING} ###length 2 + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Køyretøy utgår aldri: {STRING} ###length 2 @@ -1511,7 +1515,8 @@ STR_CONFIG_SETTING_SERVINT_TRAINS :Standard vedlik STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard vedlikehaldsintervall for veg-køyrety: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard vedlikehaldsintervall for fly: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS :Standard vedlikehaldsintervall for skip: {STRING} -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" s}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktivert @@ -1748,17 +1753,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Varefordeling STR_CONFIG_SETTING_AI :Motstandarar STR_CONFIG_SETTING_AI_NPC :Datamaskinspelarar -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Vegfinnar for tog: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Kva for vegfinnar som skal nyttast for tog -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Vegfinnar for køyretøy på vegar: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Kva for vegfinnar som skal nyttast for bilar og bussar -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Vegfinnar for skip: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Kva for vegfinnar som skal nyttast for skip STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatisk reversering ved signal: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :La tog snu ved signal, når dei har venta lengje -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Anbefalt) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Byt innstillingsverdi @@ -2027,7 +2023,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Hentar f STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Koble frå STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tenaren er beskytta. Skriv inn passord -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firmaet er beskytta. Skriv inn passord # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Liste over klientar @@ -2043,19 +2038,9 @@ STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Liste over klie STR_NETWORK_SPECTATORS :Tilskodarar -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ikkje lagre passordet -STR_COMPANY_PASSWORD_OK :{BLACK}Gje firmaet det nye passordet -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Firmapassord -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standard passord for firma -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Bruk passordet fra dette firmaet som standard for nye firma - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Knytt til STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Knytt til og spel som dette firmaet -STR_COMPANY_VIEW_PASSWORD :{BLACK}Passord -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Passordbeskytt firmaet ditt slik at ikkje alle og einkvar kan verte med. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Vel firmapassord # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send @@ -2094,7 +2079,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Datamask STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mogleg tilkoblingsbrot STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Dei siste {NUM} sekund er ingen data mottatt frå serveren -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :generell feil STR_NETWORK_ERROR_CLIENT_DESYNC :synkroniseringsfeil STR_NETWORK_ERROR_CLIENT_SAVEGAME :klarte ikkje å laste inn kartet @@ -2290,7 +2275,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Vel retn # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Kontrollpunkt -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vel kontrollpunkttype # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Vel jernbanestasjontype @@ -2303,8 +2287,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Vel kor STR_STATION_BUILD_DRAG_DROP :{BLACK}Dra og slipp STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bygg stasjon med dra og slipp -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vel den stasjonstypen som skal visast -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vel stasjonen du vil byggje + + + STR_STATION_CLASS_DFLT :Standard stasjon STR_STATION_CLASS_WAYP :Kontrollpunkt @@ -2435,8 +2420,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kjøp la # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektval -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Vel objekt å byggje. Skift vekslar mellom byggjing/syning av prisoverslag. -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Velg objekttype du vil byggje STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Førehandsvisning av objektet STR_OBJECT_BUILD_SIZE :{BLACK}Storleik: {GOLD}{NUM} x {NUM} ruter @@ -2536,7 +2519,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trikkesp STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Jernbaneskjene-eigar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bystyret: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatar: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Byggd: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasjonsklasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasjontype: {LTBLUE}{STRING} @@ -2757,9 +2739,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}{NB STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Generer ei verd STR_GENERATION_RIVER_GENERATION :{BLACK}Elvgenerering -STR_GENERATION_TREE_GENERATION :{BLACK}Tregenerering -STR_GENERATION_OBJECT_GENERATION :{BLACK}Ikkje-flyttbar generering STR_GENERATION_CLEARING_TILES :{BLACK}Generering av ulendt og steinete område +STR_GENERATION_OBJECT_GENERATION :{BLACK}Ikkje-flyttbar generering +STR_GENERATION_TREE_GENERATION :{BLACK}Tregenerering STR_GENERATION_SETTINGUP_GAME :{BLACK}Klargjer spelet STR_GENERATION_PREPARING_TILELOOP :{BLACK}Køyrer rute-løkkje STR_GENERATION_PREPARING_SCRIPT :{BLACK}Kjøyrande script @@ -2844,7 +2826,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Jernbanetype STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF-variabel 60+x parameter (heksadesimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Forskyver sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Neste sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over einhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved byrjinga STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til sprite @@ -2948,7 +2929,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gå til STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Skriv inn eit namn for skiltet # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Byar STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ingen - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bynamn - Klikk på bynamnet for å sjå byen i hovedvisninga. Ctrl+klikk syner byen i eit nytt tilleggsvindauge. @@ -3225,7 +3205,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stasjons STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flyplassar # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industriar STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ingen - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrinamn - Klikk på namnet for å syne industrien i hovedvisninga. CTRL+klikk syner industrien i eit tilleggsvindauge @@ -4036,9 +4015,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Berekna STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Lagring foregår framleis,{}ver venleg å vente til det er ferdig! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autolagring gjekk gale STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikkje lese frå disk -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lagring av spelet mislukkast{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikkje slette fil -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Feil ved henting av spel{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern feil: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Øydelagd lagra spel - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spelet er lagra i ein nyare versjon @@ -4399,6 +4376,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Byt NewG STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Det finst ikkje nokon køyretøy enno STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start spelet etter {DATE_SHORT} eller bruk ein GRF som har køyretøy frå tidlegare tider + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikkje tvinge tog til å passere signal ved fare... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikkje snu toget... @@ -4908,6 +4886,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/persian.txt b/src/lang/persian.txt index 4f7369d29a..ccd185581d 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -188,6 +188,7 @@ STR_COLOUR_GREY :خاکستری STR_COLOUR_WHITE :سفید ###length 17 +STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :همانند اصلی # Units used in OpenTTD @@ -199,6 +200,9 @@ STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP} STR_UNITS_POWER_METRIC :{DECIMAL}{NBSP}اسب بخار STR_UNITS_POWER_SI :{DECIMAL}{NBSP}کیلووات +STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}hp/t +STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}hp/t +STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_SI :{DECIMAL}{NBSP}hp/Mg STR_UNITS_WEIGHT_SHORT_METRIC :{DECIMAL}{NBSP}تن STR_UNITS_WEIGHT_SHORT_SI :{DECIMAL}{NBSP}کیلوگرم @@ -372,6 +376,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :خارج شدن STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :خروج + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :تنظیمات بازی @@ -838,6 +843,14 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}موقع # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}تنظیمات بازی +STR_GAME_OPTIONS_TAB_GENERAL :عمومی +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}تنظیمات عمومی خود را انتخاب کنید +STR_GAME_OPTIONS_TAB_GRAPHICS :گرافیک +STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}تنظیمات گرافیکی خود را انتخاب کنید +STR_GAME_OPTIONS_TAB_SOUND :صدا +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}تنظیمات صدا و موسیقی خود را انتخاب کنید +STR_GAME_OPTIONS_TAB_SOCIAL :اجتماعی +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}تنظیمات ادغام اجتماعی خود را انتخاب کنید @@ -845,7 +858,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}واحد STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}انتخب واحد پول -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :پوند STR_GAME_OPTIONS_CURRENCY_USD :دلار STR_GAME_OPTIONS_CURRENCY_EUR :یورو @@ -924,6 +937,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}اطلا + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}ناتوان در گرفتن تنظیمات نمایش STR_ERROR_FULLSCREEN_FAILED :{WHITE}حالت تمام صفحه با شکست مواجه شد @@ -935,6 +949,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}کم ک STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}زیاد کردن ارزش واحد پول در ازای یک پوند (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}نرخ ارز واحد پول را در ازای یک پوند تنظیم کنید (£) + STR_CURRENCY_PREFIX :{LTBLUE}پیشوند: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}پیشوند واحد پولتان را انتخاب کنید STR_CURRENCY_SUFFIX :{LTBLUE}پسوند: {ORANGE}{STRING} @@ -1200,6 +1215,7 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :از همه خ STR_CONFIG_SETTING_WARN_INCOME_LESS :هشدار هنگام منفی بودن درآمد خودرو: {STRING} ###length 2 + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :وسایل نقلیه هیچگاه از بین نروند: {STRING} ###length 2 @@ -1237,7 +1253,8 @@ STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(فقط ترا STR_CONFIG_SETTING_INDUSTRY_DENSITY :تراکم مراکز تولید: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :چند کارخانه باید ایجاد شود و در چه درجه ای باید در بازی نگهداری شود -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :تمام پالایشگاه ها در لبه های تقشه ساخته می شوند که ساحل جزیره است +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :حداکثر فاصله از لبه برای صنایع نفتی: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :محدودیت برای میزان فاصله ای که نسبت به مرز نقشه سکو های نفتی و پالایشگاه نفت می‌توانند بنا شوند. در نقشه های جزیره ای این اطمینان حاصل میکند که کنار ساحل باشند. در نقشه های بزرگتر از ۲۵۶ کاشی، این مقدار افزایش می یابد STR_CONFIG_SETTING_SNOWLINE_HEIGHT :ارتفاع خط برف: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :ارتفاع خط برف را در مناطق نیمه قطبی کنترل کنید. وجود برف بر ایجاد صنایع و اقلام ضروری رشد شهر تاثیر میگذارد. @@ -1347,6 +1364,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :همه کاره STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :همه کارها STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :اسنفاده گروهی از لیست خودرو: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :فعال سازی استفاده از لیست های وسایل نقلیه پیشرفته برای گروه بندی STR_CONFIG_SETTING_LOADING_INDICATORS :استفاده از نشانه‌های بارگیری/بارگذاری: {STRING} @@ -1403,6 +1421,8 @@ STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes before STR_CONFIG_SETTING_SERVINT_ISPERCENT :درصد زمان برای تعمیر/نگهداری به نسبت زمان کار: {STRING} +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_NOSERVICE :غیرفعال کردن تعمیر/بازنگری کلیه وسایل نقلیه وقتی که طبق تنظیمات بازی خودرو ها خراب نشوند : {STRING} @@ -1573,13 +1593,7 @@ STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :توزیع مح STR_CONFIG_SETTING_AI :رقیبان STR_CONFIG_SETTING_AI_NPC :بازیگران رایانه -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :مسیریاب برای قطارها: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :مسیریاب برای خودروهای جاده ای: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :مسیریاب برای کشتی ها: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :برگشت خودکار با رسیدن به نشانه ها: {STRING} -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(توصیه می گردد) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}تغییر مقدار @@ -1838,12 +1852,13 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}درخو STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}قطع STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}سرویس دهنده محافظت شده است.رمز را وارد نمایید -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}شرکت محافظت شده است.رمز را وارد نمایید # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}لیست سرویس گیرنده ها # Network client list +STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}این شمایید +STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}این شخص میزبان بازی است # Matches ConnectionType ###length 5 @@ -1855,19 +1870,9 @@ STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}آیا STR_NETWORK_SPECTATORS :تماشاگران -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}رمز وارد شده را به خاطر نسپار -STR_COMPANY_PASSWORD_OK :{BLACK}دادن رمز جدید به شرکت -STR_COMPANY_PASSWORD_CAPTION :{WHITE}رمز شرکت -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}رمز پیش فرض شرکت -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}استفاده از این رمز شرکت به عنوان پیش فرض برای شرکت های جدید - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}پیوستن STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}پیوستن و بازی به عنوان این شرکت -STR_COMPANY_VIEW_PASSWORD :{BLACK}رمز -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}شرکت خود را با رمز محافظت کنید تا هر بازیگری نتواند به شرکت شما بپیوندد -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}ثبت رمز جدید # Network chat STR_NETWORK_CHAT_SEND :{BLACK}ارسال @@ -1906,7 +1911,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}شما STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}اتصال مورد استفاده قطع شد STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}در {NUM} ثانیه گذشته هیچ داده ای از سرویس دهنده دریافت نگردیده -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :خطای اصلی STR_NETWORK_ERROR_CLIENT_DESYNC :خطای ناهمگام سازی STR_NETWORK_ERROR_CLIENT_SAVEGAME :نمی توان نقشه را بارگزاری کرد @@ -1951,6 +1956,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ب STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} یک شرکت جدید آغاز کرد (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} از بازی بیرون رفت ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} نامش را به {STRING} تغییر داد +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {0:STRING} داد {2:CURRENCY_LONG} به {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}سرویس دهنده جلسه را تعطیل کرد STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}راه اندازی مجدد سرویس دهنده...{}لطفا صبر کنید... @@ -2097,7 +2103,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}جهت # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}نقطه مسیر -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}نوع نقطه مسیر را انتخاب نمایید # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}انتخاب ایستگاه راه آهن @@ -2110,8 +2115,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}انتخ STR_STATION_BUILD_DRAG_DROP :{BLACK}بکشید و بیاندازید STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}ساخت ایستگاه با استفاده از کشیدن و انداختن -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}کلاس ایستگاه را برای نمایش انتخاب کنید -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}ایک نوع ایستگاه را برای ساخت انتخاب کنید + + + STR_STATION_CLASS_DFLT :ایستگاه پیش فرض STR_STATION_CLASS_WAYP :نقطه مسیر ها @@ -2242,8 +2248,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}خرید # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}انتخاب شیء -STR_OBJECT_BUILD_TOOLTIP :{BLACK}شیء را برای ساخت انتخاب نمایید. گرفتن دکمه شیفت برآورد هزینه ساخت را نمایش می دهد -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}نوع شیء را برای ساخت انتخاب کنید STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}پیش نمای شیء STR_OBJECT_BUILD_SIZE :{BLACK}اندازه: {GOLD}{NUM} x {NUM} قطعه @@ -2257,7 +2261,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}درخت STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}نشاندن درختان با نوع تصادفی.گرفتن دکمه شیفت برآورد هزینه ساخت را نمایش می دهد STR_TREES_RANDOM_TREES_BUTTON :{BLACK} درخت های تصادفی STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK} به شکل تصافی در تمام محل درخت بکار -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK} با کشیدن بر روی زمین به شکل تکی درخت بکار +STR_TREES_MODE_NORMAL_BUTTON :{BLACK}عادی +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK} کاشتن درخت ها بصورت تکی با کشیدن روی منظره +STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}بیشه +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}کاشتن جنگل های کوچک با کشیدن روی منظره +STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}جنگل +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}کاشتن جنگل های بزرگ با کشیدن روی منظره # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}طراحی اتوماتیک سرزمین @@ -2327,6 +2336,9 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}نمای STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}نمایش صنایعی که بار را تولید و قبول می کنند STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}پیوند به نقشه کوچک STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}انتخاب صنایع نشان داده شده در نقشه کوچک +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}محموله را انتخاب کنید +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}محموله ای که میخواهید نشان داده شود را انتخاب کنید +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}صنعت موردنظر را انتخاب کنید # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}اطلاعات زمین @@ -2340,7 +2352,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالک STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}مالک ریل راه آهن: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}فرماندار محلی: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :هیچکدام -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}مختصات: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUM} x {NUM} x {NUM} STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}ساخته شده در: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}کلاس ایستگاه: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}نوع ایستگاه: {LTBLUE}{STRING} @@ -2561,9 +2573,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}ساخت دنیا STR_GENERATION_RIVER_GENERATION :{BLACK}ساخت رودخانه -STR_GENERATION_TREE_GENERATION :{BLACK}ساختن درخت -STR_GENERATION_OBJECT_GENERATION :{BLACK}ساختن اشیاء STR_GENERATION_CLEARING_TILES :{BLACK}ساختن مناطق ناهموار و صخره ها +STR_GENERATION_OBJECT_GENERATION :{BLACK}ساختن اشیاء +STR_GENERATION_TREE_GENERATION :{BLACK}ساختن درخت STR_GENERATION_SETTINGUP_GAME :{BLACK}راه اندازی بازی STR_GENERATION_PREPARING_TILELOOP :{BLACK}اجرای حلقه قطعه ها STR_GENERATION_PREPARING_SCRIPT :{BLACK}کدهای در حال اجرا @@ -2648,7 +2660,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :نوع ریل STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}متغیر NewGRF 60 + پارامتر (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}جابجا کردن تصویر گرافیک {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}تصویر بعدی STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}نمایش تصویر بعدی، بدون انجام دادن هر گونه تغییرات در آخر STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}رفتن به تصویر @@ -2671,6 +2682,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING STR_NEWGRF_ERROR_MSG_WARNING :{RED}هشدار: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}خطا: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}خطای وخیم: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}The NewGRF "{STRING}" با یک خطای مهلک مواجه شده :{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} با TTDPatch که ویرایش آن توسط OpenTTD گزارش شده کار نمی کند STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} برای ویرایش {STRING}TTD می باشد STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} طراحی شده برای استفاده با {STRING} @@ -2743,7 +2755,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}برو STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}برای نشانه یک نام وارد کنید # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}شهرها STR_TOWN_DIRECTORY_NONE :{ORANGE}- هیچکدام - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}نام شهرها - کلیک روی نام شهر آن را در وسط صفحه نمایش می دهد. کنترل + کلیک یک نمای اضافه از مکان شهر باز می کند @@ -2863,6 +2874,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}قبول STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}نشان دادن لیست کالاهای قابل دریافت STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}قبول می کند: {WHITE}{CARGO_LIST} +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}این ایستگاه حقوق انحصاری حمل و نقل در این شهر دارد. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} حقوق انحصاری حمل و نقل این شهر را خرید. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}رده بندی STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}نشان دادن رتبه بندی ایستگاه @@ -2964,7 +2977,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}قطعه STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}فرودگاه ها # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :کارخانه ها STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- هیچ - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} @@ -3279,6 +3291,7 @@ STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}مجمو STR_REFIT_CAPTION :{WHITE}{VEHICLE} (تعمیر مجدد) STR_REFIT_TITLE :{GOLD}انتخاب محموله قابل حمل: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}ظرفیت جدید : {GOLD}{CARGO_LONG}{}{BLACK} بهای تعمیر مجدد: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}ظرفیت جدید: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}هزینه بازسازی: {RED}{CURRENCY_LONG} ###length VEHICLE_TYPES STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}انتخاب نوع محموله ای که این کشتی باید حمل کند @@ -3463,9 +3476,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}در آ # Saveload messages STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}درایو خوانده می شود -STR_ERROR_GAME_SAVE_FAILED :{WHITE}بازی ذخیره نشد{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}فایل حذف نمی شود -STR_ERROR_GAME_LOAD_FAILED :{WHITE}بازی بارگزاری نشد{}{STRING} # Map generation messages @@ -3720,6 +3731,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}بطور STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}تنظیمات مربوط به NewGRF را تغییر دهید STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}هنوز خودرویی در دسترس نیست + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}در هنگام خطر نمی توان علامت عبور قطار را داد STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}جهت قطار را نمی شود تغییر داد... @@ -4229,6 +4241,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/polish.txt b/src/lang/polish.txt index bcab0794d2..91f7f035f5 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -647,7 +647,7 @@ STR_UNITS_PERIODS :{NUM}{NBSP}okre # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtr: -STR_LIST_FILTER_OSKTITLE :{BLACK}Wpisz jedno lub więcej słów kluczowych, aby przefiltrować listę +STR_LIST_FILTER_OSKTITLE :{BLACK}Wpisz słowa kluczowe, aby przefiltrować listę STR_LIST_FILTER_TOOLTIP :{BLACK}Wpisz jedno lub więcej słów kluczowych, aby przefiltrować listę STR_TOOLTIP_GROUP_ORDER :{BLACK}Wybierz kolejność grupowania @@ -687,11 +687,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Włącze STR_BUTTON_DEFAULT :{BLACK}Domyślna STR_BUTTON_CANCEL :{BLACK}Anuluj STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Uwaga: Administratorzy serwera mogą być w stanie przeczytać każdy wpisany tutaj tekst. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ +STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Długość: {NUM} @@ -817,6 +816,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Opuść edytor STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Wyjście +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Tworzenie miast +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Stawianie budynków + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Opcje gry @@ -1000,14 +1002,14 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Wyłącz wszystko STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Wyświetl wszystkie ładunki na wykresie stawek za ładunek STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Ukryj wszystkie ładunki na wykresie stawek za ładunek -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Przełącznik wykresu ładunku wł./wył. +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Przełącz ukrywanie/wyświetlanie wykresu danego typu ładunku STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Pokaż szczegóły oceny wydajności # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Legenda do wykresów firm -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Kliknij tutaj aby wł./wył. wyświetlanie danych firmy na wykresie +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Przełącz wyświetlanie wykresu danej firmy # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Ranking firm @@ -1087,7 +1089,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Wybierz STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Wybierz program „Ezy Street” STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Wybierz program „Własny 1” (zdefiniowany przez użytkownika) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Wybierz program „Własny 2” (zdefiniowany przez użytkownika) -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Włącz/wyłącz losowe odtwarzanie +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Przełącz losowe odtwarzanie STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Pokaż okno wyboru ścieżek # Playlist window @@ -1171,7 +1173,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Pustynia STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Śnieg -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Pokaż nazwy miast na mapie +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Przełącz wyświetlanie nazw miast STR_SMALLMAP_CENTER :{BLACK}Wyśrodkuj mapę na aktualnej lokalizacji STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -1180,9 +1182,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Wyłącz wszystko STR_SMALLMAP_ENABLE_ALL :{BLACK}Włącz wszystko STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Pokaż wysokość +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Nazwy przedsiębiorstw STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Nie pokazuj przedsiębiorstw na mapie STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Pokaż wszystkie przedsiębiorstwa na mapie STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Przełącz wyświetlanie mapy wysokości +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Przełącz wyświetlanie nazw przedsiębiorstw STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nie wyświetlaj własności firm na mapie STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Wyświetl własności wszystkich firm na mapie STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nie wyświetlaj ładunków na mapie @@ -1190,11 +1194,11 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Wyświet # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Pokaż ostatnią wiadomość lub ogłoszenie -STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - -STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * * -STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * PAUZA (oczekiwanie na aktualizację wykresów) * * +STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - +STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * * +STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * PAUZA (aktualizowanie grafu połączeń) * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOZAPIS -STR_STATUSBAR_SAVING_GAME :{RED}* * ZAPISYWANIE GRY * * +STR_STATUSBAR_SAVING_GAME :{RED}* * ZAPISYWANIE GRY * * STR_STATUSBAR_SPECTATOR :{WHITE}(obserwator) STR_STATUSBAR_INFINITE_MONEY :{WHITE}(nieskończone pieniądze) @@ -1336,18 +1340,14 @@ STR_GAME_OPTIONS_VOLUME :Głośność STR_GAME_OPTIONS_SFX_VOLUME :Efekty dźwiękowe STR_GAME_OPTIONS_MUSIC_VOLUME :Muzyka -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Waluta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Wybór waluty STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Funt brytyjski STR_GAME_OPTIONS_CURRENCY_USD :Dolar amerykański STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1391,6 +1391,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Rupia Indyjska STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonezyjska STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malezyjski STR_GAME_OPTIONS_CURRENCY_LVL :Łat łotewski +STR_GAME_OPTIONS_CURRENCY_PTE :Escudo portugalskie STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autozapis STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Częstotliwość automatycznego zapisu stanu gry @@ -1433,15 +1434,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaluj f STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Zaznacz to pole, aby skalować fazy krawędzi zgodnie z rozmiarem interfejsu STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Użyj tradycyjnego fonta typu sprite -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Zaznacz to pole, jeśli wolisz używać tradycyjnego fonta typu sprite o stałym rozmiarze. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Zaznacz to pole, jeśli wolisz używać tradycyjnego fonta typu sprite o stałym rozmiarze STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Antyaliasing fontów -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Zaznacz to pole, aby wygładzać fonty o zmiennym rozmiarze. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Zaznacz to pole, aby wygładzać fonty o zmiennym rozmiarze -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatyczna ankieta STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Udział w automatycznej ankiecie @@ -1470,6 +1467,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Podstawo STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Wybierz podstawowy zestaw muzyki do użycia STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatkowe informacje o muzyce podstawowej +STR_GAME_OPTIONS_ONLINE_CONTENT :Pobierz +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Wyszukaj nową lub zaktualizowaną zawartość do pobrania + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(brak zainstalowanych wtyczek do integracji z platformami społecznościowymi) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1497,9 +1497,12 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zmniejsz STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zwiększ kurs wymiany za jednego funta (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Ustal kurs wymiany za jednego funta (£) -STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} +STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Ustaw separator dla twojej waluty + +STR_CURRENCY_PREFIX :{LTBLUE}Przedrostek: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Ustaw przedrostek dla swojej waluty -STR_CURRENCY_SUFFIX :{LTBLUE}Sufiks: {ORANGE}{STRING} +STR_CURRENCY_SUFFIX :{LTBLUE}Przyrostek: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Ustaw symbol dla twojej waluty STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Przejście na euro: {ORANGE}w {NUM} roku @@ -1735,7 +1738,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Nachylenie stok STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Pochylenie pola stoku dla pojazdów drogowych. Wyższa wartość utrudnia podjazd pod górę STR_CONFIG_SETTING_FORBID_90_DEG :Zabroń pociągom skręcać o 90 stopni: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-stopniowy zakręt występuje wtedy, gdy bezpośrednio po poziomym odcinku toru występuje odcinek pionowy (lub na odwrót), zmuszając pociąg do ostrzejszego skrętu (zamiast normalnego, 45-stopniowego skrętu w innych kombinacjach torów) +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Zakręty o 90 stopni mają miejsce, gdy po torze o kierunku poziomym na sąsiednim polu występuje bezpośrednio tor o kierunku pionowym - co sprawia, że pociąg podczas przechodzenia przez krawędź pola skręca o 90 stopni, zamiast zwykłych 45 stopni w przypadku innych kombinacji torów STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Pozwól na łączenie stacji nie sąsiadujących bezpośrednio: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Pozwól na dodawanie części do stacji bez bezpośredniego stykania się z istniejącymi częściami, używając Ctrl podczas umieszczania nowych części @@ -1847,12 +1850,12 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Początkowy kol STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Wybierz początkowy kolor dla firmy STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Początkowy kolor dodatkowy firmy: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Wybierz początkowy kolor dodatkowy dla firmy, jeśli używany jest NewGRF, który go wykorzystuje. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Wybierz początkowy kolor dodatkowy dla firmy, jeśli używany jest NewGRF, który go wykorzystuje STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Pozwól budować stare lotniska: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Włączona opcja sprawia, że każdy typ lotniska będzie dostępny na zawsze od chwili wprowadzenia -STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Ostrzeż, jeśli pojazd się zgubi: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Ostrzegaj, gdy pojazd się zgubi: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Pokazuj wiadomości o pojazdach, które nie są w stanie znaleźć ścieżki do swoich wyznaczonych celów STR_CONFIG_SETTING_ORDER_REVIEW :Kontroluj polecenia pojazdów: {STRING} @@ -1862,50 +1865,53 @@ STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nie STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Tak, ale wyklucz zatrzymane STR_CONFIG_SETTING_ORDER_REVIEW_ON :Wszystkich pojazdów -STR_CONFIG_SETTING_WARN_INCOME_LESS :Powiadom, jeśli pojazd przynosi straty: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS :Ostrzegaj, gdy pojazd przynosi straty: {STRING} ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Kiedy włączone, wiadomość zostanie wyświetlona, gdy pojazd nie osiągnie zysku w ciągu roku STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Kiedy włączone, wiadomość zostanie wyświetlona, gdy pojazd nie osiągnie zysku w ciągu okresu +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Ostrzegaj, gdy pojazd zaczyna się starzeć: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Kiedy włączone, wiadomość zostanie wyświetlona, gdy pojazd zacznie się starzeć + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Pojazdy nigdy nie są wycofywane: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kiedy włączone, wszystkie modele pojazdów pozostają dostępne na zawsze od daty ich wprowadzenia STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Miara czasu: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Wybierz jednostki pomiaru czasu w grze. Nie można tego zmienić później.{}{}Kalendarz jest klasycznym trybem OpenTTD, z rokiem składającym się z 12 miesięcy, a każdy miesiąc ma 28-31 dni.{}{}W trybie zegarowym ruch pojazdów, produkcja ładunków oraz finanse są oparte na jednominutowych przyrostach, czyli mniej więcej tak długo, jak trwa 30-dniowy miesiąc w trybie kalendarzowym. Są one pogrupowane w 12-minutowe okresy, co z kolei odpowiada rokowi w trybie kalendarzowym.{}{}W obu metodach zawsze funkcjonuje klasyczny kalendarz, który jest używany do dat wprowadzenia pojazdów, domów i innej infrastruktury. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Wybierz jednostki pomiaru czasu w grze. Nie można tego zmienić później.{}{}Kalendarz jest klasycznym trybem OpenTTD, z rokiem składającym się z 12 miesięcy, a każdy miesiąc ma 28-31 dni.{}{}W trybie zegarowym produkcja ładunków oraz finanse są oparte na jednominutowych przyrostach, czyli mniej więcej tak długo, jak trwa 30-dniowy miesiąc w trybie kalendarzowym. Są one pogrupowane w 12-minutowe okresy, co z kolei odpowiada rokowi w trybie kalendarzowym.{}{}W obu metodach zawsze funkcjonuje klasyczny kalendarz, który jest używany do dat wprowadzenia pojazdów, domów i innej infrastruktury ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalendarz STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Tarcza zegara STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minuty na rok: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Wybierz liczbę minut trwania jednego roku kalendarzowego. Domyślnie jest to 12 minut. Ustaw na 0, aby wstrzymać zmianę daty kalendarza. To ustawienie nie ma wpływu na symulację ekonomiczną gry i jest dostępne tylko w przypadku korzystania z zegarowej miary czasu. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Wybierz liczbę minut trwania jednego roku kalendarzowego. Domyślnie jest to 12 minut. Ustaw na 0, aby wstrzymać zmianę daty kalendarza. Zwiększenie długości roku kalendarzowego opóźnia wprowadzanie pojazdów, budynków i innej infrastruktury. Nie wpływa to na prędkość pojazdów, ani symulację ekonomii, z wyjątkiem inflacji. To ustawienie jest dostępne tylko w przypadku korzystania z zegarowej miary czasu STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (zamrożenie czasu kalendarza) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Skala produkcji w miastach: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skaluj produkcję ładunków w miastach w oparciu o ten procent. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skaluj produkcję ładunków w miastach w oparciu o ten procent STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Skala produkcji w przedsiębiorstwach: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skaluj produkcję ładunków w przedsiębiorstwach w oparciu o ten procent. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skaluj produkcję ładunków w przedsiębiorstwach w oparciu o ten procent STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoodnawianie pojazdów gdy stają się stare: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatyczne odnawianie pojazdów, gdy stają się stare: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Kiedy włączone, pojazd zbliżający się do końca swojej żywotności zostaje automatycznie zastąpiony, gdy warunki jego odnowienia są spełnione -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatyczna odnowa, gdy pojazd ma {STRING} maksymalnym wieku +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatyczne odnowienie, gdy pojazd ma {STRING} maksymalnym wieku STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Odpowiedni wiek pojazdu, kiedy powinien on zostać automatycznie odnowiony ###length 2 STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} miesi{P ąc ące ęcy} do STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} miesi{P ąc ące ęcy} po -STR_CONFIG_SETTING_AUTORENEW_MONEY :Min. ilość pieniędzy potrzebna do autoodnowienia: {STRING} -STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimalna ilość pieniędzy, która musi znajdować się w banku zanim auto-odnawianie będzie brane pod uwagę +STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimalna ilość pieniędzy potrzebna do automatycznego odnowienia: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimalna ilość pieniędzy, która musi znajdować się na koncie, zanim automatyczne odnawianie będzie brane pod uwagę STR_CONFIG_SETTING_ERRMSG_DURATION :Czas wyświetlania komunikatów o błędach: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Czas wyświetlania komunikatów o błędach w czerwonym oknie. Niektóre (krytyczne) komunikaty o błędach nie zamykają się automatycznie po tym czasie, tylko muszą zostać zamknięte ręcznie STR_CONFIG_SETTING_HOVER_DELAY :Pokaż podpowiedzi: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Opóźnienie wyświetlania podpowiedzi po najechaniu myszą na element interfejsu. Ewentualnie podpowiedzi mogą być przypisane do prawego przycisku myszy, jeśli wartość ta będzie ustawiona na 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Opóźnienie wyświetlania podpowiedzi po najechaniu myszą na element interfejsu. Ewentualnie podpowiedzi mogą być przypisane do prawego przycisku myszy, jeśli wartość ta będzie ustawiona na 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Zatrzymaj kursor przez {COMMA} milisekund{P ę y ""} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :prawy klik @@ -1917,7 +1923,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grubość linii STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grubość linii na wykresach. Cienka linia jest dokładniejsza, grubsza linia jest bardziej widoczna a kolory łatwiejsze do odróżnienia STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Pokaż nazwę NewGRF-a w oknie budowy pojazdu: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Dodaj wiersz do okna budowy pojazdów, pokazujący z którego NewGRF-a wybrany pojazd pochodzi. +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Dodaj wiersz do okna budowy pojazdów, pokazujący z którego NewGRF-a wybrany pojazd pochodzi STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Pokaż w oknach list jakie ładunki mogą być przewożone przez pojazdy: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Jeśli włączone, ładunek możliwy do przewiezienia przez pojazd będzie wyświetlany nad nim na listach pojazdów. @@ -1936,8 +1942,8 @@ STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Wybierz wysoko STR_CONFIG_SETTING_INDUSTRY_DENSITY :Liczba przedsiębiorstw: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Określa liczbę przedsiębiorstw na początku i w trakcie gry -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksymalna odległość od krawędzi dla rafinerii: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinerie są budowane tylko w pobliżu krawędzi map, to znaczy na wybrzeżach dla map wyspiarskich. To ustawienie pozwala ograniczyć jak daleko od krawędzi mapy mogą być budowane rafinerie i platformy wiertnicze. Na mapach większych niż 256 pól, wartość ta jest skalowana w górę. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksymalna odległość rafinerii i platform wiertniczych od krawędzi mapy: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit odległości rafinerii i platform wiertniczych od krawędzi mapy. Na mapach wyspiarskich wartość ta umożliwia budowanie ich w pobliżu wybrzeża. Na mapach większych niż 256 pól wartość ta jest odpowiednio zwiększana STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Wysokość granicy wiecznych śniegów: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Wybierz, na jakiej wysokości zaczyna zalegać śnieg w krajobrazie arktycznym. Poziom pokrywy śnieżnej wpływa na rozmieszczenie przedsiębiorstw i na warunki rozwoju miast. Może być zmodyfikowana poprzez Edytor Scenariuszy, w innym przypadku jest obliczana za pomocą ustawienia „pokrycie śniegiem” @@ -1951,7 +1957,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Wybierz przybli STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Gładkość terenu: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Wybierz kształt i ilość wzniesień. Łagodny teren ma mniejszą liczbę szerszych wzniesień, natomiast teren pofałdowany ma więcej mniejszych wzniesień. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Wybierz kształt i ilość wzniesień. Łagodny teren ma mniejszą liczbę szerszych wzniesień, natomiast teren pofałdowany ma więcej mniejszych wzniesień ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Bardzo łagodny STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Łagodny @@ -1959,7 +1965,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Pofałdowany STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Bardzo pofałdowany STR_CONFIG_SETTING_VARIETY :Różnorodność terenu: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Wybierz, czy mapa ma zawierać zarówno obszary górskie, jak i płaskie. Im większa różnorodność, tym większe różnice wysokości między obszarami górskimi i płaskimi. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Wybierz, czy mapa ma zawierać zarówno obszary górskie, jak i płaskie. Im większa różnorodność, tym większe różnice wysokości między obszarami górskimi i płaskimi STR_CONFIG_SETTING_RIVER_AMOUNT :Liczba rzek: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Określa liczbę rzek na mapie @@ -2006,7 +2012,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :ciemnozielony STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :fioletowy STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Kolorystyka przepływu ładunków: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Ustaw kolorystykę używaną do wyświetlania przepływu ładunków. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Ustaw kolorystykę używaną do wyświetlania przepływu ładunków ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Od zielonego do czerwonego (oryginalna) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Od zielonego do niebieskiego @@ -2051,8 +2057,8 @@ STR_CONFIG_SETTING_OSK_ACTIVATION :Klawiatura ekra STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Wybierz metodę włączania klawiatury ekranowej do wprowadzania tekstu do pól tekstowych używając tylko urządzenia wskazującego. Jest to dedykowane dla małych urządzeń bez klawiatury ###length 4 STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Wyłączone -STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Podwójny klik -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Pojedyncze kliknięcie (w przybliżeniu) +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Podwójne kliknięcie +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Pojedyncze kliknięcie (po odczekaniu chwili) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Pojedyncze kliknięcie (natychmiast) STR_CONFIG_SETTING_USE_RELAY_SERVICE :Używanie usługi przekaźnika: {STRING} @@ -2127,13 +2133,13 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pozostaw aktywn STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Zachowaj narzędzia budowy mostów, tuneli, itp. po użyciu STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatycznie usuwaj sygnały podczas budowy torów: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatycznie usuwaj sygnały, które przeszkadzają w budowie toru. Pamiętaj, że może to doprowadzić do zderzenia pociągów, w przypadku usunięcia ważnych sygnałów. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatycznie usuwaj sygnały, które przeszkadzają w budowie toru. Pamiętaj, że może to doprowadzić do zderzenia pociągów, w przypadku usunięcia ważnych sygnałów STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Ograniczenie prędkości przyspieszonego czasu w grze: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Ograniczenie prędkości gry, kiedy przyspieszenie czasu jest włączone. 0 = bez ograniczenia (tak szybko, jak pozwoli na to komputer). Wartości poniżej 100% spowolnią grę. Górny limit jest zależny od specyfikacji komputera i może się różnić w zależności od rozgrywki. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Ograniczenie prędkości gry, kiedy przyspieszenie czasu jest włączone. 0 = bez ograniczenia (tak szybko, jak pozwala na to komputer). Wartości poniżej 100% spowalniają grę. Górny limit jest zależny od specyfikacji komputera i może się różnić w zależności od rozgrywki STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normalnej prędkości gry ###setting-zero-is-special -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Brak ograniczenia (tak szybko, jak pozwoli na to komputer) +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Brak ograniczenia (tak szybko, jak pozwala na to komputer) STR_CONFIG_SETTING_SOUND_TICKER :Pasek informacji: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Odtwarzaj dźwięk dla podsumowania wiadomości @@ -2194,11 +2200,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Pozwól kompute STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Liczba wysyłanych kodów instrukcji przed zawieszeniem skryptów: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maksymalna liczba kroków obliczeniowych, jakie skrypt może zrobić w jednej kolejce STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maksymalne zużycie pamięci na skrypt: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Ilość pamięci jaką może zużywać pojedynczy skrypt zanim zostanie przymusowo zakończony. Może wymagać zwiększenia dla większych map. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Ile pamięci może wykorzystać pojedynczy skrypt, zanim zostanie przymusowo zakończony. Może być konieczne zwiększenie tej wartości dla dużych map STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Okres między serwisowaniami w procentach: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Kiedy włączone, pojazdy podejmują próbę serwisowania, gdy ich niezawodność spadnie o dany procent maksymalnej niezawodności.{}{}Na przykład, jeśli maksymalna niezawodność pojazdu wynosi 90%, a interwał serwisowy wynosi 20%, pojazd podejmie próbę serwisowania, gdy osiągnie 72% niezawodności. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Kiedy włączone, pojazdy podejmują próbę serwisowania, gdy ich niezawodność spadnie o dany procent maksymalnej niezawodności.{}{}Na przykład, jeśli maksymalna niezawodność pojazdu wynosi 90%, a interwał serwisowy wynosi 20%, pojazd podejmie próbę serwisowania, gdy osiągnie 72% niezawodności STR_CONFIG_SETTING_SERVINT_TRAINS :Domyślny interwał serwisowania pociągów: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych pojazdów kolejowych, jeśli takowy nie istnieje dla określonego pojazdu @@ -2208,7 +2214,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Domyślny inter STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych maszyn latających, jeśli takowy nie istnieje dla określonego pojazdu STR_CONFIG_SETTING_SERVINT_SHIPS :Domyślny interwał serwisowania statków: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych statków, jeśli takowy nie istnieje dla określonego pojazdu -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}D{P zień ni ni}/Minut{P a y ""}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}d{P 0 zień ni ni} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}minut{P 0 a y ""} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Wyłączone @@ -2216,7 +2226,7 @@ STR_CONFIG_SETTING_NOSERVICE :Wyłącz serwis STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Kiedy włączone, pojazdy nie są serwisowane, jeśli nie mogą się popsuć STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Obniżenie prędkości załadunku pociągów dłuższych niż stacja: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Gdy opcja ta jest włączona, pociągi dłuższe od stacji ładują się wolniej niż pociągi, które mieszczą się na stacji. To ustawienie nie wpływa na znajdowanie tras. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Kiedy włączone, pociągi dłuższe od stacji ładują się wolniej, niż pociągi które mieszczą się na stacji. To ustawienie nie wpływa na znajdowanie tras STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Włącz limity prędkości wagonów: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Kiedy włączone, użyj także ograniczenia prędkości dla wagonów do obliczenia maksymalnej prędkości pociągu @@ -2281,13 +2291,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Rok, w którym STR_CONFIG_SETTING_STARTING_YEAR :Data rozpoczęcia gry: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Punktacja na koniec roku: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Rok, w którym gra się kończy na cel punktacji. Na koniec tego roku, punkty firmy są zarejestrowane i ekran wyników najwyższych jest pokazywany, ale gracze mogą po tym dalej grać.{}Jeżeli jest to przed rokiem startowym, ekran wyników najwyższych nie jest nigdy pokazywany. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Rok zakończenia gry do celów klasyfikacji punktowej. Na koniec podanego roku wynik firmy jest rejestrowany i zostaje wyświetlony ekran z najwyższymi wynikami, ale gracze mogą grać dalej.{}Jeśli jest to rok przed datą rozpoczęcia, ekran z najwyższymi wynikami w ogóle nie jest wyświetlany STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nigdy STR_CONFIG_SETTING_ECONOMY_TYPE :Typ ekonomii: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Płynna ekonomia oznacza, że zmiany w produkcji zachodzą częściej i w mniejszych krokach. Zamrożona gospodarka zatrzymuje zmiany w produkcji i zamykanie przedsiębiorstw. To ustawienie może nie mieć żadnego wpływu, jeśli przemysł jest regulowany przez NewGRF-y. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Płynna ekonomia oznacza, że zmiany w produkcji zachodzą częściej i w mniejszych krokach. Zamrożona gospodarka zatrzymuje zmiany w produkcji i zamykanie przedsiębiorstw. To ustawienie może nie mieć żadnego wpływu, jeśli przemysł jest regulowany przez NewGRF-y ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Oryginalna STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Płynna @@ -2342,7 +2352,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Dozwolone STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Dozwolone, dowolny układ miasta STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Generowanie ładunku przez miasta: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Ilość ładunku produkowana przez domy w mieście względem ogólnej populacji miasta.{}Wzrost kwadratowy: miasto o podwojonej wielkości generuje czterokrotnie więcej pasażerów.{}Wzrost liniowy: miasto o podwojonej wielkości generuje dwukrotnie więcej pasażerów. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Ilość ładunku produkowanego przez domy w mieście względem ogólnej populacji miasta.{}Wzrost kwadratowy: miasto dwa razy większe generuje czterokrotnie więcej pasażerów.{}Wzrost liniowy: miasto dwa razy większe generuje dwukrotnie więcej pasażerów ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Kwadratowy (originalny) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Liniowy @@ -2383,7 +2393,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Najwyższa używana rozdzielczość sprite'ów: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Ogranicz maksymalną rozdzielczość dla sprite'ów. Ograniczenie rozdzielczości sprite'ów spowoduje brak użycia grafiki w wysokiej rozdzielczości, nawet, jeśli jest ona dostępna. Może to pomóc w utrzymaniu jednolitego wyglądu gry, gdy używasz mieszanki plików GRF z grafiką w wysokiej rozdzielczości i bez niej. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Ogranicz maksymalną rozdzielczość dla sprite'ów. Ograniczenie rozdzielczości sprite'ów spowoduje brak użycia grafiki w wysokiej rozdzielczości, nawet jeśli jest ona dostępna. Może to pomóc w zachowaniu jednolitego wyglądu gry, jeśli używasz mieszanki plików GRF z grafiką w wysokiej rozdzielczości i bez niej ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2407,33 +2417,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Początkowy mno STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Średni rozmiar metropolii w porównaniu do normalnych miast na początku gry STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Aktualizuj graf dystrybucji co {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Czas pomiędzy kolejnymi przeliczeniami grafu połączeń. Każde przeliczenie oblicza plany dla jednego komponentu grafu. Wartość X dla tego ustawienia nie oznacza, że cały graf będzie aktualizowany co X sekund. Aktualizowane będą tylko niektóre komponenty. Im mniejszą wartość ustawisz, tym więcej czasu będzie potrzebował procesor, aby wykonać obliczenia. Im większą wartość ustawisz, tym więcej czasu upłynie, zanim rozpocznie się dystrybucja ładunków po nowych trasach. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Czas pomiędzy kolejnymi przeliczeniami grafu połączeń. Każde przeliczenie oblicza plany dla jednego komponentu grafu. Wartość X dla tego ustawienia nie oznacza, że cały graf będzie aktualizowany co X sekund. Aktualizowane będą tylko niektóre komponenty. Im mniejszą wartość ustawisz, tym więcej czasu będzie potrzebował procesor, aby wykonać obliczenia. Im większą wartość ustawisz, tym więcej czasu upłynie, zanim rozpocznie się dystrybucja ładunków po nowych trasach STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Przeznacz {STRING} na przeliczenie grafu dystrybucji -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Czas potrzebny na każde przeliczenie komponentu grafu połączeń. Po rozpoczęciu przeliczania, tworzony jest wątek, który może działać przez podaną liczbę sekund. Im mniejszą wartość ustawisz, tym większe prawdopodobieństwo, że wątek nie zostanie ukończony w wyznaczonym czasie. Wtedy gra zatrzymuje się do czasu jego zakończenia („lag”). Im większą wartość ustawisz, tym dłużej będzie trwała aktualizacja dystrybucji, gdy zmienią się trasy. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Czas potrzebny na każde przeliczenie komponentu grafu połączeń. Po rozpoczęciu przeliczania, tworzony jest wątek, który może działać przez podaną liczbę sekund. Im mniejszą wartość ustawisz, tym większe prawdopodobieństwo, że wątek nie zostanie ukończony w wyznaczonym czasie. Wtedy gra zatrzymuje się do czasu jego zakończenia („lag”). Im większą wartość ustawisz, tym dłużej będzie trwała aktualizacja dystrybucji, gdy zmienią się trasy STR_CONFIG_SETTING_DISTRIBUTION_PAX :Tryb dystrybucji dla pasażerów: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Tryb „symetryczny” oznacza, że mniej więcej tyle samo pasażerów będzie podróżować ze stacji A do stacji B, co z B do A. Tryb „asymetryczny” oznacza, że w obu kierunkach może podróżować różna liczba pasażerów. Tryb „ręczny” oznacza, że dla pasażerów nie będzie przeprowadzana dystrybucja automatyczna. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Tryb „symetryczny” oznacza, że mniej więcej tyle samo pasażerów będzie podróżować ze stacji A do stacji B, co z B do A. Tryb „asymetryczny” oznacza, że w obu kierunkach może podróżować różna liczba pasażerów. Tryb „ręczny” oznacza, że dla pasażerów nie będzie przeprowadzana dystrybucja automatyczna STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Tryb dystrybucji dla poczty: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Tryb „symetryczny” oznacza, że mniej więcej taka sama ilość poczty zostanie wysłana ze stacji A do stacji B, co z B do A. Tryb „asymetryczny” oznacza, że w obu kierunkach może być wysyłana różna ilość poczty. Tryb „ręczny” oznacza, że dla poczty nie będzie przeprowadzana dystrybucja automatyczna. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Tryb „symetryczny” oznacza, że mniej więcej taka sama ilość poczty zostanie wysłana ze stacji A do stacji B, co z B do A. Tryb „asymetryczny” oznacza, że w obu kierunkach może być wysyłana różna ilość poczty. Tryb „ręczny” oznacza, że dla poczty nie będzie przeprowadzana dystrybucja automatyczna STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Tryb dystrybucji dla klasy ładunków CHRONIONYCH: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Klasa ładunków CHRONIONYCH zawiera kosztowności w klimacie umiarkowanym, diamenty w tropikalnym lub złoto w klimacie arktycznym. NewGRF-y mogą to zmienić. Tryb „symetryczny” oznacza, że mniej więcej taka sama ilość danego ładunku zostanie wysłana ze stacji A do stacji B, co z B do A. Tryb „asymetryczny” oznacza, że w obu kierunkach mogą być wysyłane różne ilości danego ładunku. Tryb „ręczny” oznacza, że dla danego ładunku nie będzie przeprowadzana dystrybucja automatyczna. Zaleca się ustawienie tej opcji na asymetryczną lub ręczną w klimacie arktycznym lub tropikalnym, ponieważ tam banki jedynie odbierają ładunek. Dla klimatu umiarkowanego możesz wybrać symetryczny, aby banki odsyłały kosztowności do pierwotnego banku. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Klasa ładunków CHRONIONYCH zawiera kosztowności w klimacie umiarkowanym, diamenty w tropikalnym lub złoto w klimacie arktycznym. NewGRF-y mogą to zmienić. Tryb „symetryczny” oznacza, że mniej więcej taka sama ilość danego ładunku zostanie wysłana ze stacji A do stacji B, co z B do A. Tryb „asymetryczny” oznacza, że w obu kierunkach mogą być wysyłane różne ilości danego ładunku. Tryb „ręczny” oznacza, że dla danego ładunku nie będzie przeprowadzana dystrybucja automatyczna. Zaleca się ustawienie tej opcji na asymetryczną lub ręczną w klimacie arktycznym lub tropikalnym, ponieważ tam banki jedynie odbierają ładunek. Dla klimatu umiarkowanego możesz wybrać symetryczny, aby banki odsyłały kosztowności do pierwotnego banku STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Tryb dystrybucji dla pozostałych klas ładunków: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Tryb „asymetryczny” oznacza, że w obu kierunkach mogą być wysyłane różne ilości ładunków. Tryb „ręczny” oznacza, że dla takich ładunków nie będzie przeprowadzana dystrybucja automatyczna. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Tryb „asymetryczny” oznacza, że w obu kierunkach mogą być wysyłane różne ilości ładunków. Tryb „ręczny” oznacza, że dla takich ładunków nie będzie przeprowadzana dystrybucja automatyczna ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :ręczny STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymetryczny STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symetryczny STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Dokładność dystrybucji: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Im wyższą wartość ustawisz, tym więcej czasu procesor będzie potrzebował na obliczenie grafu połączeń. Jeśli będzie to trwało zbyt długo, możesz zauważyć opóźnienia. Jeśli jednak ustawisz niską wartość, dystrybucja będzie niedokładna i możesz zauważyć, że ładunki nie są wysyłane do miejsc, gdzie się ich spodziewasz. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Im wyższą wartość ustawisz, tym więcej czasu procesor będzie potrzebował na obliczenie grafu połączeń. Jeśli będzie to trwało zbyt długo, możesz zauważyć opóźnienia. Jeśli jednak ustawisz niską wartość, dystrybucja będzie niedokładna i możesz zauważyć, że ładunki nie są wysyłane do miejsc, gdzie się ich spodziewasz STR_CONFIG_SETTING_DEMAND_DISTANCE :Wpływ odległości na dystrybucję: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Jeśli ładunki z jednej stacji trafiają na kilka różnych stacji, na ich dystrybucję wpływ ma odległość. Im wyższą wartość ustawisz, tym bliższe stacje będą preferowane. Zerowa wartość ustawienia sprawi, że odległość nie będzie wpływała na podział dystrybucji. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Jeśli ładunki z jednej stacji trafiają na kilka różnych stacji, na ich dystrybucję wpływ ma odległość. Im wyższą wartość ustawisz, tym bliższe stacje będą preferowane. Zerowa wartość ustawienia sprawi, że odległość nie będzie wpływała na podział dystrybucji STR_CONFIG_SETTING_DEMAND_SIZE :Ilość powracającego ładunku dla trybu symetrycznego: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ustawienie tego na mniej niż 100% powoduje, że symetryczna dystrybucja zachowuje się podobnie do asymetrycznej. Mniej ładunku będzie zwróconego jeśli określona ilość zostanie wysłana do stacji. Jeśli ustawisz to na 0%, to symetryczna dystrybucja zachowuje się jak asymetryczna. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ustawienie tego na mniej niż 100% powoduje, że symetryczna dystrybucja zachowuje się podobnie do asymetrycznej. Mniej ładunku będzie zwróconego jeśli określona ilość zostanie wysłana do stacji. Jeśli ustawisz to na 0%, to symetryczna dystrybucja zachowuje się jak asymetryczna STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Nasycenie krótkich tras przed wybraniem tras o dużej przepustowości: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Często istnieje wiele możliwych tras pomiędzy dwiema danymi stacjami. Mechanizm dystrybucji ładunków najpierw nasyci najkrótszą trasę, następnie użyje drugiej najkrótszej trasy, aż do jej nasycenia itd. Nasycenie jest ustalane na podstawie szacunkowej oceny przepustowości i planowanego wykorzystania. Po nasyceniu wszystkich tras, jeśli nadal istnieje zapotrzebowanie, algorytm przeciąży wszystkie trasy, preferując te o dużej przepustowości. W większości przypadków algorytm nie oszacuje jednak dokładnie przepustowości. To ustawienie pozwala określić, do jakiej wartości procentowej krótsza trasa musi zostać nasycona w pierwszym kroku, zanim zostanie wybrana kolejna, dłuższa trasa. Ustaw wartość mniejszą niż 100%, aby uniknąć przepełnionych stacji w przypadku przeszacowania przepustowości. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Często istnieje wiele możliwych tras pomiędzy dwiema danymi stacjami. Mechanizm dystrybucji ładunków najpierw nasyci najkrótszą trasę, następnie użyje drugiej najkrótszej trasy, aż do jej nasycenia itd. Nasycenie jest ustalane na podstawie szacunkowej oceny przepustowości i planowanego wykorzystania. Po nasyceniu wszystkich tras, jeśli nadal istnieje zapotrzebowanie, algorytm przeciąży wszystkie trasy, preferując te o dużej przepustowości. W większości przypadków algorytm nie oszacuje jednak dokładnie przepustowości. To ustawienie pozwala określić, do jakiej wartości procentowej krótsza trasa musi zostać nasycona w pierwszym kroku, zanim zostanie wybrana kolejna, dłuższa trasa. Ustaw wartość mniejszą niż 100%, aby uniknąć przepełnionych stacji w przypadku przeszacowania przepustowości STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Jednostki prędkości (lądowe): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Jednostki prędkości (morskie): {STRING} @@ -2508,17 +2518,8 @@ STR_CONFIG_SETTING_AI :Rywale STR_CONFIG_SETTING_AI_NPC :Gracze komputerowi STR_CONFIG_SETTING_NETWORK :Sieć -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Wytyczanie drogi dla pociągów: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :System wyszukiwania trasy dla pociągów -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Wytyczanie drogi dla pojazdów: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :System wyszukiwania trasy dla pojazdów drogowych -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Wytyczanie drogi dla statków: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :System wyszukiwania trasy dla statków STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatycznie zawracaj przy sygnałach: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Pozwól pociągom zawracać przed semaforem, jeśli czekają tam bardzo długo -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Zalecane) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Zmiana wartości @@ -2837,7 +2838,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Uzyskiwa STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Rozłącz STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serwer jest chroniony. Wprowadź hasło -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma jest chroniona. Wprowadź hasło # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Połączeni gracze @@ -2864,6 +2864,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Twoja nazwa gra STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Działania administracyjne, które można wykonać dla tego klienta STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Działania administracyjne, które można wykonać dla tej firmy STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Dołącz do tej firmy +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Zezwól temu klientowi na dołączenie do twojej firmy STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Wyślij wiadomość do tego gracza STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Wyślij wiadomość do wszystkich graczy tej firmy STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Wyślij wiadomość do wszystkich obserwatorów @@ -2886,13 +2887,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Przez pr STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Wyrzuć STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Zbanuj STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Usuń -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Wyczyść hasło STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Działanie administratora STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Czy na pewno chcesz wyrzucić gracza „{STRING}”? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Czy na pewno chcesz zbanować gracza „{STRING}”? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Czy na pewno chcesz usunąć firmę „{COMPANY}”? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Czy na pewno chcesz zresetować hasło firmy „{COMPANY}”? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Używać przekaźnika? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Nie udało się nawiązać połączenia między tobą a serwerem „{STRING}”.{}Czy chcesz przekazać tę sesję za pośrednictwem „{STRING}”? @@ -2909,19 +2908,9 @@ STR_NETWORK_ASK_SURVEY_YES :Tak STR_NETWORK_SPECTATORS :Widzowie -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nie zapisuj podanego hasła -STR_COMPANY_PASSWORD_OK :{BLACK}Nadaj firmie nowe hasło -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Hasło firmy -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Hasło domyślne -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Użyj tego hasła jako domyślnego dla nowych firm - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Dołącz STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Dołącz i graj jako ta firma -STR_COMPANY_VIEW_PASSWORD :{BLACK}Hasło -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Ochrona hasłem twojej firmy zapobiega nieautoryzowanemu przyłączeniu się -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Ustaw hasło firmy # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Wyślij @@ -2950,6 +2939,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Twoja na STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Nazwa twojego serwera nie została ustawiona. Nazwę można ustawić w górnej części okna Gra wieloosobowa STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Wersja gry nie zgadza się z wersją gry na serwerze STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Złe hasło +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Nie ma cię na liście dopuszczonych klientów STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Serwer jest pełny STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Masz zabroniony dostęp do tego serwera STR_NETWORK_ERROR_KICKED :{WHITE}Zostałeś wyrzucony z serwera @@ -2965,7 +2955,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Twoja na STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Możliwa utrata połączenia STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Przez ostatni{P 0 ą e e} {NUM} sekund{P ę y ""} nie otrzymano żadnych danych z serwera -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :błąd ogólny STR_NETWORK_ERROR_CLIENT_DESYNC :błąd synchronizacji STR_NETWORK_ERROR_CLIENT_SAVEGAME :nie można załadować mapy @@ -2977,6 +2967,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :odebrany niezna STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :zła wersja STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nazwa już w użyciu STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :złe hasło gry +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :brak na liście dopuszczonych STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :zła nazwa firmy w DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :wyrzucony przez serwer STR_NETWORK_ERROR_CLIENT_CHEATER :próbował użyć ułatwień @@ -3134,7 +3125,7 @@ STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Średni czas podróży: {UNITS_DAYS_OR_SECONDS} # Base for station construction window(s) -STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Podświetlaj zasięg +STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Podświetlanie zasięgu STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Wył. STR_STATION_BUILD_COVERAGE_ON :{BLACK}Wł. STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Nie podświetlaj zasięgu projektowanej stacji @@ -3182,21 +3173,45 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Wybierz # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Posterunek -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Wybierz typ posterunku # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Wybór stacji STR_STATION_BUILD_ORIENTATION :{BLACK}Ukierunkowanie STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie stacji -STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Ilość peronów -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Wybierz ilość peronów na stacji +STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Liczba peronów +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Wybierz liczbę peronów stacji STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Długość peronu STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Wybierz długość stacji STR_STATION_BUILD_DRAG_DROP :{BLACK}Przeciągnij i upuść STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Buduj stację używając „przeciągnij i upuść” -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Wybierz rodzaj stacji do pokazania -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Wybierz typ stacji do zbudowania +STR_PICKER_MODE_ALL :Wszystkie +STR_PICKER_MODE_ALL_TOOLTIP :Przełącz wyświetlanie elementów ze wszystkich klas +STR_PICKER_MODE_USED :Użyte +STR_PICKER_MODE_USED_TOOLTIP :Przełącz wyświetlanie tylko już istniejących elementów +STR_PICKER_MODE_SAVED :Zapisane +STR_PICKER_MODE_SAVED_TOOLTIP :Przełącz wyświetlanie tylko zapisanych elementów + +STR_PICKER_STATION_CLASS_TOOLTIP :Wybierz klasę stacji do wyświetlenia +STR_PICKER_STATION_TYPE_TOOLTIP :Wybierz typ stacji do zbudowania. Użyj Ctrl, aby dodać lub usunąć z zapisanych elementów +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Wybierz klasę posterunku do wyświetlenia +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Wybierz typ posterunku do zbudowania. Użyj Ctrl, aby dodać lub usunąć z zapisanych elementów +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Wybierz klasę przystanku do wyświetlenia +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Wybierz typ przystanku do zbudowania. Użyj Ctrl, aby dodać lub usunąć z zapisanych elementów +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Wybierz klasę stacji ciężarówek do wyświetlenia +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Wybierz typ stacji ciężarówek do zbudowania. Użyj Ctrl, aby dodać lub usunąć z zapisanych elementów +STR_PICKER_OBJECT_CLASS_TOOLTIP :Wybierz klasę obiektu do wyświetlenia +STR_PICKER_OBJECT_TYPE_TOOLTIP :Wybierz typ obiektu do zbudowania. Użyj Ctrl, aby dodać lub usunąć z zapisanych elementów. Przeciągnij z użyciem Ctrl, aby zaznaczyć obszar po przekątnej. Użyj Shift, aby tylko wyświetlić szacunkowy koszt +STR_PICKER_HOUSE_CLASS_TOOLTIP :Wybierz strefę miasta do wyświetlenia +STR_PICKER_HOUSE_TYPE_TOOLTIP :Wybierz typ budynku do zbudowania. Użyj Ctrl, aby dodać lub usunąć z zapisanych elementów + +STR_HOUSE_PICKER_CAPTION :Wybór Budynków + +STR_HOUSE_PICKER_CLASS_ZONE1 :Obrzeża +STR_HOUSE_PICKER_CLASS_ZONE2 :Peryferia +STR_HOUSE_PICKER_CLASS_ZONE3 :Przedmieścia zewnętrzne +STR_HOUSE_PICKER_CLASS_ZONE4 :Przedmieścia wewnętrzne +STR_HOUSE_PICKER_CLASS_ZONE5 :Centrum miasta STR_STATION_CLASS_DFLT :Standardowa STR_STATION_CLASS_DFLT_STATION :Standardowa stacja @@ -3251,6 +3266,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Zbuduj d STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Zbuduj tory tramwajowe używając trybu Autotory. Użyj Ctrl, aby usunąć fragment torów. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Zbuduj zajezdnię samochodową (do kupowania i serwisowania pojazdów). Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Zbuduj zajezdnię tramwajową (do kupowania i serwisowania pojazdów). Użyj Shift, aby tylko wyświetlić szacunkowy koszt +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Zbuduj posterunek na drodze. Użyj Ctrl, aby połączyć z innym posterunkiem. Użyj Shift, aby tylko wyświetlić szacunkowy koszt +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Zbuduj posterunek na linii tramwajowej. Użyj Ctrl, aby połączyć z innym posterunkiem. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Zbuduj przystanek autobusowy. Użyj Ctrl, aby połączyć z inną stacją. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Zbuduj pasażerski przystanek tramwajowy. Użyj Ctrl, aby połączyć z inną stacją. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Zbuduj stację ciężarówek. Użyj Ctrl, aby połączyć z inną stacją. Użyj Shift, aby tylko wyświetlić szacunkowy koszt @@ -3339,8 +3356,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Zakup te # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Wybór obiektu -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Wybierz obiekt do budowy. Ctrl+klik+przeciągnięcie zaznacza obszar po przekątnej. Dodatkowo wciśnięcie Shift wyświetli jedynie szacunkowy koszt -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Wybierz rodzaj obiektu do budowy STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Podgląd obiektu STR_OBJECT_BUILD_SIZE :{BLACK}Rozmiar: {GOLD}{NUM} x {NUM} pól @@ -3355,11 +3370,11 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Posadź STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Losowe drzewa STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Pokryj losowo krajobraz drzewami STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normalny -STR_TREES_MODE_NORMAL_TOOLTIP :Sadź pojedyncze drzewa, przeciągając nad terenem. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Sadź pojedyncze drzewa, rysując po terenie STR_TREES_MODE_FOREST_SM_BUTTON :Zagajnik -STR_TREES_MODE_FOREST_SM_TOOLTIP :Sadź niewielkie lasy, przeciągając nad terenem. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Sadź niewielkie lasy, rysując po terenie STR_TREES_MODE_FOREST_LG_BUTTON :Las -STR_TREES_MODE_FOREST_LG_TOOLTIP :Sadź duże lasy, przeciągając nad terenem. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Sadź duże lasy, rysując po terenie # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Tworzenie terenu @@ -3367,7 +3382,7 @@ STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Umieść STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Wyznacz obszar pustyni.{}Użyj Ctrl, aby usunąć obszar pustyni STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Zwiększ powierzchnie do podwyższenia/obniżenia STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Zmniejsz powierzchnie do podwyższenia/obniżenia -STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Tworzenie przypadkowego lądu +STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Wygeneruj losowy teren STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Stwórz nowy scenariusz STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Resetuj krajobraz STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Usuń całą własność firmy z mapy @@ -3376,7 +3391,7 @@ STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Resetuj STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Czy na pewno chcesz usunąć całą własność firmy? # Town generation window (SE) -STR_FOUND_TOWN_CAPTION :{WHITE}Tworzenie miast +STR_FOUND_TOWN_CAPTION :{WHITE}Tworzenie Miast STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nowe miasto STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Zbuduj nowe miasto. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Losowe miasto @@ -3415,7 +3430,7 @@ STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Wybierz STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Utwórz losowe przedsiębiorstwa STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Pokryj mapę losowo położonymi przedsiębiorstwami STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Utwórz losowe przedsiębiorstwa -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Czy na pewno chcesz ufundować wiele losowych przedsiębiorstw? +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Czy na pewno chcesz wybudować wiele losowych przedsiębiorstw? STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Koszt: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Zleć poszukiwanie STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Zbuduj @@ -3455,7 +3470,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Właści STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Właściciel linii kolejowej: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalne władze: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Brak -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Współrzędne: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Współrzędne: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Indeks pola: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Zbudowano/odnowiono: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Rodzaj stacji: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typ stacji: {LTBLUE}{STRING} @@ -3573,11 +3589,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Klatkaż STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Tempo symulacji: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Liczba ticków gry symulowanych na sekundę. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Liczba symulowanych tyknięć gry na sekundę STR_FRAMERATE_RATE_BLITTER :{BLACK}Klatki na sekundę: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Liczba renderowanych klatek wideo na sekundę. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Liczba renderowanych klatek wideo na sekundę STR_FRAMERATE_SPEED_FACTOR :{BLACK}Obecny współczynnik szybkości gry: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Jak szybko gra obecnie działa, w porównaniu do oczekiwanej prędkości przy normalnym tempie symulacji. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Jak szybko gra obecnie działa, w porównaniu do oczekiwanej prędkości przy normalnym tempie symulacji STR_FRAMERATE_CURRENT :{WHITE}Obecny STR_FRAMERATE_AVERAGE :{WHITE}Średnia STR_FRAMERATE_MEMORYUSE :{WHITE}Pamięć @@ -3634,12 +3650,12 @@ STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Zapisz s STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Wczytaj scenariusz STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Wczytaj mapę wysokości STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Zapisz mapę wysokości -STR_SAVELOAD_HOME_BUTTON :{BLACK}Kliknij tutaj aby przejść do domyślnego katalogu +STR_SAVELOAD_HOME_BUTTON :{BLACK}Kliknij tutaj, aby przejść do domyślnego katalogu zapisów STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} wolnego miejsca STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lista napędów, katalogów i zapisanych gier -STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Obecnie zaznaczona nazwa dla zapisanej gry +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Obecnie wybrana nazwa dla zapisywanej gry STR_SAVELOAD_DELETE_BUTTON :{BLACK}Usuń -STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Skasuj zaznaczoną zapisaną grę +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Usuń zaznaczony zapis gry STR_SAVELOAD_SAVE_BUTTON :{BLACK}Zapisz STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Zapisz bieżącą grę używając wybranej nazwy STR_SAVELOAD_LOAD_BUTTON :{BLACK}Wczytaj @@ -3655,7 +3671,7 @@ STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Czy na STR_SAVELOAD_DIRECTORY :{STRING} (folder) STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (folder nadrzędny) -STR_SAVELOAD_OSKTITLE :{BLACK}Wprowadź nazwę pod jaką zapisać grę +STR_SAVELOAD_OSKTITLE :{BLACK}Wprowadź nazwę dla zapisywanej gry # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Tworzenie świata @@ -3766,11 +3782,14 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Czy na STR_GENERATION_PROGRESS :{WHITE}Ukończono w {NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Tworzenie świata -STR_GENERATION_RIVER_GENERATION :{BLACK}Generator rzek -STR_GENERATION_TREE_GENERATION :{BLACK}Tworzenie drzew -STR_GENERATION_OBJECT_GENERATION :{BLACK}Tworzenie obiektów +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Tworzenie krajobrazu +STR_GENERATION_RIVER_GENERATION :{BLACK}Tworzenie rzek STR_GENERATION_CLEARING_TILES :{BLACK}Tworzenie terenów skalistych i nierówności -STR_GENERATION_SETTINGUP_GAME :{BLACK}Ustawianie gry +STR_GENERATION_TOWN_GENERATION :{BLACK}Tworzenie miast +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Rozmieszczanie przedsiębiorstw +STR_GENERATION_OBJECT_GENERATION :{BLACK}Rozmieszczanie obiektów +STR_GENERATION_TREE_GENERATION :{BLACK}Rozmieszczanie drzew +STR_GENERATION_SETTINGUP_GAME :{BLACK}Konfigurowanie rozgrywki STR_GENERATION_PREPARING_TILELOOP :{BLACK}Uaktywnianie pól STR_GENERATION_PREPARING_SCRIPT :{BLACK}Uruchamianie skryptu STR_GENERATION_PREPARING_GAME :{BLACK}Przygotowywanie gry @@ -3861,7 +3880,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Rodzaj drogi STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGFR zmienna 60+parametr x (heksadecymalnie) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Wyrównywanie sprite'a {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Wyrównywanie sprite'a: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Wyrównywanie sprite'a: Action 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Wyrównywanie sprite'a: Action 0x5, typ {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Następny sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Idź do następnego normalnego sprite'a, pomijając jakiekolwiek pseudo / przebarwione / czcionkowe sprite'y, a po ostatnim przejdź do pierwszego STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Idź do sprite'a @@ -3870,6 +3891,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Poprzedn STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Idź do poprzedniego normalnego sprite'a, pomijając jakiekolwiek pseudo / przebarwione / czcionkowe sprite'y, a po pierwszym przejdź do ostatniego STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Prezentacja wybranego sprite'a. Wyrównanie jest ignorowane podczas rysowania tego sprite'a STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Poruszaj spritem, zmieniając przesunięcia X i Y. Ctrl+klik aby przesunąć o 8 jednostek na raz +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Wyśrodkowanie przesunięcia @@ -3911,7 +3933,7 @@ STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Zawiera wiele w STR_NEWGRF_ERROR_READ_BOUNDS :Odczyt poza obszar pseudo-sprite'u (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Potrzebne źródło GRF nie jest dostępne (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} został wyłączony przez {STRING} -STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Niepoprawny/nieznany format układu sprite'u (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Nieprawidłowy/nieznany format układu sprite'a (sprite {3:NUM}) STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Zbyt wiele elementów na liście wartości właściwości (sprite {3:NUM}, właściwość {4:HEX}) STR_NEWGRF_ERROR_INDPROD_CALLBACK :Nieprawidłowe wywołanie zwrotne produkcji przedsiębiorstwa (sprite {3:NUM}, „{2:STRING}”) @@ -3943,7 +3965,7 @@ STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Zmienion STR_BROKEN_VEHICLE_LENGTH :{WHITE}Pociąg „{VEHICLE}” należący do „{COMPANY}” ma nieprawidłową długość. Prawdopodobnie jest to spowodowane problemami z NewGRF-ami. Gra może się desychronizować lub zawiesić STR_NEWGRF_BUGGY :{WHITE}NewGRF „{0:STRING}” dostarcza niepoprawne dane -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informacje o ładunku/naprawie dla „{1:ENGINE}” różnią się od listy zakupu po zbudowaniu. Może to spowodować, że autoodnowienie/-zamiana nie wykona remontu poprawnie +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informacje o ładunku/naprawie dla „{1:ENGINE}” różnią się od listy zakupu po zbudowaniu. Może to spowodować, że automatyczne odnowienie/zamiana nie wykona się poprawnie STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}„{1:STRING}” spowodował nieskończoną pętlę w wywołaniu zwrotnym produkcji STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Wywołanie zwrotne {1:HEX} zwróciło nieznany/błędny wynik {2:HEX} STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}„{1:STRING}” zwrócił niewłaściwy typ ładunku w wywołaniu zwrotnym produkcji w {2:HEX} @@ -3966,8 +3988,8 @@ STR_NEWGRF_SCAN_ARCHIVES :Skanowanie w po # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Lista napisów - {COMMA} napis{P "" y ów} -STR_SIGN_LIST_MATCH_CASE :{BLACK}Wielkość znaków -STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Przełącza uwzględnianie wielkości znaków przy porównywaniu tekstu napisu z filtrem +STR_SIGN_LIST_MATCH_CASE :{BLACK}Wielkość liter +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Przełącz uwzględnianie wielkości liter przy porównywaniu tekstu napisu z filtrem # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Edycja tekstu napisu @@ -3978,7 +4000,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Idź do STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Wpisz nazwę dla znaku # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Miasta +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Miasta ({COMMA} z {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Żaden - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Metropolia){BLACK} ({COMMA}) @@ -4106,7 +4128,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Ogólny STR_STORY_BOOK_SPECTATOR :Ogólny przewodnik STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Strona {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Skocz na właściwą stronę wybierając ją z listy. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Przejdź do określonej strony, wybierając ją z rozwijanej listy STR_STORY_BOOK_PREV_PAGE :{BLACK}Wstecz STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Idź na poprzednią stronę STR_STORY_BOOK_NEXT_PAGE :{BLACK}Dalej @@ -4312,7 +4334,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/okres # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Przedsiębiorstwa +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Przedsiębiorstwa ({COMMA} z {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Żaden - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% przetransportowano){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4401,7 +4423,7 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Samoloty bez gr STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupy - kliknij na grupę, aby wyświetlić wszystkie pojazdy z grupy. Przeciągnij i upuść grupy, aby dostosować hierarchię. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupy - kliknij na grupę, aby wyświetlić listę wszystkich pojazdów należących do tej grupy. Przeciągnij i upuść grupę, aby uporządkować hierarchię STR_GROUP_CREATE_TOOLTIP :{BLACK}Kliknij aby stworzyć grupę STR_GROUP_DELETE_TOOLTIP :{BLACK}Usuń zaznaczoną grupę STR_GROUP_RENAME_TOOLTIP :{BLACK}Zmień nazwę zaznaczonej grupy @@ -4531,7 +4553,7 @@ STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Wyświet STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Przełącz ukrywanie/wyświetlanie danego typu taboru STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Przełącz ukrywanie/wyświetlanie danego typu pojazdu STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Przełącz ukrywanie/wyświetlanie danego typu statku -STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Przełącz ukrywanie/wyświetlanie danego typu ssamolotu +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Przełącz ukrywanie/wyświetlanie danego typu samolotu ###length VEHICLE_TYPES STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Zmiana nazwy typu pociągu @@ -4612,9 +4634,9 @@ STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Pokaż l ###length VEHICLE_TYPES STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliknij, aby zatrzymać wszystkie pociągi w hali warsztatów -STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie pojazdy w zajezdni -STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie statki w stoczni -STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie samoloty w hangarze +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliknij, aby zatrzymać wszystkie pojazdy w zajezdni +STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Kliknij, aby zatrzymać wszystkie statki w stoczni +STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Kliknij, aby zatrzymać wszystkie samoloty w hangarze ###length VEHICLE_TYPES STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliknij, aby uruchomić wszystkie pociągi z warsztatów @@ -4828,7 +4850,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ładowno STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Wartość ładunku: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Okres między serwisami: {LTBLUE}{COMMA}{NBSP}dni{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Interwał serwisowania: {LTBLUE}{COMMA}{NBSP}minut{P a y ""}{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Interwał serwisowania: {LTBLUE}{COMMA}{NBSP}minut{P a y ""}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Okres między serwisami: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Ostatni serwis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Ostatni serwis: {LTBLUE}{NUM} minut{P a y ""} temu @@ -5111,7 +5133,7 @@ STR_TIMETABLE_START_SECONDS_QUERY :Sekundy do uruc STR_TIMETABLE_CHANGE_TIME :{BLACK}Zmień czas STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ustal ilość czasu, jaką powinno zająć zaznaczone polecenie. Użyj Ctrl, aby ustalić taki czas dla wszystkich poleceń -STR_TIMETABLE_CLEAR_TIME :{BLACK}Usuń czas +STR_TIMETABLE_CLEAR_TIME :{BLACK}Wyczyść czas STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Wyczyść podany czas w zaznaczonym poleceniu. Użyj Ctrl, aby wyczyścić czasy we wszystkich poleceniach STR_TIMETABLE_CHANGE_SPEED :{BLACK}Zmień limit prędkości @@ -5167,7 +5189,7 @@ STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Sprawdź STR_ERROR_AI_NO_AI_FOUND :Nie znaleziono SI do wczytania.{}SI jest nieaktywne i nic nie robi.{}Możesz pobrać kilka SI z przeglądarki „Dodatków Online” STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Jeden z uruchomionych skryptów przestał działać. Prosimy o zgłoszenie tego autorowi skryptu dołączając zrzut ekranu okna debugowania SI / GameScript -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Okno debugowania SI / Game Script jest dostępne tylko na serwerze +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Okno debugowania SI / Game Script jest dostępne tylko dla serwera # AI configuration window STR_AI_CONFIG_CAPTION_AI :{WHITE}Ustawienia SI @@ -5226,8 +5248,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script STR_AI_SETTINGS_CLOSE :{BLACK}Zamknij STR_AI_SETTINGS_RESET :{BLACK}Resetuj STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -5280,9 +5300,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Szacowan STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Zapisywanie trwa,{}proszę zaczekać do zakończenia! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Błąd autozapisu STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nie można odczytać napędu -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Nie można zapisać gry{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Nie można zapisać gry... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nie można usunąć pliku -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nie można wczytać gry{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nie można wczytać gry... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Błąd wewnętrzny: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Zepsuta zapisana gra - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Zapisana gra zrobiona w nowszej wersji @@ -5334,7 +5354,7 @@ STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Teren po STR_ERROR_CAN_T_DO_THIS :{WHITE}Nie można tego zrobić... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Należy najpierw zburzyć budynek STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Nie można wyczyścić terenu... -STR_ERROR_SITE_UNSUITABLE :{WHITE}... niewłaściwa parcela +STR_ERROR_SITE_UNSUITABLE :{WHITE}... nieodpowiednie miejsce STR_ERROR_ALREADY_BUILT :{WHITE}... już zbudowano STR_ERROR_OWNED_BY :{WHITE}... własność {STRING.d} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... teren jest własnością innej firmy @@ -5376,7 +5396,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nie moż STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nie można zbudować siedziby firmy... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nie można wybudować miasta +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nie można zbudować żadnego miasta... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Nie można zmienić nazwy miasta... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Nie można tutaj zbudować miasta... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Nie można rozszerzyć miasta... @@ -5387,21 +5407,22 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nie STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trwają roboty drogowe STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Nie można usunąć tego miasta...{}Stacja lub zajezdnia przynależy do tego miasta lub obszar miasta nie może być usunięty STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... w centrum tego miasta nie ma odpowiedniego miejsca na pomnik +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Nie można postawić budynku... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... zbyt wiele przedsiębiorstw STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nie można stworzyć przedsiębiorstw... -STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Nie można tutaj wybudować: {STRING}... -STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Nie można tutaj wybudować tego przedsiębiorstwa... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Nie można tutaj zbudować: {STRING}... +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Nie można tutaj zbudować przedsiębiorstwa tego typu... STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}Nie można znaleźć przedsiębiorstwa... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... zbyt blisko innego przedsiębiorstwa STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... należy najpierw wybudować miasto STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... dozwolone jedno na miasto STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... można zbudować jedynie w miastach o populacji przynajmniej 1200 -STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... może być wybudowane tylko w lasach deszczowych -STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... może być wybudowane tylko na pustyni -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... można wybudować tylko w mieście (zastępując domy) -STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... można wybudować tylko w pobliżu centrum miast +STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... można zbudować tylko na obszarach lasów deszczowych +STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... można zbudować tylko na obszarach pustynnych +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... można zbudować tylko w mieście (zastępując domy) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... można zbudować tylko w pobliżu centrum miasta STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... może być budowane tylko na niskich terenach STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... może być usytuowane tylko blisko krawędzi mapy STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... las może być posadzony tylko powyżej linii śniegu @@ -5414,16 +5435,18 @@ STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nie ma o STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Zmień parametry tworzenia map, żeby uzyskać lepsze mapy # Station construction related errors -STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nie można tutaj wybudować stacji... +STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nie można tutaj zbudować stacji... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nie można zbudować przystanku... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nie można zbudować stacji ciężarówek... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nie można zbudować przystanku tramwajowego... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nie można zbudować tramwajowej stacji załadunkowej... -STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Nie można tutaj wybudować portu... -STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nie można tutaj wybudować lotniska... +STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Nie można tutaj zbudować portu... +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nie można tutaj zbudować lotniska... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Przylega do więcej niż jednej stacji STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stacja zbyt rozległa +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... nieobsługiwana liczba torów +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... nieobsługiwana długość STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Za dużo stacji STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Za dużo części stacji kolejowej STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Zbyt wiele przystanków autobusowych @@ -5458,20 +5481,23 @@ STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Należy STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Przylega do więcej niż jednego istniejącego posterunku STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Zbyt blisko innego posterunku -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Nie można budować tutaj posterunku... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Nie można tutaj zbudować posterunku... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Nie można tutaj zbudować posterunku drogowego... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Nie można tutaj ustawić boi... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nie można zmienić nazwy posterunku... -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Nie można usunąć stąd posterunku kolejowego... -STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Musisz usunąć najpierw posterunek kolejowy +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Nie można stąd usunąć posterunku kolejowego... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Nie można stąd usunąć posterunku drogowego... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Należy najpierw usunąć posterunek kolejowy +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Należy najpierw usunąć posterunek drogowy STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boja na drodze STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boja w użyciu przez inna firmę! # Depot related errors -STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Nie można tutaj wybudować warsztatów kolejowych... +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Nie można tutaj zbudować warsztatów kolejowych... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Nie można tutaj zbudować zajezdni... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Nie można tutaj zbudować zajezdni tramwajowej... -STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Nie można tutaj wybudować stoczni... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Nie można tutaj zbudować stoczni... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nie można zmienić nazwy warsztatów... @@ -5510,13 +5536,13 @@ STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Nowy poj # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Niemożliwa kombinacja torów STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Należy najpierw usunąć sygnalizację -STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Nieodpowiednie tory/brak torów +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Brak odpowiednich torów kolejowych STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Należy najpierw usunąć tory STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Droga jest jednokierunkowa lub zablokowana STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Przejazd kolejowy nie dozwolony dla tego typu torów STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Przejazdy kolejowe nie są dozwolone dla tego typu drogi STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Nie można tutaj postawić sygnałów... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Nie można tutaj ułożyć torów... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Nie można tutaj zbudować torów... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Nie można stąd usunąć torów... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Nie można stąd usunąć sygnałów... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Nie można tutaj zmienić sygnałów... @@ -5543,13 +5569,13 @@ STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Brak wł STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Nie można tutaj zbudować kanału... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Nie można tutaj zbudować śluzy... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Nie można tutaj umieścić rzeki... -STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... musi być wybudowane na wodzie +STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... można zbudować tylko na wodzie STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... nie można zbudować na wodzie STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... nie można zbudować na otwartym morzu STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... nie można zbudować na kanale STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... nie można budować na rzece STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Należy najpierw usunąć kanał -STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Nie można zbudować tutaj akweduktu... +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Nie można tutaj zbudować akweduktu... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... drzewo już tu jest @@ -5557,7 +5583,7 @@ STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... niew STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Nie można posadzić drzewa... # Bridge related errors -STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Nie można tutaj wybudować mostu... +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Nie można tutaj zbudować mostu... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Należy najpierw usunąć most STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Nie można zaczynać i kończyć w tym samym miejscu STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Początki mostu nie są na tej samej wysokości @@ -5569,7 +5595,7 @@ STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... za d STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Koniec mostu poza mapą # Tunnel related errors -STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Nie można tutaj wybudować tunelu... +STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Nie można tutaj zbudować tunelu... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Nieodpowiednie miejsce na wejście tunelu STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Należy najpierw usunąć tunel STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Inny tunel na drodze @@ -5664,6 +5690,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmień k STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Obecnie żaden pojazd nie jest dostępny STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Zacznij grę po {DATE_SHORT} albo użyj zestawu NewGRF, który zawiera wczesne pojazdy +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Brak dostępnych typów dróg miejskich +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmień konfigurację NewGRF +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Brak jeszcze dostępnych typów dróg miejskich +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Rozpocznij nową grę po {DATE_SHORT} roku lub użyj NewGRF, który umożliwia wczesne budowanie dróg miejskich + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nie można przepuścić pociągu za sygnał, niebezpieczeństwo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nie można odwrócić kierunku jazdy pociągu... @@ -5705,7 +5736,8 @@ STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Brak odp STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Brak przystanków przeznaczonych dla pojazdów przegubowych.{}Pojazdy przegubowe wymagają przystanku przelotowego, a nie zatokowego STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Ten samolot nie może wylądować na tym lądowisku STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Ten helikopter nie może wylądować na tym lotnisku -STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Brak posterunku kolejowego +STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Brak posterunków kolejowych +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Brak posterunków drogowych STR_ERROR_NO_BUOY :{WHITE}Brak boi # Timetable related errors @@ -5905,25 +5937,25 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Cho STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Parowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Parowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Parowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Parowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney „Jubilee” (Parowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu „A4” (Parowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH „8P” (Parowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :„Dash” (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry „25” (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU „37” (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss „47” (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elektrowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elektrowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elektrowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH „125” (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH „30” (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH „40” (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :„T.I.M.” (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :„AsiaStar” (Elektrowóz) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Wagon pasażerski STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Wagon pocztowy STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Wagon na węgiel @@ -5951,8 +5983,8 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Wagon na zabawk STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Wagon na baterie STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Wagon na napoje gazowane STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Wagon na plastik -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektrowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :„X2001” (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :„Millennium Z1” (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Wagon pasażerski STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Wagon pocztowy @@ -5981,10 +6013,10 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Wagon na zabawk STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Wagon na baterie STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Wagon na napoje gazowane STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Wagon na plastik -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elektrowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Elektrowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elektrowóz) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 „Leviathan” (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 „Cyclops” (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 „Pegasus” (Elektrowóz) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 „Chimaera” (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Wagon pasażerski STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Wagon pocztowy @@ -6248,6 +6280,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}tys. +STR_CURRENCY_SHORT_MEGA :{NBSP}mln +STR_CURRENCY_SHORT_GIGA :{NBSP}mld +STR_CURRENCY_SHORT_TERA :{NBSP}bln + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -6264,6 +6301,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 25ffcdd62f..515afc2583 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -309,11 +309,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ao ativa STR_BUTTON_DEFAULT :{BLACK}Padrão STR_BUTTON_CANCEL :{BLACK}Cancelar STR_BUTTON_OK :{BLACK}Confirmar -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Aviso: Os administradores do servidor podem ser capazes de ler qualquer texto inserido aqui. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :\1234567890'« qwertyuiop+´asdfghjklçº~ZXCVBNM;:_ +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Tamanho: {NUM} @@ -427,7 +426,7 @@ STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Construi STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Construir infraestrutura para elétricos STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantar árvores. Ctrl+Clique+Arrastar para selecionar a área na diagonal. Pressione também Shift para apenas mostrar o custo estimado STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Colocar letreiros -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar objeto. Ctrl+Clique+Arrastar para selecionar a área diagonalmente. Pressione também Shift para mostrar o custo estimado +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar objeto. Ctrl+Clique+Arrastar para selecionar a área diagonalmente. Pressione também Shift para apenas mostrar o custo estimado # Scenario editor file menu ###length 7 @@ -439,6 +438,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Abandonar edito STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Sair +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Gerar localidades +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Colocar casas + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Opções do Jogo @@ -538,37 +540,37 @@ STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Ativar coloraç STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Alternar contornos de "widget" ###length 31 -STR_DAY_NUMBER_1ST :1 -STR_DAY_NUMBER_2ND :2 -STR_DAY_NUMBER_3RD :3 -STR_DAY_NUMBER_4TH :4 -STR_DAY_NUMBER_5TH :5 -STR_DAY_NUMBER_6TH :6 -STR_DAY_NUMBER_7TH :7 -STR_DAY_NUMBER_8TH :8 -STR_DAY_NUMBER_9TH :9 -STR_DAY_NUMBER_10TH :10 -STR_DAY_NUMBER_11TH :11 -STR_DAY_NUMBER_12TH :12 -STR_DAY_NUMBER_13TH :13 -STR_DAY_NUMBER_14TH :14 -STR_DAY_NUMBER_15TH :15 -STR_DAY_NUMBER_16TH :16 -STR_DAY_NUMBER_17TH :17 -STR_DAY_NUMBER_18TH :18 -STR_DAY_NUMBER_19TH :19 -STR_DAY_NUMBER_20TH :20 -STR_DAY_NUMBER_21ST :21 -STR_DAY_NUMBER_22ND :22 -STR_DAY_NUMBER_23RD :23 -STR_DAY_NUMBER_24TH :24 -STR_DAY_NUMBER_25TH :25 -STR_DAY_NUMBER_26TH :26 -STR_DAY_NUMBER_27TH :27 -STR_DAY_NUMBER_28TH :28 -STR_DAY_NUMBER_29TH :29 -STR_DAY_NUMBER_30TH :30 -STR_DAY_NUMBER_31ST :31 +STR_DAY_NUMBER_1ST :1.º +STR_DAY_NUMBER_2ND :2.º +STR_DAY_NUMBER_3RD :3.º +STR_DAY_NUMBER_4TH :4.º +STR_DAY_NUMBER_5TH :5.º +STR_DAY_NUMBER_6TH :6.º +STR_DAY_NUMBER_7TH :7.º +STR_DAY_NUMBER_8TH :8.º +STR_DAY_NUMBER_9TH :9.º +STR_DAY_NUMBER_10TH :10.º +STR_DAY_NUMBER_11TH :11.º +STR_DAY_NUMBER_12TH :12.º +STR_DAY_NUMBER_13TH :13.º +STR_DAY_NUMBER_14TH :14.º +STR_DAY_NUMBER_15TH :15.º +STR_DAY_NUMBER_16TH :16.º +STR_DAY_NUMBER_17TH :17.º +STR_DAY_NUMBER_18TH :18.º +STR_DAY_NUMBER_19TH :19.º +STR_DAY_NUMBER_20TH :20.º +STR_DAY_NUMBER_21ST :21.º +STR_DAY_NUMBER_22ND :22.º +STR_DAY_NUMBER_23RD :23.º +STR_DAY_NUMBER_24TH :24.º +STR_DAY_NUMBER_25TH :25.º +STR_DAY_NUMBER_26TH :26.º +STR_DAY_NUMBER_27TH :27.º +STR_DAY_NUMBER_28TH :28.º +STR_DAY_NUMBER_29TH :29.º +STR_DAY_NUMBER_30TH :30.º +STR_DAY_NUMBER_31ST :31.º ###length 12 STR_MONTH_ABBREV_JAN :Jan @@ -622,14 +624,14 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Desativar tudo STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Mostrar todas as cargas no gráfico de tarifas por carga STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Não mostrar carga no gráfico de tarifas por carga -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Mostrar/ocultar gráfico para o tipo de carga +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Alternar o gráfico para este tipo de carga STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Exibir classificações detalhadas de desempenho # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Chave dos gráficos da empresa -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Clique aqui para mostrar/ocultar empresa no gráfico +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Alternar o gráfico desta empresa # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Classificação de Empresas @@ -709,7 +711,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Seleccio STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Seleccionar programa 'Ezy Street' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Seleccionar programa 'Personalizado 1' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleccionar programa 'Personalizado 2' -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Ligar/Desligar programa aleatório +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Alternar programa aleatório STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostrar janela de selecção de faixas de música # Playlist window @@ -792,7 +794,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Deserto STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Neve -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Mostrar/ocultar nomes das localidades no mapa +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Alternar exibição dos nomes das localidades STR_SMALLMAP_CENTER :{BLACK}Centrar o mapa na posição actual STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -801,9 +803,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Desativar tudo STR_SMALLMAP_ENABLE_ALL :{BLACK}Ativar tudo STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostrar altura +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Mostrar nomes das indústrias STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Não mostrar indústrias no mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostrar todas as indústrias no mapa STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Alternar a disposição do mapa de alturas +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Alternar exibição dos nomes das indústrias STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Mostrar propriedades que não sejam de empresas no mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Mostrar todos as propriedades da empresa no mapa STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Não mostrar cargas no mapa @@ -957,18 +961,14 @@ STR_GAME_OPTIONS_VOLUME :Volume STR_GAME_OPTIONS_SFX_VOLUME :Efeitos sonoros STR_GAME_OPTIONS_MUSIC_VOLUME :Música -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades monetárias STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecção de unidades monetárias STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britânica STR_GAME_OPTIONS_CURRENCY_USD :Dólar dos E.U.A. STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1012,6 +1012,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Rupia Indiana STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonésia STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit da Malásia STR_GAME_OPTIONS_CURRENCY_LVL :Lats da Letónia +STR_GAME_OPTIONS_CURRENCY_PTE :Escudo Português STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Guardar automaticamente STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Seleccionar o intervalo para guardar automático @@ -1054,15 +1055,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marque esta caixa para dimensionar os chanfros por tamanho de interface STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Usar a fonte "sprite" tradicional -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marque esta caixa se prefere usar o tipo de fonte tradicional de tamanho fixo. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marque esta caixa se prefere usar o tipo de fonte tradicional de tamanho fixo STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Fontes anti-alias -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marque esta caixa para fontes redimensionáveis com anti-alias. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marque esta caixa para fontes redimensionáveis com anti-alias -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Sondagem automatizada STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participar numa sondagem automatizada @@ -1091,6 +1088,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunto STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleccione o conjunto de música base a usar STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de música base +STR_GAME_OPTIONS_ONLINE_CONTENT :Obter Conteúdo +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Verificar se há conteúdo novo e atualizado para descarga + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(não existem "plugins" para integrar com as plataformas sociais instaladas) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1118,6 +1118,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Diminuir STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Aumentar a quantidade da sua moeda para uma Libra (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Definir a taxa de câmbio da sua moeda para uma Libra (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Separador: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Define o separador para a sua moeda + STR_CURRENCY_PREFIX :{LTBLUE}Prefixo: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Definir o prefixo para a sua moeda STR_CURRENCY_SUFFIX :{LTBLUE}Sufixo: {ORANGE}{STRING} @@ -1272,7 +1275,7 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Dinheiro ilimit STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Permitir gastos ilimitados e desabilitar a falência de empresas STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Valor máximo do empréstimo inicial: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Valor máximo do empréstimo para cada empresa (sem ter em conta a inflação)Se definido como "Sem empréstimo", não haverá dinheiro disponível, a menos que seja fornecido por um Script de Jogo ou pela configuração "Dinheiro ilimitado". +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Valor máximo do empréstimo para cada empresa (sem ter em conta a inflação). Se definido como "Sem empréstimo", não haverá dinheiro disponível, a menos que seja fornecido por um Script de Jogo ou pela configuração "Dinheiro ilimitado" STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Sem empréstimo @@ -1337,7 +1340,7 @@ STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Facilitar a rem STR_CONFIG_SETTING_TRAIN_LENGTH :Tamanho máximo de comboios: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Assignar o tamanho máximo dos comboios -STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} quadrado{P 0 "" s} +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} mosaico{P 0 "" s} STR_CONFIG_SETTING_SMOKE_AMOUNT :Quantidade de fumo/faíscas de veículos: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Assignar quanto fumo ou quantas faíscas são emitidas pelos veículos @@ -1349,14 +1352,14 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Tipo de acelera STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Escolha o modelo de física para a aceleração de veículos de estrada. O modelo "original" penaliza as inclinações para todos os veículos. O modelo "realista" penaliza as curvas e inclinações tendo em conta várias propriedades do motor, tais como o esforço de tração STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Ângulo de inclinação para comboios: {STRING} -STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Ângulo de inclinação de um quadrado para um comboio. Valores mais elevados tornam a subida mais difícil +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Ângulo de inclinação de um mosaico para um comboio. Valores mais elevados tornam a subida mais difícil STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Ângulo de inclínação para veículos rodoviários: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Declive de um quadrado inclinado para um veiculo de estrada. Valores mais altos tornam mais difícil de subir. +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Declive de um mosaico inclinado para um veiculo de estrada. Valores mais altos tornam mais difícil de subir. STR_CONFIG_SETTING_FORBID_90_DEG :Proibir comboios fazer curvas de 90º: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Curvas de 90 graus ocorrem quando uma pista horizontal é directamente seguida por outra vertical num quadrado adjacente, fazendo com que o combóio vire 90 graus quando atravessa a fronteira dos quadrados, ao invés dos habituais 45 graus para outras combinações de pistas. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Curvas de 90 graus ocorrem quando uma pista horizontal é diretamente seguida por outra vertical num mosaico adjacente, fazendo com que o comboio vire 90 graus quando atravessa a fronteira dos mosaicos, ao invés dos habituais 45 graus para outras combinações de pistas STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permitir juntar estações não adjacentes: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite acrescentar partes a uma estação sem tocar diretamente nas partes já existentes, fazendo Ctrl+Clique enquanto coloca as novas partes @@ -1380,8 +1383,8 @@ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nenhum STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Como as outras STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Em prospeção -STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Área plana à volta das industrias: {STRING} -STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Quantidade de terreno plano á volta de uma industria. Isto garante que terreno vazio esteja disponível para construir linhas, etc +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Área plana à volta das indústrias: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Quantidade de terreno plano à volta de uma indústria. Isto garante um espaço vazio à volta de uma indústria, permanecerá disponível para construção de linhas, etc STR_CONFIG_SETTING_MULTIPINDTOWN :Permitir várias indústrias semelhantes por localidade: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalmente, uma localidade não aceita mais do que uma indústria de cada tipo. Com esta configuração, será possível ter várias indústrias do mesmo tipo na mesma localidade @@ -1468,7 +1471,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Cor inicial da STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Escolher a cor inicial da empresa STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Cor secundária da empresa inicial: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Escolha a cor inicial secundária para a empresa, se estiver a usar um NewGRF que a permita. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Escolha a cor inicial secundária para a empresa, se estiver a usar um NewGRF que a permita STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeroportos nunca expiram: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Ativar esta preferência torna cada tipo de aeroporto disponível para sempre após a sua introdução @@ -1488,26 +1491,29 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisar se o luc STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Quando ativo, uma notícia é enviada quando um veículo não gerou lucro num ano STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Quando ativo, uma notícia é enviada quando um veículo não gerou qualquer lucro durante um período +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Avisar se um veículo começar a ficar velho: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Quando ativo, será enviada uma notícia quando um veículo começar a ficar velho + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Veículos nunca expiram: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Quando ativo, todos os modelos de veículos permanecerão disponíveis para sempre após a sua introdução STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Unidades de cronometragem: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Selecione as unidades de cronometragem do jogo. Isso não pode ser alterado posteriormente.{}{}O uso baseado no calendário é a experiência clássica do OpenTTD, em que um ano corresponde a 12 meses e cada mês tem 28 a 31 dias.{}{}No tempo baseado no relógio de parede, o movimento de veículos, a produção de carga e as finanças baseiam-se em incrementos de um minuto, o que equivale a um mês de 30 dias no modo baseado no calendário. Eles são agrupados em períodos de 12 minutos, equivalentes a um ano no modo baseado em calendário.{}{}Em ambos os modos há sempre um calendário clássico, que é usado para datas de introdução de veículos, casas e outras infraestruturas. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Selecione as unidades de cronometragem do jogo. Isto não pode ser alterado posteriormente.{}{}O uso baseado no calendário é a experiência clássica do OpenTTD, em que um ano corresponde a 12 meses e cada mês tem 28 a 31 dias.{}{}No tempo baseado no relógio de parede, o movimento de veículos, a produção de carga e as finanças baseiam-se em incrementos de um minuto, o que equivale a um mês de 30 dias no modo baseado no calendário. Estes são agrupados em períodos de 12 minutos, equivalentes a um ano no modo baseado em calendário.{}{}Em ambos os modos há sempre um calendário clássico, que é usado para datas de introdução de veículos, casas e outras infraestruturas ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Calendário STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Relógio de parede STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minutos por ano: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Escolher o número de minutos num ano civil. Por omissão é 12 minutos. Defina como 0 para impedir que a hora do calendário seja alterada. Esta configuração não afeta a simulação económica do jogo e só está disponível ao usar a cronometragem do relógio de parede. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Escolher o número de minutos por cada ano do calendário. O padrão é 12 minutos. Defina como 0 (zero) para impedir que a hora do calendário seja alterada. O aumento da duração do ano civil retarda a introdução de veículos, casas e outras infra-estruturas. Não afeta a velocidade do veículo nem a simulação económica, exceto a inflação. Esta configuração só está disponível ao usar o relógio de parede STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (tempo do calendário congelado) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Escalar a produção de carga da localidade: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Escalar a produção de carga das localidades nesta percentagem. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Escalar a produção de carga das localidades nesta percentagem STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Escalar a produção de carga da indústria: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Escalar a produção de carga das indústrias nesta percentagem. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Escalar a produção de carga das indústrias nesta percentagem STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Auto-renovação de veículos quando ficam velhos: {STRING} @@ -1538,8 +1544,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grossura das li STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Largura da linha nos gráficos. Uma linha mais estreita é de leitura mais precisa, enquanto uma linha mais espessa é mais fácil de ver e as cores distinguem-se melhor. STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Exibir o nome do "NewGRF" na janela de compra de veículos: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Adiciona uma linha à janela de compra de veículos, mostrando a qual "NewGRF" pertence o veículo selecionado. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Mostrar as cargas que os veículos podem transportar nas janelas de listagem {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Adiciona uma linha à janela de compra de veículos, mostrando a qual "NewGRF" pertence o veículo selecionado +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Mostrar as cargas que os veículos podem transportar nas janelas de listagem: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Quando ativo, a carga transportável do veículo aparecerá acima nas listas de veículos STR_CONFIG_SETTING_LANDSCAPE :Cenário: {STRING} @@ -1558,13 +1564,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densidade indus STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Define quantas indústrias devem ser geradas e que nível deve ser mantido durante o jogo STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distância máxima entre o limite do mapa e Refinarias de Petróleo: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Refinarias de petróleo são construídas apenas próximo da borda do mapa, isto é, na costa para mapas de ilha +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limite de distância entre a borda do mapa e o local de construção de refinarias e plataformas de petróleo. Em mapas de ilhas isto garante que elas fiquem perto da costa. Em mapas com mais de 256 quadrados esse valor é aumentado STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altura da linha de neve: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Escolher a que altura a neve começa na paisagem subártica. A neve também afeta a geração de indústrias e os requisitos de crescimento das localidades. Só pode ser modificado através do Editor de Cenários ou é calculado através da "cobertura de neve" STR_CONFIG_SETTING_SNOW_COVERAGE :Cobertura de neve: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Escolher a quantidade aproximada de neve no clima subártico. A neve também afeta a geração de indústrias e os requisitos de crescimento das localidades. Usado apenas durante a geração do mapa. O nível do mar e as suas encostas nunca têm neve. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Escolher a quantidade aproximada de neve no clima subártico. A neve também afeta a geração de indústrias e os requisitos de crescimento das localidades. Usado apenas durante a geração do mapa. O nível do mar e as suas encostas nunca têm neve STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Cobertura do deserto: {STRING} @@ -1572,7 +1578,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Escolher a quan STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rudeza do terreno: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Escolher a forma e o número de colinas. As paisagens suaves têm poucas colinas, largas, enquanto as paisagens acidentadas possuem mais, colinas pequenas. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Escolher a forma e o número de colinas. As paisagens suaves têm poucas colinas, largas, enquanto as paisagens acidentadas possuem mais, colinas pequenas ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Muito suave STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Suave @@ -1580,7 +1586,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Acidentado STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Muito acidentado STR_CONFIG_SETTING_VARIETY :Distribuição de variedade: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Escolher se o mapa contém tanto áreas montanhosas como áreas planas. Quanto maior a variedade, maiores as diferenças de altitude entre essas as áreas. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Escolher se o mapa contém tanto áreas montanhosas como áreas planas. Quanto maior a variedade, maiores as diferenças de altitude entre essas as áreas STR_CONFIG_SETTING_RIVER_AMOUNT :Quantidade de rios: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Escolhe quantos rios serão gerados @@ -1627,7 +1633,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde Escuro STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Cores de sobreposição de fluxo de carga: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Define o esquema de cores usado para a sobreposição do fluxo de carga. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Define o esquema de cores usado para a sobreposição do fluxo de carga ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Verde para vermelho (original) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Verde para azul @@ -1646,7 +1652,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Suavizar desloc STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla como a vista principal navega para uma posição específica ao clicar no mapa pequeno ou ao dar um comando para navegar para um objeto específico no mapa. Se ativo, a vista principal navega suavemente, se inativo a vista salta diretamente para o destino. STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas nas várias ferramentas de construção: {STRING} -STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Mostrar distâncias em quadrados e diferenças de altura enquanto arrasta o rato durante tarefas de construção +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Mostrar distâncias em mosaicos e diferenças de altura enquanto arrasta o rato durante tarefas de construção STR_CONFIG_SETTING_LIVERIES :Mostrar estampagens da empresa: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Controla a utilização de decorações específicas por tipo de veículo (em vez de decorações por empresa) @@ -1710,10 +1716,10 @@ STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quando ativo, o STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Durante pausa permitir: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Seleccionar que acções podem ser feitas enquanto o jogo está em pausa ###length 4 -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nenhuma acção +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nenhuma ação STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Todas as acções sem construção STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Todas expecto acções que modificam o terreno -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Todas as acções +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Todas as ações STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar a lista avançada de veículos: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ativar a utilização de listas avançadas de veículos para o agrupamento de veículos @@ -1748,10 +1754,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Deixar ferramen STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Manter as ferramentas de construção de pontes, túneis, etc. abertas após uso STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Remover automaticamente os sinais durante a construção de vias férreas: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Remova automaticamente os sinais durante a construção do trilho se os sinais estiverem no caminho. Observe que isso pode potencialmente levar a acidentes de comboio. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Remova automaticamente os sinais durante a construção da ferrovia se os sinais estiverem no caminho. Isto pode potencialmente causar acidentes de comboio STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Limite de velocidade do avanço rápido: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limite da velocidade do jogo quando o avanço rápido está ativado. 0 = sem limite (tão rápido quanto o seu computador permitir). Valores abaixo de 100% tornam o jogo mais lento. O limite superior depende das especificações do seu computador e pode variar dependendo do jogo. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limite da velocidade do jogo quando o avanço rápido está ativado. 0 = sem limite (tão rápido quanto o seu computador permitir). Valores abaixo de 100% tornam o jogo mais lento. O limite superior depende das especificações do seu computador e pode variar dependendo do jogo STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% velocidade normal do jogo ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Sem limite (tão rápido quanto o seu computador permitir) @@ -1815,11 +1821,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite a jogad STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antes de os scripts serem suspensos: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Número máximo de passos computacionais que um script pode executar num turno STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Utilização máxima de memória por script: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Definir o volume máximo de memória que pode ser utilizada por um script antes de este ser terminado. Para mapas maiores é possível que este parâmetro tenha de ser aumentado. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Definir o volume máximo de memória que pode ser utilizada por um script antes de este ser terminado. Para mapas maiores é possível que este parâmetro tenha de ser aumentado STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Os intervalos de manutenção são em percentagem: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Quando ativado, os veículos procuram fazer a manutenção quando sua fiabilidade reduz para uma determinada percentagem da fiabilidade máxima.{}{}Por exemplo, se a fiabilidade máxima de um veículo for 90% e o intervalo de manutenção for 20%, o veículo tentará fazer a manutenção quando atinge 72% de fiabilidade. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Quando ativado, os veículos procuram fazer a manutenção quando sua fiabilidade reduz para uma determinada percentagem da fiabilidade máxima.{}{}Por exemplo, se a fiabilidade máxima de um veículo for 90% e o intervalo de manutenção for 20%, o veículo tentará fazer a manutenção quando atinge 72% de fiabilidade STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalo de serviço para comboios por omissão: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Definir o intervalo de manutenção por omissão para novos veículos sobre carris, se não for configurado um intervalo de manutenção explícito para o veículo @@ -1829,7 +1835,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo de ma STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Definir o intervalo de manutenção por omissão para novas aeronaves, se não for configurado um intervalo de manutenção explícito para o veículo STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo de serviço para navios por omissão: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definir o intervalo de manutenção por omissão para novos navios, se não for configurado um intervalo de manutenção explícito para o veículo -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dia{P 0 "" s}/Minuto{P 0 "" s}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Dia{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minuto{P 0 "" s} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Desativado @@ -1837,7 +1847,7 @@ STR_CONFIG_SETTING_NOSERVICE :Não fazer manu STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Quando ativo, os veículos não farão manutenção se não puderem avariar STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Penalidade de velocidade de carregamento para comboios mais compridos do que a estação: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Quando ativo, os comboios que são muito compridos para a estação demoram mais tempo a carregar/encher do que um comboio que caiba na estação. Esta definição não afeta a procura de itinerários. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Quando ativo, os comboios que são muito compridos para a estação demoram mais tempo a carregar do que um comboio que caiba na estação. Esta definição não afeta a procura de itinerários STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ativar limites de velocidade para vagões: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Quando ativo, aplica também os limites de velocidade dos vagões para decidir a velocidade máxima do comboio @@ -1902,13 +1912,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Ano em que os a STR_CONFIG_SETTING_STARTING_YEAR :Data de início: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Ano final de pontuação: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Ano em que o jogo termina para fins de pontuação. No final deste ano, a pontuação da empresa é registada e a tabela de pontuação máxima é exibida, mas os jogadores podem continuar a jogar depois disso.{} Se isto for antes do ano inicial, a tabela de pontuação máxima nunca será exibida. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Ano em que o jogo termina para fins de pontuação. No final deste ano, a pontuação da empresa é registada e a tabela de pontuação máxima é exibida, mas os jogadores podem continuar a jogar depois disso.{} Se isto for antes do ano inicial, a tabela de pontuação máxima nunca será exibida STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nunca STR_CONFIG_SETTING_ECONOMY_TYPE :Tipo de economia: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :A economia suave faz mudanças na produção com mais frequência e em etapas menores. Economia congelada impede mudanças de produção e fechamentos de indústrias. Esta configuração pode não ter efeito se os tipos de indústria forem fornecidos por um NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :A economia suave faz mudanças na produção com mais frequência e em etapas menores. Economia congelada impede mudanças de produção e fechamentos de indústrias. Esta configuração poderá não ter efeito se os tipos de indústria forem fornecidos por um NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Suave @@ -1919,7 +1929,7 @@ STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Percentagem da STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Ao arrastar, colocar sinais a cada: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Define a distância a que os sinais serão construídos num carril até ao próximo obstáculo (sinal, junção), se os sinais são arrastados -STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} quadrado{P 0 "" s} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} mosaico{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Ao arrastar, manter distância fixa entre sinais: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecionar o comportamento da colocação de sinais ao Ctrl+Arrastar os sinais. Se desativado, os sinais são colocados à volta de túneis ou pontes para evitar longos trajetos sem sinais. Se ativo, os sinais são colocados a cada N mosaicos, facilitando o alinhamento de sinais em linhas paralelas @@ -1963,7 +1973,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permitido, estrutura personalizada da localidade STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Geração de carga citadina: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Quantidade de carga produzida por casas em localidades, relativa à população total da mesma.{}Crescimento quadrático: Uma localidade do dobro do tamanho gera 4x mais passageiros.{}Crescimento linear: Uma localidade do dobro do tamanho gera 2x a quantidade de passageiros. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Quantidade de carga produzida por casas em localidades, relativa à população total da mesma.{}Crescimento quadrático: Uma localidade do dobro do tamanho gera quatro vezes mais passageiros.{}Crescimento linear: Uma localidade do dobro do tamanho gera duas vezes a quantidade de passageiros ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Quadrático (original) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linear @@ -2004,7 +2014,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Resolução máxima de "sprites" a usar: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limita a resolução máxima a ser usada para "sprites". Limitar a resolução dos "sprites" evitará o uso de gráficos de alta resolução, mesmo quando disponíveis. Isto pode ajudar a manter a aparência do jogo unificada ao usar uma combinação de ficheiros GRF com e sem gráficos de alta resolução. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limita a resolução máxima a ser usada para sprites. Limitar a resolução dos sprites evitará o uso de gráficos de alta resolução, mesmo quando disponíveis. Isto pode ajudar a manter a aparência do jogo unificada ao usar uma combinação de ficheiros GRF com e sem gráficos de alta resolução ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2028,33 +2038,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador i STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Tamanho relativo das cidades em relação ao tamanho normal das localidades aquando o início do jogo STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Atualizar o gráfico de distribuição a cada {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tempo de intervalo entre recalculos subsequentes do gráfico de ligações. Cada recalculo calcula os planos para um componente do gráfico. Isso significa que um valor X para esta configuração não significa que todo o gráfico será atualizado a cada X segundos. Apenas algum componente será. Quanto mais curto escolher, mais tempo de CPU será necessário para calcular. Quanto mais tempo for definido, mais tempo levará até que a distribuição de carga inicie nas novas rotas. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tempo de intervalo entre recalculos subsequentes do gráfico de ligações. Cada recalculo calcula os planos para um componente do gráfico. Isso significa que um valor X para esta configuração não significa que todo o gráfico será atualizado a cada X segundos. Apenas algum componente será. Quanto mais curto escolher, mais tempo de CPU será necessário para calcular. Quanto mais tempo for definido, mais tempo levará até que a distribuição de carga inicie nas novas rotas STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Usar {STRING} para recalcular o gráfico de distribuição -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tempo gasto para cada recalculo de um componente de gráfico de ligação. Quando um recalculo é iniciado, um encadeamento é gerado e pode ser executado nesse número de segundos. Quanto mais curto você definir, mais provável será que o encadeamento não seja concluído quando deveria. Então o jogo pára até que seja ("lag"). Quanto mais tempo você definir, mais tempo levará para a distribuição ser atualizada quando as rotas mudarem. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tempo gasto para cada recalculo de um componente de gráfico de ligação. Quando um recalculo é iniciado, um encadeamento é gerado e pode ser executado nesse número de segundos. Quanto mais curto você definir, mais provável será que o encadeamento não seja concluído quando deveria. Então o jogo para até que aconteça ("lag"). Quanto mais tempo você definir, mais tempo levará para a distribuição ser atualizada quando as rotas mudarem STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modo de distribuição para os passageiros: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simétrico" significa que aproximadamente o mesmo numero de passageiros irá de uma estação A para uma estação B e de B para A. "Assimétrico" significa que um numero arbitrário de passageiros poderá seguir em qualquer direção. "Manual" significa que nenhuma distribuição automática terá lugar para passageiros. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simétrico" significa que aproximadamente o mesmo numero de passageiros irá de uma estação A para uma estação B e de B para A. "Assimétrico" significa que um numero arbitrário de passageiros poderá seguir em qualquer direção. "Manual" significa que nenhuma distribuição automática terá lugar para passageiros STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modo de distribuição para o correio: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simétrico" significa que aproximadamente a mesma quantidade de correio será enviada de uma estação A para a estação B assim como de B para A. "Assimétrico" significa que uma quantidade arbitrária de correio poderá ser enviada em qualquer direção. "Manual" significa que nenhuma distribuição automática terá lugar para o correio. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simétrico" significa que aproximadamente a mesma quantidade de correio será enviada de uma estação A para a estação B assim como de B para A. "Assimétrico" significa que uma quantidade arbitrária de correio poderá ser enviada em qualquer direção. "Manual" significa que nenhuma distribuição automática terá lugar para o correio STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modo de distribuição para a classe de carga ARMOURED: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A classe de carga "ARMOURED" (Blindado) contém valores no clima temperado, diamantes no tropical ou ouro no ártico. Os NewGRFs podem mudar isto. "Simétrico" significa que aproximadamente a mesma quantidade de carga será enviada da estação A para a estação B assim como da B para a A. "Assimétrico" significa que quantidades arbitrárias dessa carga podem ser enviadas em qualquer direção. "Manual" significa que nenhuma distribuição automática ocorrerá para essa carga. Recomenda-se que seja definido para assimétrico ou manual quando a jogar no ártico ou no tropical, pois os bancos nesses climas só recebem mercadorias. Para o temperado pode ser também escolhido simétrico pois os bancos irão remeter valores ao banco de origem. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A classe de carga BLINDADA contém valores no clima temperado, diamantes no tropical ou ouro no ártico. Os NewGRFs podem mudar isto. "Simétrico" significa que aproximadamente a mesma quantidade de carga será enviada da estação A para a estação B assim como da B para a A. "Assimétrico" significa que quantidades arbitrárias dessa carga podem ser enviadas em qualquer direção. "Manual" significa que nenhuma distribuição automática ocorrerá para essa carga. Recomenda-se que seja definido para assimétrico ou manual quando a jogar no ártico ou no tropical, pois os bancos nesses climas só recebem mercadorias. Para o temperado pode ser também escolhido simétrico pois os bancos irão remeter valores ao banco de origem STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modo de distribuição para outras classes de carga: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Assimétrico" significa que quantidades arbitrárias de carga podem ser enviadas em qualquer direção. "Manual" significa que nenhuma distribuição automática ocorrerá para essas cargas. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Assimétrico" significa que quantidades arbitrárias de carga podem ser enviadas em qualquer direção. "Manual" significa que nenhuma distribuição automática ocorrerá para essas cargas ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimétrico STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simétrico STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisão de distribuição: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Quanto mais alto o definir, mais tempo o CPU demorará a calcular o gráfico de ligações. Se demorar muito poderá notar-se algum lag. Se no entanto for definido um valor reduzido a distribuição será imprecisa, e poderá verificar cargas não serem entregues onde seriam esperadas. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Quanto mais alto o definir, mais tempo o CPU demorará a calcular o gráfico de ligações. Se demorar muito poderá notar-se algum lag. Se no entanto for definido um valor reduzido a distribuição será imprecisa, e poderá verificar cargas não serem entregues onde seriam esperadas STR_CONFIG_SETTING_DEMAND_DISTANCE :Efeito de distância nos pedidos: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se definir para um valor maior que 0, a distância entre a estação de origem A para alguma carga e um possível destino B terá um efeito na quantidade de carga transportada de A para B. Quanto maior a distância de B para A, menos carga será enviada. Quanto maior o valor definido, menos carga será transportada para estações distantes, e mais carga será levada para estações próximas. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se definir para um valor maior que 0, a distância entre a estação de origem A para alguma carga e um possível destino B terá um efeito na quantidade de carga transportada de A para B. Quanto maior a distância de B para A, menos carga será enviada. Quanto maior o valor definido, menos carga será transportada para estações distantes, e mais carga será levada para estações próximas STR_CONFIG_SETTING_DEMAND_SIZE :Quantidade de carga a regressar para o modo simétrico: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Definir isto para menos de 100% torna a distribuição simétrica reagir mais como a assimétrica. Menos carga será forçada a ser devolvida se uma determinada quantidade for enviada para uma estação. Se for definido para 0% a distribuição simétrica irá reagir como a assimétrica. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Definir isto para menos de 100% torna a distribuição simétrica reagir mais como a assimétrica. Menos carga será forçada a ser devolvida se uma determinada quantidade for enviada para uma estação. Se for definido para 0% a distribuição simétrica irá reagir como a assimétrica STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturação de percursos curtos antes de usar percursos de grande capacidade: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequentemente existem múltiplos trajectos entre duas estações. Cargodist irá saturar o trajecto mais curto primeiro, depois usar o segundo trajecto mais curto até o saturar, e assim por diante. A saturação é determinada pelo estimativa da capacidade do uso planeado. Ao saturar todos os caminhos, se ainda existir procura, irá sobrecarregar todos os trajectos, com preferência pelos de maior capacidade. No entanto, grande parte das vezes o algoritmo não irá estimar correctamente a capacidade. Esta configuração permite definir até que percentagem um trajecto mais curto deverá ser saturado na primeira passagem antes do algoritmo proceder ao próximo. Defina-o para menos de 100% para evitar estações sobrecarregadas no caso de capacidade super-estimada. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequentemente existem múltiplos trajectos entre duas estações. Cargodist irá saturar o trajecto mais curto primeiro, depois usar o segundo trajecto mais curto até o saturar, e assim por diante. A saturação é determinada pelo estimativa da capacidade do uso planeado. Ao saturar todos os caminhos, se ainda existir procura, irá sobrecarregar todos os trajectos, com preferência pelos de maior capacidade. No entanto, grande parte das vezes o algoritmo não irá estimar correctamente a capacidade. Esta configuração permite definir até que percentagem um trajecto mais curto deverá ser saturado na primeira passagem antes do algoritmo proceder ao próximo. Defina-o para menos de 100% para evitar estações sobrecarregadas no caso de capacidade super-estimada STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unidades de velocidade (terrestre): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Unidades de velocidade (náutica): {STRING} @@ -2087,8 +2097,8 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Métrico (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unidades de esforço de tracção: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Quando a força de tracção é mostrada no interface de utilizador, mostrar na unidade seleccionada +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unidades de esforço de tração: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Sempre que o esforço de tração (ou força de tração) for exibido na interface do utilizador, será mostrado nessas unidades ###length 3 STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Métrico (kgf) @@ -2122,24 +2132,15 @@ STR_CONFIG_SETTING_ENVIRONMENT :Meio Ambiente STR_CONFIG_SETTING_ENVIRONMENT_TIME :Tempo STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoridades STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Localidades -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrias +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Indústrias STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribuição de Carga STR_CONFIG_SETTING_ENVIRONMENT_TREES :Árvores STR_CONFIG_SETTING_AI :Oponentes STR_CONFIG_SETTING_AI_NPC :Jogadores Computador STR_CONFIG_SETTING_NETWORK :Rede -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Sistema de encaminhar comboios: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Sistema de encaminhar comboios -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Sistema de encaminhar veículos rodoviários: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Sistema de encaminhar veículos rodoviários -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Sistema de encaminhar navios: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Sistema de encaminhar navios STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Inversão automática nos sinais: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permitir que os comboios invertam o sentido de marcha nos sinais, caso estejam à espera muito tempo -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recomendado) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Alterar valor @@ -2458,7 +2459,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}A obter STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desligar STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Introduza palavra-chave -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa protegida. Introduza palavra-chave # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Jogadores "online" @@ -2485,6 +2485,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :O seu nome de j STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Ações administrativas para executar a este cliente STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Ações administrativas para executar a esta empresa STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Juntar-se a esta empresa +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Autorizar este cliente a ingressar na sua empresa STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Enviar uma mensagem a este jogador STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Enviar uma mensagem a todos os jogadores desta empresa STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Enviar uma mensagem a todos os espectadores @@ -2507,13 +2508,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via retr STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Expulsar STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Banir STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Apagar -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :desbloquear com palavra-passe STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Ação administrativa STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Tem a certeza que quer expulsar o jogador '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Tem a certeza que quer banir o jogador '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Tem a certeza que quer apagar a empresa '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Tem a certeza que quer restabelecer a palavra-chave da empresa '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Usar retransmissão? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Falha ao estabelecer a ligação entre si e o servidor '{STRING}'.{}Deseja retransmitir esta sessão via '{STRING}'? @@ -2530,19 +2529,9 @@ STR_NETWORK_ASK_SURVEY_YES :Sim STR_NETWORK_SPECTATORS :Espectadores -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Não gravar a palavra-chave introduzida -STR_COMPANY_PASSWORD_OK :{BLACK}Atribuir nova palavra-chave à empresa -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Palavra-chave da empresa -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Palavra-chave predefinida da empresa -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Usar a palavra-chave desta empresa como predefinida para novas empresas - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Entrar STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Entrar e jogar por esta empresa -STR_COMPANY_VIEW_PASSWORD :{BLACK}Palavra-chave -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Use palavra-chave para prevenir utilizadores não autorizados de entrar na sua empresa. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Definir palavra-chave da empresa # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Enviar @@ -2571,6 +2560,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}O seu no STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}O seu nome do seu servidor não foi definido. O nome pode ser definido no topo da janela de Multi-jogador STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}A revisão deste cliente não condiz com a revisão do servidor STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Palavra-chave incorrecta +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Você não está na lista de clientes permitidos STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Servidor cheio STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Foi banido deste servidor STR_NETWORK_ERROR_KICKED :{WHITE}Você foi expulso do jogo @@ -2586,7 +2576,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}O seu no STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Possível perda de conexão STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}No{P 0 "" s} último{P 0 "" s} {NUM} segundo{P "" s} nenhum dado foi recebido do servidor -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :erro geral STR_NETWORK_ERROR_CLIENT_DESYNC :erro de dessincronização STR_NETWORK_ERROR_CLIENT_SAVEGAME :não foi possível carregar o mapa @@ -2598,6 +2588,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :foi recebido um STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :revisão incorrecta STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nome já está a ser utilizado STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :palavra-chave incorrecta +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :não está na lista de permissões STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :ID da empresa errado na aplicação de rede STR_NETWORK_ERROR_CLIENT_KICKED :avisado pelo servidor STR_NETWORK_ERROR_CLIENT_CHEATER :estava a tentar usar batota @@ -2803,7 +2794,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Selecion # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Ponto de controlo -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Selecione um tipo de ponto de controlo # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Selecção de Estação @@ -2816,8 +2806,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Seleccio STR_STATION_BUILD_DRAG_DROP :{BLACK}Arrastar STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construir estação arrastando -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Escolher a classe da estação a mostrar -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Escolher o tipo de estação a construir +STR_PICKER_MODE_ALL :Todos +STR_PICKER_MODE_ALL_TOOLTIP :Alterna a exibição de itens de todas as classes +STR_PICKER_MODE_USED :Usado +STR_PICKER_MODE_USED_TOOLTIP :Alterna a exibição só de itens existentes +STR_PICKER_MODE_SAVED :Guardado +STR_PICKER_MODE_SAVED_TOOLTIP :Alterna a exibição só de itens guardados + +STR_PICKER_STATION_CLASS_TOOLTIP :Selecionar uma classe de estação para mostrar +STR_PICKER_STATION_TYPE_TOOLTIP :Escolher um tipo de estação para construir. Ctrl+Clique para adicionar ou remover nos itens guardados +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Selecionar uma classe de ponto de controlo para mostrar +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Escolher um tipo de ponto de controlo para construir. Ctrl+Clique para adicionar ou remover nos itens guardados +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Selecionar uma classe de estação rodoviária para mostrar +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Escolher um tipo de estação rodoviária para construir. Ctrl+Clique para adicionar ou remover nos itens guardados +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Selecionar uma classe de estação de camiões para mostrar +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Escolher um tipo de estação de camiões para construir. Ctrl+Clique para adicionar ou remover nos itens guardados +STR_PICKER_OBJECT_CLASS_TOOLTIP :Selecionar uma classe de objeto para mostrar +STR_PICKER_OBJECT_TYPE_TOOLTIP :Selecione um tipo de objeto para construir. Ctrl+Clique para adicionar ou remover nos itens guardados. Ctrl+Clique+Arrastar para selecionar a área diagonalmente. Pressione também Shift para apenas mostrar o custo estimado +STR_PICKER_HOUSE_CLASS_TOOLTIP :Selecione uma zona de localidade para mostrar +STR_PICKER_HOUSE_TYPE_TOOLTIP :Escolher um tipo de casa para construir. Ctrl+Clique para adicionar ou remover nos itens guardados + +STR_HOUSE_PICKER_CAPTION :Seleção de Casas + +STR_HOUSE_PICKER_CLASS_ZONE1 :Borda +STR_HOUSE_PICKER_CLASS_ZONE2 :Arredores +STR_HOUSE_PICKER_CLASS_ZONE3 :Subúrbios Externos +STR_HOUSE_PICKER_CLASS_ZONE4 :Subúrbios Internos +STR_HOUSE_PICKER_CLASS_ZONE5 :Centro da localidade STR_STATION_CLASS_DFLT :Padrão STR_STATION_CLASS_DFLT_STATION :Estação padrão @@ -2872,6 +2887,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Construi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Construir carris para elétricos usando o modo automático. Ctrl+Clique para remover secção de carris para elétricos. Pressione também Shift para apenas mostrar o custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construir garagem rodoviária (para compra e manutenção de veículos rodoviários). Pressione também Shift para apenas mostrar o custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construir garagem para elétricos (para compra e manutenção). Pressione também Shift para apenas mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Construir ponto de controlo na estrada. Ctrl+Clique para selecionar outro ponto de controlo para se unir. Pressione também Shift para apenas mostrar o custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Construir ponto de controlo na linha de elétrico. Ctrl+Clique para selecionar outro ponto de controlo para se unir. Pressione também Shift para apenas mostrar o custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Construir estação de autocarros. Ctrl+Clique para selecionar outra estação para se unir. Pressione também Shift para apenas mostrar o custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construir paragem de elétricos para passageiros. Ctrl+Clique para selecionar outra estação para se unir. Pressione também Shift para apenas mostrar o custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construir estação de camiões. Ctrl+Clique para selecionar outra estação para se unir. Pressione também Shift para apenas mostrar o custo estimado @@ -2960,27 +2977,25 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Selecção de Objecto -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selecionar objeto para construir. Ctrl+Clique+Arrastar para selecionar a área diagonalmente. Pressione também Shift para apenas mostrar o custo estimado -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Selecionar a classe do objecto a construir STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Pré-visualização do objecto -STR_OBJECT_BUILD_SIZE :{BLACK}Tamanho: {GOLD}{NUM} x {NUM} quadrados +STR_OBJECT_BUILD_SIZE :{BLACK}Tamanho: {GOLD}{NUM} x {NUM} mosaicos STR_OBJECT_CLASS_LTHS :Faróis STR_OBJECT_CLASS_TRNS :Transmissores # Tree planting window (last eight for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Árvores -STR_PLANT_TREE_TOOLTIP :{BLACK}Escolha um tipo de árvore para plantar. Se o quadrado já tiver uma árvore, serão adicionadas mais árvores de difrentes tipos independentemente do tipo selecionado +STR_PLANT_TREE_TOOLTIP :{BLACK}Escolha um tipo de árvore para plantar. Se o mosaico já tiver uma árvore, serão adicionadas mais árvores de difrentes tipos independentemente do tipo selecionado STR_TREES_RANDOM_TYPE :{BLACK}Árvores de tipo aleatório STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plantar árvores de tipo aleatório. Ctrl+Clique+Arrastar para selecionar a área na diagonal. Pressione também Shift para apenas mostrar o custo estimado STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Plantar aleatoriamente STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantar árvores aleatoriamente no terreno STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plante árvores isoladas arrastando-as pela paisagem. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plantar árvores isoladas arrastando-as pela paisagem STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Arvoredo -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantar florestas pequenas ao arrastar pelo terreno. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantar florestas pequenas ao arrastar pelo terreno STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Floresta -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantar florestas grandes ao arrastar pelo terreno. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantar florestas grandes ao arrastar pelo terreno # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Gerar Terreno @@ -3061,7 +3076,7 @@ STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Também STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Selecionar carga STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Selecione a carga que pretende mostrar STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Selecione a indústria -STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Selecione a industria que pretende mostrar +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Selecione a indústria que pretende mostrar # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informações do Terreno @@ -3076,13 +3091,14 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Dono da STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dono da linha férrea: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoridade local: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nenhum -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Índice do mosaico: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construído/renovado: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tipo de estação: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estação: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Tipo de aeroporto: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nome do aeroporto: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nome do quadrado do aeroporto: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nome do mosaico do aeroporto: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceite: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) @@ -3194,11 +3210,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Taxa de fotogramas STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Taxa de simulação: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Numero de quantidades de atraso no percurso simulados por segundo. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Número de tiques simulados por segundo STR_FRAMERATE_RATE_BLITTER :{BLACK}Taxa de fotogramas dos gráficos: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Número de fotogramas de video renderizados por segundo. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Número de fotogramas de video renderizados por segundo STR_FRAMERATE_SPEED_FACTOR :{BLACK}Factor de velocidade actual do jogo: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Quão rápido o jogo está a ser executado, comparado com a velocidade esperada na taxa de simulação normal. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Quão rápido o jogo está a ser executado, comparado com a velocidade esperada na taxa de simulação normal STR_FRAMERATE_CURRENT :{WHITE}Actual STR_FRAMERATE_AVERAGE :{WHITE}Média STR_FRAMERATE_MEMORYUSE :{WHITE}Memória @@ -3286,7 +3302,7 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Num. de localidades: STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Selecionar a densidade das cidades, ou um número personalizado STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Nomes das localidades: -STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Seleccionar o estilo dos nomes das localidades +STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Selecionar o estilo dos nomes das localidades STR_MAPGEN_DATE :{BLACK}Data: STR_MAPGEN_DATE_TOOLTIP :{BLACK}Selecionar a data inicial STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Num. de indústrias: @@ -3387,10 +3403,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Quer me STR_GENERATION_PROGRESS :{WHITE}{NUM}% completo STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}A gerar mundo +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Geração de paisagem STR_GENERATION_RIVER_GENERATION :{BLACK}A gerar rios -STR_GENERATION_TREE_GENERATION :{BLACK}A gerar árvores -STR_GENERATION_OBJECT_GENERATION :{BLACK}Geração inamovível STR_GENERATION_CLEARING_TILES :{BLACK}A gerar zonas rochosas e montanhosas +STR_GENERATION_TOWN_GENERATION :{BLACK}Geração de localidades +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Geração de indústrias +STR_GENERATION_OBJECT_GENERATION :{BLACK}Geração inamovível +STR_GENERATION_TREE_GENERATION :{BLACK}A gerar árvores STR_GENERATION_SETTINGUP_GAME :{BLACK}Definindo jogo STR_GENERATION_PREPARING_TILELOOP :{BLACK}A preparar o terreno STR_GENERATION_PREPARING_SCRIPT :{BLACK}Script a correr @@ -3482,7 +3501,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de estrada STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parâmetro da variável 60+x do NewGRF (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}A alinhar gráfico {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Alinhando sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Alinhando sprite: Ação 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Alinhando sprite: Ação 0x5, tipo {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Gráfico seguinte STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceder ao gráfico normal seguinte, ignorando quaisquer gráficos pseudo/recolorir/tipo-de-letra e dando a volta no fim STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir para o gráfico @@ -3491,6 +3512,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Gráfico STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceder ao gráfico normal anterior, ignorando quaisquer gráficos pseudo/recolorir/tipo-de-letra e dando a volta no início STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representação do gráfico seleccionado actualmente. O alinhamento é ignorado a desenhar este gráfico STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Desloca o gráfico, alterando os intervalos X e Y. Ctrl+Clique desloca o gráfico 8 unidades de uma só vez +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Deslocamento centrado @@ -3528,7 +3550,7 @@ STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Gráfico invál STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Propriedade de Ação 0 desconhecida {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Tentativa de uso de ID Inválido (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contém um objecto gráfico corrompido. Todos os objectos gráficos corrompidos serão apresentados como um ponto de interrogação (?) vermelho. -STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém múltiplas entradas Action 8 - (sprite {3:NUM}) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém múltiplas entradas Ação 8 - (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Leitura além dos limites do pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF pedidos não disponíveis (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desativado por {STRING} @@ -3599,7 +3621,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir para STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Introduza um nome para o letreiro # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Localidades +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Localidades ({COMMA} de {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nenhuma - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Cidade){BLACK} ({COMMA}) @@ -3640,10 +3662,10 @@ STR_LOCAL_AUTHORITY_ZONE :{BLACK}Zona STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Mostrar a zona dentro dos limites da autoridade local STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Classificações de empresas de transporte: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} -STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Acções disponíveis: -STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de acções disponíveis nesta localidade - fazer clique no item para mais detalhes +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Ações disponíveis: +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de ações disponíveis nesta localidade - clique no item para mais detalhes STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Aplicar -STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Realizar a acção destacada na lista acima +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Realizar a ação destacada na lista acima ###length 8 STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Pequena campanha publicitária @@ -3727,7 +3749,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Livro de STR_STORY_BOOK_SPECTATOR :Livro de Histórico Global STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Página nº {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Saltar para uma pagina especifica escolhendo-a nesta lista. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Saltar para uma pagina especifica escolhendo-a nesta lista STR_STORY_BOOK_PREV_PAGE :{BLACK}Anterior STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ir para a página anterior STR_STORY_BOOK_NEXT_PAGE :{BLACK}Próxima @@ -3884,8 +3906,8 @@ STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Valor da STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infraestrutura: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} {P "secção" "secções" } de caminho-de-ferro STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} {P "secção" "secções"} de estrada -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} mosaico{P "" s} de água -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} bloco{P "" s} de estação +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} mosaico{P "" s} com água +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} mosaico{P "" s} de estação STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} aeroporto{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Nenhum @@ -3924,7 +3946,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Secções STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Sinais STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Secções de estrada: STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Secções de elétricos: -STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Mosaicos de água: +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Mosaicos com água: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canais STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estações: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Mosaicos de estações @@ -3933,7 +3955,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/período # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Indústrias +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Indústrias ({COMMA} de {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nenhuma - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transportado){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4022,12 +4044,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Aeronaves sem g STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos - clique num grupo para listar todos os veículos contidos +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos - Clique em um grupo para listar todos os veículos do grupo. Clique+Arraste para organizar a hierarquia STR_GROUP_CREATE_TOOLTIP :{BLACK}Clique para criar um grupo STR_GROUP_DELETE_TOOLTIP :{BLACK}Remover o grupo seleccionado STR_GROUP_RENAME_TOOLTIP :{BLACK}Mudar o nome do grupo seleccionado STR_GROUP_LIVERY_TOOLTIP :{BLACK}Alterar a imagem do grupo selecionado -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Clique para proteger este grupo da auto-substituição global. Ctrl+Clique para proteger também sub-grupos. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Clique para proteger este grupo da auto-substituição global. Ctrl+Clique para proteger também sub-grupos STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Apagar Grupo STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Tem a certeza de que quer apagar este grupo e quaisquer descendentes? @@ -4085,8 +4107,8 @@ STR_PURCHASE_INFO_ALL_TYPES :Todos os tipos STR_PURCHASE_INFO_NONE :Nenhum STR_PURCHASE_INFO_ENGINES_ONLY :Apenas locomotivas STR_PURCHASE_INFO_ALL_BUT :Todas menos {CARGO_LIST} -STR_PURCHASE_INFO_MAX_TE :{BLACK}Máx. Força de Tracção: {GOLD}{FORCE} -STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} quadrados +STR_PURCHASE_INFO_MAX_TE :{BLACK}Esforço de Tração Máx: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} mosaicos STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING} ###length 3 @@ -4443,10 +4465,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacida STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Créditos de Transferência: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de manutenção: {LTBLUE}{COMMA}{NBSP}dias{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Intervalo de manutenção: {LTBLUE}{COMMA}{NBSP}minutos{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Intervalo de manutenção: {LTBLUE}{COMMA}{NBSP}minuto{P "" s}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalo de manutenção: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Última manutenção: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Última manutenção: {LTBLUE}{NUM} minutos atrás +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Última manutenção: {LTBLUE}{NUM} minuto{P "" s} atrás STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Aumentar o intervalo de manutenção em 10 dias. Ctrl+Clique para aumentar o intervalo de manutenção em 5 dias STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Aumentar o intervalo de manutenção em 5 minutos. Ctrl+Clique para aumentar o intervalo de manutenção em 1 minuto STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Aumentar o intervalo de manutenção em 10%. Ctrl+Clique para aumentar o intervalo de manutenção em 5% @@ -4637,7 +4659,7 @@ STR_ORDER_REFIT_ORDER :(Adaptar para { STR_ORDER_REFIT_STOP_ORDER :(Adaptar para {STRING} e parar) STR_ORDER_STOP_ORDER :(Parar) -STR_ORDER_WAIT_TO_UNBUNCH :(esperar por desagrupar) +STR_ORDER_WAIT_TO_UNBUNCH :(Esperar por desagrupar) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Não pode usar a estação){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4841,8 +4863,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de Jogo STR_AI_SETTINGS_CLOSE :{BLACK}Fechar STR_AI_SETTINGS_RESET :{BLACK}Repor STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4895,9 +4915,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Lucro Es STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravação ainda em curso,{}por favor aguarde! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Falha ao guardar automaticamente STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Não é possível ler unidade -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Falha ao guardar jogo{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Falha ao guardar jogo... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Não é possível eliminar ficheiro -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Falha ao abrir jogo{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Falha ao carregar jogo... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ficheiro corrompido - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Jogo gravado numa versão mais recente do jogo @@ -4954,7 +4974,7 @@ STR_ERROR_ALREADY_BUILT :{WHITE}... já STR_ERROR_OWNED_BY :{WHITE}... propriedade de {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... a área é propriedade de outra empresa STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... atingido o limite para terraformação -STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... atingido o limite para limpeza de quadrados +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... limite para limpeza de mosaicos atingido STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... limite de plantação de árvores alcançado STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Nome deve ser único STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} no caminho @@ -4991,7 +5011,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Não é STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Não é possível construir sede da empresa... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Não é possível construir localidades +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Não é possível construir localidades... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Não é possível renomear localidade... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Não é possível construir uma localidade aqui... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Não é possível expandir localidade... @@ -5002,6 +5022,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... não STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trabalhos na estrada em curso STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Não é possível eliminar esta localidade...{}Uma estação ou depósito refere-se à localidade ou não é possível remover terreno pertencente à mesma STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... não há um sítio adequado para uma estátua no centro desta localidade +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Não é possível construir casa... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... demasiadas indústrias @@ -5039,6 +5060,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Não é STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Muito junto de uma estação/local de carga já existente STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... estação muito extensa +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... número de linhas não suportado +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... comprimento não suportado STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Demasiadas estações/locais de carga STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Demasiadas partes na estação ferroviária STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Demasiadas paragens de autocarro @@ -5073,12 +5096,15 @@ STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Precisa STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Junta mais do que um ponto de controlo existente STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Demasiado perto de outro ponto de controlo -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Não é possível construir ponto de controlo de comboio aqui... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Não é possível construir ponto de controlo ferroviário aqui... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Não é possível construir ponto de controlo rodoviário aqui... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Não é possível colocar uma boia aqui... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Não é possível alterar o nome do ponto de controlo... -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Não é possível remover ponto de controlo de comboio aqui... +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Não é possível remover ponto de controlo ferroviário daqui... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Não é possível remover ponto de controlo rodoviário daqui... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}É preciso remover o ponto de controlo primeiro +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Deverá remover o ponto de controlo rodoviário primeiro STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boia no caminho STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boia está a ser usada por outra empresa! @@ -5279,6 +5305,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Mudar a STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nenhum veículo ainda disponível STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Começar um novo jogo depois de {DATE_SHORT} ou utilizar um NewGRF que forneça veículos iniciais +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Não está disponível nenhum tipo de estrada edificável para localidades +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Mudar a sua configuração NewGRF +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Ainda não estão disponíveis tipos de estradas edificáveis para localidades +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Começar um novo jogo depois de {DATE_SHORT} ou usar um NewGRF que forneça antecipadamente tipos de estradas edificáveis em localidades + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Não é possível fazer o comboio passar o sinal com perigo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Não é possível inverter a direcção do comboio... @@ -5321,6 +5352,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Não exi STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Este avião não pode aterrar neste heliporto STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Este helicóptero não pode aterrar neste aeroporto STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Não existe ponto de controlo ferroviário +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Não existe ponto de controlo rodoviário STR_ERROR_NO_BUOY :{WHITE}Não existe uma boia # Timetable related errors @@ -5808,6 +5840,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}M +STR_CURRENCY_SHORT_GIGA :{NBSP}G +STR_CURRENCY_SHORT_TERA :{NBSP}T + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5824,6 +5861,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 678e2ed1b2..581f9b6d7a 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -308,7 +308,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Activân STR_BUTTON_DEFAULT :{BLACK}Prestabilit(e) STR_BUTTON_CANCEL :{BLACK}Anulează STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Avertisment: Administratorii serverului pot citi orice text introdus aici. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -438,6 +437,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Ieșire din edi STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Ieșire din joc + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Opțiunile jocului @@ -956,18 +956,13 @@ STR_GAME_OPTIONS_VOLUME :Volum STR_GAME_OPTIONS_SFX_VOLUME :Efecte sonore STR_GAME_OPTIONS_MUSIC_VOLUME :Muzică -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unitate monetară STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Alege unitatea monetară STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Liră sterlină STR_GAME_OPTIONS_CURRENCY_USD :Dolar american STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1057,11 +1052,6 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Bifați STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Fonturi anti-alias STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Bifați această casetă pentru anti-alias fonturi redimensionabile. -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Sondaj automat STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participă în sondaje automate @@ -1090,6 +1080,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Setul de STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selectați setul de muzică de bază STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informații adiționale despre setul de muzică de bază + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(fără pluginuri care să fie integrate cu platformele sociale instalate) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1117,6 +1108,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Scade va STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Mărește valoarea monedei tale pentru o liră sterlină (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Setează rata de schimb pentru o liră sterlină (£) + STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Setează prefixul monedei STR_CURRENCY_SUFFIX :{LTBLUE}Sufix: {ORANGE}{STRING} @@ -1487,6 +1479,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Avertisment dac STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Când este activat, un mesaj de știri este trimis atunci când un vehicul nu a realizat niciun profit într-un an STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Când este activat, un mesaj de știri este trimis atunci când un vehicul nu a realizat niciun profit într-o perioadă + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehiculele nu expiră niciodată: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :După activare, toate modelele de vehicule rămân disponibile permanent după introducerea lor @@ -1828,7 +1821,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalul de STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Alege perioada de întreținere implicită pentru noi aeronave, dacă nu există un interval de întreținere stabilit pentru aeronave STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalul de întreținere implicit al navelor: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Alege perioada de întreținere implicită pentru noi nave, dacă nu există un interval de întreținere stabilit pentru nave -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}{P 0 zi zile "de zile"}/{P 0 minut minute minute}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Dezactivat @@ -2128,17 +2122,8 @@ STR_CONFIG_SETTING_AI :Concurenți STR_CONFIG_SETTING_AI_NPC :Jucători virtuali STR_CONFIG_SETTING_NETWORK :Rețea -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Algoritm de rutare pentru trenuri: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algoritm de rutare pentru trenuri -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Algoritm de rutare pentru autovehicule: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Algoritmul de rutare folosit pentru autovehicule -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Algoritm de rutare pentru nave: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Algoritmul de rutare folosit pentru nave STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Întoarcere automată la semafoare: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permite trenurilor să întoarcă la semafor, dacă așteaptă de mult timp -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recomandat) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Schimbă valoarea setării @@ -2457,7 +2442,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Preluare STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Deconectare STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server protejat. Introdu parola -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companie protejată. Introdu parola # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Jucători conectați @@ -2506,13 +2490,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Prin rel STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Dă afară STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Blochează STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Șterge -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Deblocare cu parolă STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Acțiune administrativă STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Sigur vrei să dai afară jucătorul '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Sigur vrei să blochezi jucătorul '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Sigur dorești ștergerea companiei '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Sigur vrei să resetezi parola companiei '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Folosești releul? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Conexiunea la server nu s-a putut realiza '{STRING}'.{}Doriți să redirecționați această sesiune prin '{STRING}'? @@ -2529,19 +2511,9 @@ STR_NETWORK_ASK_SURVEY_YES :Da STR_NETWORK_SPECTATORS :Spectatori -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Parola introdusă nu se va salva -STR_COMPANY_PASSWORD_OK :{BLACK}Schimbarea parolei pentru companie -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Parola pentru companie -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Parola implicită pentru companie -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Folosește implicit parola acestei companii pentru cele nou create - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Intră STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Intră în joc ca membru al acestei companii -STR_COMPANY_VIEW_PASSWORD :{BLACK}Parola -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Protejează-ți compania cu o parolă pentru a preveni accesul neautorizat -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Alege parola companiei # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Trimite @@ -2585,7 +2557,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Numele t STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Posibilă pierdere a conexiunii STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}În ultimele {NUM} secunde nu s-au mai primit date de la server -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :eroare generală STR_NETWORK_ERROR_CLIENT_DESYNC :eroare de desincronizare STR_NETWORK_ERROR_CLIENT_SAVEGAME :nu pot încărca harta @@ -2802,7 +2774,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Alege or # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Punct de tranzit -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Alege tipul de punct de tranzit # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Alege tipul de gară @@ -2815,8 +2786,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Alege lu STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construiește o stație prin drag & drop -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Alege o clasă de stații pentru afișare -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Alege tipul de stație pentru construcție + + + STR_STATION_CLASS_DFLT :Implicită STR_STATION_CLASS_DFLT_STATION :Stație implicită @@ -2959,8 +2931,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Cumpăra # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Selecția obiectelor -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selectați obiectul de construit. Ctrl+Click+Drag pentru a selecta zona în diagonală. De asemenea, apăsați Shift pentru a afișa numai estimarea costurilor -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Selectează clasa obiectului de construit STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Previzualizarea obiectului STR_OBJECT_BUILD_SIZE :{BLACK}Dimensiune: {GOLD}{NUM} x {NUM} pătrățele @@ -3075,7 +3045,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Proprietar al căii ferate: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoritatea locală: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Niciuna -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordonate: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construit/renovat: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clasa stației: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tip stație: {LTBLUE}{STRING} @@ -3387,9 +3356,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% e STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Generare lume STR_GENERATION_RIVER_GENERATION :{BLACK}Generarea râurilor -STR_GENERATION_TREE_GENERATION :{BLACK}Generare arbori -STR_GENERATION_OBJECT_GENERATION :{BLACK}Generare fixă STR_GENERATION_CLEARING_TILES :{BLACK}Generare zonă dură și pietroasă +STR_GENERATION_OBJECT_GENERATION :{BLACK}Generare fixă +STR_GENERATION_TREE_GENERATION :{BLACK}Generare arbori STR_GENERATION_SETTINGUP_GAME :{BLACK}Se configurează jocul STR_GENERATION_PREPARING_TILELOOP :{BLACK}Initializez ciclul dalelor STR_GENERATION_PREPARING_SCRIPT :{BLACK}Se rulează script-ul @@ -3481,7 +3450,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tip de drum STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parametru variabilă 60+x NewGRF (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aliniere imagine {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Imaginea următoare STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Mergi la următoarea imagine normală, sărind peste pseudo-imagini, recolorări sau fonturi și repornește când s-a ajuns la sfârșit STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mergi la imagine @@ -3598,7 +3566,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Mergi la STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Introdu un nume pentru semn # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Orașe STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nimic - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (oraș){BLACK} ({COMMA}) @@ -3932,7 +3899,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/perioadă # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrii STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nimic- STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transportat){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4840,8 +4806,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de joc STR_AI_SETTINGS_CLOSE :{BLACK}Închide STR_AI_SETTINGS_RESET :{BLACK}Resetează STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4894,9 +4858,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Venit es STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Salvarea se efectueaza încã,{}vã rugãm asteptati pânã se încheie! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Auto-salvarea a esuat STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Discul nu a putut fi citit -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Salvarea jocului eșuată{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ștergerea fișierului a eșuat -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Încărcarea jocului eșuată{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Eroare internă: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Salvare eronată - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvarea a fost făcută cu o versiune mai nouă @@ -5278,6 +5240,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Schimbă STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Niciun vehicul nu este disponibil încă STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Începe un joc nou după {DATE_SHORT} sau utilizează un NewGRF care oferă vehicule în avans + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nu se poate permite trenului să treacă în caz de pericol... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nu se poate schimba sensul de mers al trenului... @@ -5807,6 +5770,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/russian.txt b/src/lang/russian.txt index b8a5867887..21fd061e65 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -403,7 +403,7 @@ STR_TOOLTIP_SORT_CRITERIA :{BLACK}Смен STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Выберите фильтр STR_BUTTON_SORT_BY :{BLACK}Сортировка STR_BUTTON_CATCHMENT :{BLACK}Охват -STR_TOOLTIP_CATCHMENT :{BLACK}Показать область, обслуживаемую станцией. +STR_TOOLTIP_CATCHMENT :{BLACK}Показать область, обслуживаемую станцией STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Закрыть окно STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Окна можно перетаскивать, схватив за заголовок @@ -434,11 +434,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Если STR_BUTTON_DEFAULT :{BLACK}По умолчанию STR_BUTTON_CANCEL :{BLACK}Отмена STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Внимание: администраторы сервера могут увидеть текст, введённый в это поле. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Длина: {NUM} @@ -459,7 +458,7 @@ STR_SORT_BY_NUMBER :Номер STR_SORT_BY_PROFIT_LAST_YEAR :Прибыль в прошлом году STR_SORT_BY_PROFIT_LAST_PERIOD :Прибыль в прошлом цикле STR_SORT_BY_PROFIT_THIS_YEAR :Прибыль в текущем году -STR_SORT_BY_PROFIT_THIS_PERIOD :Доход в текущем цикле +STR_SORT_BY_PROFIT_THIS_PERIOD :Прибыль в текущем цикле STR_SORT_BY_AGE :Возраст STR_SORT_BY_RELIABILITY :Надёжность STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Вместимость груза @@ -488,11 +487,11 @@ STR_SORT_BY_RATING :Рейтинг STR_SORT_BY_NUM_VEHICLES :Количество транспортных средств STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Общая прибыль в прошлом году STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Общая прибыль в прошлом цикле -STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Доход в этом году -STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Прибыль в текущем цикле +STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Общая прибыль в текущем году +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Общая прибыль в текущем цикле STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Средняя прибыль в прошлом году STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Средняя прибыль в прошлом цикле -STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Средняя прибыль в этом году +STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Средняя прибыль в текущем году STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Средняя прибыль в текущем цикле # Group by options for vehicle list @@ -552,7 +551,7 @@ STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Стро STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Строительство трамвайной инфраструктуры STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Посадить деревья. Ctrl+перетаскивание{NBSP}- выбор диагональной области. При нажатом Shift{NBSP}- оценка стоимости высадки. STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Поставить метку -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Разместить объект. Ctrl+щелчок+перетаскивание - выбор диагональной области. При нажатом Shift - оценка стоимости строительства. +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Разместить объект. Ctrl+перетаскивание - выбор диагональной области. При нажатом Shift - оценка стоимости строительства. # Scenario editor file menu ###length 7 @@ -564,6 +563,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Выйти из STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Выход +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Создание городов +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Размещение домов + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Основные настройки @@ -945,9 +947,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}Выключить все STR_SMALLMAP_ENABLE_ALL :{BLACK}Включить все STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Рельеф +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}Показывать названия предприятий STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Скрыть все предприятия на карте STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Показать все предприятия на карте STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Отображение рельефа на карте +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}Показать/убрать названия предприятий STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Скрыть собственность всех компаний STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Показать собственность всех компаний на карте STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Не отображать грузы на карте @@ -1048,7 +1052,7 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}ТС «{ STR_NEWS_TRAIN_IS_STUCK :{WHITE}ТС «{VEHICLE}» не может найти путь для продолжения движения STR_NEWS_VEHICLE_IS_LOST :{WHITE}ТС «{VEHICLE}» заблудилось STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :{WHITE}Доход ТС «{VEHICLE}» в прошлом году составил {CURRENCY_LONG} -STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}Доход ТС «{VEHICLE}» в прошлом цикле: {CURRENCY_LONG} +STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}Доход ТС «{VEHICLE}» в прошлом цикле составил {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}ТС «{VEHICLE}» не может достичь пункта назначения - слишком далеко STR_NEWS_ORDER_REFIT_FAILED :{WHITE}ТС «{VEHICLE}» остановлено из-за сбоя переоборудования @@ -1101,18 +1105,14 @@ STR_GAME_OPTIONS_VOLUME :Громкос STR_GAME_OPTIONS_SFX_VOLUME :Звуковые эффекты STR_GAME_OPTIONS_MUSIC_VOLUME :Музыка -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Валюта STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Смена используемой в игре валюты STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Английский фунт STR_GAME_OPTIONS_CURRENCY_USD :Доллар США STR_GAME_OPTIONS_CURRENCY_EUR :Евро @@ -1156,6 +1156,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Индийск STR_GAME_OPTIONS_CURRENCY_IDR :Индонезийская рупия STR_GAME_OPTIONS_CURRENCY_MYR :Малайзийский ринггит STR_GAME_OPTIONS_CURRENCY_LVL :Латвийский лат +STR_GAME_OPTIONS_CURRENCY_PTE :Португальский эскудо STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автосохранение STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Интервал автосохранения игры @@ -1202,11 +1203,7 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Пост STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Сглаживание шрифтов STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Поставьте отметку, чтобы включить сглаживание масштабируемых шрифтов -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Автоматический сбор данных STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Разрешить сбор и отправку данных @@ -1235,6 +1232,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Осно STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Выбор основного музыкального пакета STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Дополнительная информация о выбранном музыкальном пакете +STR_GAME_OPTIONS_ONLINE_CONTENT :Загрузка контента +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Получить список контента для установки и обновления + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(модули взаимодействия с социальными платформами не установлены) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1262,6 +1262,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Повы STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Снизить курс вашей валюты по отношению к фунту (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Установить курс вашей валюты по отношению к фунту (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Разделитель: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Установите разделитель для вашей валюты + STR_CURRENCY_PREFIX :{LTBLUE}Префикс: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Установить префикс вашей валюты STR_CURRENCY_SUFFIX :{LTBLUE}Суффикс: {ORANGE}{STRING} @@ -1422,7 +1425,7 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Неогран STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Разрешить компаниям неограниченные расходы; банкротство им в таком случае грозить не будет. STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Максимальная сумма кредита: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Максимальная сумма кредита для компании (без учета инфляции). Если установлено значение «нет», деньги не будут доступны, если их не предоставит игровой скрипт или настройка «Неограниченные финансы». +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Максимальная сумма кредита для компании (без учета инфляции). Если установлено значение «нет», у компаний не будет средств, если их не предоставит игровой скрипт или настройка «Неограниченные финансы». STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :нет @@ -1466,7 +1469,7 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Включен STR_CONFIG_SETTING_CITY_APPROVAL :Отношение городской администрации к компаниям: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Выберите уровень влияния шума и загрязнения окружающей среды компаниями на их рейтинг в городах и возможность дальнейшего строительства в городах -STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Максимальная высота объектов на карте: {STRING} +STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Ограничение высоты ландшафта: {STRING} STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Установить максимальное значение высоты гор на карте. «(Автовыбор)» подберёт приемлемое значение после создания ландшафта. STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM} ###setting-zero-is-special @@ -1638,17 +1641,20 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Предупр STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Включает сообщения о транспортных средствах, не принёсших прибыли по итогам прошедшего года. STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Включает сообщения о транспортных средствах, не принёсших прибыли по итогам прошедшего цикла. +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Предупреждать об устаревающих ТС: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Сообщать о транспортных средствах, срок эксплуатации которых заканчивается. + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Транспорт не будет выходить из эксплуатации: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :При включении все транспортные средства остаются доступными для покупки в любое время после начала их производства STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Игровое время: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Выбор системы отсчёта времени, используемой в игре. После старта сменить её невозможно.{}{}Календарь - это классическая система, изначально использовавшаяся в OpenTTD: год состоит из 12 месяцев, в каждом из которых 28-31{NBSP}день.{}{}В режиме реального времени расчёты производства, движения транспорта и финансовых показателей основаны на интервалах длительностью в 1{NBSP}минуту, что примерно соответствует 30{NBSP}дням в режиме календаря. Эти интервалы группируются в 12-минутные циклы, соответствующие 1{NBSP}году в классическом режиме.{}{}В любом случае, появление новых транспортных средств, зданий и инфраструктуры будет сопровождаться календарём с понятными датами. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Выбор системы отсчёта времени, используемой в игре. После старта сменить её невозможно.{}{}Календарь - это классическая система, изначально использовавшаяся в OpenTTD: год состоит из 12 месяцев, в каждом из которых 28-31 день.{}{}В режиме реального времени расчёты производства и финансовых показателей основаны на интервалах длительностью в 1 минуту, что примерно соответствует 30 дням в режиме календаря. Эти интервалы группируются в 12-минутные циклы, соответствующие 1 году в классическом режиме.{}{}В любом случае, появление новых транспортных средств, зданий и инфраструктуры будет сопровождаться календарём с понятными датами. ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Календарь STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Реальное время STR_CONFIG_SETTING_MINUTES_PER_YEAR :Продолжительность года: {STRING} мин. -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Выберите, сколько минут реального времени длится год в игре. По умолчанию{NBSP}- 12{NBSP}минут. Значение «0» остановит календарное время. Эта настройка не влияет на расчёт экономической модели в игре, и работает только в режиме реального времени. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Выберите, сколько минут реального времени длится год в игре. По умолчанию - 12 минут. Значение «0» остановит календарное время. Увеличение продолжительности года замедляет появление новых моделей транспортных средств, домов и иной инфраструктуры. Это не влияет на скорость транспортных средств и на расчёт экономической модели в игре (за исключением инфляции) и работает только в режиме реального времени. STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special @@ -1714,7 +1720,7 @@ STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Высота с STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Выберите, на какой высоте в субарктическом климате устанавливается снеговой покров. Наличие снега влияет на расстановку предприятий и на условия роста городов.{}Значение может быть изменено только в редакторе сценариев; иначе оно рассчитывается в зависимости от значения «снежного покрытия». STR_CONFIG_SETTING_SNOW_COVERAGE :Снежное покрытие: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Выберите примерную относительную площадь суши, покрытой снегом в субарктическом климате. Наличие снега влияет на расположение предприятий и на условия роста городов.{}Это значение используется только при создании карты. Земля на уровне моря и береговые клетки никогда не покрываются снегом. +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Выберите примерную относительную площадь суши, покрытой снегом в субарктическом климате. Наличие снега влияет на расположение предприятий и на условия роста городов.{}Это значение используется только при создании карты. Земля на уровне моря и береговые поля никогда не покрываются снегом. STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Песчаное покрытие: {STRING} @@ -1757,8 +1763,8 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :По часов STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Уровень высоты для карт с плоским рельефом: {STRING} ###length 2 -STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Одна или несколько клеток в северном углу не пусты -STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Одна или несколько клеток берега без воды +STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Как минимум одно поле в северном углу карты не пустое +STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Как минимум одно поле у края карты - суша STR_CONFIG_SETTING_STATION_SPREAD :Максимальный размер станции: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Максимальный размер области, которую может занимать станция или её составные части.{}Имейте в виду, что большие значения замедляют игру. @@ -1969,7 +1975,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Объём па STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} МиБ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Интервал тех. обслуживания в процентах: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :При включении транспортные средства будут отправляться на техническое обслуживание после падения надёжности на указанный процент от максимальной.{}Например, при максимальной надёжности 90% и указанном интервале ТО 20% транспортное средство уйдёт на обслуживание при падении надёжности до 72%. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :При включении - транспортные средства будут отправляться на техническое обслуживание после падения надёжности на указанный процент от максимальной.{}Например, при максимальной надёжности 90% и указанном интервале ТО 20% транспортное средство уйдёт на обслуживание при падении надёжности до 72%. STR_CONFIG_SETTING_SERVINT_TRAINS :Интервал ТО по умолчанию для поездов: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Настройка периодичности технического обслуживания для новых поездов @@ -1979,7 +1985,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Интерва STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Настройка периодичности технического обслуживания для новых воздушных судов STR_CONFIG_SETTING_SERVINT_SHIPS :Интервал ТО по умолчанию для судов: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Настройка периодичности технического обслуживания для новых судов -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P ень ня ней}/минут{P а ы ""}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}д{P 0 ень ня ней} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}минут{P 0 а ы ""} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :отключен @@ -2052,13 +2062,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Обычно в STR_CONFIG_SETTING_STARTING_YEAR :Год начала игры: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Последний год игры: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :По прошествии указанного года рассчитывается рейтинг компании и выводится таблица рекордов. После этого игру можно продолжить.{}Если указанный год предшествует году начала игры, то таблица рекордов не отображается. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :По прошествии указанного года рейтинг компании рассчитывается, записывается и выводится таблица рекордов. После этого игру можно продолжить.{}Если указанный год предшествует году начала игры, то таблица рекордов не отображается. STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Никогда STR_CONFIG_SETTING_ECONOMY_TYPE :Экономика: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :При плавной экономике изменения в производительности предприятий небольшие и происходят чаще.{}При стабильной экономике предприятия не закрываются и не меняют производительность.{}Типы предприятий, добавленные с помощью NewGRF, могут игнорировать эту настройку. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :При плавной экономике изменения в производительности предприятий небольшие и происходят чаще.{}При стабильной экономике предприятия не закрываются и не меняют производительность.{}Типы предприятий, добавленные с помощью модулей NewGRF, могут игнорировать эту настройку. ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :классическая STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :плавная @@ -2069,7 +2079,7 @@ STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Процент STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :При перетаскивании ставить сигналы каждые: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Настройка периодичности расстановки сигналов методом перетаскивания. Сигналы будут устанавливаться до первого встреченного препятствия (пересечения или другого сигнала). -STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} клет{P ку ки ок} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} пол{P е я ей} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Равномерная расстановка сигналов при перетаскивании: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Настройка расстановки сигналов с помощью Ctrl+перетаскивания. Если равномерная расстановка отключена, то сигналы дополнительно ставятся перед мостами, туннелями и после них. Если включена, то сигналы ставятся ровно на каждой N-й клетке. @@ -2199,12 +2209,12 @@ STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Точност STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Чем выше данное значение, тем больше процессорного времени используется для расчёта графа грузоперевозок. При высоких значениях возможны задержки в игре. Однако при низких значениях расчёты грузопотоков будут неточными, и грузы, возможно, будут отправляться не туда, куда нужно. STR_CONFIG_SETTING_DEMAND_DISTANCE :Зависимость спроса от расстояния: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Если это значение больше 0, то количество груза, отправляемого с одной станции на другую, будет зависеть от расстояния между станциями. Чем выше это значение, тем больше груза будет отправляться к ближним станциям и меньше{NBSP}- к дальним. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Если это значение больше 0, то количество груза, отправляемого с одной станции на другую, будет зависеть от расстояния между станциями. Чем выше это значение, тем больше груза будет отправляться к ближним станциям и меньше - к дальним. STR_CONFIG_SETTING_DEMAND_SIZE :Количество возвращаемого груза при симметричном распределении: {STRING} STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Установка этого значения ниже 100% заставит распределение быть менее «симметричным»: количество возвращаемого груза сможет быть меньше, чем количество отправленного. Установка в 0% сделает распределение полностью асимметричным. STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Предел загрузки коротких маршрутов перед использованием вместительных: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :При наличии нескольких маршрутов между станциями алгоритм распределения грузов будет использовать кратчайший маршрут до его загрузки, потом следующий по длине и т.{NBSP}д. При избытке груза маршруты будут перегружаться начиная с самых производительных. Загрузка рассчитывается исходя из оценки пропускной способности (которая может быть неточной) и интенсивности использования. Эта настройка определяет, насколько загружать маршрут перед тем, как начать использовать следующий. Установите значение ниже 100% для того, чтобы избежать задержки груза, если пропускная способность маршрута будет переоценена алгоритмом. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :При наличии нескольких маршрутов между станциями алгоритм распределения грузов будет использовать кратчайший маршрут до его загрузки, потом следующий по длине и{NBSP}т.{NBSP}д. При избытке груза маршруты будут перегружаться начиная с самых производительных. Загрузка рассчитывается исходя из оценки пропускной способности (которая может быть неточной) и интенсивности использования. Эта настройка определяет, насколько загружать маршрут перед тем, как начать использовать следующий. Установите значение ниже 100% для того, чтобы избежать задержки груза, если пропускная способность маршрута будет переоценена алгоритмом. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Система единиц скорости наземных ТС: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Система единиц скорости водных и воздушных ТС: {STRING} @@ -2279,17 +2289,8 @@ STR_CONFIG_SETTING_AI :Конкуре STR_CONFIG_SETTING_AI_NPC :Искусственный интеллект STR_CONFIG_SETTING_NETWORK :Сеть -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Алгоритм поиска пути для поездов: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Алгоритм поиска пути, используемый поездами -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Алгоритм поиска пути для автотранспорта: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Алгоритм поиска пути, используемый автомобилями -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Алгоритм поиска пути для судов: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Алгоритм поиска пути, используемый водным транспортом STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Автоматический разворот у сигналов: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Разрешить поездам разворачиваться у светофора, если они долго ждут разрешающего сигнала -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Рекомендуется) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Изменить значение @@ -2371,7 +2372,7 @@ STR_QUIT_NO :{BLACK}Нет # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}В главное меню -STR_ABANDON_GAME_QUERY :{YELLOW}Вы действительно хотите выйти из игры? +STR_ABANDON_GAME_QUERY :{YELLOW}Вы уверены, что хотите выйти из игры? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Вы уверены, что хотите выйти из этого сценария? # Help window @@ -2608,7 +2609,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Полу STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Отключиться STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Сервер защищён. Введите пароль. -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Компания защищена. Введите пароль. # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Список игроков @@ -2635,6 +2635,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Ваше игр STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Административные действия, применимые к этому игроку STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Административные действия, применимые к этой компании STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Присоединиться к этой компании +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Разрешить этому клиенту присоединиться к вашей компании STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Отправить сообщение этому игроку STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Послать сообщение всем игрокам этой компании STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Послать сообщение всем зрителям @@ -2657,13 +2658,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Чере STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Отключить STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Заблокировать STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Удалить -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Сбросить пароль STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Подтверждение действия STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Отключить игрока «{STRING}»? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Заблокировать игрока «{STRING}»? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Удалить компанию «{COMPANY}»? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Сбросить пароль у компании «{COMPANY}»? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Использовать транслятор? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Не удалось установить соединение с сервером «{STRING}».{}Перенаправить соединение через «{STRING}»? @@ -2680,19 +2679,9 @@ STR_NETWORK_ASK_SURVEY_YES :Да STR_NETWORK_SPECTATORS :Зрители -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не сохранять пароль -STR_COMPANY_PASSWORD_OK :{BLACK}Задать новый пароль компании -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Пароль компании -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Пароль компании по умолчанию -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Использовать этот пароль для всех новых компаний по умолчанию - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Подключиться STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Подключиться и играть за эту компанию -STR_COMPANY_VIEW_PASSWORD :{BLACK}Пароль -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Защитить вашу компанию паролем, чтобы посторонние пользователи не могли присоединиться. -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Установить пароль компании # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Отправить @@ -2721,6 +2710,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Не у STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Не указано имя сервера. Его можно ввести в верхней части окна «Сетевая игра». STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Версия этого клиента не совместима с версией сервера STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Неверный пароль +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Ваш клиент отсутствует в списке разрешённых STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Сервер переполнен STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Вас заблокировали на этом сервере STR_NETWORK_ERROR_KICKED :{WHITE}Вас отключили от игры @@ -2736,7 +2726,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Неве STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Подключение утеряно STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}В течение {NUM} секунд{P ы "" ""} от сервера не поступало никаких данных -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :общая ошибка STR_NETWORK_ERROR_CLIENT_DESYNC :ошибка синхронизации STR_NETWORK_ERROR_CLIENT_SAVEGAME :не смог загрузить карту @@ -2748,6 +2738,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :получен STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :версии не совпадают STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :это имя уже используется STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :неверный пароль +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :нет в списке разрешённых STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :неправильный параметр company в DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :вас выкинул сервер STR_NETWORK_ERROR_CLIENT_CHEATER :попытался применить чит @@ -2816,7 +2807,7 @@ STR_CONTENT_OPEN_URL :{BLACK}Веб- STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Посетить веб-сайт с информацией об этом модуле STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Скачать STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Начать загрузку выбранного контента -STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Всего для загруки: {WHITE}{BYTES} +STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Всего для загрузки: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}ИНФОРМАЦИЯ О КОНТЕНТЕ ###length 5 @@ -2973,7 +2964,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Выбо # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Маршрутная точка -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Выбор типа маршрутной точки # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Выбор ж/д станции @@ -2986,8 +2976,33 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Укаж STR_STATION_BUILD_DRAG_DROP :{BLACK}Произвольно STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Постройка станции на указанном игроком участке -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Выберите класс станций для отображения -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Выберите тип станции для постройки +STR_PICKER_MODE_ALL :Все +STR_PICKER_MODE_ALL_TOOLTIP :Показать все элементы +STR_PICKER_MODE_USED :Существующие +STR_PICKER_MODE_USED_TOOLTIP :Показать уже существующие элементы +STR_PICKER_MODE_SAVED :Избранное +STR_PICKER_MODE_SAVED_TOOLTIP :Показать сохранённые элементы + +STR_PICKER_STATION_CLASS_TOOLTIP :Выберите тип станций для отображения +STR_PICKER_STATION_TYPE_TOOLTIP :Выберите станцию для строительства. Ctrl+щелчок добавит её в «избранное» или удалит. +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Выберите тип маршрутных точек для отображения +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Выберите маршрутную точку для строительства. Ctrl+щелчок добавит её в «избранное» или удалит. +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Выберите тип остановок для отображения +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Выберите остановку для строительства. Ctrl+щелчок добавит её в «избранное» или удалит. +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Выберите тип грузовых терминалов для отображения +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Выберите грузовой терминал для строительства. Ctrl+щелчок добавит его в «избранное» или удалит. +STR_PICKER_OBJECT_CLASS_TOOLTIP :Выберите тип объектов для отображения +STR_PICKER_OBJECT_TYPE_TOOLTIP :Выберите объект для строительства. Ctrl+щелчок добавит его в «избранное» или удалит. Ctrl+перетаскивание - выбор диагональной области. При нажатом Shift - оценка стоимости строительства. +STR_PICKER_HOUSE_CLASS_TOOLTIP :Выберите городскую зону для отображения соответствующих строений +STR_PICKER_HOUSE_TYPE_TOOLTIP :Выберите дом для строительства. Ctrl+щелчок добавит его в «избранное» или удалит. + +STR_HOUSE_PICKER_CAPTION :Выбор типов домов + +STR_HOUSE_PICKER_CLASS_ZONE1 :Край +STR_HOUSE_PICKER_CLASS_ZONE2 :Окраина +STR_HOUSE_PICKER_CLASS_ZONE3 :Периферия +STR_HOUSE_PICKER_CLASS_ZONE4 :Пригород +STR_HOUSE_PICKER_CLASS_ZONE5 :Центр STR_STATION_CLASS_DFLT :Стандартная станция STR_STATION_CLASS_DFLT_STATION :Стандартная ж/д станция @@ -3042,6 +3057,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Стро STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Строительство трамвайных путей в автоматическом режиме. Ctrl+щелчок - удаление путей. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Строительство гаражей (для приобретения и обслуживания автомобилей). При нажатом Shift{NBSP}- оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Строительство трамвайных депо (для приобретения и обслуживания трамваев). При нажатом Shift - оценка стоимости строительства. +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}Установка маршрутных точек на дорогах. Ctrl+щелчок по другой точке объединит их. При нажатом Shift - оценка стоимости строительства. +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}Установка маршрутных точек на трамвайных путях. Ctrl+щелчок по другой точке объединит их. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Строительство автобусных остановок. Ctrl+щелчок - объединение новой остановки с существующей. Shift+щелчок - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Строительство трамвайных остановок. Ctrl+щелчок - объединение новой остановки с существующей. Shift+щелчок - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Строительство грузовых терминалов. Ctrl+щелчок - объединение нового терминала с существующим. Shift+щелчок - оценка стоимости строительства. @@ -3121,7 +3138,7 @@ STR_AIRPORT_CLASS_LARGE.nom :Средний STR_AIRPORT_CLASS_HUB :Большие аэропорты STR_AIRPORT_CLASS_HUB.nom :Большой STR_AIRPORT_CLASS_HELIPORTS :Вертолётные площадки -STR_AIRPORT_CLASS_HELIPORTS.nom :Вертолётный +STR_AIRPORT_CLASS_HELIPORTS.nom :Вертолётная STR_STATION_BUILD_NOISE :{BLACK}Производимый шум: {GOLD}{COMMA} @@ -3134,8 +3151,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Поку # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Выбор объекта -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Выберите создаваемый объект. Ctrl+щелчок+перетаскивание - выбор диагональной области. При нажатом Shift - оценка стоимости строительства. -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Выберите класс объекта для строительства STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Предварительный просмотр объекта STR_OBJECT_BUILD_SIZE :{BLACK}Размер: {GOLD}{NUM} × {NUM} клеток @@ -3146,7 +3161,7 @@ STR_OBJECT_CLASS_TRNS :Передат STR_PLANT_TREE_CAPTION :{WHITE}Деревья STR_PLANT_TREE_TOOLTIP :{BLACK}Выберите тип деревьев для посадки. Если на участке уже есть деревья, будут добавлены несколько деревьев различного типа, независимо от выбранного. STR_TREES_RANDOM_TYPE :{BLACK}Деревья случайного типа -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Высадка деревьев случайного типа. Ctrl+щелчок+перетаскивание - выбор диагональной области. При нажатом Shift - оценка стоимости высадки. +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Высадка деревьев случайного типа. Ctrl+перетаскивание - выбор диагональной области. При нажатом Shift - оценка стоимости высадки. STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Расставить по карте STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Разместить деревья на местности случайным образом STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Дерево @@ -3250,7 +3265,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Влад STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Владелец ж/д пути: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Администрация: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Нет -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Координаты: {LTBLUE}{NUM} × {NUM} × {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Координаты: {LTBLUE}{NUM} × {NUM} × {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Номер поля: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Построено/обновлено: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Класс станции: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип станции: {LTBLUE}{STRING} @@ -3368,9 +3384,9 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Скорость игры STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Скорость расчёта игры: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Кол-во игровых циклов, рассчитываемых в секунду. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Кол-во игровых циклов, рассчитываемых в секунду STR_FRAMERATE_RATE_BLITTER :{BLACK}Вывод на экран: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Кол-во отображаемых кадров в секунду. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Кол-во отображаемых кадров в секунду STR_FRAMERATE_SPEED_FACTOR :{BLACK}Текущая скорость игры: {DECIMAL}x STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Фактическая скорость игры (по сравнению с ожидаемой скоростью при нормальной скорости симуляции). STR_FRAMERATE_CURRENT :{WHITE}Сейчас @@ -3561,10 +3577,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Вы д STR_GENERATION_PROGRESS :{WHITE}{NUM}% готово STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Создание мира +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Создание ландшафта STR_GENERATION_RIVER_GENERATION :{BLACK}Создание рек -STR_GENERATION_TREE_GENERATION :{BLACK}Высадка лесов -STR_GENERATION_OBJECT_GENERATION :{BLACK}Создание объектов STR_GENERATION_CLEARING_TILES :{BLACK}Расстановка декораций и камней +STR_GENERATION_TOWN_GENERATION :{BLACK}Создание городов +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Создание предприятий +STR_GENERATION_OBJECT_GENERATION :{BLACK}Создание объектов +STR_GENERATION_TREE_GENERATION :{BLACK}Высадка лесов STR_GENERATION_SETTINGUP_GAME :{BLACK}Настройка STR_GENERATION_PREPARING_TILELOOP :{BLACK}Подготовка к запуску... STR_GENERATION_PREPARING_SCRIPT :{BLACK}Выполняется скрипт @@ -3656,7 +3675,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Тип доро STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметр переменной NewGRF 60+x (шестнадцатеричный) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Выравнивание спрайта {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Выравнивающий спрайт: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Выравнивающий спрайт: Действие 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Выравнивающий спрайт: Действие 0x5, type {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Следующий спрайт STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Перейти к следующему нормальному спрайту, пропуская изменяющие цвет, шрифтовые, псевдоспрайты. Переход из конца списка к первому спрайту. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Перейти к спрайту @@ -3665,6 +3686,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Пред STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Перейти к предыдущему нормальному спрайту, пропуская изменяющие цвет, шрифтовые, псевдоспрайты. Переход из начала списка к последнему спрайту. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Представление выбранного спрайта. Выравнивание не учитывается при прорисовке этого спрайта. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Двигайте спрайт, изменяя смещение по осям X и Y. С помощью Ctrl+щелчка можно сдвигать спрайты на 8 единиц. +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Смещение в центре @@ -3773,7 +3795,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}К пр STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Введите название таблички # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Города +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Города ({COMMA} / {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Нет - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Мегаполис){BLACK} ({COMMA}) @@ -4058,8 +4080,8 @@ STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Стои STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Инфраструктура: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} ж/д участ{P ок ка ков} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} дорожны{P й х х} участ{P ок ка ков} -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} водны{P й х х} участ{P ок ка ков} -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} участ{P ок ка ков} занято станциями +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} водн{P ое ых ых} пол{P е я ей} +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} пол{P е я ей} занято станциями STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} аэропорт{P "" а ов} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Нет @@ -4098,7 +4120,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Ж/д у STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Сигналы STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Дорожные участки: STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Трамвайные участки: -STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Водные участки: +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Водные поля: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Каналы STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Станции: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Площадь станций @@ -4107,7 +4129,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/цикл # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Предприятия +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Предприятия ({COMMA} / {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Нет - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% перевезено){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4564,7 +4586,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Теку # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Разгрузка/Погрузка STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Отъезжает -STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Ожидание развязки +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Ожидание распределения на маршрут STR_VEHICLE_STATUS_CRASHED :{RED}Попал в аварию! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Поломка STR_VEHICLE_STATUS_STOPPED :{RED}Остановлен @@ -4629,10 +4651,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ёмко STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Выручка перевозки: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}ТО каждые {LTBLUE}{COMMA}{NBSP}дней{BLACK}. {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}ТО каждые {LTBLUE}{COMMA}{NBSP}минут{BLACK}. {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}ТО кажд{P 0 ую ые ые} {LTBLUE}{COMMA}{NBSP}минут{P у ы ""}{BLACK}. {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}ТО при сниж. на {LTBLUE}{COMMA}%{BLACK}. {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :ТО: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :ТО: {LTBLUE}{NUM}{NBSP}мин. назад +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :ТО: {LTBLUE}{NUM} мин. назад STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Увеличить интервал ТО на 10{NBSP}дней. Ctrl+щелчок{NBSP}- увеличить на 5{NBSP}дней. STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Увеличить интервал ТО на 5{NBSP}минут. Ctrl+щелчок{NBSP}- увеличить на 1{NBSP}минуту. STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Увеличить интервал ТО на 10%. Ctrl+щелчок{NBSP}- увеличить на 5%. @@ -4823,7 +4845,7 @@ STR_ORDER_REFIT_ORDER :(Переобо STR_ORDER_REFIT_STOP_ORDER :(Переоборуд. под {STRING.acc} и стоп) STR_ORDER_STOP_ORDER :(Стоп) -STR_ORDER_WAIT_TO_UNBUNCH :(распределить) +STR_ORDER_WAIT_TO_UNBUNCH :(Распределить) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Неверный тип){POP_COLOUR} {STRING} {STATION} {STRING} @@ -5027,8 +5049,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :игровых STR_AI_SETTINGS_CLOSE :{BLACK}Закрыть STR_AI_SETTINGS_RESET :{BLACK}Сброс STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -5078,12 +5098,12 @@ STR_MESSAGE_ESTIMATED_COST :{WHITE}Пред STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Предполагаемый доход: {CURRENCY_LONG} # Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Идёт сохранение,{}пожалуйста, дождитесь завершения! +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Идёт сохранение;{}пожалуйста, дождитесь завершения! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Ошибка автосохранения STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не удалось прочитать диск -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Невозможно сохранить игру{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Невозможно сохранить игру... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Невозможно удалить файл -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Невозможно загрузить игру{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Невозможно загрузить игру... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Внутренняя ошибка: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл повреждён - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Сохранение сделано в более новой версии @@ -5188,6 +5208,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... не STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Идут дорожные работы... STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Невозможно уничтожить город:{}к нему относится станция или депо, либо невозможно очистить одну из занимаемых им клеток. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... в центре города нет места для статуи +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Невозможно поставить дом... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... слишком много предприятий @@ -5225,6 +5246,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Здес STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Примыкает к нескольким станциям STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... станция слишком большая +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... станции с таким количеством путей не поддерживаются +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... станции такой длины не поддерживаются STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Слишком много станций и остановок STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Слишком большая ж/д станция STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Слишком много автобусных остановок @@ -5260,11 +5283,14 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Прим STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Слишком близко к другой маршрутной точке STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Здесь невозможно поставить маршрутную точку... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Здесь невозможно поставить маршрутную точку... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Не удалось установить здесь буй... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Невозможно переименовать маршрутную точку... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Невозможно удалить маршрутную точку... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Невозможно удалить маршрутную точку... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Сначала удалите маршрутную точку +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Сначала удалите маршрутную точку STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... буй мешает STR_ERROR_BUOY_IS_IN_USE :{WHITE}... этот буй используется другой компанией! @@ -5454,7 +5480,7 @@ STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Нево STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Невозможно продать самолёт... STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Слишком много транспорта в игре -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Невозможно изменить частоту тех. обслуживания... +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Невозможно изменить частоту технического обслуживания... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... транспортное средство уничтожено @@ -5465,6 +5491,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Изме STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Нет доступных транспортных средств STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Начните игру не ранее {DATE_SHORT} либо подключите NewGRF, добавляющий транспортные средства, использовавшиеся в это время. +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Отсутствуют типы дорог, которые могла бы прокладывать городская администрация +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Измените конфигурацию установленных модулей NewGRF +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Пока что отсутствуют типы дорог, которые могла бы прокладывать городская администрация +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Установите дату начала игры не ранее {DATE_SHORT} или установите модуль NewGRF, добавляющий типы дорог, которые будут доступны администрациям городов на выбранную вами дату + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Невозможно игнорировать светофор. Опасно... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Невозможно развернуть поезд... @@ -5507,6 +5538,7 @@ STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Отсу STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Этот самолёт не может приземлиться на вертолётной площадке STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Этот вертолёт не может приземлиться в данном аэропорту STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Маршрутные точки отсутствуют +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Маршрутные точки отсутствуют STR_ERROR_NO_BUOY :{WHITE}Буи отсутствуют # Timetable related errors @@ -6031,6 +6063,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}тыс +STR_CURRENCY_SHORT_MEGA :{NBSP}млн +STR_CURRENCY_SHORT_GIGA :{NBSP}млрд +STR_CURRENCY_SHORT_TERA :{NBSP}трлн + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -6047,6 +6084,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 3a6a7078b9..2ce87bd0be 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -378,9 +378,22 @@ STR_COLOUR_WHITE :Bela STR_COLOUR_RANDOM :Nasumična ###length 17 +STR_COLOUR_SECONDARY_DARK_BLUE :Tamno plava +STR_COLOUR_SECONDARY_PALE_GREEN :Bledo zelena +STR_COLOUR_SECONDARY_SECONDARY_PINK :Ružičasta +STR_COLOUR_SECONDARY_YELLOW :Žuta +STR_COLOUR_SECONDARY_RED :Crvena +STR_COLOUR_SECONDARY_LIGHT_BLUE :Svetlo plava STR_COLOUR_SECONDARY_GREEN :Zelena +STR_COLOUR_SECONDARY_DARK_GREEN :Tamno zelena +STR_COLOUR_SECONDARY_BLUE :Plava +STR_COLOUR_SECONDARY_CREAM :Krem +STR_COLOUR_SECONDARY_MAUVE :Lavanda +STR_COLOUR_SECONDARY_PURPLE :Ljubičasta STR_COLOUR_SECONDARY_ORANGE :Narandžasta STR_COLOUR_SECONDARY_BROWN :Braon +STR_COLOUR_SECONDARY_GREY :Siva +STR_COLOUR_SECONDARY_WHITE :Bela STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Identično primarnom @@ -482,7 +495,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Omuguća STR_BUTTON_DEFAULT :{BLACK}Podrazumevano STR_BUTTON_CANCEL :{BLACK}Otkaži STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Upozorenje: Administratori servera će moći da pročitaju sav tekst koji je ovde unesen. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertzuiopšđasdfghjklčćž yxcvbnm,./'. @@ -505,7 +517,9 @@ STR_SORT_BY_TYPE :Vrsti STR_SORT_BY_TRANSPORTED :Prevezeno STR_SORT_BY_NUMBER :Broju STR_SORT_BY_PROFIT_LAST_YEAR :Zaradi prošle godine +STR_SORT_BY_PROFIT_LAST_PERIOD :Profit proteklog perioda STR_SORT_BY_PROFIT_THIS_YEAR :Zaradi ove godine +STR_SORT_BY_PROFIT_THIS_PERIOD :Profit trenutnog perioda STR_SORT_BY_AGE :Starosti STR_SORT_BY_RELIABILITY :Pouzdanosti STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Ukupnoj nosivosti po vrsti tereta @@ -606,6 +620,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Napusti editor STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Izađi + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Opcije @@ -692,7 +707,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Obriši sve por # About menu STR_ABOUT_MENU_LAND_BLOCK_INFO :Podaci o zemljištu -STR_ABOUT_MENU_HELP :Pomoć & priručnici +STR_ABOUT_MENU_HELP :Pomoć i priručnici STR_ABOUT_MENU_TOGGLE_CONSOLE :Uključi/isključi konzolu STR_ABOUT_MENU_AI_DEBUG :Korekcija VI / skripte igre STR_ABOUT_MENU_SCREENSHOT :Sačuvaj sliku @@ -701,6 +716,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :O OpenTTD-u STR_ABOUT_MENU_SPRITE_ALIGNER :Poravnavanje sprajta STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Uključi/isključi granične linije STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Uključi/Isključi bojenje nesređenih blokova +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Uključi/isključi okvire prozorčića ###length 31 STR_DAY_NUMBER_1ST :1. @@ -827,6 +843,8 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Zajam: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Ukupno: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Broj vozila koja su ostvarila profit prošle godine. Ovo uključuje drumska vozila, vozove, brodove i letelice +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Broj vozila koja su ostvarila profit u proteklom periodu. Ovo uključuje drumska vozila, vozove, brodove i letelice STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Broj nedavno opsluženih stanica. Posebno se broji svaki deo stanice (npr. železničko, autobusko stajalište ili aerodrom) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Zarađen novac u tromesečju sa najmanjom zaradom u proteklih 12 tromesečja STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Zarađen novac u tromesečju sa najvećom zaradom u proteklih 12 tromesečja @@ -1076,12 +1094,21 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G "" STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Otvori grupni prozor fokusiran na grupu vozila +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} više ne prihvata: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} sada prihvata: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Ponuda subvencije istekla:{}{}Prevoz {STRING.gen} iz {STRING} u {STRING} se više neće stimulisati STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvencija povučena:{}{}Usluga prevoza {STRING.gen} između stanica {STRING} i {STRING} više nije u opticaju +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Ponuda subvencije:{}{}Prvi {STRING} od {STRING} do {STRING} stiče pravo na subvenciju lokalnih vlasti u trajanju od {UNITS_YEARS_OR_MINUTES}! ###length 4 +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvencija odobrena preduzeću {STRING}!{}{}{STRING} od {STRING} do {STRING} će biti plaćena 50% više {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvencija odobrena preduzeću {STRING}!{}{}{STRING} od {STRING} do {STRING} će biti plaćena dvostruko {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvencija odobrena preduzeću {STRING}!{}{}{STRING} od {STRING} do {STRING} će biti plaćena trostruko {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvencija odobrena preduzeću {STRING}!{}{}{STRING} od {STRING} do {STRING} će biti plaćena četvorostruko {UNITS_YEARS_OR_MINUTES}! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Prevoznički monopol! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}Lokalna vlast {TOWN} je potpisala ugovor sa {STRING} za 12 meseci isključivih prava prevoza! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}Lokalna vlast {TOWN} je potpisala ugovor sa {STRING} za 12 minuta isključivih prava prevoza! # Extra view window STR_EXTRA_VIEWPORT_TITLE :{WHITE}Pogled{COMMA} @@ -1093,19 +1120,26 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopiraj # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Opcije +STR_GAME_OPTIONS_TAB_GENERAL :Opšte +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Odabir opštih podešavanja STR_GAME_OPTIONS_TAB_GRAPHICS :Grrafika +STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Odabir grafičkih podešavanja +STR_GAME_OPTIONS_TAB_SOUND :Zvuk +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Odabir podešavanja zvuka i muzike +STR_GAME_OPTIONS_TAB_SOCIAL :Društveno +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Odabir društvenih podešavanja STR_GAME_OPTIONS_VOLUME :Jačina zvuka STR_GAME_OPTIONS_SFX_VOLUME :Zvučni efekti +STR_GAME_OPTIONS_MUSIC_VOLUME :Muzika -STR_GAME_OPTIONS_VOLUME_0 :0% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor valute STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Britanska funta STR_GAME_OPTIONS_CURRENCY_USD :Dolar STR_GAME_OPTIONS_CURRENCY_EUR :Evro @@ -1148,6 +1182,7 @@ STR_GAME_OPTIONS_CURRENCY_HKD :Hongkonški dol STR_GAME_OPTIONS_CURRENCY_INR :Indijska rupija STR_GAME_OPTIONS_CURRENCY_IDR :Indonezijska rupija STR_GAME_OPTIONS_CURRENCY_MYR :Malezijski ringit +STR_GAME_OPTIONS_CURRENCY_LVL :Letonski lat STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Auto čuvanje pozicije STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izbor vremenskog intervala između dve automatski sačuvane pozicije @@ -1189,14 +1224,19 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Označi STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Povećanje okvira STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Označi ovde da veličina okvira povećava sa veličinom prozora +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Koristi tradicionalni font +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Označi ovde ako više voliš tradicionalni font fiksirane veličine. +STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fontova +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Označi ovde za anti-alias fontova promenljive veličine -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x -STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Ovo otvara pretraživač sa više informacija o automatskim anketama +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatizovana anketa +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Učestvuj u automatizovanoj anketi +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Kada je uključeno, OpenTTD će poslati rezultate ankete prilikom napuštanja igre +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}O anketi i privatnosti +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Ovo otvara pretraživač sa više informacija o automatizovanim anketama +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Pregledaj rezultate anketa +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Pogledaj rezultate ankete za trenutnu igru STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafike @@ -1218,7 +1258,15 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Odaberi STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatni podaci o osnovnom skupu muzike +STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(nema instaliranih dodataka za integraciju sa drušvenim platformama) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Platforma: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Stanje dodatka: + +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Neuspešno pokretanje +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} nije u funkciji +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Duplirani dodatak +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Neispravan potpis STR_BASESET_STATUS :{STRING} {RED}({NUM} fajl{P '' a ovi} nedostaj{P e e u}/{P je su su} korumpiran{P '' a i} @@ -1233,6 +1281,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Smanji v STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Povećaj vrednost svoje valute u odnosu na jednu funtu (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Postavi vrednost svoje valute u odnosu na jednu funtu (£) + STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Postavi prefiks za svoju valutu STR_CURRENCY_SUFFIX :{LTBLUE}Sufiks: {ORANGE}{STRING} @@ -1385,9 +1434,10 @@ STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}se STR_CONFIG_SETTING_INFINITE_MONEY :Neograničen novac: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Najveći zajam na početku: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Najveći iznos koji preduzeće može da pozajmi (ne uzimajući u obzir inflaciju) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Najveći iznos koji preduzeće može da pozajmi (ne uzimajući u obzir inflaciju). Ako se odabere "Bez pozajmice", novac neće biti dostupan osim kroz skriptu igre ili kroz uključivanje podešavanja za neograničen novac. STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Bez pozajmice STR_CONFIG_SETTING_INTEREST_RATE :Kamatna stopa: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Kamatna stopa na zajam; ako je omogućena, kontroliše inflaciju @@ -1407,7 +1457,9 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Podešava kolik STR_CONFIG_SETTING_SUBSIDY_DURATION :Trajanje subvencije: {STRING} ###length 2 STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Odredi broj godina trajanja subvencije +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Odredi broj perioda za koje će se subvencija odobravati +STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR_PERIODS} ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Bez subvencija @@ -1533,7 +1585,8 @@ STR_CONFIG_SETTING_BRIBE_HELPTEXT :Dozvoljava pred STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Dozvoljena kupovina ekskluzivnih prava prevoza: {STRING} ###length 2 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ako preduzeće kupi ekskluzivna prava prevoza u naselju, protivničke stanice neće primati nikakav teret ni putnike dvanaest meseci +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ako preduzeće kupi isključiva prava prevoza u naselju, protivničke stanice (putničke i teretne) neće primati nikakav teret ni putnike dvanaest meseci +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :Ako preduzeće kupi isključiva prava prevoza u naselju, protivničke stanice (putničke i teretne) neće primati nikakav teret ni putnike dvanaest minuta STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Dozvoljeno finansiranje zgrada: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Dozvoljava preduzećima da naselju daju novac za gradnju novih kuća @@ -1571,6 +1624,7 @@ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Ako je omoguće STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Početna boja preduzeća: {STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Izaberi početnu boju za preduzeće +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Odabir početne sekundarne boje preduzeća, ako se koristi NewGRF koji to podržava. STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Nezastarevanje aerodroma: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Omogućavanje ovog podešavanja čini svaki tip aerodroma zauvek pristupan nakon njegovog uvođenja @@ -1589,14 +1643,27 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Upozorenje ukol ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ako je omogućeno, šalje vest kada vozilo u toku kalendarske godine nije ostvarilo zaradu + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozila nikad ne zastarevaju: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ako je omogućeno, svi modeli vozila ostaju zauvek dostupni (posle njihovog predstavljanja) +STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Merenje vremena: {STRING} +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Odabir jedinica za merenje vremena igre. Ovo podešavanje ne može biti promenjeno tokom igre.{}{}Kalendarsko praćenje je tradicionalno merenje u OpenTTD-u, gde se godina sastoji od 12 meseci, koji imaju između 28 i 31 dan.{}{}Kod vremena određenog zidnim satom, proračun proizvodnje dobara i finansija se zasniva na uvećanjima od jednog minuta, što odgovara trajanju jednog meseca od 30 dana u kalendarskom modu. Ovi meseci se grupišu u periode od 12 minuta, što odgovara godini u kalendarskom modu.{}{}U oba moda postoji klasičan kalendar, koji se koristi za datume dostupnosti vozila, kuća i ostale infrastrukture. ###length 2 +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalendar +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Zidni sat +STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minuta po godini: {STRING} +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Odabir broja minuta u kalendarskoj godini. Početna vrednost je 12 minuta. Podešavanjem vrednosti na 0 zaustavlja se promena vremena. Ovo podešavanje ne utiče na ekonomske simulacije igre, a dostupna je samo u modu praćenja vremena uz pomoć časovnika. ###setting-zero-is-special +STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (kalendarsko vreme je zaustavljeno) +STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Skaliranje proizvodnje tereta: {STRING} +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skaliraj proizvodnju tereta gradova prema ovom procentu. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Skaliranje proizvidnje tereta fabrika: {STRING} +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skaliraj proizvodnju tereta fabrika prema ovom procentu. +STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatska zamena kada vozilo ostari: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Kada je omogućeno, vozilo blizu kraja života će se automatski zameniti kada su ispunjeni uslovi obnavljanja @@ -1688,6 +1755,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Levom stranom STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Desnom stranom STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Orijentacija elevacione karte: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Odaberi kako će se visinska mapa rotirati da bi se uklopila u svet igre ###length 2 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Nalevo STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Nadesno @@ -1780,6 +1848,9 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Nikakvo STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zatvori prozor pomoću desnog klika: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zatvara prozor tako što klikne desnim klikom unutar nje. Onemogućava dodir sa desnim tasterom miša! ###length 3 +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Ne +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Da +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Da, osim pridenutih STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Koristiti {STRING} oblik datuma u nazivima sačuvanih igara STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format datuma u imenima fajlova sačuvanih igara @@ -1845,6 +1916,7 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Reprodukuj zvu ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR :Kraj godine: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Kraj perioda: {STRING} ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reprodukuj zvučne efekte prilikom ispisa rezultata poslovanja preduzeća na kraju svake godine @@ -1908,7 +1980,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Podrazumevani s STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Postavi podrazumevani servisni interval za nove letelice, ukoliko nema zadatog servisnog intervala za vozilo STR_CONFIG_SETTING_SERVINT_SHIPS :Podrazumevani servisni interval za brodove: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Postavi podrazumevani servisni interval za nove brodove, ukoliko nema zadatog servisnog intervala za vozilo -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dan{P 0 "" a a}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Onemogućeno @@ -2128,11 +2201,14 @@ STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Postavljanje ov STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Zasićenje kratkih puteva pre korišćenja puteva velikih kapaciteta: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Često postoji više puteva izmeđe dve stanice. Cargodist će prvo popuniti najkraći put, nakon toga koristiti drugi najkraći put dok se ne popuni itd. Popunjenost se određuje procenom nosivosti i planirane upotrebe. Jednom kad se popune svi putevi i ako i dalje postoji potreba, pretrpati će sve puteve preferirajući one sa visokim kapacitetom. Ipak, algoritam najčešće neće proceniti kapacitet tačno. Ova postavka omogućava da podešavanje do kojeg postotka će kraći put biti popunjen u prvom prolazu pre nego se počne popunjavati sledeći put. Podešavanjem na vrednost manje od 100% izbegavaju se pretrpane stanice u slučaju previsoko procenjenog kapaciteta. -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Mere brzine: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Mere brzine (tlo): {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Mere brzine (pomorski): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kada brzina bude pokazana u interfejsu, pokaži u željenoj meri STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperijalne mere (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metričke mere (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Jedinice igre (pločica/dan) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Jedinice igre (pločica/sek) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Čvorovi STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Mere za snagu vozila: {STRING} @@ -2197,17 +2273,8 @@ STR_CONFIG_SETTING_AI :Suparnici STR_CONFIG_SETTING_AI_NPC :Računar STR_CONFIG_SETTING_NETWORK :Mreža -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pretraživanje putanja vozova: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algoritam pronalaženja puta za vozove -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pretraživanje putanja drumskih vozila: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Algoritam pronalaženja puta za drumska vozila -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pretraživanje putanja brodova: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Algoritam pronalaženja puta za brodove STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatska promena smera kod signalizacije: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Dozvoljeno okretanje vozova na signalu, ako su dugo čekali -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Preporučuje se) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Promena vrednosti @@ -2248,6 +2315,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Mrežna STR_INTRO_GAME_OPTIONS :{BLACK}Opcije STR_INTRO_HIGHSCORE :{BLACK}Tabela najboljih rezultata +STR_INTRO_HELP :{BLACK}Pomoć i priručnici STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Podešavanja STR_INTRO_NEWGRF_SETTINGS :{BLACK}Podešavanja NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Proveri dodatke na mreži @@ -2267,13 +2335,14 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Izbor su STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Izbor suptropskog klimatskog pojasa STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Izbor zemlje igračaka -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Prikazuje opcije igre -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Prikazuje tabelu najboljih rezultata -STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Prikazuje podešavanje -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Prikazuje podešavanja NewGRF +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Prikaži opcije igre +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Prikaži tabelu najboljih rezultata +STR_INTRO_TOOLTIP_HELP :{BLACK}Pristupi dokumentaciji i resursima na internetu +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Otvori podešavanja +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Prikaži podešavanja NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Pregled novih i ažuriranih dodatka za preuzimanje -STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Prikazuje podešavanja VI -STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Prikazuje podešavanja skripte +STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Otvori podešavanja VI +STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Otvori podešavanja skripte STR_INTRO_TOOLTIP_QUIT :{BLACK}Napušta 'OpenTTD' STR_INTRO_BASESET :{BLACK}Trenutno odabranom skupu osnovne grafike nedostaje {NUM} sprajt{P "" "ova" "ova"}. Proveri da li postoje izmene za ovaj skup. @@ -2291,9 +2360,17 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Da li z STR_ABANDON_SCENARIO_QUERY :{YELLOW}Da li zaista želiš da napustiš ovaj scenario? # Help window +STR_HELP_WINDOW_CAPTION :{WHITE}Pomoć i priručnici +STR_HELP_WINDOW_WEBSITES :{BLACK}Sajtovi STR_HELP_WINDOW_DOCUMENTS :{BLACK}Dokumenti +STR_HELP_WINDOW_README :{BLACK}Uputstvo +STR_HELP_WINDOW_CHANGELOG :{BLACK}Dnevnik promena STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Poznati Bagovi STR_HELP_WINDOW_LICENSE :{BLACK}Licenca +STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD +STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Priručnik / Wiki +STR_HELP_WINDOW_BUGTRACKER :{BLACK}Prijavi problem +STR_HELP_WINDOW_COMMUNITY :{BLACK}Zajednica # Cheat window STR_CHEATS :{WHITE}Varanja @@ -2316,10 +2393,14 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Prikaži STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Prikaži šeme boja drumskih vozila STR_LIVERY_SHIP_TOOLTIP :{BLACK}Prikaži šeme boja brodova STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Prikaži šeme boja letelica +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Prikaži boje grupa vozova +STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Prikaži boje grupa drumskih vozila STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Prikaži boje grupa brodova +STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Prikaži boje grupa letelica STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Izaberi osnovnu boju za označenu kategoriju. Ctrl+klik će izabrati ovu boju za sve kategorije STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Izaberi dodatnu boju za označenu kategoriju. Ctrl+klik će izabrati ovu boju za sve kategorije STR_LIVERY_PANEL_TOOLTIP :{BLACK}Označi šemu boja za izmenu, ili više njih koristeći Ctrl+klik. Klikom na kutijicu aktivira se upotreba date šeme +STR_LIVERY_TRAIN_GROUP_EMPTY :Nema podešenih grupa vozova STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Nijedna grupa letelica nije formirana ###length 23 @@ -2426,6 +2507,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Veličin STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Veličina terena u igri{}Klikom će se poređati po veličini STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Trenutni datum u igri +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}č {NUM}m +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Trajanje igre +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Odigrano vreme dok{}igra nije bila pauzirana STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Jezik, verzija servera, itd. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klikom na igru sa spiska vrši se njen odabir @@ -2441,6 +2525,7 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Adresa STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Kod pozivnice: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Početni datum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Trenutni datum: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Trajanje igre: {WHITE}{NUM}č {NUM}m STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Skripta igre: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Zaštićeno šifrom! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER JE VAN MREŽE @@ -2505,7 +2590,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Preuzima STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Isključenje STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server je zaštićen. Unesi lozinku -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Preduzeće je zaštićeno. Unesi lozinku # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Prisutni igrači @@ -2553,13 +2637,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Preko re STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Izbaci STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Zabrana STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Obriši -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Otključavanje lozinkom STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Administratorska akcija STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Da li zaista želiš da izbaciš igrača '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Da li zaista želiš da blokiraš igrača '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Da li zaista želiš da obrišeš preduzeće '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Da li zaista želiš da promeniš lozinku preduzeća '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Koristi relej? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Neuspelo uspostavljanje konekcije sa serverom '{STRING}'.{}Da li želiš da uspostaviš relejnu konekciju preko '{STRING}'? @@ -2567,25 +2649,18 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Ne STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Da, jednom STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Da, ne pitaj ponovo -STR_NETWORK_ASK_SURVEY_TEXT :Da li želiš da učestvuješ u automatskoj anketi?{}OpenTTD će slati anketu kada izlaziš iz igre.{}Možeš promentiti ovo podešavanje u bilo kom trenutku pod "Opcijama igre". +STR_NETWORK_ASK_SURVEY_CAPTION :Učestvuj u automatizovanoj anketi? +STR_NETWORK_ASK_SURVEY_TEXT :Da li želiš da učestvuješ u automatizovana anketi?{}OpenTTD će slati anketu kada izlaziš iz igre.{}Možeš promentiti ovo podešavanje u bilo kom trenutku pod "Opcijama igre". STR_NETWORK_ASK_SURVEY_PREVIEW :Pregledaj rezultate ankete STR_NETWORK_ASK_SURVEY_LINK :O anketi i privatnosti +STR_NETWORK_ASK_SURVEY_NO :Ne +STR_NETWORK_ASK_SURVEY_YES :Da STR_NETWORK_SPECTATORS :Posmatrači -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Otkaži unetu lozinku -STR_COMPANY_PASSWORD_OK :{BLACK}Postavi preduzeću novu lozinku -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Lozinka za preduzeće -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Podrazumevana lozinka za preduzeće -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Koristi ovu lozinku kao podrazumevanu za nova preduzeća - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Pridruži se STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pridruži se i igraj kao ovo preduzeće -STR_COMPANY_VIEW_PASSWORD :{BLACK}Lozinka -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Zaštiti svoje preduzeće lozinkom kako se drugi korisnici ne bi nedozvoljeno pridruživali -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Postavi lozinku za preduzeće # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Pošalji @@ -2629,7 +2704,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Tvoje im STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Moguć gubitak veze STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}U poslednj{P 0 oj e ih} {NUM} sekund{P i e i} nije primljen nijedan podatak sa servera -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :opšta greška STR_NETWORK_ERROR_CLIENT_DESYNC :desinhronizacija STR_NETWORK_ERROR_CLIENT_SAVEGAME :neuspešno učitavanje terena @@ -2700,13 +2775,13 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Obeleži STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Obeležava sve preuzete dodatke koje imaju novija izdanja za preuzimanje STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Poništi odabir STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Otkaži preuzimanje svih dodataka -STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Pretraži eksterne web stranice +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Pretraži spoljne sajtove STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Traženi sadržaj nije dostupan u OpenTTD servisu za sadržaje za web stranice koje nisu pridružene u OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Napuštaš OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Odredbe i uslovi za preuzimanje sadržaja sa spoljnih sajtova varira.{}Moraćeš da pogledaš spoljašnje sajtove za uputstva u vezi instalacije sadržaja u OpenTTD.{}Želiš li da nastaviš? STR_CONTENT_FILTER_TITLE :{BLACK}Filter po oznaci/nazivu: -STR_CONTENT_OPEN_URL :{BLACK}Idi na Web lokaciju -STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Ovaj sadržaj nalazi se na Web lokaciji +STR_CONTENT_OPEN_URL :{BLACK}Poseti sajt +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Ovaj sadržaj nalazi se na sajtu STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Preuzmi STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Započinje preuzimanje odabranih dodataka STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Ukupna količina za preuzimanje: {WHITE}{BYTES} @@ -2843,7 +2918,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Odabir o # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Putanja -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Odaberi tip putanje # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Izbor železničke stanice @@ -2856,8 +2930,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Odabir d STR_STATION_BUILD_DRAG_DROP :{BLACK}Prevlačenje STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Gradnja stanice prevlačenjem -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Odabir klase stanica za prikaz -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Odabir vrste stanice za izgradnju + + + STR_STATION_CLASS_DFLT :Podrazumevana stanica STR_STATION_CLASS_WAYP :Putanje @@ -2888,6 +2963,8 @@ STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Izbor dr STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Izbor mosta - gradnja se potvrđuje klikom na željeni most STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING} STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY} +STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_BRIDGE_NAME_SUSPENSION_STEEL :Viseći, čelični STR_BRIDGE_NAME_GIRDER_STEEL :Gredni, čelični STR_BRIDGE_NAME_CANTILEVER_STEEL :Obešeni, čelični @@ -2995,8 +3072,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kupovina # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Izbor Objekta -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Odabir objekta za izgradnju. Ctrl dijagonalno obeležava područje. Shift prebacuje između izgradnje i prikaza procene troškova -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Odabir klase objekata za izgradnju STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Privremeno prikazuje objekat STR_OBJECT_BUILD_SIZE :{BLACK}Veličina: {GOLD}{NUM} x {NUM} pločica @@ -3111,7 +3186,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Vlasnik železničke pruge: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalna vlast: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nema -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinate: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Sagrađeno: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Klasa stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta stanice: {LTBLUE}{STRING} @@ -3415,9 +3489,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% z STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Stvaranje sveta STR_GENERATION_RIVER_GENERATION :{BLACK}Određivanje toka reka -STR_GENERATION_TREE_GENERATION :{BLACK}Postavljanje drveća -STR_GENERATION_OBJECT_GENERATION :{BLACK}Postavljenje nepomičnih objekata STR_GENERATION_CLEARING_TILES :{BLACK}Dodavanje grubih i stenovitih područja +STR_GENERATION_OBJECT_GENERATION :{BLACK}Postavljenje nepomičnih objekata +STR_GENERATION_TREE_GENERATION :{BLACK}Postavljanje drveća STR_GENERATION_SETTINGUP_GAME :{BLACK}Podešavanje igre STR_GENERATION_PREPARING_TILELOOP :{BLACK}Razrađivanje pločica STR_GENERATION_PREPARING_SCRIPT :{BLACK}Pokretanje skripte @@ -3503,11 +3577,11 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Provera STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} kod {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekat STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Vrsta železnice +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Vrsta puta STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF promenljiva 60+x parametar (heksadecimalno) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Poravnjavanje sprajta {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sledeći sprajt STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Prelazi na sledeći normalan sprajt, preskačući sve pseudo/prebojavajuće/font sprajtove i vraća se na početak posle zadnjeg STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Idi na sprajt @@ -3537,6 +3611,8 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING STR_NEWGRF_ERROR_MSG_WARNING :{RED}Upozorenje: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Greška: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Kobno: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}NewGRF "{STRING}" je prijavio fatalnu grešku:{}{STRING} +STR_NEWGRF_ERROR_POPUP :{WHITE}NewGRF "{STRING}" je prijavio grešku:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} neće raditi sa TTDPatch verzijom prema prijavi OpenTTD-a STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} je za {2:STRING} verziju TTD-a STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} je napravljen za korišćenje sa {2:STRING} @@ -3622,7 +3698,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Položaj STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Unos naziva znaka # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Naselja STR_TOWN_DIRECTORY_NONE :{ORANGE}- Prazno - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (City){BLACK} ({COMMA}) @@ -3640,6 +3715,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} dostavljeno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (potrebno) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (dostavljeno) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Naselje raste {ORANGE}{UNITS_DAYS_OR_SECONDS} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Naselje raste {ORANGE}{UNITS_DAYS_OR_SECONDS} (sponzorisano) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Naselje se {RED}ne{BLACK} razvija STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Nivo buke u naselju: {ORANGE}{COMMA}{BLACK} najviše: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Prebacuje glavni pogled na lokaciju naselja. Ctrl+klik otvara novi pogled na lokaciju naselja @@ -3681,6 +3758,8 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{Y STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Ulaganje u veliku reklamnu kampanju će doneti preduzeću više putnika i robe iz ovog naselja.{}Privremeno povećava ocenu stanica u velikom prečniku oko centra naselja tokom trajanja kampanje.{}{POP_COLOUR}Trošak: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Otkrivanje spomenika preduzeća.{}Trajno povećava ocenu stanica u naselju tokom trajanja kampanje.{}{POP_COLOUR}Trošak: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW} Finansiranje izgradnje novih objekata u naselju.{}Privremeno povećava brzinu rasta u ovom naselju.{}{POP_COLOUR}Trošak: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Kupi isključiva prava prevoza u gradu tokom sledećih 12 meseci.{}Lokalna vlast neće dozvoliti upotrebu putničkih i teretnih stanica tvojih suparnika. Uspešno podmićivanje od strane suparnika poništava ovaj ugovor.{}{POP_COLOUR}Trošak: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Kupi isključiva prava prevoza u gradu tokom sledećih 12 minuta.{}Lokalna vlast neće dozvoliti upotrebu putničkih i teretnih stanica tvojih suparnika. Uspešno podmićivanje od strane suparnika poništava ovaj ugovor.{}{POP_COLOUR}Trošak: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Davanje mita lokalnoj vlasti kako bi porasla ocena vašeg preduzeća, uz rizik velike štete ukoliko se otkrije.{}{POP_COLOUR}Trošak: {CURRENCY_LONG} # Goal window @@ -3727,9 +3806,15 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Zatvori # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencije STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subvencije u toku (u vezi preuzimanja navedenog tereta): +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} od {STRING} do {STRING}{YELLOW} ({STRING}) STR_SUBSIDIES_NONE :{ORANGE}- Prazno - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Odobrene subvencije: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} od {STRING} do {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikom na uslugu prebacuje glavni pogled na lokaciju fabrike/naselja. Ctrl+klik otvara novi pogled na to mesto +STR_SUBSIDIES_OFFERED_EXPIRY_DATE :pre {DATE_SHORT} +STR_SUBSIDIES_OFFERED_EXPIRY_TIME :unutar {UNITS_MONTHS_OR_MINUTES} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :do {DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} preostaje # Story book window STR_STORY_BOOK_CAPTION :{WHITE}Priča {COMPANY} @@ -3752,6 +3837,12 @@ STR_STATION_LIST_STATION :{YELLOW}{STATIO STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Prazno - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Odaberi sve objekte +STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Sve vrste tereta i bez ocene +STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Više vrsta tereta +STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Bez vrste tereta +STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :Samo bez ocene tereta +STR_STATION_LIST_CARGO_FILTER_NO_RATING :Bez ocene tereta +STR_STATION_LIST_CARGO_FILTER_EXPAND :Prikaži više... # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} @@ -3915,6 +4006,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Ime vlasnika STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Unesi iznos novca koji želiš da daš STR_BUY_COMPANY_MESSAGE :{WHITE}U potrazi smo za preduzećem koje bi preuzelo naše.{}{}Da li želiš da kupiš {COMPANY} za {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Prilikom nasilnog preuzimanja {COMPANY} kupuješ svu imovinu, otplaćuješ sve dugove i isplaćuješ profit za dve godine.{}{}Ukupan iznos je procenjen na {CURRENCY_LONG}.{}{}Da li želiš da nastaviš sa nasilnim preuzimanjem? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktura preduzeća {COMPANY} @@ -3927,9 +4019,10 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanali STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stanice: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Pločica sa stanicom STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aerodromi +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENCY_LONG}/godina +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/period # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Fabrike STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nema - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% prevezeno){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3985,7 +4078,11 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Upravlja STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Pošalji naredbu svim vozilima na ovoj listi STR_VEHICLE_LIST_REPLACE_VEHICLES :Obnovi vozila STR_VEHICLE_LIST_SEND_FOR_SERVICING :Pošalji na servis +STR_VEHICLE_LIST_CREATE_GROUP :Napravi grupu STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Ovogodišnja zarada: {CURRENCY_LONG} (prošle godine: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Profit trenutnog perioda: {CURRENCY_LONG} (prethodni period: {CURRENCY_LONG}) +STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] +STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Pošalji u depo STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Pošalji u depo @@ -4029,7 +4126,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Ukloni sva vozi STR_GROUP_RENAME_CAPTION :{BLACK}Preimenuj grupu STR_GROUP_PROFIT_THIS_YEAR :Zarada ove godine: +STR_GROUP_PROFIT_THIS_PERIOD :Profit trenutnog perioda: STR_GROUP_PROFIT_LAST_YEAR :Zarada prošle godine: +STR_GROUP_PROFIT_LAST_PERIOD :Profit proteklog perioda: STR_GROUP_OCCUPANCY :Trenutna upotreba: STR_GROUP_OCCUPANCY_VALUE :{NUM}% @@ -4426,6 +4525,8 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Težina: STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Ovogodišnja zarada: {LTBLUE}{CURRENCY_LONG} (prošlogodišnja: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Ovogodišnja zarada: {LTBLUE}{CURRENCY_LONG} (prošlogodišnja: {CURRENCY_LONG}) {BLACK}Najlošiji učinak: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Profit trenutnog perioda: {LTBLUE}{CURRENCY_LONG} (protekli period: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Profit trenutnog perioda: {LTBLUE}{CURRENCY_LONG} (protekli period: {CURRENCY_LONG}) {BLACK}Min. performanse: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Pouzdanost: {LTBLUE}{COMMA}% {BLACK}Kvarova od poslednjeg servisa: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Kupljen: {LTBLUE}{NUM}{BLACK} Vrednost: {LTBLUE}{CURRENCY_LONG} @@ -4436,8 +4537,14 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Nosivost STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Zarada od transfera: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Interval servisiranja: {LTBLUE}{COMMA}dana{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Interval servisiranja: {LTBLUE}{COMMA}{NBSP}minut{P "" a a}{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval servisiranja: {LTBLUE}{COMMA}%{BLACK} {STRING} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Povećava interval servisiranja za 10 dana. Ctrl+klik povećava interval servisiranja za 5 dana +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Povećava interval servisiranja za 5 minuta. Ctrl+klik povećava interval servisiranja za 1 minut +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Povećava interval servisiranja za 10 procenata. Ctrl+klik povećava interval servisiranja za 5 procenata -STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Promeni tip intervala za servis +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Promeni tip intervala servisiranja STR_VEHICLE_DETAILS_DEFAULT :Podrazumevano STR_VEHICLE_DETAILS_PERCENT :Procenat @@ -4544,6 +4651,8 @@ STR_ORDER_DROP_HALT_DEPOT :Zaustavljanje # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES +STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Odabira akcije koja će se dogoditi u depou +STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Odabira akcije koja će se dogoditi u hangaru ###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Skok na osnovu podatka o vozilu @@ -4692,7 +4801,9 @@ STR_TIMETABLE_STATUS_EARLY :{BLACK}Vozilo t STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ovaj raspored još nije počeo STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Ovaj red vožnje će započeti za {COMMA} sekund{P u e e} +STR_TIMETABLE_START :{BLACK}Početak rasporeda +STR_TIMETABLE_START_SECONDS_QUERY :Broj sekundi do početka rasporeda STR_TIMETABLE_CHANGE_TIME :{BLACK}Promena vremena STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Promena količine vremena za koje će obeležena naredba trajati. Ctrl+klik podešava vreme za sve naredbe @@ -4716,6 +4827,9 @@ STR_TIMETABLE_EXPECTED :{BLACK}Očekiva STR_TIMETABLE_SCHEDULED :{BLACK}Po planu STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Prebacivanje između prikaza očekivanog i po planu +STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY} +STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} sek STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} sek @@ -4748,7 +4862,7 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Prikazuj STR_AI_GAME_SCRIPT :{BLACK}Skripta igre STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Pregled dnevnika skripte igre -STR_ERROR_AI_NO_AI_FOUND :Nije pronađena nijedna prikladna VI.{}Učitana zamena neće raditi ništa.{}Možete preuzeti nekoliko VI preko sistema za preuzimanje dodataka +STR_ERROR_AI_NO_AI_FOUND :Nije pronađena nijedna odgovarajuća VI.{}Učitana je zamena koja neće raditi ništa.{}Možete preuzeti nekoliko VI preko sistema za preuzimanje dodataka STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Jedna od pokrenutih skripti je prestala da radi. Molimo za prijavu greške autoru skripte sa slikom prozora za korigovanje VI / skripte STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Prozor za korigovanje VI / skripte je dostupan samo na serveru @@ -4760,6 +4874,7 @@ STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Veštač STR_AI_CONFIG_HUMAN_PLAYER :Ljudsko biće STR_AI_CONFIG_RANDOM_AI :Proizvoljna VI STR_AI_CONFIG_NONE :(nijedna) +STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Najveći broj suparnika: {ORANGE}{COMMA} STR_AI_CONFIG_MOVE_UP :{BLACK}Pomeri naviše @@ -4801,7 +4916,9 @@ STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Slika ek STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Slika umanjene mape # Script Parameters -STR_AI_SETTINGS_CAPTION_AI :{WHITE}Parametri VI +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametri +STR_AI_SETTINGS_CAPTION_AI :AI +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Skripta igre STR_AI_SETTINGS_CLOSE :{BLACK}Zatvori STR_AI_SETTINGS_RESET :{BLACK}Poništi STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} @@ -4814,13 +4931,13 @@ STR_TEXTFILE_WRAP_TEXT :{WHITE}Prelomit STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK} Prelomiti tekst prozora tako da stane bez potrebe skrolovanja STR_TEXTFILE_VIEW_README :{BLACK}Uputstvo STR_TEXTFILE_VIEW_README_TOOLTIP :Prikaži uputstvo za ovaj sadržaj -STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Izmene +STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Dnevnik promena STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Prikaži dnevnik promena za ovaj sadržaj STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenca STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Prikaži licencu za ovaj sadržaj ###length 5 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} uputstvo za {STRING} -STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} izmene od {STRING} +STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} promena od {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licenca od {STRING} STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD dokument '{STRING}' @@ -4853,9 +4970,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Procena STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Čuvanje je još u toku,{}molimo sačekaj dok se ne završi! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Neuspešno automatsko čuvanje STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Čitanje sa diska nije uspelo -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Čuvanje pozicije nije uspelo{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Brisanje datoteke nije uspelo -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Učitavanje pozicije nije uspelo{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Unutrašnja greška: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Neispravno sačuvana igra - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Igra je sačuvana sa novijom verzijom igre @@ -5221,7 +5336,7 @@ STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Brod se STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Letelica se ne može prodati... STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Previše je vozila u igri -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Servisni interval nije moguće promeniti... +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Interval servisiranja nije moguće promeniti... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozilo je uništeno @@ -5232,6 +5347,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Promeni STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nijedno vozilo još uvek nije dostupno STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Pokreni novu igru koja počinje posle {DATE_SHORT} ili koristi NewGRF koji omogućava ranija vozila + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nemoguć je prolaz voza na signal opasnosti... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}... vozilo je uništeno @@ -5267,6 +5383,11 @@ STR_ERROR_NO_RAIL_STATION :{WHITE}Ne posto STR_ERROR_NO_BUS_STATION :{WHITE}Nema autobuske stanice STR_ERROR_NO_DOCK :{WHITE}Ne postoji pristanište STR_ERROR_NO_AIRPORT :{WHITE}Ne postoji aerodrom/heliodrom +STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Ne postoje stanice sa odgovarajućim tipom puta +STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Ne postoje stanice sa odgovarajućim tipom tramvajske železnice +STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Ne postoje odgovarajuće stanice za zglobna drumska vozila.{}Zglobnim drumskim vozilima su neophodne stanice kroz koje se prolazi +STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Ovaj avion ne može sleteti na ovaj heliodrom +STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Ovaj helikopter ne može sleteti na ovaj aerodrom STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Ne postoji železničko čvorište STR_ERROR_NO_BUOY :{WHITE}Ne postoji bova @@ -5274,6 +5395,8 @@ STR_ERROR_NO_BUOY :{WHITE}Ne posto STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Raspored se ne može dodeliti vozilu... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozila mogu čekati samo na stanicama STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ovo vozilo ne staje na tu stanicu +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... raspored nije kompletan +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... raspored nije započet # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... ima previše znakova @@ -5752,7 +5875,13 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}hilj. +STR_CURRENCY_SHORT_MEGA :{NBSP}mil. +STR_CURRENCY_SHORT_GIGA :{NBSP}mlrd. +STR_CURRENCY_SHORT_TERA :{NBSP}tril. + STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} @@ -5765,6 +5894,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 65cd2668cd..5960dca2f2 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -19,7 +19,7 @@ ##id 0x0000 STR_NULL : STR_EMPTY : -STR_UNDEFINED :(未定义字符串) +STR_UNDEFINED :(未定义字符串) STR_JUST_NOTHING :无 # Cargo related strings @@ -104,7 +104,7 @@ STR_QUANTITY_WOOD :{WEIGHT_LONG} STR_QUANTITY_IRON_ORE :{WEIGHT_LONG}铁矿石 STR_QUANTITY_STEEL :{WEIGHT_LONG}钢材 STR_QUANTITY_VALUABLES :{COMMA}{NBSP}包贵重品 -STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} 铜矿石 +STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG}铜矿石 STR_QUANTITY_MAIZE :{WEIGHT_LONG}玉米 STR_QUANTITY_FRUIT :{WEIGHT_LONG}水果 STR_QUANTITY_DIAMONDS :{COMMA}{NBSP}包钻石 @@ -119,11 +119,11 @@ STR_QUANTITY_TOYS :{COMMA}{NBSP} STR_QUANTITY_SWEETS :{COMMA}{NBSP}包糖果 STR_QUANTITY_COLA :{VOLUME_LONG}可乐 STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG}棉花糖 -STR_QUANTITY_BUBBLES :{COMMA} 个泡泡 +STR_QUANTITY_BUBBLES :{COMMA}{NBSP}个泡泡 STR_QUANTITY_TOFFEE :{WEIGHT_LONG}太妃糖 -STR_QUANTITY_BATTERIES :{COMMA} 箱电池 +STR_QUANTITY_BATTERIES :{COMMA}{NBSP}箱电池 STR_QUANTITY_PLASTIC :{VOLUME_LONG}塑料 -STR_QUANTITY_FIZZY_DRINKS :{COMMA}瓶汽水 +STR_QUANTITY_FIZZY_DRINKS :{COMMA}{NBSP}瓶汽水 STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name @@ -174,38 +174,38 @@ STR_COLOUR_DEFAULT :默认 STR_COLOUR_DARK_BLUE :深蓝色 STR_COLOUR_PALE_GREEN :浅绿色 STR_COLOUR_PINK :粉红色 -STR_COLOUR_YELLOW :黄 色 -STR_COLOUR_RED :红 色 +STR_COLOUR_YELLOW :黄色 +STR_COLOUR_RED :红色 STR_COLOUR_LIGHT_BLUE :淡蓝色 -STR_COLOUR_GREEN :绿 色 +STR_COLOUR_GREEN :绿色 STR_COLOUR_DARK_GREEN :深绿色 -STR_COLOUR_BLUE :蓝 色 +STR_COLOUR_BLUE :蓝色 STR_COLOUR_CREAM :奶油色 STR_COLOUR_MAUVE :深紫色 -STR_COLOUR_PURPLE :紫 色 +STR_COLOUR_PURPLE :紫色 STR_COLOUR_ORANGE :橘黄色 -STR_COLOUR_BROWN :棕 色 +STR_COLOUR_BROWN :棕色 STR_COLOUR_GREY :浅灰色 -STR_COLOUR_WHITE :白 色 +STR_COLOUR_WHITE :白色 STR_COLOUR_RANDOM :随机 ###length 17 STR_COLOUR_SECONDARY_DARK_BLUE :深蓝色 STR_COLOUR_SECONDARY_PALE_GREEN :浅绿色 STR_COLOUR_SECONDARY_SECONDARY_PINK :粉红色 -STR_COLOUR_SECONDARY_YELLOW :黄 色 -STR_COLOUR_SECONDARY_RED :红 色 +STR_COLOUR_SECONDARY_YELLOW :黄色 +STR_COLOUR_SECONDARY_RED :红色 STR_COLOUR_SECONDARY_LIGHT_BLUE :淡蓝色 -STR_COLOUR_SECONDARY_GREEN :绿 色 +STR_COLOUR_SECONDARY_GREEN :绿色 STR_COLOUR_SECONDARY_DARK_GREEN :深绿色 -STR_COLOUR_SECONDARY_BLUE :蓝 色 +STR_COLOUR_SECONDARY_BLUE :蓝色 STR_COLOUR_SECONDARY_CREAM :奶油色 STR_COLOUR_SECONDARY_MAUVE :深紫色 -STR_COLOUR_SECONDARY_PURPLE :紫 色 +STR_COLOUR_SECONDARY_PURPLE :紫色 STR_COLOUR_SECONDARY_ORANGE :橘黄色 -STR_COLOUR_SECONDARY_BROWN :棕 色 +STR_COLOUR_SECONDARY_BROWN :棕色 STR_COLOUR_SECONDARY_GREY :浅灰色 -STR_COLOUR_SECONDARY_WHITE :白 色 +STR_COLOUR_SECONDARY_WHITE :白色 STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :主色调 @@ -256,9 +256,9 @@ STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP} STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}米 # Time units used in string control characters -STR_UNITS_DAYS :{COMMA}{NBSP} 日 -STR_UNITS_SECONDS :{COMMA}{NBSP} 秒 -STR_UNITS_TICKS :{COMMA}{NBSP} 刻 +STR_UNITS_DAYS :{COMMA}{NBSP}日 +STR_UNITS_SECONDS :{COMMA}{NBSP}秒 +STR_UNITS_TICKS :{COMMA}{NBSP}刻 STR_UNITS_MONTHS :{NUM}{NBSP}个月 STR_UNITS_MINUTES :{NUM}{NBSP}分 @@ -272,7 +272,7 @@ STR_LIST_FILTER_OSKTITLE :{BLACK}输入 STR_LIST_FILTER_TOOLTIP :{BLACK}输入关键字以筛选查找此列表 STR_TOOLTIP_GROUP_ORDER :{BLACK}选择分组次序 -STR_TOOLTIP_SORT_ORDER :{BLACK}选择排序方法 (降序/升序) +STR_TOOLTIP_SORT_ORDER :{BLACK}选择排序方法(降序/升序) STR_TOOLTIP_SORT_CRITERIA :{BLACK}选择排序标准 STR_TOOLTIP_FILTER_CRITERIA :{BLACK}选择过滤标准 STR_BUTTON_SORT_BY :{BLACK}排序 @@ -283,13 +283,13 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}关闭 STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}窗口标题 - 拖动这里可以移动该窗口 STR_TOOLTIP_SHADE :{BLACK}阴影窗口 - 仅显示标题栏 STR_TOOLTIP_DEBUG :{BLACK}显示 NewGRF 纠错信息 -STR_TOOLTIP_DEFSIZE :{BLACK}将窗口调整到默认大小. Ctrl+左键 将当前存为默认. -STR_TOOLTIP_STICKY :{BLACK}标记此窗口,使其不受“关闭所有窗口”快捷键影晌。Ctrl+左击将选项定为预设 +STR_TOOLTIP_DEFSIZE :{BLACK}将窗口调整到默认大小。Ctrl+ 左键将当前存为默认 +STR_TOOLTIP_STICKY :{BLACK}标记此窗口,使其不受“关闭所有窗口”快捷键影晌。Ctrl+ 左击将选项定为预设 STR_TOOLTIP_RESIZE :{BLACK}点击并拖动这里可以缩放窗口 STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}切换窗口大小 STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}滚动条 - 上下滚动列表 STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}滚动条 - 左右滚动列表 -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}拆除地块上的建筑物等设施,按住Ctrl键选择对角线区域,按住Shift键操作只提示预计成本 +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}清除地面。按住 键以沿对角线操作,按住 键操作以显示预计成本 # Show engines button ###length VEHICLE_TYPES @@ -308,11 +308,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}如启 STR_BUTTON_DEFAULT :{BLACK}默认 STR_BUTTON_CANCEL :{BLACK}取消 STR_BUTTON_OK :{BLACK}确定 -STR_WARNING_PASSWORD_SECURITY :{YELLOW}注意:服务器管理员可以看到你所输入的文字 # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}长度:{NUM} @@ -348,7 +347,7 @@ STR_SORT_BY_WAITING_TOTAL :等候中的货 STR_SORT_BY_WAITING_AVAILABLE :等候中的可运载货物总量 STR_SORT_BY_RATING_MAX :车站中最高的货物评价 STR_SORT_BY_RATING_MIN :车站中最低的货物评价 -STR_SORT_BY_ENGINE_ID :引擎ID (默认方式) +STR_SORT_BY_ENGINE_ID :引擎编号 STR_SORT_BY_COST :售价 STR_SORT_BY_POWER :功率 STR_SORT_BY_TRACTIVE_EFFORT :牵引力 @@ -394,19 +393,19 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}显示 STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}显示公司图表和货物运费表 STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}显示公司排行榜 STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}查看产业链、工业列表,或建设新工业 -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}显示公司火车列表。按住 键单击以显示/隐藏载具组。 -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}显示公司汽车列表。按住 键单击以显示/隐藏载具组。 -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}显示公司船只列表。按住 键单击以显示/隐藏载具组。 -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}显示公司飞机列表。按住 键单击以显示/隐藏载具组。 -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}放大视图 +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}显示公司火车列表。按住 键单击以显示/隐藏载具组 +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}显示公司汽车列表。按住 键单击以显示/隐藏载具组 +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}显示公司船只列表。按住 键单击以显示/隐藏载具组 +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}显示公司飞机列表。按住 键单击以显示/隐藏载具组 +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}放大 STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}缩小 STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}建设铁路设施 STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}建设公路设施 STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}建设电车设施 STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}建设水运设施 STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}建设机场 -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}打开景观美化工具栏以修改地形、设置地貌等 -STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}显示 声音/音乐 控制菜单 +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}打开地形工具栏以修改地形、种植树木或放置标志等 +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}显示声音与音乐控制菜单 STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}显示最新消息、新闻,消息历史或删除所有消息 STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}查询地块信息、截图、关于 OpenTTD 和开发者工具 STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}切换工具栏 @@ -423,10 +422,10 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}修改 STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}城镇生成 STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}建造或生成工业 STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}建设公路设施 -STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}电车道建设 -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}种植树木。按住 以沿对角线建造。按住 键以显示预计费用。 +STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}建设电车设施 +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}种植树木。按住 以沿对角线建造。按住 键以显示预计费用 STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}放置标志 -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}放置物件。按住 以沿对角线放置,按住 以显示预计费用。 +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}放置物件。按住 以沿对角线放置,按住 以显示预计费用 # Scenario editor file menu ###length 7 @@ -438,6 +437,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :退出编辑器 STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :退出 +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :生成城镇 +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :放置房屋 + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :游戏选项 @@ -511,7 +513,7 @@ STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :水运建设 STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :机场建设 # Landscaping menu -STR_LANDSCAPING_MENU_LANDSCAPING :景观美化 +STR_LANDSCAPING_MENU_LANDSCAPING :地形 STR_LANDSCAPING_MENU_PLANT_TREES :植树 STR_LANDSCAPING_MENU_PLACE_SIGN :放置标志 @@ -527,7 +529,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :删除全部消 STR_ABOUT_MENU_LAND_BLOCK_INFO :查询地块信息 STR_ABOUT_MENU_HELP :帮助和指南 STR_ABOUT_MENU_TOGGLE_CONSOLE :切换到控制台模式 -STR_ABOUT_MENU_AI_DEBUG :AI /游戏脚本调试 +STR_ABOUT_MENU_AI_DEBUG :AI / 游戏脚本调试 STR_ABOUT_MENU_SCREENSHOT :屏幕截图 STR_ABOUT_MENU_SHOW_FRAMERATE :显示帧率 STR_ABOUT_MENU_ABOUT_OPENTTD :关于 OpenTTD @@ -608,7 +610,7 @@ STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COM STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}损益图表 STR_GRAPH_INCOME_CAPTION :{WHITE}收入图表 STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}运输的货物总数 -STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}公司评价表现指数 (最大指数为1000) +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}公司评价表现指数(最大指数为 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}公司市值图表 STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}最后 72 分 @@ -616,23 +618,23 @@ STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLA STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}货物运输价格 STR_GRAPH_CARGO_PAYMENT_RATES_DAYS :{TINY_FONT}{BLACK}运输所用天数 STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLACK}运输所用秒数 -STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}将 10 单位 (或 10,000 升) 货物运输 20 个方格 +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}将 10 单位(或 10,000 升)货物运输 20 个方格 STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}全部启用 STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}全部禁用 STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}在货物运输价格表中显示所有货物 STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}在货物运费表中隐藏所有货物 -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}切换是否显示某种货物 +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}切换显示货物 STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}查看详细数据 # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}公司图表索引 -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}点击这里切换显示公司 +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}切换显示公司 # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}公司评价排名 -STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} “{STRING}” STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :车库主管 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :线路经理 @@ -667,7 +669,7 @@ STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}总表 STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}去年盈利的载具数量,包括公路载具、列车、船舶和飞机 STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :上期盈利的载具数量,包括公路载具、列车、船舶和飞机 -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}最近仍然使用的车站组件数量。车站的每个组件(火车站、公交站、机场)即使是连接成为一个车站,也会被独立计数。 +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}最近仍然使用的车站组件数量。车站的每个组件(火车站、公交站、机场)即使是连接成为一个车站,也会被独立计数 STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}收入最低的载具的利润(只考虑年龄超过两年的载具) STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}收入最低的载具的损益(只计算年龄超过两年的载具) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}在过去 12 个季度中{}利润最少的季度的现金收入 @@ -683,9 +685,9 @@ STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}音乐 STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}全部 STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}旧风格 STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}新风格 -STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy街头 -STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}自定义1 -STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}自定义2 +STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy 街头 +STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}自定义 1 +STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}自定义 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}音乐音量 STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}音效音量 STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- @@ -705,27 +707,27 @@ STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}拖动 STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}选择全部乐曲 STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}选择“老式音乐”列表 STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}选择“新的风格”音乐列表 -STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}选择“Ezy街头”风格的音乐列表 -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}选择“自定义1”(用户定义)的列表 -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}选择“自定义2”(用户定义)的列表 -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}开启/关闭 随机播放列表中的曲目 +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}选择“Ezy 街头”风格的音乐列表 +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}选择“自定义 1”(用户定义)的列表 +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}选择“自定义 2”(用户定义)的列表 +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}开关播放清单随机播放 STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}打开音乐选单窗口 # Playlist window -STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}音乐列表 - '{STRING}' +STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}音乐列表 - “{STRING}” STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}全部音轨列表 -STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}当前选用'{STRING}'列表 +STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}当前选用“{STRING}”列表 STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}清除 STR_PLAYLIST_CHANGE_SET :更改设置 -STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}清除当前列表中曲目{}(仅限自定义1或自定义2) +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}清除当前列表中曲目{}(仅限自定义 1 或自定义 2) STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}选择其他已安装的音乐包 -STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}点击音乐曲目以加入当前播放列表{}(仅限自定义1或自定义2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}点击音乐曲目以从当前播放列表中删除{}(仅限自定义1或自定义2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}点击音乐曲目以加入当前播放列表{}(仅限自定义 1 或自定义 2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}点击音乐曲目以从当前播放列表中删除{}(仅限自定义 1 或自定义 2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}顶级公司 -STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. +STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}。 STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :运输个体户 STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :运输代理商 STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :运输企业主 @@ -733,10 +735,10 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :运输资本家 STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :运输行业巨子 STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :运输行业领袖 STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :世纪大亨 -STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} -STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) -STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} 达到 '{STRING}' 的状态! -STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} 在 {COMPANY} 达到 '{STRING}' 状态! +STR_HIGHSCORE_NAME :{PRESIDENT_NAME},{COMPANY} +STR_HIGHSCORE_STATS :{BIG_FONT}“{STRING}” ({COMMA}) +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} 达到“{STRING}”的状态! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} 在 {COMPANY} 达到“{STRING}”状态! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}地图 - {STRING} @@ -757,9 +759,9 @@ STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}在地 STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}在地图上显示运输路线 STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}在地图上显示植被分布 STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}在地图上显示各公司所属 -STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}点击一种工业类型以显示. Ctrl+左击 只显示该工业类型. 再度 Ctrl+左击 显示所有工业类型 -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}点击一个公司以显示. Ctrl+左击只显示该公司. 再次Ctrl+左击显示所有公司. -STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}点选一种货物以切换是否显示其属性。{}Ctrl+左击以显示某货物的属性而隐藏其他货物;再Ctrl+左击一次则显示所有货物 +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}点击一种工业类型以显示。Ctrl+ 左击只显示该工业类型。再度 Ctrl+ 左击显示所有工业类型 +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}点击一个公司以显示。Ctrl+ 左击只显示该公司。再次 Ctrl+ 左击显示所有公司 +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}点选一种货物以切换是否显示其属性。{}Ctrl+ 左击以显示某货物的属性而隐藏其他货物;再 Ctrl+ 左击一次则显示所有货物 STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}公路 STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}铁路 @@ -791,7 +793,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}沙漠 STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}雪地 -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}切换是否显示城镇名称 +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}切换城镇名称 STR_SMALLMAP_CENTER :{BLACK}在地图中心点显示当前位置 STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -800,9 +802,11 @@ STR_SMALLMAP_TOWN :{TINY_FONT}{WHI STR_SMALLMAP_DISABLE_ALL :{BLACK}全部禁用 STR_SMALLMAP_ENABLE_ALL :{BLACK}全部启用 STR_SMALLMAP_SHOW_HEIGHT :{BLACK}显示高度 +STR_SMALLMAP_SHOW_INDUSTRY_NAMES :{BLACK}显示工业名称 STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}在地图上不显示工业设施 STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}在地图上显示所有工业设施 STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}切换高度图显示 +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRY_NAMES :{BLACK}切换工业名称 STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}在地图上不显示任何公司 STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}在地图上显示所有公司 STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}地图上不显示客货流 @@ -811,10 +815,10 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}地图 # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}显示最后一条消息或新闻 STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - -STR_STATUSBAR_PAUSED :{YELLOW}* * 已暂停 * * -STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * 已暂停 (等待货物分配图更新) * * +STR_STATUSBAR_PAUSED :{YELLOW}* * 已暂停 * * +STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * 已暂停(等待货物分配图更新) * * STR_STATUSBAR_AUTOSAVE :{RED}自动保存 -STR_STATUSBAR_SAVING_GAME :{RED}* * 保存游戏中 * * +STR_STATUSBAR_SAVING_GAME :{RED}* * 保存游戏中 * * STR_STATUSBAR_SPECTATOR :{WHITE}(旁观者) STR_STATUSBAR_INFINITE_MONEY :{WHITE}(无限) @@ -827,22 +831,22 @@ STR_MESSAGE_NEWS_FORMAT :{STRING} - {S STR_NEWS_MESSAGE_CAPTION :{WHITE}消息 STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} -STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一列火车抵达 {STATION}! -STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一辆巴士抵达 {STATION}! -STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一辆货车抵达 {STATION}! -STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}市民欢庆~. . .{}首辆客运电车抵达 {STATION}! -STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}市民欢庆~. . .{}首辆货运电车抵达 {STATION}! -STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一艘船抵达 {STATION}! -STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一架飞机到达 {STATION} ! +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}首列火车抵达 {STATION}! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}首辆巴士抵达 {STATION}! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}首辆货车抵达 {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}首辆客运电车抵达 {STATION}! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}首辆货运电车抵达 {STATION}! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}首班次船抵达 {STATION}! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}首架飞机到达 {STATION}! -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}列车相撞!{}{COMMA} 人在爆炸中丧生 +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}列车相撞!{}{COMMA} 人在爆炸中丧生! STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}汽车事故!{}汽车与火车相撞,司机在事故中丧生! STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}汽车事故!{}汽车与火车相撞,{COMMA} 人在事故中丧生! STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}飞机坠毁!{}{COMMA} 人在 {STATION} 的事故中罹难! STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}飞机坠毁!{}燃油不足,{COMMA} 人在事故中罹难! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}齐柏林飞艇在 {STATION} 失事! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}汽车被 'UFO' 炸毁! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}汽车被 UFO 炸毁! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}在 {TOWN} 附近的炼油厂泄漏! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}在 {TOWN} 附近的工厂神秘被毁! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}UFO 在 {TOWN} 附近降落! @@ -857,13 +861,13 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 已经宣布破产,所有资产均已抵债! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}新的运输公司开业大吉! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 在 {TOWN} 附近开工建设! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} 被 {STRING} 以未知的价格收购 ! -STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(总裁) +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} 被 {STRING} 以未知的价格收购! +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(总裁) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} 赞助了城镇 {TOWN} 的建设! STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}一个名叫{TOWN}的城镇刚刚成立了! -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}新的{STRING} 正在 {TOWN} 加紧建设! +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}新的{STRING}正在 {TOWN} 附近建设! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}新的{STRING} 即将落户 {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} 即将倒闭! @@ -901,10 +905,10 @@ STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} 已经达到报废年限 STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} 已经达到报废年限,必须马上更新! STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} 无法找到道路 -STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} 无法找到路线. +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} 无法找到路线 STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :{WHITE}{VEHICLE} 的去年损益为 {CURRENCY_LONG} STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}{VEHICLE} 上期的损益为 {CURRENCY_LONG} -STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} 由于航程过远,航班无法到达。 +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} 由于航程过远,航班无法到达 STR_NEWS_ORDER_REFIT_FAILED :{WHITE}适配调度计划失败,已终止 {VEHICLE} STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}无法自动更新 {VEHICLE}{}{STRING} @@ -918,18 +922,18 @@ STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}打开 STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION}不再接受:{CARGO_LIST} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION}现在接受:{CARGO_LIST} -STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}财政补贴项目到期:{}{}将 {STRING} 从 {STRING} 运送到 {STRING} 将不再获得财政补贴。 -STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}财政补贴项目流标:{}{}将 {STRING} 从 {STRING} 运送到 {STRING} 将不是财政补贴项目。 +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}财政补贴项目到期:{}{}将 {STRING} 从 {STRING} 运送到 {STRING} 将不再获得财政补贴 +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}财政补贴项目流标:{}{}将 {STRING} 从 {STRING} 运送到 {STRING} 将不是财政补贴项目 STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}财政补贴项目招标:{}{}第一个将 {STRING} 从 {STRING} 运送到 {STRING} 的公司将获得地方政府为期 {UNITS_YEARS_OR_MINUTES} 的财政补贴! ###length 4 -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{STRING} 获得财政补贴!{}{}今后 {4:UNITS_YEARS_OR_MINUTES} 年中将 {1:STRING} 从 {2:STRING} 运送到 {3:STRING} 将获得 50% 的额外报酬! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{STRING} 获得财政补贴!{}{}今后 {4:UNITS_YEARS_OR_MINUTES} 中将 {1:STRING} 从 {2:STRING} 运送到 {3:STRING} 将获得 50% 的额外报酬! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}{STRING} 获得财政补贴!{}{}今后 {4:UNITS_YEARS_OR_MINUTES} 中将 {1:STRING} 从 {2:STRING} 运送到 {3:STRING} 将获得双倍的报酬! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}{STRING} 获得财政补贴!{}{}今后 {4:UNITS_YEARS_OR_MINUTES} 中将 {1:STRING} 从 {2:STRING} 运送到 {3:STRING} 将获得三倍的报酬! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}{STRING} 获得财政补贴!{}{}今后 {4:UNITS_YEARS_OR_MINUTES} 中将 {1:STRING} 从 {2:STRING} 运送到 {3:STRING} 将获得四倍的报酬! STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}{TOWN}的混乱交通!{}{}由{STRING}资助的道路重建计划将给驾车者带来长达 6 个月的堵塞! STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}{TOWN}的混乱交通!{}{}由{STRING}资助的道路重建计划将给驾车者带来长达 6 分钟的堵塞! -STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}垄断运输! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}垄断运输! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}{TOWN} 地方当局与 {STRING} 签订了长为一年的独家运输合同! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}{TOWN} 地方当局与 {STRING} 签订了 12 分钟独家运输合同! @@ -956,18 +960,14 @@ STR_GAME_OPTIONS_VOLUME :音量 STR_GAME_OPTIONS_SFX_VOLUME :音效 STR_GAME_OPTIONS_MUSIC_VOLUME :音乐 -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}货币单位 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}货币单位选择 STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :英镑 STR_GAME_OPTIONS_CURRENCY_USD :美元 STR_GAME_OPTIONS_CURRENCY_EUR :欧元 @@ -999,7 +999,7 @@ STR_GAME_OPTIONS_CURRENCY_EEK :爱沙尼亚克 STR_GAME_OPTIONS_CURRENCY_LTL :立陶宛立特 STR_GAME_OPTIONS_CURRENCY_KRW :韩元 STR_GAME_OPTIONS_CURRENCY_ZAR :南非兰特 -STR_GAME_OPTIONS_CURRENCY_CUSTOM :自定义… +STR_GAME_OPTIONS_CURRENCY_CUSTOM :自定义…… STR_GAME_OPTIONS_CURRENCY_GEL :格鲁吉亚拉里 STR_GAME_OPTIONS_CURRENCY_IRR :伊朗里亚尔 STR_GAME_OPTIONS_CURRENCY_RUB :新俄罗斯卢布 @@ -1011,6 +1011,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :印度卢布 STR_GAME_OPTIONS_CURRENCY_IDR :印尼盾 STR_GAME_OPTIONS_CURRENCY_MYR :马来西亚林吉特 STR_GAME_OPTIONS_CURRENCY_LVL :拉脱维亚拉特 +STR_GAME_OPTIONS_CURRENCY_PTE :葡萄牙埃斯库多 STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}自动保存 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}选择自动保存的周期 @@ -1018,14 +1019,14 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}选择 # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :关闭 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :每10分钟 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :每30分钟 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :每60分钟 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :每120分钟 +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :每 10 分钟 +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :每 30 分钟 +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :每 60 分钟 +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :每 120 分钟 STR_GAME_OPTIONS_LANGUAGE :{BLACK}语言 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}选择界面语言 -STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} (完成了 {NUM}%) +STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING}(完成了 {NUM}%) STR_GAME_OPTIONS_FULLSCREEN :{BLACK}全屏幕 STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}选择此项可以在全屏幕模式下进行 OpenTTD 游戏 @@ -1040,12 +1041,12 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}点击 STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}修改后的设置将在游戏重启后生效 STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}垂直同步 -STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}点击该复选框开启垂直同步(V-sync)。修改后的设置将在游戏重启后生效。仅开启硬件加速时有效 +STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}点击该复选框开启垂直同步 (V-sync)。修改后的设置将在游戏重启后生效。仅开启硬件加速时有效 STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}驱动程序:{STRING} STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}界面大小 -STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}拖动滑块以设置界面大小。按住 键以精准调整。 +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}拖动滑块以设置界面大小。按住 键以精准调整 STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}自动检测大小 STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}选中此框可自动检测界面大小 @@ -1053,19 +1054,15 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}适应 STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}选中此框使边框大小随界面大小而缩放 STR_GAME_OPTIONS_GUI_FONT_SPRITE :使用位图字体 -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}如果您想使用固定大小的传统位图字体,请勾选此框。 +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}如果您想使用固定大小的传统位图字体,请勾选此框 STR_GAME_OPTIONS_GUI_FONT_AA :字体抗锯齿 -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :勾选此框以对游戏字体应用抗锯齿。 +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}勾选此框以对游戏字体应用抗锯齿 -STR_GAME_OPTIONS_GUI_SCALE_1X :1倍 -STR_GAME_OPTIONS_GUI_SCALE_2X :2倍 -STR_GAME_OPTIONS_GUI_SCALE_3X :3倍 -STR_GAME_OPTIONS_GUI_SCALE_4X :4倍 -STR_GAME_OPTIONS_GUI_SCALE_5X :5倍 +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}自动体验调查 STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}参与自动体验调查 -STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}“打开”时, OpenTTD会在结束游戏时传输调查结果 +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}“打开”时,OpenTTD 会在结束游戏时传输调查结果 STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}关于体验调查和隐私 STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}这会提供更多自动体验调查的信息(打开浏览器) STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}预览调查结果 @@ -1090,6 +1087,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}基础 STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}选择要使用的基础音乐组 STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}有关基础音乐组的附加信息 +STR_GAME_OPTIONS_ONLINE_CONTENT :获取内容 +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :查询并下载最新内容 + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(未安装社交平台插件) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1098,13 +1098,13 @@ STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}插件 STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}正在运行 STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}初始化失败 -STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING}未在运行 +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} 未在运行 STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}未加载 STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}重复插件 STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}不受支持的版本 STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}无效签名 -STR_BASESET_STATUS :{STRING} {RED}(共有{NUM}份缺失或损坏的文件) +STR_BASESET_STATUS :{STRING} {RED}(共有 {NUM} 份缺失或损坏的文件) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}检索支持的分辨率列表失败 STR_ERROR_FULLSCREEN_FAILED :{WHITE}无法切换到全屏模式{}尝试使用不同的分辨率 @@ -1112,27 +1112,30 @@ STR_ERROR_FULLSCREEN_FAILED :{WHITE}无法 # Custom currency window STR_CURRENCY_WINDOW :{WHITE}自定义货币 -STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}兑换汇率: {ORANGE}{CURRENCY_LONG} = {COMMA} 英镑(£) -STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}减少英磅(£)兑换自定义货币的数量 -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}增加英磅(£)兑换自定义货币的数量 -STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}设置自定义货币与英磅(£)的兑换比率 +STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}兑换汇率:{ORANGE}{CURRENCY_LONG} = {COMMA} 英镑 (£) +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}减少英磅 (£) 兑换自定义货币的数量 +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}增加英磅 (£) 兑换自定义货币的数量 +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}设置自定义货币与英磅 (£) 的兑换比率 -STR_CURRENCY_PREFIX :{LTBLUE}前缀: {ORANGE}{STRING} +STR_CURRENCY_SEPARATOR :{LTBLUE}分隔符:{ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}选择自定义货币的分隔符 + +STR_CURRENCY_PREFIX :{LTBLUE}前缀:{ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}设置自定义货币的首字 -STR_CURRENCY_SUFFIX :{LTBLUE}后缀: {ORANGE}{STRING} +STR_CURRENCY_SUFFIX :{LTBLUE}后缀:{ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}设置自定义货币的尾字 -STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}改用欧元: {ORANGE}{NUM} -STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}改用欧元: {ORANGE}不改用 +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}改用欧元:{ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}改用欧元:{ORANGE}不改用 STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}设定改用欧元的年份 STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}提早改用欧元 STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}延后改用欧元 STR_CURRENCY_PREVIEW :{LTBLUE}预览:{ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 英磅(£) 兑换自定义货币的数量 +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 英磅 (£) 兑换自定义货币的数量 STR_CURRENCY_CHANGE_PARAMETER :{BLACK}改变当前的货币参数 -STR_NONE :没有 +STR_NONE :无 STR_FUNDING_ONLY :不生成 STR_MINIMAL :每种仅一个 STR_NUM_VERY_LOW :非常低 @@ -1202,7 +1205,7 @@ STR_CITY_APPROVAL_TOLERANT :隐忍 STR_CITY_APPROVAL_HOSTILE :对立 STR_CITY_APPROVAL_PERMISSIVE :放任(所有行为均不受影响) -STR_WARNING_NO_SUITABLE_AI :{WHITE}无合适的 AI 可用...{}你可以在线下载各种 AI 。 +STR_WARNING_NO_SUITABLE_AI :{WHITE}无合适的 AI 可用……{}你可以在线下载各种 AI # Settings tree window STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}设置 @@ -1212,7 +1215,7 @@ STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}关闭 STR_CONFIG_SETTING_RESET_ALL :{BLACK}重置所有值 STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(没有可用的提示) STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR} -STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}默认值: {ORANGE}{STRING} +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}默认值:{ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}设置类型:{ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :当前客户端设置(不保存,影响所有游戏) STR_CONFIG_SETTING_TYPE_GAME_MENU :当前游戏设置(可保存在存档中,仅对新游戏生效) @@ -1225,9 +1228,9 @@ STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_TEXT :{WHITE}该操 STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}筛选设定: STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}适用范围: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}仅显示修改过的选项 -STR_CONFIG_SETTING_RESTRICT_BASIC :基本 (仅显示重要设置) -STR_CONFIG_SETTING_RESTRICT_ADVANCED :高级 (显示大部份设置) -STR_CONFIG_SETTING_RESTRICT_ALL :专业 (显示所有设置) +STR_CONFIG_SETTING_RESTRICT_BASIC :基本(仅显示重要设置) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :高级(显示大部份设置) +STR_CONFIG_SETTING_RESTRICT_ALL :专业(显示所有设置) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :修改默认值 STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :设置一个与当前游戏设置不同的值 @@ -1267,28 +1270,28 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :右侧 STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}秒 -STR_CONFIG_SETTING_INFINITE_MONEY :无限资金: {STRING} +STR_CONFIG_SETTING_INFINITE_MONEY :无限资金:{STRING} STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :允许无限制的支出并禁止公司破产 -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :最大初始贷款: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :公司最大贷款额(不考虑通货膨胀的影响) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :最大初始贷款:{STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :公司最大贷款额(不考虑通货膨胀的影响)。如果此项被设为“无贷款”则开局时不会有任何金钱提供,此时金钱需要由“无限金钱”选项或者游戏脚本提供 STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :无贷款 {RED}需要有游戏脚本以提供初始资金 +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :无贷款 -STR_CONFIG_SETTING_INTEREST_RATE :贷款利率: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :贷款利率;如果通货膨胀启用,将同时影响通货膨胀率。 +STR_CONFIG_SETTING_INTEREST_RATE :贷款利率:{STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :贷款利率;如果通货膨胀启用,将同时影响通货膨胀率 -STR_CONFIG_SETTING_RUNNING_COSTS :运营费用: {STRING} -STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :设置载具的营运与维护成本水平。 +STR_CONFIG_SETTING_RUNNING_COSTS :运营费用:{STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :设置载具的营运与维护成本水平 -STR_CONFIG_SETTING_CONSTRUCTION_SPEED :建设速度: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :AI建设频率的上限 +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :建设速度:{STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :AI 建设频率的上限 -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :车辆损坏: {STRING} -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :设置维修不足的载具的故障频率。 +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :车辆损坏:{STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :设置维修不足的载具的故障频率 -STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :财政补贴系数: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :财政补贴系数:{STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :设置获得财政补贴的线路的利润倍数 STR_CONFIG_SETTING_SUBSIDY_DURATION :财政补贴尺度:{STRING} @@ -1300,29 +1303,29 @@ STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :没有财政补贴 -STR_CONFIG_SETTING_CONSTRUCTION_COSTS :建设费用: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :设定建造的成本水平。 +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :建设费用:{STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :设定建造的成本水平 -STR_CONFIG_SETTING_RECESSIONS :经济衰退: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :启用时,经济衰退将每隔几经济周期发生一次。经济衰退时所有工业货物产量都将大幅下降,直至衰退结束为止。 +STR_CONFIG_SETTING_RECESSIONS :经济衰退:{STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :启用时,经济衰退将每隔几经济周期发生一次。经济衰退时所有工业货物产量都将大幅下降,直至衰退结束为止 -STR_CONFIG_SETTING_TRAIN_REVERSING :禁止列车在站台调头: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING :禁止列车在站台调头:{STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :启用后,如果列车有到下一站的捷径,列车将不在非终点站台调头, -STR_CONFIG_SETTING_DISASTERS :灾难: {STRING} -STR_CONFIG_SETTING_DISASTERS_HELPTEXT :灾难可能引起堵车或者车祸或者建筑损毁。 +STR_CONFIG_SETTING_DISASTERS :灾难:{STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :灾难可能引起堵车或者车祸或者建筑损毁 -STR_CONFIG_SETTING_CITY_APPROVAL :地方政府态度: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :设置相关参数以决定各公司造成的噪音及环境破坏时,各城镇对该公司的评价及未来城镇建设的影响。 +STR_CONFIG_SETTING_CITY_APPROVAL :地方政府态度:{STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :设置相关参数以决定各公司造成的噪音及环境破坏时,各城镇对该公司的评价及未来城镇建设的影响 STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :地图高度限制:{STRING} -STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :设置高原的最大高度。选择 "(自动)" 则在地形生成后自动选取合适的值 +STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :设置高原的最大高度。选择 "(自动)" 则在地形生成后自动选取合适的值 STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM} ###setting-zero-is-special -STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(自动) +STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(自动) STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}您不能把最高地面高度限制设为这个值,因为地图上至少有一座山的高度大于该值 -STR_CONFIG_SETTING_AUTOSLOPE :允许在基建设施底下改变地形: {STRING} +STR_CONFIG_SETTING_AUTOSLOPE :允许在基建设施底下改变地形:{STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :允许在建筑和轨道下方改变地形而不需要拆除他们 STR_CONFIG_SETTING_CATCHMENT :允许更真实的客源范围:{STRING} @@ -1338,55 +1341,55 @@ STR_CONFIG_SETTING_TRAIN_LENGTH :火车的最大 STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :设置火车的最大长度 STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} 格 -STR_CONFIG_SETTING_SMOKE_AMOUNT :载具废气数量: {STRING} -STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :设定载具可产生多少废气,即蒸汽/火花。 +STR_CONFIG_SETTING_SMOKE_AMOUNT :载具废气数量:{STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :设定载具可产生多少废气,即蒸汽/火花 -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :列车加速模型: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :列车加速模型:{STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :选择列车加速度模型,选“原版”时斜坡对所有列车影响相同,“真实”时影响因素包括斜坡长度、转弯半径、牵引力等 -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :汽车加速模型: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :汽车加速模型:{STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :选择汽车加速度模型,选“原版”时斜坡对所有汽车影响相同,选“真实”时依赖引擎性能,比如“牵引力” STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :列车斜坡坡度:{STRING} -STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :设置对列车而言,一格斜坡的坡度大小。数值越高,坡度越大,列车越难爬上斜坡。 +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :设置对列车而言,一格斜坡的坡度大小。数值越高,坡度越大,列车越难爬上斜坡 STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :汽车斜坡坡度: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :设置对汽车而言,一格斜坡的坡度大小。数值越高,坡度越大,汽车越难爬上斜坡。 +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :汽车斜坡坡度:{STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :设置对汽车而言,一格斜坡的坡度大小。数值越高,坡度越大,汽车越难爬上斜坡 STR_CONFIG_SETTING_FORBID_90_DEG :禁止列车直角转向:{STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :当水平方向轨道与垂直方向轨道交叉时,没有采用45度的轨道组合连接,而是采用轨道90度直接连接时,列车通过时需要90度转弯,当本设置”打开“时,将禁止火车90度转弯。 +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :常见的转角均为 45 度,而相邻的两个方块上互相垂直的两条轨道相接会形成一个 90 度弯,从而使列车在穿越两方块边界时进行 90 度转向。如启用此设定,所有列车均不会进行 90 度转向 STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :允许非毗邻站台合并:{STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :启用时允许玩家用 键操作以合并不相邻的站台与车站。 +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :启用时允许玩家用 键操作以合并不相邻的站台与车站 STR_CONFIG_SETTING_INFLATION :通货膨胀:{STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :“打开”通货膨胀时,支出比收入增长得稍快 -STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :桥梁的最大长度: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :桥梁的最大长度:{STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :建设桥梁时允许的最大长度 STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :最高桥梁高度:{STRING} STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :桥梁与地面之间的最大高度 -STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :隧道最大长度: {STRING} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :隧道最大长度:{STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :建设隧道时允许的最大长度 -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :原料工业建设方式: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :设定原料工业的建造方式。“禁止”表示不能建造;“勘探”表示可以建立但是只能在地图上一随机处,并可能会失败;“同其他工业”表示可以和随意建造。 +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :原料工业建设方式:{STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :设定原料工业的建造方式。“禁止”表示不能建造;“勘探”表示可以建立但是只能在地图上一随机处,并可能会失败;“同其他工业”表示可以和随意建造 ###length 3 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :不允许 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :同其他工业 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :探矿式 -STR_CONFIG_SETTING_INDUSTRY_PLATFORM :工厂周边空闲区域: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :工厂周边空闲区域:{STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :设置工厂周边预留区域数量,这些预留区域用来建设铁路及其它 STR_CONFIG_SETTING_MULTIPINDTOWN :允许在一个城镇中建设多个同类工业设施:{STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :通常,城市不希望有多个相同类型工业,本设置“打开”时允许多个同类型工厂在同一个城市 STR_CONFIG_SETTING_SIGNALSIDE :铁路信号位置:{STRING} -STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :选择在铁路的哪一侧放置信号。 +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :选择在铁路的哪一侧放置信号 ###length 3 STR_CONFIG_SETTING_SIGNALSIDE_LEFT :左侧 STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :道路通行方向 @@ -1398,13 +1401,13 @@ STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :在周期末显 ###length 2 STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :“打开”时,在年底显示财务报表窗口,方便查看公司财务状况 -STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :如果启用,财务窗口会在每期结束时弹出,以便于检查公司的财务状况。 +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :如果启用,财务窗口会在每期结束时弹出,以便于检查公司的财务状况 -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :新的调度命令默认为“不停车”: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :新的调度命令默认为“不停车”:{STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :通常,车辆在它经过的每一个车站都会停车。“打开”本选项时,车辆会不停车的通过所有中间车站前往最终目的地。注意:这只是为每一条新调度命令设置一个默认信息,仍然可以为每条调度命令设置明确的信息 STR_CONFIG_SETTING_STOP_LOCATION :新列车调度计划中默认命令为停靠在站台 {STRING} 位置 -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :设置车辆在站台的默认停靠位置,“近端”是靠近车辆进入的那一端,“中间”是站台中间位置,“远端”是远离车辆进入的那一端。注意:本设定只改变新指令的默认设定。玩家仍可通过点击指令文字改变列车在某车站的停车位置。 +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :设置车辆在站台的默认停靠位置,“近端”是靠近车辆进入的那一端,“中间”是站台中间位置,“远端”是远离车辆进入的那一端。注意:本设定只改变新指令的默认设定。玩家仍可通过点击指令文字改变列车在某车站的停车位置 ###length 3 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :近端 STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :中间 @@ -1421,58 +1424,58 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :每个视角 STR_CONFIG_SETTING_BRIBE :允许贿赂地方政府:{STRING} ###length 2 STR_CONFIG_SETTING_BRIBE_HELPTEXT :“打开”时,允许贿赂地方政府,如果被发现,在该城市将被限制经营活动六个月 -STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :允许公司尝试贿赂当地镇政府。如果贿赂被发现,公司在该城市将被限制经营活动 6 分钟。 +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :允许公司尝试贿赂当地镇政府。如果贿赂被发现,公司在该城市将被限制经营活动 6 分钟 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :允许买断经营权: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :允许买断经营权:{STRING} ###length 2 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :如果一家公司购买了一座城镇的独家经营权,其他公司在此城镇的车站在十二个月之内将不会收到任何货物与乘客。 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :如果一家公司购买了一座城镇的独家经营权,其他公司在此城镇的车站在 12 分钟之内将不会收到任何货物与乘客。 +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :如果一家公司购买了一座城镇的独家经营权,其他公司在此城镇的车站在十二个月之内将不会收到任何货物与乘客 +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :如果一家公司购买了一座城镇的独家经营权,其他公司在此城镇的车站在 12 分钟之内将不会收到任何货物与乘客 -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :允许资助城镇建设: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :允许资助城镇建设:{STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :“打开”时,允许公司提供资助新建房屋 -STR_CONFIG_SETTING_ALLOW_FUND_ROAD :允许资助道路重建: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :允许资助道路重建:{STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :“打开”时,允许公司资助地方修整道路 -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :允许向其他公司转移资金: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :允许向其他公司转移资金:{STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :“打开”时,允许联机游戏模式下公司之间转移资金 STR_CONFIG_SETTING_FREIGHT_TRAINS :货物重量倍数:{STRING} -STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :设置列车所载货物的重量倍数。设定的数值越高,货物对列车而言越重,并影响其加速、转弯及上坡的效率。 +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :设置列车所载货物的重量倍数。设定的数值越高,货物对列车而言越重,并影响其加速、转弯及上坡的效率 STR_CONFIG_SETTING_PLANE_SPEED :飞机速度因子:{STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :设置飞机与其它车辆类型的相对速率,使飞机运输收入减少 STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} -STR_CONFIG_SETTING_PLANE_CRASHES :空难: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :设置随机空难发生的概率。{}* 无论其值如何,大型飞机降落小机场时总有可能坠毁。 +STR_CONFIG_SETTING_PLANE_CRASHES :空难:{STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :设置随机空难发生的概率。{}* 无论其值如何,大型飞机降落小机场时总有可能坠毁 ###length 3 STR_CONFIG_SETTING_PLANE_CRASHES_NONE :不出现* STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :较少出现 STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :正常 -STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :允许在竞争对手所属的道路或铁路上建平交道口: {STRING} +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :允许在竞争对手所属的道路或铁路上建平交道口:{STRING} STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :“打开”时,允许在竞争对手所属的道路上建平交道口 -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :允许在城镇所属的道路上建通过式车站: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :允许在城镇所属的道路上建通过式车站:{STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :“打开”时允许在城市所属的道路上建设通过式车站 -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :允许在竞争对手所属的道路上建通过式车站: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :允许在竞争对手所属的道路上建通过式车站:{STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :“打开”时,允许在其它公司所属的道路上建设通过式车站 -STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}当有车辆时,不可能更改此设定。 +STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}当有车辆时,不可能更改此设定 -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :基础设施维护: {STRING} -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :启用时,基础设施会产生维护成本。公司所拥有的基础建设越多,维护成本也相应地越多。此设定更多影响较大的公司,而对较小的公司影响更小。 +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :基础设施维护:{STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :启用时,基础设施会产生维护成本。公司所拥有的基础建设越多,维护成本也相应地越多。此设定更多影响较大的公司,而对较小的公司影响更小 STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :公司初始主色调:{STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :选定公司的初始配色方案 -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :公司初始副色调: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :选择公司初始副色调,需要使用支持副色调的NewGRF。 +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :公司初始副色调:{STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :选择公司初始副色调,需要使用支持副色调的 NewGRF -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :总允许建设小型机场: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :总允许建设小型机场:{STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :“打开”此选项,每种类型机场出现后一直是可用的 -STR_CONFIG_SETTING_WARN_LOST_VEHICLE :当列车无法找到路线时提示: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :当列车无法找到路线时提示:{STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :“打开”时,当车辆无法找到路径时给出提示 STR_CONFIG_SETTING_ORDER_REVIEW :检查车辆的调度计划:{STRING} @@ -1482,37 +1485,40 @@ STR_CONFIG_SETTING_ORDER_REVIEW_OFF :不检查 STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :检查 不包括停运的车辆 STR_CONFIG_SETTING_ORDER_REVIEW_ON :检查 所有车辆 -STR_CONFIG_SETTING_WARN_INCOME_LESS :若线路亏损时发出提示: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS :若线路亏损时发出提示:{STRING} ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :“打开”,当一辆车在一年内总体亏损,发出提示 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :启用时,若某载具在一周期内总体亏损,发出提示 +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :载具老化时发出提示:{STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :启用时后将会在载具老化时发出提示 + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :载具永不过期:{STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :启用时,所有载具一经面世,就可以永远选择购买使用。 +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :启用时,所有载具一经面世,就可以永远选择购买使用 STR_CONFIG_SETTING_TIMEKEEPING_UNITS :时间模式:{STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :选择游戏的计时模式。 请注意此项无法在游戏进行时更改{}{}日历模式为经典的 OpenTTD 体验,在此模式中,一年由 12 个月组成,每个月有 28-31 天。{}{}在挂钟模式中,车辆移动、货物生产和财务计算等都以分钟为单位,一分钟约等于日历模式中的一个月,即 30 天。两种模式都包含一个用来记录载具、房屋与其他基础设施引入日期的计时器。 +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :选择游戏的计时模式。请注意此项无法在游戏进行时更改{}{}日历模式为经典的 OpenTTD 体验,在此模式中,一年由 12 个月组成,每个月有 28-31 天。{}{}在挂钟模式中,车辆移动、货物生产和财务计算等都以分钟为单位,一分钟约等于日历模式中的一个月,即 30 天。此模式下每 12 分钟即日历模式下的一年。{}{}两种模式都包含一个用来记录载具、房屋与其他基础设施引入日期的计时器 ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :日历 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :挂钟 STR_CONFIG_SETTING_MINUTES_PER_YEAR :一年分钟数:{STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :选择在使用挂钟模式时,一年的分钟数。默认为 12 分钟,设置为 0 可停止日历时间的变化。此设置不影响游戏的经济模拟。 +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :选择在挂钟模式下一年所对应的时间长度。默认为 12 分钟;设置为 0 则日期不会变化。增加一年的长度会使新载具、房屋和其他基础设施的发明时间被推迟;此选项不会影响载具速度或经济模拟,但会影响通货膨胀。此选项仅在使用挂钟模式时有效 STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0(日期停止) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :城镇货物产出倍数:{STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :按此比例扩大城镇的货物生产规模。 +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :按此比例扩大城镇的货物生产规模 STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :工业货物产出倍数:{STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :按此比例扩大工业的货物生产规模。 +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :按此比例扩大工业的货物生产规模 STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :当车辆报废时自动更新:{STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :“打开”时,车辆在临近它的报废期限时自动更新 -STR_CONFIG_SETTING_AUTORENEW_MONTHS :自动替换年龄到达使用期限{STRING}的载具。 +STR_CONFIG_SETTING_AUTORENEW_MONTHS :自动替换年龄到达使用期限{STRING}的载具 STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :设置车辆自动更新的时间 ###length 2 STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :前 {COMMA} 个月 @@ -1525,7 +1531,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :错误信息持 STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :红色窗口显示错误信息的持续时间,在这个时间内一些紧急的错误信息不会自动关闭,必须手动关闭 STR_CONFIG_SETTING_HOVER_DELAY :显示提示信息:{STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :此设置决定鼠标停留在图标、按键或功能时显示提示信息的时间。如果此设置被赋值为 0,您必须揿住鼠标右键来显示图标、按键或功能的提示信息。 +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :设定将鼠标悬停在某些按钮上时显示工具使用提示前的延迟时间。选项设置为 0 时则必须按鼠标右键以显示工具提示 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :停留 {COMMA} 毫秒 ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :右键点击 @@ -1533,15 +1539,15 @@ STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :右键点击 STR_CONFIG_SETTING_POPULATION_IN_LABEL :在城镇名称的标签中同时显示人口:{STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :在地图城镇名称标签上显示人口数量 -STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :图表曲线宽度: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :图表曲线宽度:{STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :图表中曲线的宽度,细线清晰易读,粗线容易分辨颜色 STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :在购买载具窗口中显示 NewGRF 的名字:{STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :在购买载具窗口中添加一行,显示选中载具的 NewGRF。 -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :在列表窗口中显示车辆可以携带的货物 {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :在购买载具窗口中添加一行,显示选中的载具来自哪个 NewGRF +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :在列表窗口中显示车辆可以运载的货物种类 {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :如果启用,车辆的可运输负载将出现在车辆列表的上方 -STR_CONFIG_SETTING_LANDSCAPE :景观: {STRING} +STR_CONFIG_SETTING_LANDSCAPE :景观:{STRING} STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :此设置决定基本的游戏场景、有什么货物可供运输,以及城镇发展的所需条件。然而,NewGRF 及游戏脚本可以比此设置更加细致地设置游戏场景 STR_CONFIG_SETTING_LAND_GENERATOR :地形算法:{STRING} @@ -1550,17 +1556,17 @@ STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :使用原始算 STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :原始算法 STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_TERRAIN_TYPE :地貌类型: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE :地貌类型:{STRING} STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :选择生成地图的起伏度 -STR_CONFIG_SETTING_INDUSTRY_DENSITY :工业布局: {STRING} -STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :设置地图生成过程中,工业数量及一、二级工业比例。 +STR_CONFIG_SETTING_INDUSTRY_DENSITY :工业布局:{STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :设置地图生成过程中,工业数量及一、二级工业比例 STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :石油工业距地图边缘的最大距离:{STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :限制炼油厂和油井到地图边缘或海岛海岸的最大距离。对于大于 256 格的地图,该值将按比例放大。 +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :限制炼油厂和油井到地图边缘或海岛海岸的最大距离。对于大于 256 格的地图,该值将按比例放大 STR_CONFIG_SETTING_SNOWLINE_HEIGHT :雪线高度:{STRING} -STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :控制在寒带气候中雪线高度。大雪会影响工业和城镇发展需求。只能在场景编辑器中更改或由“雪地比率”计算得到。 +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :控制在寒带气候中雪线高度。大雪会影响工业和城镇发展需求。只能在场景编辑器中更改或由“雪地比率”计算得到 STR_CONFIG_SETTING_SNOW_COVERAGE :雪地比率:{STRING} STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :控制寒带气候中大致的雪量。雪会影响工业和城镇发展需求。只在地图生成时使用。海岸线上的土地永远没有积雪 @@ -1571,17 +1577,17 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :控制热带气 STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :地面粗糙度:{STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :选择在地图上的山丘密度。光滑的地形会包含较少且相互之间较分散的山丘;粗糙的地形的山丘较密集,但可能会使地图显得重复 +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :选择在地图上的山丘密度和形态。光滑的地形会包含较少且较为广阔的山丘;粗糙的地形则会包含更多且更小的山丘 ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :非常光滑 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :光滑 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :粗糙 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :非常粗糙 -STR_CONFIG_SETTING_VARIETY :多样地形: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :此设置控制地图是否同时包含多山及平坦的地带。由于此设置只会使地图的一部份変得较平坦,请把其他相关设置(如 "地形特点")的值设为 "山地" +STR_CONFIG_SETTING_VARIETY :多样地形:{STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :此设置控制地图是否同时包含多山及平坦的地带。多样性越丰富,山地和平地之间的海拔差距就越大 -STR_CONFIG_SETTING_RIVER_AMOUNT :河流数量: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT :河流数量:{STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :选择生成河流的数量 STR_CONFIG_SETTING_TREE_PLACER :森林算法:{STRING} @@ -1591,7 +1597,7 @@ STR_CONFIG_SETTING_TREE_PLACER_NONE :没有 STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :原版 STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :改良 -STR_CONFIG_SETTING_ROAD_SIDE :道路车辆: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE :道路车辆:{STRING} STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :选择道路通行方向 ###length 2 @@ -1609,16 +1615,16 @@ STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :平面地图高 STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}一个或多个北边的地块不是闲置的 STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}一个或多个地图某边的地块不是水域 -STR_CONFIG_SETTING_STATION_SPREAD :最大车站范围: {STRING} -STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :设置车站的最大范围,即最大长宽。请注意较高数值会使游戏变慢。 +STR_CONFIG_SETTING_STATION_SPREAD :最大车站范围:{STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :设置车站的最大范围,即最大长宽。请注意较高数值会使游戏变慢 STR_CONFIG_SETTING_SERVICEATHELIPAD :直升机在降落平台自动保养:{STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :直升飞机在降落平台自动保养,即使机场没有机库 -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :将景观美化工具栏与铁路/公路/船只/机场工具栏连接:{STRING} -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :“打开”时,在打开交通建设工具栏时同时打开景观美化工具栏 +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :链接地形工具栏与铁路 / 公路 / 船只 / 机场工具栏:{STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :设定否在开启建设交通设施的工具栏时同时开启地形工具栏 -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :缩略地图颜色选择: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :缩略地图颜色选择:{STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :设置缩略地图的颜色 ###length 3 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :绿色 @@ -1626,7 +1632,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :深绿色 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :紫色 STR_CONFIG_SETTING_LINKGRAPH_COLOURS :客货流配色:{STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :设置客货流配色。 +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :设置客货流配色 ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :绿色到红色(原版) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :绿色到蓝色 @@ -1634,14 +1640,14 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :灰色到红色 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :灰度 STR_CONFIG_SETTING_SCROLLMODE :视点滚动方式:{STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :用鼠标拖动地图时的行为。“鼠标位置锁定”选项并不在任何平台上适用,如基于网页的版本、触屏、Linux 上的 Wayland等 +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :用鼠标拖动地图时的行为。“鼠标位置锁定”选项并不在任何平台上适用,如基于网页的版本、触屏、Linux 上的 Wayland 等 ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :鼠标右键移动视角,鼠标指针不跟随移动 STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :鼠标右键移动地图,鼠标指针不跟随移动 STR_CONFIG_SETTING_SCROLLMODE_RMB :鼠标右键移动地图 STR_CONFIG_SETTING_SCROLLMODE_LMB :鼠标左键移动地图 -STR_CONFIG_SETTING_SMOOTH_SCROLLING :平滑视角滚动: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING :平滑视角滚动:{STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :设置在缩略图上点击或者发出转到特定目标的命令时主视角的转换方式,如果“打开”本选项,视角平缓滚动,“关闭”时直接跳转到目标位置 STR_CONFIG_SETTING_MEASURE_TOOLTIP :建设时显示测量数据:{STRING} @@ -1667,46 +1673,46 @@ STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :缩放地图 STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :滚动地图 STR_CONFIG_SETTING_SCROLLWHEEL_OFF :关闭 -STR_CONFIG_SETTING_OSK_ACTIVATION :开启屏幕键盘: {STRING} -STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :当输入文本或编辑框里是否使用屏幕键盘。适用于没有物理键盘的设备。 +STR_CONFIG_SETTING_OSK_ACTIVATION :开启屏幕键盘:{STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :当输入文本或编辑框里是否使用屏幕键盘。适用于没有物理键盘的设备 ###length 4 STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :禁止 STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :双击 -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :单击(当前焦点) -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :单击 (立即) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :单击(当前焦点) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :单击(立即) STR_CONFIG_SETTING_USE_RELAY_SERVICE :使用中继服务:{STRING} -STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :连接服务器失败时,玩家可以使用中继服务来建立连接。“关闭”禁止中继服务,“询问”先进行询问,“打开”直接使用中继。 +STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :连接服务器失败时,玩家可以使用中继服务来建立连接。“关闭”禁止中继服务,“询问”先进行询问,“打开”直接使用中继 ###length 3 STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER :关闭 STR_CONFIG_SETTING_USE_RELAY_SERVICE_ASK :询问 STR_CONFIG_SETTING_USE_RELAY_SERVICE_ALLOW :打开 -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :右键模拟: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :右键模拟:{STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :选择模拟鼠标右键的方式 ###length 3 -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :按住Command键 点击 -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :按住Ctrl键 点击 +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :按住 Command 键点击 +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :按住 Ctrl 键点击 STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :关闭 -STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :右键关闭窗口: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :右键关闭窗口:{STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :使用在窗口内按右键关闭该窗口,本功能与右键工具提示不能共存! ###length 3 STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :否 STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :是 -STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :是(非粘滞) +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :是(除已固定的窗口外) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :使用 {STRING} 形式的文件名存档 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :游戏存档文件名中日期的格式 ###length 3 -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :长格式 (2008 年 12 月 31 日) -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :英式时间 (31-12-2008) -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :国际格式 (2008-12-31) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :长格式(2008 年 12 月 31 日) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :英式时间(31-12-2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :国际格式(2008-12-31) -STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :开始新游戏时自动暂停: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :开始新游戏时自动暂停:{STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :“打开”时,为了让玩家有时间研究地图,开启新游戏自动暂停游戏 -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :暂停时允许: {STRING} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :暂停时允许:{STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :选择游戏暂停时可以进行哪些操作 ###length 4 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :没有操作 @@ -1714,71 +1720,71 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :除建设操作 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :除景观操作所有操作 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :所有操作 -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :使用高级车辆列表: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :使用高级车辆列表:{STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :允许使用高级车辆列表,方便进行车辆分组操作 -STR_CONFIG_SETTING_LOADING_INDICATORS :使用装货进度指示: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS :使用装货进度指示:{STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :选择是否在车辆上方显示装卸货物进度 -STR_CONFIG_SETTING_TIMETABLE_MODE :时刻表使用的时间单位: {STRING} +STR_CONFIG_SETTING_TIMETABLE_MODE :时刻表使用的时间单位:{STRING} STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :选择载具时刻表所使用的时间单位 ###length 3 STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :日 STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :秒 STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :刻 -STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :在时刻表中显示到达时间和出发时间: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :在时刻表中显示到达时间和出发时间:{STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :在时刻表中显示预期的到达和出发时间 STR_CONFIG_SETTING_QUICKGOTO :快速创建车辆调度计划:{STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :启用时,打开调度计划窗口时预先选定“前往”命令 -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :默认铁路类型 (新建/读取游戏后): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :默认铁路类型(新建/读取游戏后):{STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :设置开启或者载入游戏时的默认铁路类型,“最先可用的类型”是最老的铁路类型,“最新可用的类型”的是最新的铁路类型,“最常用的类型”是当前用的最多的铁路类型 ###length 3 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :最先可用的类型 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :最新可用的类型 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :最常用的类型 -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :显示预留的轨道: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :显示预留的轨道:{STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :让预留的铁路轨道显示不同的颜色,以帮助查找列车拒绝进入路径轨道的原因 -STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :建造工具使用后仍选中: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :建造工具使用后仍选中:{STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :“打开”时在桥梁、隧道等建造工具使用后保持选中,方便继续使用 STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :建造铁路时自动移除信号灯:{STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :建造铁路时自动移除路过的信号灯。注意,这可能导致火车事故。 +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :建造铁路时自动移除路过的信号灯。注意,这可能导致火车事故 STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :快进速度上限:{STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :限制快进时的最大速度。0 = 无限制(在您计算机允许的范围内)。低于 100% 的值将使游戏变慢。上限取决于您计算机的配置,并随着游戏情况浮动。 +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :限制快进时的最大速度。0 = 无限制(即电脑性能允许的最快速度)。低于 100% 的值将使游戏变慢。游戏速度上限取决于计算机的配置,并可能随游戏当前状态浮动 STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% 正常游戏速度 ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :无限制(在您计算机允许的范围内) -STR_CONFIG_SETTING_SOUND_TICKER :产业新闻: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER :产业新闻:{STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :每月初产业新闻音效 -STR_CONFIG_SETTING_SOUND_NEWS :报纸: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS :报纸:{STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :显示报纸时的音效 ###length 2 -STR_CONFIG_SETTING_SOUND_NEW_YEAR :年终: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR :年终:{STRING} STR_CONFIG_SETTING_SOUND_NEW_PERIOD :周期结束:{STRING} ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :在年末弹出报表时,播放相应音效 STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :在经济周期末弹出报表时,播放相应音效 -STR_CONFIG_SETTING_SOUND_CONFIRM :建设: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM :建设:{STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :播放成功建设或执行其它动作时的音效 -STR_CONFIG_SETTING_SOUND_CLICK :点击按钮: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK :点击按钮:{STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :按一下按钮时发出蜂鸣声 -STR_CONFIG_SETTING_SOUND_DISASTER :灾难/事故: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER :灾难/事故:{STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :播放灾难和事故音效 -STR_CONFIG_SETTING_SOUND_VEHICLE :载具: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE :载具:{STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :播放载具音效 STR_CONFIG_SETTING_SOUND_AMBIENT :音效:{STRING} @@ -1808,17 +1814,17 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :“打开”本 STR_CONFIG_SETTING_AI_BUILDS_SHIPS :禁止电脑使用船只:{STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :“打开”本选项将禁止电脑使用船只 -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :联机游戏时允许电脑玩家(AI): {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :联机游戏时允许电脑玩家 (AI):{STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :“打开”时联机游戏允许电脑玩家 STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :不令脚本停运的最大代码数量:{STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :设定在每个计算循环中,脚本(AI与游戏脚本)的每一句代码最多可进行多少个计算步骤。 -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :每个脚本的内存上限: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :单个脚本(AI与游戏脚本)可使用的最大内存量,在游玩大型地图时可能需要增加。 +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :设定在每个计算循环中,脚本(AI 与游戏脚本)的每一句代码最多可进行多少个计算步骤 +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :每个脚本的内存上限:{STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :单个脚本(AI 与游戏脚本)可使用的最大内存量,在游玩大型地图时可能需要增加 STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB -STR_CONFIG_SETTING_SERVINT_ISPERCENT :维护间隔以百分比(%)计算: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :“打开”时,当车辆的可靠性降到他们最大可靠性的一定百分比时,他们会去保养。{}{}例如,如果一辆车的最大可靠性是90%,而保养间隔是20%,车辆会在可靠性为72%时去保养。 +STR_CONFIG_SETTING_SERVINT_ISPERCENT :维护间隔以百分比 (%) 计算:{STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :“打开”时,当车辆的可靠性降到他们最大可靠性的一定百分比时,他们会去保养。{}{}例如,如果一辆车的最大可靠性是 90%,而保养间隔是 20%,车辆会在可靠性为 72% 时去保养 STR_CONFIG_SETTING_SERVINT_TRAINS :火车默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :如果没有为火车直接指定保养周期,设定默认火车保养周期 @@ -1828,7 +1834,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :飞机默认保 STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :如果没有为飞机指定保养周期,设定飞机的默认保养周期 STR_CONFIG_SETTING_SERVINT_SHIPS :船只默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :如果没有为船只设定保养周期,按照这里设定的默认保养周期执行 -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}日 / 分钟 / % +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}日 +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}分 +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :关闭 @@ -1836,61 +1846,61 @@ STR_CONFIG_SETTING_NOSERVICE :在无故障模 STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :“打开”时,在无故障模式下,车辆禁用保养周期 STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :站台长度装卸惩罚:{STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :启用站台长度装卸惩罚。过长的火车将会在站台中装卸得更慢。此项设置不会影响寻路。 +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :启用站台长度装卸惩罚。过长的火车将会在站台中装卸得更慢。此项设置不会影响寻路 STR_CONFIG_SETTING_WAGONSPEEDLIMITS :列车车厢速度限制:{STRING} -STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :启用时,列车的最高速度将取决于车厢的速度上限。 +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :启用时,列车的最高速度将取决于车厢的速度上限 -STR_CONFIG_SETTING_DISABLE_ELRAILS :禁用电气化铁路:{STRING} -STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :“打开”本选项时禁止电气化铁路的使用 +STR_CONFIG_SETTING_DISABLE_ELRAILS :停用电气化铁路:{STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :启用时允许电力机车在普通轨道上运行而无需铺设电气化轨道 -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :玩家车站的剪彩仪式: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :当玩家设立的车站首次有载具停靠时显示讯息。 +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :玩家车站的剪彩仪式:{STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :当玩家设立的车站首次有载具停靠时显示讯息 -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :对手车站的剪彩仪式: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :当对手设立的车站首次有载具停靠时显示讯息。 +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :对手车站的剪彩仪式:{STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :当对手设立的车站首次有载具停靠时显示讯息 -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :事故/灾难: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :事故/灾难:{STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :报纸报道事故或灾难发生情况 STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER :竞争对手的载具事故:{STRING} STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER_HELPTEXT :显示竞争对手的载具事故消息 -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :公司信息: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :公司信息:{STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :报纸报道新公司开业或者预警倒闭风险 -STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :工业开业: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :工业开业:{STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :报纸报道产业投产 -STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :工业倒闭: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :工业倒闭:{STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :报纸报道产业倒闭 -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :经济变化: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :经济变化:{STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :报纸报道全球经济变化情况 -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :自家公司服务的工业产量变化信息: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :自家公司服务的工业产量变化信息:{STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :报纸报道玩家产业的产量变化情况 -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :对手公司服务的工业产量变化信息: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :对手公司服务的工业产量变化信息:{STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :报纸报道竞争对手的产业产量变化情况 -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :其它工业产量变化信息: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :其它工业产量变化信息:{STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :报纸报道非玩家或竞争对手的工业产量变化 -STR_CONFIG_SETTING_NEWS_ADVICE :对于企业车辆的建议及信息: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE :对于企业车辆的建议及信息:{STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :显示载具需要关注的消息 -STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :载具上市: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :载具上市:{STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :显示新载具上市的消息 -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :货物接受情况变更: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :货物接受情况变更:{STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :显示站台接受货物种类变更的消息 -STR_CONFIG_SETTING_NEWS_SUBSIDIES :财政补贴: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES :财政补贴:{STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :显示关于财政补贴的报纸报道 -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :综合信息: {STRING} -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :显示普通事件新闻,例如购买运输专营权或市场道路整修。 +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :综合信息:{STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :显示普通事件新闻,例如购买运输专营权或市场道路整修 ###length 3 STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :关闭 STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :摘要 @@ -1901,60 +1911,60 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :从这一年开 STR_CONFIG_SETTING_STARTING_YEAR :开始年份:{STRING} STR_CONFIG_SETTING_ENDING_YEAR :结束计分年份:{STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :游戏结束计分的年份。在这一年的年底,公司的分数将被记录,并展示高分榜;在此之后玩家仍可继续游戏。{}如果该年份早于游戏开始年份,则高分榜将不会展示。 +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :游戏结束计分的年份。在这一年的年底,公司的分数将被记录,并展示高分榜;在此之后玩家仍可继续游戏。{}如果该年份早于游戏开始年份,则高分榜将不会展示 STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :从不 STR_CONFIG_SETTING_ECONOMY_TYPE :经济类型:{STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :平滑经济产生更小幅度更频繁的产量变动。冻结经济停止产量变动和工业倒闭。该设置可能对 NewGRF 提供的工业不起作用。 +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :平滑经济产生更小幅度更频繁的产量变动。冻结经济停止产量变动和工业倒闭。该设置可能对 NewGRF 提供的工业不起作用 ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :原版 STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :平滑 STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :冻结 -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :转运系统中支付的利润百分比 {STRING} -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :设定在转运系统中支付给前一环节的收入百分比, 从而对收入有更多的控制权 +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :联运账面收入百分比:{STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :设定在多程联运时,载具换班时前一程载具所占总收入的百分比。此选项允许更有效地控制收入 STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :当拖动时,放置信号灯每隔:{STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :设置以拖动的方式建设时,自动放置信号灯时的间距,将以该间距放置信号灯,直到碰到障碍(信号灯,分支) STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA}格 STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :拖动方式建设时,保持固定的间距放置信号灯:{STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :选择以Ctrl+拖动方法建设信号灯时是否保持固定的间距,如果“关闭”,不考虑隧道和桥梁长度(在隧道和桥梁进出口第一个各放置一个),避免很长一段没有信号灯,如果“打开”,每隔设定的距离(桥梁和隧道长度也计算在内)就放置一个信号灯。 +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :选择以 Ctrl+ 拖动方法建设信号灯时是否保持固定的间距,如果“关闭”,不考虑隧道和桥梁长度(在隧道和桥梁进出口第一个各放置一个),避免很长一段没有信号灯,如果“打开”,每隔设定的距离(桥梁和隧道长度也计算在内)就放置一个信号灯 STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :在 {STRING} 年前自动设置悬臂信号 STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :设置电子信号灯出现的时间,在此之前,使用悬臂信号灯(功能相同,外观不同) -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :在以下信号类型中循环: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :选择用Ctrl+点击的方式切换信号灯类型时的备选类型 +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :在以下信号类型中循环:{STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :选择按 键操作以切换信号灯类型时使用的信号备选类型 ###length 2 STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :仅当前信号组 STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :全部可见 -STR_CONFIG_SETTING_SIGNAL_GUI_MODE :显示信号类型: {STRING} +STR_CONFIG_SETTING_SIGNAL_GUI_MODE :显示信号类型:{STRING} STR_CONFIG_SETTING_SIGNAL_GUI_MODE_HELPTEXT :选择在信号工具栏里显示哪些信号灯类型 ###length 2 STR_CONFIG_SETTING_SIGNAL_GUI_MODE_PATH :仅路径信号灯 STR_CONFIG_SETTING_SIGNAL_GUI_MODE_ALL_CYCLE_PATH :所有信号 -STR_CONFIG_SETTING_TOWN_LAYOUT :新建城镇道路布局: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT :新建城镇道路布局:{STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :选择城市道路网络的建设方式 ###length 5 STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :默认 STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :改良道路 -STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2格 -STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3格 +STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 格 +STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 格 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :随机 -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :允许城镇建设道路: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :允许城镇建设道路:{STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :“打开”时允许成长时建设道路,“关闭”时禁止城镇自行建设道路 -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :允许城镇建设平交道: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :允许城镇建设平交道:{STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :“打开”时允许城镇建设平交道口 -STR_CONFIG_SETTING_NOISE_LEVEL :允许城镇限制机场噪音: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL :允许城镇限制机场噪音:{STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :允许城镇基于城镇人口、机场大小和距离控制机场噪音。“关闭”时,每个城市只允许建设两座机场,除非地方政府态度被设为“放任” -STR_CONFIG_SETTING_TOWN_FOUNDING :在游戏中建立城镇: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING :在游戏中建立城镇:{STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :“打开”本选项时,允许玩家在游戏中创建新城镇 ###length 3 STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :禁止 @@ -1962,37 +1972,37 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :允许 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :允许,自定义城镇布局 STR_CONFIG_SETTING_TOWN_CARGOGENMODE :城镇货物生成:{STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :城镇客货产出与人口的关系。{}平方增长:两倍大小的城镇生产四倍的旅客。{}线性增长:两倍大小的城镇生产两倍的旅客。 +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :城镇建筑的客货产出与人口的关系。{}平方增长:两倍大小的城镇生产四倍的旅客。{}线性增长:两倍大小的城镇生产两倍的旅客 ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :四倍(原版) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :线性 -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :树木自动生长: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :控制游戏内树木的生长。此选项可能会影响一些依赖树木的工业,例如伐木场。 +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :树木自动生长:{STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :控制游戏内树木的生长。此选项可能会影响一些依赖树木的工业,例如伐木场 ###length 4 -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :生长但不扩散 {RED}(损坏伐木场) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :生长但不扩散 {RED}(损坏伐木场) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :仅在雨林扩散 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :生长并四处扩散 -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :不生长,不扩散 {RED}(损坏伐木场) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :不生长,不扩散 {RED}(损坏伐木场) STR_CONFIG_SETTING_TOOLBAR_POS :主工具栏位置:{STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :主工具栏在屏幕上方的位置 -STR_CONFIG_SETTING_STATUSBAR_POS :状态栏位置: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS :状态栏位置:{STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :状态栏在屏幕下方的位置 STR_CONFIG_SETTING_SNAP_RADIUS :窗口吸附范围:{STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :移动一个窗口靠近临近的窗口触发自动吸附的距离 STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} 像素 ###setting-zero-is-special STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :关闭 -STR_CONFIG_SETTING_SOFT_LIMIT :窗口数量上限: {STRING} -STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :设定窗口数量上限。超出此限值时游戏会自动关闭最早打开的窗口。已固定的窗口不受此项限制。 +STR_CONFIG_SETTING_SOFT_LIMIT :窗口数量上限:{STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :设定窗口数量上限。超出此限值时游戏会自动关闭最早打开的窗口。已固定的窗口不受此项限制 STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} ###setting-zero-is-special STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :关闭 -STR_CONFIG_SETTING_ZOOM_MIN :最大视角放大倍数: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN :最大视角放大倍数:{STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :画面的最大放大倍数,注意:提高放大倍数增加内存需求 -STR_CONFIG_SETTING_ZOOM_MAX :最大视角缩小倍数: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX :最大视角缩小倍数:{STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :画面的最大缩小倍数,过大的缩放级别在使用时会引起延迟 ###length 6 STR_CONFIG_SETTING_ZOOM_LVL_MIN :4 倍 @@ -2003,7 +2013,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4 倍 STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8 倍 STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :贴图的最高分辨率:{STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :限制贴图的最高分辨率。限制贴图分辨率将避免使用高分辨率贴图,即使它们可用。有助于在混用有/无高分辨率图形的 GRF 文件时保持游戏外观的统一。 +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :限制贴图的最高分辨率。限制贴图分辨率将避免使用高分辨率贴图,即使它们可用。有助于在混用有/无高分辨率图形的 GRF 文件时保持游戏外观的统一 ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4 倍 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2 倍 @@ -2018,8 +2028,8 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :正常 STR_CONFIG_SETTING_TOWN_GROWTH_FAST :快 STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :非常快 -STR_CONFIG_SETTING_LARGER_TOWNS :都市比例: {STRING} -STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :设定生成城镇时,城镇中都市的比例。都市的起始人口和增长速度均较一般城镇而言高。 +STR_CONFIG_SETTING_LARGER_TOWNS :都市比例:{STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :设定生成城镇时,城镇中都市的比例。都市的起始人口和增长速度均较一般城镇而言高 STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 / {COMMA} ###setting-zero-is-special STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :没有 @@ -2027,33 +2037,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :初始都市规 STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :游戏开局时,城市的平均规模相对于普通城镇的比值 STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :每 {STRING} 更新货物分配 -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :两次连结图的重新计算间隔。每次重新计算会计算图中一个部分的计划。这意味着填入的值X不意味着整张图会每X秒更新一次,只有其中的一部分会被更新。此设定赋值越小,则更多的CPU时间会被用来重新计算。此设定赋值越大,则在线路改变时货物再分配所需时间会变长。 +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :两次连结图的重新计算间隔。每次重新计算会计算图中一个部分的计划。这意味着填入的值 X 不意味着整张图会每 X 秒更新一次,只有其中的一部分会被更新。此设定赋值越小,则更多的 CPU 时间会被用来重新计算。此设定赋值越大,则在线路改变时货物再分配所需时间会变长 STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :在货物分配的重新计算上花费 {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :每一个连结图的重新计算时间。当一次重新计算开始,一个线程会被允许运行这个秒数。此设定赋值越小,则线程无法按时结束的可能性越大,从而导致游戏运行延迟。此设定赋值越大,则在线路改变时货物再分配所需时间会变长。 +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :每一个连结图的重新计算时间。当一次重新计算开始,一个线程会被允许运行这个秒数。此设定赋值越小,则线程无法按时结束的可能性越大,从而导致游戏运行延迟。此设定赋值越大,则在线路改变时货物再分配所需时间会变长 STR_CONFIG_SETTING_DISTRIBUTION_PAX :乘客分配方式:{STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的乗客数量与乙站往甲站的乘客数量大致相同。“不对称”指任何一站往另一站的乘客数量皆由系统随意决定。“手动”指系统不会自动分配乘客的目的地。 +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的乗客数量与乙站往甲站的乘客数量大致相同。“不对称”指任何一站往另一站的乘客数量皆由系统随意决定。“手动”指系统不会自动分配乘客的目的地 STR_CONFIG_SETTING_DISTRIBUTION_MAIL :邮件分配方式:{STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的邮件数量与乙站往甲站的邮件数量大致相同。“不对称”指任何一站往另一站的邮件数量皆由系统随意决定。“手动”指系统不会自动分配邮件的目的地。 +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的邮件数量与乙站往甲站的邮件数量大致相同。“不对称”指任何一站往另一站的邮件数量皆由系统随意决定。“手动”指系统不会自动分配邮件的目的地 STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :装甲货物分配方式:{STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :“装甲货物”包括温带场景的“贵重品”、寒带场景的“金块”及沙漠场景的“钻石”。使用 NewGRF 可能会改变以上设置。{} 假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的货物数量与乙站往甲站的装甲货物数量大致相同。“不对称”指任何一站往另一站的装甲货物数量皆由系统随意决定。“手动”指系统不会自动分配装甲货物的目的地。{} 建议在温带及沙漠场景使用“对称”,因为银行之间会相互发送贵重品或钻石;在寒带则应使用“不对称”,因为银行不会把金块送回金矿。 +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :“装甲货物”包括温带场景的“贵重品”、寒带场景的“金块”及沙漠场景的“钻石”。使用 NewGRF 可能会改变以上设置。{} 假设有交通路线连接甲、乙两站。“对称”指甲站往乙站的货物数量与乙站往甲站的装甲货物数量大致相同。“不对称”指任何一站往另一站的装甲货物数量皆由系统随意决定。“手动”指系统不会自动分配装甲货物的目的地。{} 建议在温带及沙漠场景使用“对称”,因为银行之间会相互发送贵重品或钻石;在寒带则应使用“不对称”,因为银行不会把金块送回金矿 STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :其他货物分配方式:{STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :如为此设置赋值“不对称”,则任何一站往另一站的货物数量皆由系统随意决定。如为此设置赋值“手动”,则系统不会依据交通路线分配货物的目的地。 +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :如为此设置赋值“不对称”,则任何一站往另一站的货物数量皆由系统随意决定。如为此设置赋值“手动”,则系统不会依据交通路线分配货物的目的地 ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :手动 STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :不对称 STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :对称 STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :分配精确度:{STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :此设定赋值越大,則运算连结图所需的处理器时间越长,您可能会因此见到游戏运行延迟。如果此设定赋值越小,则货物分配的准确度越低,而您可能会发现部份货物沒有被送往您预期它们会到达的目的地。 +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :此设定赋值越大,則运算连结图所需的处理器时间越长,您可能会因此见到游戏运行延迟。如果此设定赋值越小,则货物分配的准确度越低,而您可能会发现部份货物沒有被送往您预期它们会到达的目的地 STR_CONFIG_SETTING_DEMAND_DISTANCE :距离对需求的影晌:{STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :如果此设定赋值大于0,则始发站与可能的目的站间的距离会影响该路线获分派货物的数量。某目的站距离始发站越远,获分派的货物越少。此设定的赋值越大,越多货物会被派往较近的站。 -STR_CONFIG_SETTING_DEMAND_SIZE :在对称模式下产生的返程货物比例: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :如果把此设定赋一个少于100%的值,则到达某站的货物不会全部被送回始发站。{}如果此设定被赋值为0%,則“对称”模式的表现跟“不对称”模式完全一样 +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :如果此设定赋值大于 0,则始发站与可能的目的站间的距离会影响该路线获分派货物的数量。某目的站距离始发站越远,获分派的货物越少。此设定的赋值越大,越多货物会被派往较近的站 +STR_CONFIG_SETTING_DEMAND_SIZE :在对称模式下产生的返程货物比例:{STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :如果把此设定赋一个少于 100% 的值,则到达某站的货物不会全部被送回始发站。{}如果此设定被赋值为 0%,則“对称”模式的表现跟“不对称”模式完全一样 STR_CONFIG_SETTING_SHORT_PATH_SATURATION :如果最短路径的饱和度超过{STRING},把货物改派往容量较大的路径 -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :货物分配功能在派送货物时,会优先使用最短路径,当它饱和后改用第二短的路径,如此类推。当所有路径皆饱和但仍未满足需求,系统會由容量较大的路径开始继续加载货物。{}由于路径饱和度难以准确估算,此设定容许您定义一值,使短路径达到该饱和度后,系统便开始加载容量较大的路径。{}如果此设定的值少於100%,就算系统高估路径容量,也不會使过多的货物滞留在站台上。 +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :在两个给定的站点之间常常会会有多条不同的路径。货物分配算法会优先使用最短的路径,在其饱和后再使用第二短的路径,依此类推。路径的饱和度是用运载容量和计划使用量估算的。在所有路径都饱和的时候,算法会向所有路径超额装载货物,优先使用容量较高的路径。但是在多数场合算法无法准确计算容量。此设定允许您设定在较短的路径的饱和度达到设定值之后再装载下一条路径。将此值设定为小于 100%,就可避免因过量估算容量而导致的站点超载 STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :速度单位(陆地):{STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :速度单位(航海):{STRING} @@ -2128,44 +2138,35 @@ STR_CONFIG_SETTING_AI :竞争 STR_CONFIG_SETTING_AI_NPC :电脑玩家 STR_CONFIG_SETTING_NETWORK :网络 -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :火车寻路: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :列车寻路方式 -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :汽车寻路: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :汽车寻路方式 -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :船只寻路: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :船只寻路方式 STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :遇到红灯时自动掉头 {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :当列车在信号灯前长时间等待时,允许掉头 -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(推荐) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}改变设置值 # Config errors -STR_CONFIG_ERROR :{WHITE}配置文件错误... -STR_CONFIG_ERROR_ARRAY :{WHITE}... 函数错误 '{STRING}' -STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}...对 '{STRING}'设置了错误值'{STRING}' -STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... 有多余字符在设定的结尾处'{STRING}' -STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... 忽略 NewGRF '{STRING}': 重复的 GRF ID '{STRING}' -STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... 忽略了无效的 NewGRF '{STRING}': {STRING} +STR_CONFIG_ERROR :{WHITE}配置文件错误…… +STR_CONFIG_ERROR_ARRAY :{WHITE}……函数错误“{STRING}” +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}……对“{STRING}”设置了错误值“{STRING}” +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}……有多余字符在设定的结尾处“{STRING}” +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}……忽略 NewGRF“{STRING}”:重复的 GRF ID“{STRING}” +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}……忽略了无效的 NewGRF“{STRING}”:{STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :未找到 STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :静态使用时不安全 -STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :系统NewGRF +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :系统 NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :与当前版本 OpenTTD 不兼容 STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :未知 -STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... 压缩等级 '{STRING}' 无效 -STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}...存档格式 '{STRING}' 不适用. 请转换成 '{STRING}' -STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... 禁用基础图形设置 '{STRING}': 未找到 -STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... 禁用基础意义设置 '{STRING}': 未找到 -STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... 禁用基础音乐设置 '{STRING}': 未找到 -STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}内存溢出 +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}……压缩等级“{STRING}”无效 +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}……存档格式“{STRING}”不适用。请转换成“{STRING}” +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}……禁用基础图形设置“{STRING}”:未找到 +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}……禁用基础音效设置“{STRING}”:未找到 +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}……禁用基础音乐设置“{STRING}”:未找到 +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}内存不足 STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}无法分配 {BYTES} 的 Sprite 缓存。Sprite 缓存的大小已降至 {BYTES}。OpenTTD 的性能将受到影响。请尝试停用 32bpp 图形及/或减少放大倍数,以降低内存需求 # Video initalization errors -STR_VIDEO_DRIVER_ERROR :{WHITE}图形设置错误… -STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}… 找不到合适的 GPU。硬件加速已禁用 -STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... GPU使游戏崩溃了。硬件加速已禁用 +STR_VIDEO_DRIVER_ERROR :{WHITE}图形设置错误…… +STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}……找不到合适的 GPU。硬件加速已禁用 +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}……GPU 使游戏崩溃了。硬件加速已禁用 # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2187,7 +2188,7 @@ STR_INTRO_AI_SETTINGS :{BLACK}AI 设 STR_INTRO_GAMESCRIPT_SETTINGS :{BLACK}游戏脚本设置 STR_INTRO_QUIT :{BLACK}退出 -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}开始新游戏. 单击的同时按住Ctrl以跳过地图设置界面 +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}开始新游戏。单击的同时按住 Ctrl 以跳过地图设置界面 STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}读取游戏存档 STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}以高度图决定的地形开始一个新游戏 STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}使用自定义场景开始游戏 @@ -2197,7 +2198,7 @@ STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}开始 STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}选择“温带”景观风格 STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}选择“寒带”景观风格 STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}选择“沙漠”景观风格 -STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}选择 “玩具”景观风格 +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}选择“玩具”景观风格 STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}显示游戏选项 STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}显示高分榜 @@ -2207,10 +2208,10 @@ STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}显示 N STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}连接服务器并查找扩展包 STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}显示 AI 设置 STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}显示游戏脚本设置 -STR_INTRO_TOOLTIP_QUIT :{BLACK}退出 'OpenTTD' +STR_INTRO_TOOLTIP_QUIT :{BLACK}退出 OpenTTD STR_INTRO_BASESET :{BLACK}当前选定的基础图形组缺少 {NUM} 个贴图。请检查基础图形组有无更新。 -STR_INTRO_TRANSLATION :{BLACK}简体中文翻译缺失了 {NUM} 条翻译。 请注册成为翻译人员以帮助开发 OpenTTD。{}详见 readme.txt。 +STR_INTRO_TRANSLATION :{BLACK}简体中文翻译缺失了 {NUM} 条翻译。请注册成为翻译人员以帮助开发 OpenTTD。{}详见 readme.txt。 # Quit window STR_QUIT_CAPTION :{WHITE}退出 @@ -2238,17 +2239,17 @@ STR_HELP_WINDOW_COMMUNITY :{BLACK}社区 # Cheat window STR_CHEATS :{WHITE}沙盒选项 -STR_CHEAT_MONEY :{LTBLUE}增加 {CURRENCY_LONG} 现金 -STR_CHEAT_CHANGE_COMPANY :{LTBLUE}作为{ORANGE}{COMMA}进行游戏 -STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}神奇推土机 (清除工业设施和其他不可移除物): {ORANGE}{STRING} +STR_CHEAT_MONEY :{LTBLUE}增加现金 {CURRENCY_LONG} +STR_CHEAT_CHANGE_COMPANY :{LTBLUE}作为{ORANGE}公司 {COMMA} {LTBLUE}进行游戏 +STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}神奇推土机(清除工业设施和其他不可移除物):{ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}隧道可以相交:{ORANGE}{STRING} -STR_CHEAT_NO_JETCRASH :{LTBLUE}喷气式飞机不会(经常)在小机场坠毁:{ORANGE}{STRING} +STR_CHEAT_NO_JETCRASH :{LTBLUE}喷气式飞机不会(经常)在小机场坠毁:{ORANGE}{STRING} STR_CHEAT_EDIT_MAX_HL :{LTBLUE}修改最高地面高度:{ORANGE}{NUM} STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}修改地图上山丘的最高高度 STR_CHEAT_CHANGE_DATE :{LTBLUE}改变日期:{ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}改变当前年份 STR_CHEAT_SETUP_PROD :{LTBLUE}开启可调整产量模式:{ORANGE}{STRING} -STR_CHEAT_STATION_RATING :{LTBLUE}车站评价固定为100%:{ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}车站评价固定为 100%:{ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} 的色彩方案 @@ -2262,9 +2263,9 @@ STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}显示 STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}显示汽车分组配色 STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}显示船只分组配色 STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}显示飞机分组配色 -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}选择配色方案的主色调。按住 操作以对所有方案应用选定的颜色。 -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}选择配色方案的副色调。按住 操作以对所有方案应用选定的颜色。 -STR_LIVERY_PANEL_TOOLTIP :{BLACK}选择一个或多个(CTRL+单击){}要更改的配色方案{}点击方块可以切换不同的方案 +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}选择配色方案的主色调。按住 操作以对所有方案应用选定的颜色 +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}选择配色方案的副色调。按住 操作以对所有方案应用选定的颜色 +STR_LIVERY_PANEL_TOOLTIP :{BLACK}选择一个或多个(CTRL+ 单击){}要更改的配色方案{}点击方块可以切换不同的方案 STR_LIVERY_TRAIN_GROUP_EMPTY :尚未为列车分组 STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :尚未为汽车分组 STR_LIVERY_SHIP_GROUP_EMPTY :尚未为船只分组 @@ -2318,7 +2319,7 @@ STR_FACE_FACECODE :{BLACK}头像 STR_FACE_FACECODE_TOOLTIP :{BLACK}查看或设置头像编号 STR_FACE_FACECODE_CAPTION :{WHITE}头像编号 STR_FACE_FACECODE_SET :{WHITE}新编号已经启用 -STR_FACE_FACECODE_ERR :{WHITE}编号必须在 0 ~ 4,294,967,295 范围内! +STR_FACE_FACECODE_ERR :{WHITE}编号必须在 0 ~ 4,294,967,295 范围内! STR_FACE_SAVE :{BLACK}储存头像 STR_FACE_SAVE_TOOLTIP :{BLACK}储存喜好的头像 STR_FACE_SAVE_DONE :{WHITE}该头像将作为你的喜好储存至 OpenTTD 配置文件中 @@ -2328,7 +2329,7 @@ STR_FACE_AFRICAN :{BLACK}非洲 STR_FACE_SELECT_AFRICAN :{BLACK}使用非洲人面孔 STR_FACE_YES :是 STR_FACE_NO :否 -STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}是否有 胡子或耳环 +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}是否有胡子或耳环 STR_FACE_HAIR :发型 STR_FACE_HAIR_TOOLTIP :{BLACK}选择发型 STR_FACE_EYEBROWS :眉毛 @@ -2376,19 +2377,19 @@ STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}日期 STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}当前日期 STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}{NBSP}时{NBSP}{NUM}{NBSP}分 STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :游戏时间 -STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}有戏已进行的时间,不计暂停的时间。 +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}有戏已进行的时间,不计暂停的时间 STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}语言,服务器版本和其他信息 STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}点击列表中的服务器可以选定它 -STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}上一次加入的服务器: +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}上一次加入的服务器: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}点击选择您上次加入的服务器 STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}游戏信息 -STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}客户端: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}客户端:{WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}场景类型:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}地图尺寸:{WHITE}{COMMA}×{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}游戏版本:{WHITE}{STRING} -STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}该服IP: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}该服 IP:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}邀请代码:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}开始日期:{WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}当前日期:{WHITE}{DATE_SHORT} @@ -2411,7 +2412,7 @@ STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}搜索 STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}搜索局域网 STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}搜索局域网内的服务器 STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}添加服务器 -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}添加一个永远显示在列表中的服务器。可使用服务器地址或邀请码。 +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}添加一个永远显示在列表中的服务器。可使用服务器地址或邀请码 STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}启动服务器 STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}启动本机作为服务器 @@ -2451,13 +2452,12 @@ STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) 下载地图…… STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) 处理数据…… STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) 注册中…… -STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}获取游戏信息 -STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}获取公司信息 +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}获取游戏信息…… +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}获取公司信息…… STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}断开 STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}服务器需要密码: -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}公司需要密码: # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :在线玩家 @@ -2484,6 +2484,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :你的玩家名 STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}要在此客户端执行的管理命令 STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}要在此公司执行的管理命令 STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}加入该公司 +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}授权此客户端加入你的公司 STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}给这位玩家发消息 STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}给公司中的所有玩家发消息 STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}给所有旁观者发消息 @@ -2492,7 +2493,7 @@ STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(新公司) STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}新建并加入公司 STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}这是你 STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}这里是游戏的主机 -STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM}个客户端 {NUM}/{NUM}所公司 +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} 个客户端 {NUM}/{NUM} 所公司 STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}服务器管理员允许的当前连接的玩家数量、公司数量和最多公司数量 # Matches ConnectionType @@ -2500,19 +2501,17 @@ STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}服务 STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_UNKNOWN :{BLACK}本地 STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_ISOLATED :{RED}远程玩家无法加入 STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_DIRECT :{BLACK}公开 -STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_STUN :{BLACK}NAT后 +STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_STUN :{BLACK}NAT 后 STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}使用中继 STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :踢出 STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :封禁 STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :删除 -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :密码解锁 STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}管理命令 STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}你确定要踢出名为 {STRING} 的玩家吗? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}你确定要封禁名为 {STRING} 的玩家吗? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}你确定要删除 {COMPANY} 公司吗? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}你确定要重置 {COMPANY} 的公司密码吗? +STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}你确定要删除 {COMPANY} 公司吗? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}使用中继? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW} 无法建立你与服务器 {STRING} 的连接。{}你是否想通过 {STRING} 中继此次会话? @@ -2521,7 +2520,7 @@ STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}是, STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}是,不要再次询问 STR_NETWORK_ASK_SURVEY_CAPTION :是否参与自动调查? -STR_NETWORK_ASK_SURVEY_TEXT :您是否愿意参与自动体验调查?{} OpenTTD 会在结束游戏时传输调查结果。{} 您可以在任意时刻在“游戏选项”菜单修改本选项。 +STR_NETWORK_ASK_SURVEY_TEXT :您是否愿意参与自动体验调查?{} OpenTTD 会在结束游戏时传输调查结果。{}您可以在任意时刻在“游戏选项”菜单修改本选项。 STR_NETWORK_ASK_SURVEY_PREVIEW :预览调查结果 STR_NETWORK_ASK_SURVEY_LINK :关于体验调查和隐私 STR_NETWORK_ASK_SURVEY_NO :否 @@ -2529,32 +2528,22 @@ STR_NETWORK_ASK_SURVEY_YES :是 STR_NETWORK_SPECTATORS :旁观者 -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}不保存所输入的密码 -STR_COMPANY_PASSWORD_OK :{BLACK}为公司设置新密码 -STR_COMPANY_PASSWORD_CAPTION :{WHITE}公司密码 -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}默认公司密码 -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}将此公司密码作为新公司的默认密码 - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}加入 STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}加入该公司 -STR_COMPANY_VIEW_PASSWORD :{BLACK}密码 -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}设置密码可以防止未经授权的用户随意加入。 -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}设置公司密码 # Network chat STR_NETWORK_CHAT_SEND :{BLACK}发送 -STR_NETWORK_CHAT_COMPANY_CAPTION :[团队] : +STR_NETWORK_CHAT_COMPANY_CAPTION :[团队]: STR_NETWORK_CHAT_CLIENT_CAPTION :[私聊] {STRING}: -STR_NETWORK_CHAT_ALL_CAPTION :[全体] : +STR_NETWORK_CHAT_ALL_CAPTION :[全体]: -STR_NETWORK_CHAT_COMPANY :[团队] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_TO_COMPANY :[团队]{STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_CLIENT :[私聊] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_TO_CLIENT :[私聊]{STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_ALL :[全体] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_EXTERNAL :[{3:STRING}] {0:STRING}: {WHITE}{1:STRING} +STR_NETWORK_CHAT_COMPANY :[团队] {STRING}:{WHITE}{STRING} +STR_NETWORK_CHAT_TO_COMPANY :[团队] {STRING}:{WHITE}{STRING} +STR_NETWORK_CHAT_CLIENT :[私聊] {STRING}:{WHITE}{STRING} +STR_NETWORK_CHAT_TO_CLIENT :[私聊] {STRING}:{WHITE}{STRING} +STR_NETWORK_CHAT_ALL :[全体] {STRING}:{WHITE}{STRING} +STR_NETWORK_CHAT_EXTERNAL :[{3:STRING}] {0:STRING}:{WHITE}{1:STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}请输入联机聊天内容 # Network messages @@ -2570,6 +2559,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}你没 STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}你没有设置服务器名。玩家名可在联机游戏窗口的上面设置 STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}此客户端版本与服务器端不匹配 STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}密码错误 +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}你不在白名单内 STR_NETWORK_ERROR_SERVER_FULL :{WHITE}服务器已经满员 STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}您已被该服务器封禁 STR_NETWORK_ERROR_KICKED :{WHITE}您已被踢出服务器 @@ -2582,10 +2572,10 @@ STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}您的 STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}您的计算机加入服务器用时过长 STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}您的玩家名不合法 -STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}失去链接 +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}连接可能中断 STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}已经有 {NUM} 秒没有从服务器收到任何数据 -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :一般错误 STR_NETWORK_ERROR_CLIENT_DESYNC :同步错误 STR_NETWORK_ERROR_CLIENT_SAVEGAME :不能读取地图 @@ -2597,7 +2587,8 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :收到异常数 STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :错误的版本 STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :已经有人用这个名字了 STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :错误的密码 -STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :错误的公司ID于DoCommand +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :不在白名单内 +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :错误的公司 ID 于 DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :被服务器踢出 STR_NETWORK_ERROR_CLIENT_CHEATER :正在尝试作弊 STR_NETWORK_ERROR_CLIENT_SERVER_FULL :服务器满员 @@ -2612,13 +2603,13 @@ STR_NETWORK_ERROR_CLIENT_INVALID_CLIENT_NAME :非法客户端 STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ###length 12 -STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :游戏暂停 ({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :游戏仍然暂停 ({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :游戏仍然暂停 ({STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :游戏仍然暂停 ({STRING}, {STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :游戏暂停中 ({STRING}, {STRING}, {STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :游戏仍然暂停 ({STRING}, {STRING}, {STRING}, {STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :游戏取消暂停 ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :游戏暂停({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :游戏仍然暂停({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :游戏仍然暂停({STRING},{STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :游戏仍然暂停({STRING},{STRING},{STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :游戏暂停中({STRING},{STRING},{STRING},{STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :游戏仍然暂停({STRING},{STRING},{STRING},{STRING},{STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :游戏取消暂停({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :玩家数 STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :连接客户端 STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :手动 @@ -2627,16 +2618,16 @@ STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :等待货物分 STR_NETWORK_MESSAGE_CLIENT_LEAVING :离开 STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} 已加入游戏 -STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {0:STRING} 加入了游戏 (Client #{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {0:STRING} 加入了游戏(Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {0:STRING} 已加入 #{2:NUM} 公司 STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} 已作为观众加入 -STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {0:STRING} 成立了新公司 (#{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {0:STRING} 已离开游戏 ({2:STRING}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {0:STRING} 成立了新公司(#{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {0:STRING} 已离开游戏({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} 已更改姓名为 {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {0:STRING} 给予 {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}服务器关闭了进程 -STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}服务器正在重新启动。{}请等待…… -STR_NETWORK_MESSAGE_KICKED :*** {STRING} 被踢出服务器。原因:({STRING}) +STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}服务器正在重新启动……{}请稍等…… +STR_NETWORK_MESSAGE_KICKED :*** {STRING} 被踢出服务器。原因:({STRING}) STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}服务器注册失败 STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}另一个设置了同样邀请码的服务器已经注册。切换到“本地”游戏模式。 @@ -2657,39 +2648,39 @@ STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}更新 STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}取消全选 STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}取消全部选择 STR_CONTENT_SEARCH_EXTERNAL :{BLACK}在外部网站搜索 -STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}在与 OpenTTD 没有联系的网站搜寻没有纳入 OpenTTD 內容服务的內容 +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}在与 OpenTTD 没有联系的网站搜索没有纳入 OpenTTD 内容服务的内容 STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}正在离开游戏! -STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}在外部网站下载內容的规则及条款可能跟 OpenTTD 引用的规则及条款不同。{}您需要参照有关网站以取得在 OpenTTD 安装有关內容的资讯。{}您要継续吗? +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}在外部网站下载内容的规则及条款可能跟 OpenTTD 引用的规则及条款不同。{}您需要参照有关网站以取得在 OpenTTD 安装有关内容的资讯。{}您要继续吗? STR_CONTENT_FILTER_TITLE :{BLACK}标签/名称过滤器 STR_CONTENT_OPEN_URL :{BLACK}主页 STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}打开该扩展包主页 STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}下载 STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}下载选定的内容 -STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}总计下载大小: {WHITE}{BYTES} +STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}总计下载大小:{WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}扩展包信息 ###length 5 STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}您尚未选择下载该扩展包 STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}您已选择需要下载的扩展包 -STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}此依存组件已被选择下载。 +STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}此依存组件已被选择下载 STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}您已经下载过该扩展包 STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}该扩展包无法识别,OpenTTD 无法下载该扩展包 STR_CONTENT_DETAIL_UPDATE :{SILVER}该扩展包将会替换到当前使用的 {STRING} -STR_CONTENT_DETAIL_NAME :{SILVER}名称: {WHITE}{STRING} -STR_CONTENT_DETAIL_VERSION :{SILVER}版本: {WHITE}{STRING} -STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}描述: {WHITE}{STRING} -STR_CONTENT_DETAIL_URL :{SILVER}链接: {WHITE}{STRING} -STR_CONTENT_DETAIL_TYPE :{SILVER}类型: {WHITE}{STRING} -STR_CONTENT_DETAIL_FILESIZE :{SILVER}大小: {WHITE}{BYTES} +STR_CONTENT_DETAIL_NAME :{SILVER}名称:{WHITE}{STRING} +STR_CONTENT_DETAIL_VERSION :{SILVER}版本:{WHITE}{STRING} +STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}描述:{WHITE}{STRING} +STR_CONTENT_DETAIL_URL :{SILVER}链接:{WHITE}{STRING} +STR_CONTENT_DETAIL_TYPE :{SILVER}类型:{WHITE}{STRING} +STR_CONTENT_DETAIL_FILESIZE :{SILVER}大小:{WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}按 {WHITE}{STRING} 选择 -STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}依存: {WHITE}{STRING} -STR_CONTENT_DETAIL_TAGS :{SILVER}标签: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD 未装载 "zlib" 支持模块 ... -STR_CONTENT_NO_ZLIB_SUB :{WHITE}... 无法下载zlib内容! +STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}依存:{WHITE}{STRING} +STR_CONTENT_DETAIL_TAGS :{SILVER}标签:{WHITE}{STRING} +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD 未装载 "zlib" 支持模块…… +STR_CONTENT_NO_ZLIB_SUB :{WHITE}……无法下载内容! # Order of these is important! -STR_CONTENT_TYPE_BASE_GRAPHICS :基本GRF +STR_CONTENT_TYPE_BASE_GRAPHICS :基本 GRF STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI 库 @@ -2701,22 +2692,22 @@ STR_CONTENT_TYPE_GAME_SCRIPT :游戏脚本 STR_CONTENT_TYPE_GS_LIBRARY :脚本库 # Content downloading progress window -STR_CONTENT_DOWNLOAD_TITLE :{WHITE}下载中... -STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}正在发送请求... +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}下载中…… +STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}正在发送请求…… STR_CONTENT_DOWNLOAD_FILE :{WHITE}正在下载 {STRING} ({NUM} / {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}下载完毕 STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}已下载 {BYTES} / {BYTES} ({NUM} %) # Content downloading error messages -STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}无法链接到下载服务器... -STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}下载失败... -STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... 文件无法写入 +STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}无法链接到下载服务器…… +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}下载失败…… +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}……文件无法写入 STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}无法解压该扩展包 STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}缺失图形组 STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD 需要基础图形组用以绘制界面。您是否希望 OpenTTD 下载并安装以下图形组? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}是,开始下载 -STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}不,退出OpenTTD +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}不,退出 OpenTTD STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}下载失败 STR_MISSING_GRAPHICS_ERROR :{BLACK}下载图形组失败。{}请手动下载图形组。 @@ -2724,15 +2715,15 @@ STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}退出 O # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}透明选项 -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}调整标志是否为透明{}CTRL+点击 锁定 -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}调整树木是否为透明{}CTRL+点击 锁定 -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}调整建筑是否为透明{}CTRL+点击 锁定 -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}调整工业设施是否为透明{}CTRL+点击 锁定 -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}调整车站、码头及路点等是否为透明{}CTRL+点击 锁定 -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}调整桥梁是否为透明{}CTRL+点击 锁定 -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}调整物体是否为透明{}CTRL+点击 锁定 -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}调整电气铁路电线是否为透明{}CTRL+点击 锁定 -STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}调整装卸提示和盈亏提示是否为透明{}CTRL+点击 锁定 +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}调整标志是否为透明{}CTRL+ 点击 锁定 +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}调整树木是否为透明{}CTRL+ 点击 锁定 +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}调整建筑是否为透明{}CTRL+ 点击 锁定 +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}调整工业设施是否为透明{}CTRL+ 点击 锁定 +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}调整车站、码头及路点等是否为透明{}CTRL+ 点击 锁定 +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}调整桥梁是否为透明{}CTRL+ 点击 锁定 +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}调整物体是否为透明{}CTRL+ 点击 锁定 +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}调整电气铁路电线是否为透明{}CTRL+ 点击 锁定 +STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}调整装卸提示和盈亏提示是否为透明{}CTRL+ 点击 锁定 STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}选择设置为:不显示或透明 # Linkgraph legend window @@ -2750,8 +2741,8 @@ STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLA # Linkgraph tooltip STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}每月有 {CARGO_LONG} 需从 {STATION} 运至 {STATION} (运载能力的 {COMMA}%){STRING} STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}每分钟有 {CARGO_LONG} 需从 {STATION} 运至 {STATION} (运载能力的 {COMMA}%){STRING} -STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}有{CARGO_LONG}要运回(运载能力的{COMMA}%) -STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}平均行驶时间: {UNITS_DAYS_OR_SECONDS} +STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}有{CARGO_LONG}要运回(运载能力的 {COMMA}%) +STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}平均行驶时间:{UNITS_DAYS_OR_SECONDS} # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}显示覆盖区域 @@ -2760,7 +2751,7 @@ STR_STATION_BUILD_COVERAGE_ON :{BLACK}开启 STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}不显示覆盖的区域 STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}显示可以覆盖的区域 STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}接受:{GOLD}{CARGO_LIST} -STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}供给: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}供给:{GOLD}{CARGO_LIST} STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}维护成本:{GOLD}{CURRENCY_SHORT}/年 STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}维护成本:{GOLD}{CURRENCY_SHORT}/周期 @@ -2780,16 +2771,16 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :电气化铁路 STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :单轨铁路建设 STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :磁悬浮铁路建设 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}建设铁轨。按住 键以移除铁轨。按住 键以显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}使用多向路轨工具铺设轨道。按住 键点选以移除轨道。按住 键点选以显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}建设列车车库(可以购买或维护列车)。按住 键以显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}建设铁路路点。按住 Ctrl 键允许合并路点。按住 Shift 键显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}建设火车站。按住 键以合并车站。按住 键以显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}建设铁路信号。建筑时按住 键单击以对信号应用不同风格样式。{}在建设时拖拽以在拖拽区间内按照设定的信号间距均匀建设信号。按住 键拖拽以按设定的检举建设信号至下一个岔道 / 车站 / 信号。按住 以显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}建设铁路桥梁。按住 键显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}建设铁路隧道。按住 键以显示预计费用。 -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切换建设/拆除轨道、信号灯、路点和车站。按住 Ctrl 键可在移除路点和车站时同时移除轨道。 -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}转换/升级 铁路类型。按住 Shift 键显示预计费用。 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}建设铁轨。按住 键以移除铁轨。按住 键以显示预计费用 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}使用多向路轨工具铺设轨道。按住 键点选以移除轨道。按住 键点选以显示预计费用 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}建设列车车库(可以购买或维护列车)。按住 键以显示预计费用 +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}建设铁路路点。按住 键以合并路点。按住 键以显示预计费用 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}建设火车站。按住 键以合并车站。按住 键以显示预计费用 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}建设铁路信号。建筑时按住 键单击以对信号应用不同风格样式。{}在建设时拖拽以在拖拽区间内按照设定的信号间距均匀建设信号。按住 键拖拽以按设定的检举建设信号至下一个岔道 / 车站 / 信号。按住 以显示预计费用 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}建设铁路桥梁。按住 键显示预计费用 +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}建设铁路隧道。按住 键以显示预计费用 +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切换建筑 / 拆除铁轨、信号机、路点以及车站。按住 键点选以同时移除路点及车站中的铁轨 +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}转换或升级铁路类型。按住 键单击以显示预计费用 STR_RAIL_NAME_RAILROAD :铁路 STR_RAIL_NAME_ELRAIL :电气化铁路 @@ -2802,7 +2793,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}选择 # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}路点 -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}选择路点类型 # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}火车站选单 @@ -2815,12 +2805,37 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}选择 STR_STATION_BUILD_DRAG_DROP :{BLACK}拖动模式 STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}使用拖动模式建设车站 -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}选择一个要显示车站类型 -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}选择要建造的车站类型 +STR_PICKER_MODE_ALL :全部 +STR_PICKER_MODE_ALL_TOOLTIP :切换为显示所有类别中的项目 +STR_PICKER_MODE_USED :已使用 +STR_PICKER_MODE_USED_TOOLTIP :切换为仅显示现有的项目 +STR_PICKER_MODE_SAVED :已保存 +STR_PICKER_MODE_SAVED_TOOLTIP :切换为仅显示已保存的项目 + +STR_PICKER_STATION_CLASS_TOOLTIP :选择显示的车站类别 +STR_PICKER_STATION_TYPE_TOOLTIP :选择建造的车站类型。按住 键操作以保存或删除当前项目 +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :选择显示的路点类别 +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :选择要建造的路点类型。按住键以添加或删除已保存的项目 +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :选择显示的公共汽车站类别 +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :选择建造的公共汽车站类型。按住 键操作以保存或删除当前项目 +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :选择显示的汽车货场类别 +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :选择建造的汽车货场类型。按住 键操作以保存或删除当前项目 +STR_PICKER_OBJECT_CLASS_TOOLTIP :选择显示的物件类别 +STR_PICKER_OBJECT_TYPE_TOOLTIP :选择建造的物件类型。按住 键选择物件以保存或删除当前项目。按住 键拖拽以沿对角线放置,按住 键以显示预计费用 +STR_PICKER_HOUSE_CLASS_TOOLTIP :选择显示的城镇区域 +STR_PICKER_HOUSE_TYPE_TOOLTIP :选择建造的房屋类型。按住 键操作以保存或删除当前项目 + +STR_HOUSE_PICKER_CAPTION :房屋选择 + +STR_HOUSE_PICKER_CLASS_ZONE1 :城镇边缘 +STR_HOUSE_PICKER_CLASS_ZONE2 :郊区边缘 +STR_HOUSE_PICKER_CLASS_ZONE3 :外郊区 +STR_HOUSE_PICKER_CLASS_ZONE4 :内郊区 +STR_HOUSE_PICKER_CLASS_ZONE5 :城镇中心 STR_STATION_CLASS_DFLT :默认 STR_STATION_CLASS_DFLT_STATION :默认车站 -STR_STATION_CLASS_DFLT_ROADSTOP :默认道路站点 +STR_STATION_CLASS_DFLT_ROADSTOP :默认车站 STR_STATION_CLASS_WAYP :路标 STR_STATION_CLASS_WAYP_WAYPOINT :默认路点 @@ -2828,18 +2843,18 @@ STR_STATION_CLASS_WAYP_WAYPOINT :默认路点 STR_BUILD_SIGNAL_CAPTION :{WHITE}信号选择 STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}切换显示逻辑信号机 STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}通过信号灯(悬臂){}是最基本的信号灯,只允许一列车进入该信号灯以后的区间 -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}入口信号灯(悬臂){}在下一轨道区间上至少有一个出口信号灯是绿色时此信号亮绿灯,否则亮红灯 -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}出口信号灯(悬臂){}信号显示条件与通过信号灯相同,但是它的状态可以触发入口及复合信号灯 -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}复合信号灯(悬臂){}复合信号灯是入口和出口信号灯的组合,这样允许建立大型“树状”预警信号灯系统 +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}入口信号灯(悬臂){}在下一轨道区间上至少有一个出口信号灯是绿色时此信号亮绿灯,否则亮红灯 +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}出口信号灯(悬臂){}信号显示条件与通过信号灯相同,但是它的状态可以触发入口及复合信号灯 +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}复合信号灯(悬臂){}复合信号灯是入口和出口信号灯的组合,这样允许建立大型“树状”预警信号灯系统 STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}路径信号灯(悬臂){}路径信号灯为列车预留一条到安全停车位的路径,而其它路径仍然可以使用,从而允许一列以上的列车同时进入一个信号区间 STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}单向路径信号灯(悬臂){}路径信号灯为列车预留一条到安全停车位的路径,而其它路径仍然可以使用,从而允许一列以上的列车同时进入一个信号区间 STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}通过信号灯(电子){}是最基本的信号灯,只允许一列车进入该信号灯以后的区间 -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}入口信号灯(电子){}当下一轨道区间至少有一个出口信号灯是绿色时,此信号灯亮绿灯,否则亮红灯 -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}出口信号灯(电子){}信号显示条件与通过信号灯相同,但是它的状态可以触发入口及复合信号灯 -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}复合信号(电子){}复合信号灯是入口和出口信号灯的组合,这样允许建立大型“树状”预警信号灯系统 +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}入口信号灯(电子){}当下一轨道区间至少有一个出口信号灯是绿色时,此信号灯亮绿灯,否则亮红灯 +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}出口信号灯(电子){}信号显示条件与通过信号灯相同,但是它的状态可以触发入口及复合信号灯 +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}复合信号(电子){}复合信号灯是入口和出口信号灯的组合,这样允许建立大型“树状”预警信号灯系统 STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}路径信号灯(电子){}路径信号灯为列车预留一条到安全停车位的路径,而其它路径仍然可以使用,从而允许一列以上的列车同时进入一个信号区间 STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}单向路径信号灯(电子){}路径信号灯为列车预留一条到安全停车位的路径,而其它路径仍然可以使用,从而允许一列以上的列车同时进入一个信号区间 -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}信号转换{}使用此工具时可以将现有的信号机转换成选择的信号种类及风格。按住 键单击以仅在灯式/悬臂式之间切换。按住 键单击以显示预计费用。 +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}信号转换{}使用此工具时可以将现有的信号机转换成选择的信号种类及风格。按住 键单击以仅在灯式/悬臂式之间切换。按住 键单击以显示预计费用 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}拖拽布置信号灯的间隔距离 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}减少拖拽布置信号的间隔距离 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}增加拖拽布置信号灯的间隔距离 @@ -2849,9 +2864,9 @@ STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}选择 STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}选择公路桥梁 STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}选择桥梁 - 点击选择桥梁进行建设 STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING} -STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY} -STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG} -STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY} +STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_BRIDGE_NAME_SUSPENSION_STEEL :钢制悬索桥 STR_BRIDGE_NAME_GIRDER_STEEL :钢制桁桥 STR_BRIDGE_NAME_CANTILEVER_STEEL :钢制悬臂桥 @@ -2865,25 +2880,27 @@ STR_BRIDGE_TUBULAR_SILICON :硅制函梁桥 # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}道路建设 STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}电车建设 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}建设公路。按住 键操作以移除公路。按住 键操作以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}建造电车轨道。按住 键以移除电车轨道。按住 键以显示建设成本。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}使用多向道路工具建设道路。按住 键操作以移除道路。按住 键操作以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}使用多向轨道工具建设电车轨道。按住 键操作以移除电车轨道。按住 键操作以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}建设汽车车库(可以购买或维护车辆)。按住 键以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}建造电车车库(可以购买与维护车辆)。按住 键以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}建设公共汽车站。按住 键操作以合并车站。按住 键操作以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}建设客运电车站。按住 键操作以合并车站。按住 键操作以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}建设汽车货场。按住 键点击以合并车站,按住 键以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}建设货运电车站。按住 键单击以合并车站。按住 键以显示预计费用。 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}建设公路。按住 键操作以移除公路。按住 键操作以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}建造电车轨道。按住 键以移除电车轨道。按住 键以显示建设成本 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}使用多向道路工具建设道路。按住 键操作以移除道路。按住 键操作以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}使用多向轨道工具建设电车轨道。按住 键操作以移除电车轨道。按住 键操作以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}建设汽车车库(可以购买或维护车辆)。按住 键以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}建造电车车库(可以购买与维护车辆)。按住 键以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD_TO_WAYPOINT :{BLACK}建设道路路点。按住 键以合并路点。按住 键以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM_TO_WAYPOINT :{BLACK}建设电车路点。按住 键以合并路点。按住 键以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}建设公共汽车站。按住 键操作以合并车站。按住 键操作以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}建设客运电车站。按住 键操作以合并车站。按住 键操作以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}建设汽车货场。按住 键点击以合并车站,按住 键以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}建设货运电车站。按住 键单击以合并车站。按住 键以显示预计费用 STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}选择是否建设单行道 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}建设公路桥梁。按住 键显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}建设电车桥梁。按住 键以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}建设公路隧道。按住 键以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}建设电车隧道。按住 键以显示预计费用。 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}建设公路桥梁。按住 键显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}建设电车桥梁。按住 键以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}建设公路隧道。按住 键以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}建设电车隧道。按住 键以显示预计费用 STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}建设/拆除 公路 STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}建设/拆除 电车轨道 -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}转换或升级道路类型。按住 键单击以显示预计费用。 -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :转换/升级 电车道类型。按住 Shift 键显示预计费用。 +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}转换或升级道路类型。按住 键单击以显示预计费用 +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}转换或升级电车轨道类型。按住 键单击以显示预计费用 STR_ROAD_NAME_ROAD :公路 STR_ROAD_NAME_TRAM :电车轨道 @@ -2907,14 +2924,14 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}选择 # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}水运建设 STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}水运 -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}修建运河。按住 键点选以显示预计费用。 -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}建设船闸。按住 键点选以显示预计费用。 -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}建造船坞(可以购买或保养船只),按住 键以显示预计费用。 -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}建造码头。按住 键以合并车站,按住 Shift 键以显示预计费用。 -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}放置一个浮标,该浮标可以用作路点,按住 Shift 键操作可以显示所需资金 +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}修建运河。按住 键点选以显示预计费用 +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}建设船闸。按住 键点选以显示预计费用 +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}建造船坞(可以购买或保养船只),按住 键以显示预计费用 +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}建造码头。按住 键以合并车站,按住 Shift 键以显示预计费用 +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}放置浮标,可以用作路点。按住 键操作以显示预计费用 STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}建设渡槽,按住 Shift 键操作可以显示所需资金 -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}修建运河。在海平面按住 键则会淹没周围土地。 -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}放置河流。按住 键以沿对角线放置。 +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}修建运河。在海平面按住 键则会淹没周围土地 +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}放置河流。按住 键以沿对角线放置 # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}船坞方向…… @@ -2925,7 +2942,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}码头 # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}机场 -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}新建机场。按住 Ctrl 键允许合并站台,按住 Shift 键操作可以显示所需资金 +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}建设机场。按住 键以合并车站。按住 键以显示预计费用 # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}飞机场选单 @@ -2948,21 +2965,19 @@ STR_AIRPORT_CLASS_LARGE :大型机场 STR_AIRPORT_CLASS_HUB :空运枢纽 STR_AIRPORT_CLASS_HELIPORTS :直升机机场 -STR_STATION_BUILD_NOISE :{BLACK}产生的噪音: {GOLD}{COMMA} +STR_STATION_BUILD_NOISE :{BLACK}产生的噪音:{GOLD}{COMMA} # Landscaping toolbar -STR_LANDSCAPING_TOOLBAR :{WHITE}景观美化 -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}降低地面。按住 键以沿对角线操作,按住 键操作以显示预计成本。 -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}升高地块的一角 -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}拉平地面。按住 键以沿对角线操作,按住 键操作以显示预计成本。 -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}购买土地以备将来使用。按 Ctrl 键可选择对角线区域。按 Shift 键可以预览所需资金。 +STR_LANDSCAPING_TOOLBAR :{WHITE}地形 +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}降低地面。按住 键以沿对角线操作,按住 键操作以显示预计成本 +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}升高地面。按住 键以沿对角线操作,按住 键操作以显示预计成本 +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}拉平地面。按住 键以沿对角线操作,按住 键操作以显示预计成本 +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}购买土地以备将来使用。按住 键以沿对角线操作,按住 键操作以显示预计成本 # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}物体选单 -STR_OBJECT_BUILD_TOOLTIP :{BLACK}选择要建设的物体。按住 键以沿对角线建设,按住 键操作以显示预计成本。 -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}选择要建造的物件类型 STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}物件预览 -STR_OBJECT_BUILD_SIZE :{BLACK}大小: {GOLD}{NUM} x {NUM} 格 +STR_OBJECT_BUILD_SIZE :{BLACK}大小:{GOLD}{NUM} x {NUM} 格 STR_OBJECT_CLASS_LTHS :灯塔 STR_OBJECT_CLASS_TRNS :发射机 @@ -2971,7 +2986,7 @@ STR_OBJECT_CLASS_TRNS :发射机 STR_PLANT_TREE_CAPTION :{WHITE}树木 STR_PLANT_TREE_TOOLTIP :{BLACK}选择要种植的树木类型。如果格子内已经有树木,将种植随机类型的树木 STR_TREES_RANDOM_TYPE :{BLACK}随机类型的树木 -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}种植随机类型的树木。按 Ctrl 键沿对角线建造,按住 Shift 键可以显示所需资金 +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}种植随机类型的树木。按 键操作以沿对角线建造,按住 键以显示预计费用 STR_TREES_RANDOM_TREES_BUTTON :{BLACK}随机树木 STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}随机地种植一些树木 STR_TREES_MODE_NORMAL_BUTTON :{BLACK}正常 @@ -2984,7 +2999,7 @@ STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}在地 # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}生成土地 STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}在地图上设置岩石区域 -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}划出沙漠区域.{}按住 Ctrl键 可以移除沙漠区域 +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}划出沙漠区域{}按住 键操作以移除沙漠区域 STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}增加要升高/降低的土地面积 STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}减少要升高/降低的土地面积 STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}随机生成土地 @@ -2998,7 +3013,7 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}你确 # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}生成城镇 STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}新建城镇 -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}建造新城镇。按住 键选择以显示预计费用。 +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}建造新城镇。按住 键选择以显示预计费用 STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}随机城镇 STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}随机新增一个城镇 STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}大量随机城镇 @@ -3046,7 +3061,7 @@ STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}移除 STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}你确定要清除所有工业吗? # Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}产业链- {STRING} +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}产业链 - {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}货物的产业链 - {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}供应商 STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}采购商 @@ -3058,16 +3073,16 @@ STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}显示 STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}在缩略地图显示 STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}将该产业链的工业显示在缩略地图中 STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}选择货物 -STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}选择需要显示的货物 +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}选择显示的货物 STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}选择工业 STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}选择需要显示的工业 # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}地块信息 -STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到地块所在的位置。单击的同时按住 会在新视点中显示地块位置。 +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到地块所在的位置。单击的同时按住 会在新视点中显示地块位置 STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}清除费用:{LTBLUE}N/A 不能清除 STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}清除费用:{RED}{CURRENCY_LONG} -STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}清除收入: {LTBLUE}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}清除收入:{LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :无 STR_LAND_AREA_INFORMATION_OWNER :{BLACK}产权所属:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}道路所属:{LTBLUE}{STRING} @@ -3075,20 +3090,21 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}有轨 STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}铁路归属:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}地方政府:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :没有 -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}坐标: {LTBLUE}{NUM} × {NUM} × {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}坐标:{LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}格编号:{LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}建造/翻新于:{LTBLUE}{DATE_LONG} -STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}车站分类: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}车站类型: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}车站分类:{LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}车站类型:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}机场等级:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}机场名称:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}机场区域名称:{LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}接受货物:{LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) -STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}铁轨类型: {LTBLUE}{STRING} +STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}铁轨类型:{LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}道路类型:{LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}电车类型:{LTBLUE}{STRING} -STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}轨道限速: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}轨道限速:{LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}道路限速:{LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}电车限速:{LTBLUE}{VELOCITY} @@ -3133,7 +3149,7 @@ STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :公路铁路平 STR_LAI_ROAD_DESCRIPTION_TRAMWAY :电车 # Houses come directly from their building names -STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (建设中) +STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING}(建设中) STR_LAI_TREE_NAME_TREES :树木 STR_LAI_TREE_NAME_RAINFOREST :雨林 @@ -3185,19 +3201,19 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司所有土 # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}关于 OpenTTD -STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原始版权由 {COPYRIGHT} 1995 Chris Sawyer 所有,保留一切权力。 +STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原始版权由 {COPYRIGHT} 1995 Chris Sawyer 所有,保留所有权利 STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-{STRING} OpenTTD 团队 # Framerate display window STR_FRAMERATE_CAPTION :{WHITE}帧率 STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) -STR_FRAMERATE_RATE_GAMELOOP :{BLACK}模拟速率: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}每秒模拟的游戏时刻数。 +STR_FRAMERATE_RATE_GAMELOOP :{BLACK}模拟速率:{STRING} +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}每秒模拟的游戏刻数 STR_FRAMERATE_RATE_BLITTER :{BLACK}帧率:{STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}每秒渲染更新的图像帧。 +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}每秒渲染更新的图像帧 STR_FRAMERATE_SPEED_FACTOR :{BLACK}当前游戏速度:{DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}当前游戏运行速度,与正常速度之比率 +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}当前游戏运行速度与正常速度相比的比值 STR_FRAMERATE_CURRENT :{WHITE}当前 STR_FRAMERATE_AVERAGE :{WHITE}平均 STR_FRAMERATE_MEMORYUSE :{WHITE}内存 @@ -3267,20 +3283,20 @@ STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}载入 STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}载入选定的高度图 STR_SAVELOAD_DETAIL_CAPTION :{BLACK}游戏详情 STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}无可用信息 -STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} -STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} +STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}:{WHITE}{STRING} +STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:{WHITE}{STRING} STR_SAVELOAD_FILTER_TITLE :{BLACK}关键字词: STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}覆盖文件 STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}你确定要覆盖已有文件吗? -STR_SAVELOAD_DIRECTORY :{STRING} (目录) -STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (上级目录) +STR_SAVELOAD_DIRECTORY :{STRING}(目录) +STR_SAVELOAD_PARENT_DIRECTORY :{STRING}(上级目录) STR_SAVELOAD_OSKTITLE :{BLACK}为存档命名 # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}地图生成器 STR_MAPGEN_MAPSIZE :{BLACK}地图规模: -STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}选择地图尺寸(单位:格)。可用的数值会略小。 +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}选择地图尺寸(单位:格)。可用的数值会略小 STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}城镇数量: STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}选择城镇密度,或者输入一个自定义数字 @@ -3291,16 +3307,16 @@ STR_MAPGEN_DATE_TOOLTIP :{BLACK}选择 STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}工业数量: STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}选择工业密度,或者输入一个自定义数字 STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}最高峰: -STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}选择游戏地图中最高峰的海拔,以海平面为原点计。 +STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}选择游戏地图中最高峰的海拔,以海平面为原点计 STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}提高最高峰的最大高度一格 STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}降低最高峰的最大高度一格 STR_MAPGEN_SNOW_COVERAGE :{BLACK}雪地比率: -STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}将雪地比率增加10% -STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}将雪地比率减少10% +STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}将雪地比率增加 10% +STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}将雪地比率减少 10% STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_DESERT_COVERAGE :{BLACK}沙漠比率: -STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}将沙漠比率增加10% -STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}将沙漠比率减少10% +STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}将沙漠比率增加 10% +STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}将沙漠比率减少 10% STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}地形特点: STR_MAPGEN_SEA_LEVEL :{BLACK}海洋面积: @@ -3310,7 +3326,7 @@ STR_MAPGEN_SMOOTHNESS :{BLACK}平滑 STR_MAPGEN_VARIETY :{BLACK}多样地形: STR_MAPGEN_GENERATE :{WHITE}生成 STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}创建世界并开始游玩 OpenTTD! -STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF设置 +STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF 设置 STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}显示 NewGRF 设置 STR_MAPGEN_AI_SETTINGS :{BLACK}AI 设置 STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}显示 AI 设置 @@ -3318,10 +3334,10 @@ STR_MAPGEN_GS_SETTINGS :{BLACK}游戏 STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}显示游戏脚本设置 ###length 21 -STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :英国 (原版) +STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :英国(原版) STR_MAPGEN_TOWN_NAME_FRENCH :法国 STR_MAPGEN_TOWN_NAME_GERMAN :德国 -STR_MAPGEN_TOWN_NAME_ADDITIONAL_ENGLISH :英国 (增订) +STR_MAPGEN_TOWN_NAME_ADDITIONAL_ENGLISH :英国(增订) STR_MAPGEN_TOWN_NAME_LATIN_AMERICAN :拉丁美洲 STR_MAPGEN_TOWN_NAME_SILLY :搞笑地名 STR_MAPGEN_TOWN_NAME_SWEDISH :瑞典 @@ -3357,13 +3373,13 @@ STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}高度 STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}高度图名称: STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}高度图图像文件的名字 STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}地图尺寸: -STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}高度图的长宽大小。建议选择长宽符合游戏地图大小的图片作为高度图,如256、512、1024等 +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}高度图的长宽大小。建议选择长宽符合游戏地图大小的图片作为高度图,如 256、512、1024 等 STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM} STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}最高峰目标高度 STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}最高峰 -STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}积雪覆盖率 (百分比) -STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}沙漠比率 (百分比) +STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}积雪覆盖率(百分比) +STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}沙漠比率(百分比) STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}改变游戏开始的日期 # SE Map generation @@ -3386,10 +3402,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}确定 STR_GENERATION_PROGRESS :{WHITE}已完成 {NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}地图生成 +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}景观生成 STR_GENERATION_RIVER_GENERATION :{BLACK}生成河流 -STR_GENERATION_TREE_GENERATION :{BLACK}生成树木 -STR_GENERATION_OBJECT_GENERATION :{BLACK}生成固定设施 STR_GENERATION_CLEARING_TILES :{BLACK}生成岩石地貌 +STR_GENERATION_TOWN_GENERATION :{BLACK}城镇生成 +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}工业生成 +STR_GENERATION_OBJECT_GENERATION :{BLACK}生成固定设施 +STR_GENERATION_TREE_GENERATION :{BLACK}生成树木 STR_GENERATION_SETTINGUP_GAME :{BLACK}设置游戏 STR_GENERATION_PREPARING_TILELOOP :{BLACK}地貌细节生成 STR_GENERATION_PREPARING_SCRIPT :{BLACK}当前脚本 @@ -3424,7 +3443,7 @@ STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}已经 STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}设置参数 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}显示参数 STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}切换调色板 -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}切换选定GRF的调色盘。{}如果该GRF在游戏中看起来是一片粉色,您可以尝试调整此项以解决问题。 +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}切换选定 GRF 的调色盘。{}如果该 GRF 在游戏中看起来是一片粉色,您可以尝试调整此项以解决问题 STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}应用 STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}在线查找缺失的扩展包 @@ -3432,10 +3451,10 @@ STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}看看 STR_NEWGRF_SETTINGS_FILENAME :{BLACK}文件名:{SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID:{SILVER}{STRING} -STR_NEWGRF_SETTINGS_VERSION :{BLACK}版本: {SILVER}{NUM} -STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}最低兼容版本: {SILVER}{NUM} -STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5码:{SILVER}{STRING} -STR_NEWGRF_SETTINGS_PALETTE :{BLACK}调色板: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_VERSION :{BLACK}版本:{SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}最低兼容版本:{SILVER}{NUM} +STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5 码:{SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}调色板:{SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :默认 (DOS) STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :默认 (DOS) / 32 bpp STR_NEWGRF_SETTINGS_PALETTE_LEGACY :传统 (Windows) @@ -3465,8 +3484,8 @@ STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}关闭 STR_NEWGRF_PARAMETERS_RESET :{BLACK}重置 STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}全部参数恢复默认 STR_NEWGRF_PARAMETERS_DEFAULT_NAME :参数 {NUM} -STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} -STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}参数数目: {ORANGE}{NUM} +STR_NEWGRF_PARAMETERS_SETTING :{STRING}:{ORANGE}{STRING} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}参数数目:{ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}检查 - {STRING} @@ -3478,18 +3497,21 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :物件 STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :铁路类型 STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :道路类型 -STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x 参数 (十六进制) +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x 参数(十六进制) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}定位 sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}对齐中的 Sprite:({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}对齐中的 Sprite:Action 0xA,{COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}对齐中的 Sprite:Action 0x5,类别 {HEX},{COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}下一个 sprite -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}继续处理下个正常的图形元素,略过任何虚位/重新着色/文字字型相关的图形元素;并且在处理到最后的图形元素后,返回第一个图形元素继续处理。 +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}继续处理下个正常的图形元素,略过任何虚位/重新着色/文字字型相关的图形元素;并且在处理到最后的图形元素后,返回第一个图形元素继续处理 STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}前往 sprite -STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}前往选定的sprite。若其不正常,则继续前进到下个sprite。 +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}前往选定的 sprite。若其不正常,则继续前进到下个正常 sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}上一个 sprite -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}继续处理上一个正常的图形元素,略过任何虚位/重新着色/文字字型相关的图形元素;并且在处理到第一个图形元素后,返回最后的图形元素继续处理。 -STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}显示目前选取的 sprite。当 sprite 正在描绘时会忽略其定位。 +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}继续处理上一个正常的图形元素,略过任何虚位/重新着色/文字字型相关的图形元素;并且在处理到第一个图形元素后,返回最后的图形元素继续处理 +STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}显示目前选取的 sprite。当 sprite 正在描绘时会忽略其定位 STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}从 X 及 Y 座标方向移动图形元素。如按住 Ctrl 键再点击,可一次移动 8 个单位 +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}偏移居中 @@ -3499,54 +3521,54 @@ STR_SPRITE_ALIGNER_CROSSHAIR :{BLACK}十字 STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}重置相关 STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}重置当前相关偏移 -STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X 偏移: {NUM}, Y 偏移: {NUM} (绝对) -STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X 偏移: {NUM}, Y 偏移: {NUM} (相对) +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X 偏移:{NUM},Y 偏移:{NUM}(绝对) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X 偏移:{NUM},Y 偏移:{NUM}(相对) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}选择 sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}请从屏幕画面中任意选取一个 sprite -STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}前往sprite +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}前往 sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}警告:{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}错误:{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}严重错误:{SILVER}{STRING} -STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}NewGRF "{STRING}" 发生了严重错误:{}{STRING} -STR_NEWGRF_ERROR_POPUP :{WHITE}NewGRF "{STRING}"发生了一个错误:{}{STRING} -STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} 不能与 OpenTTD 报告的 TTDPatch 版本兼容。 -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} 是为 {2:STRING} 版 TTD 开发的。 +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}NewGRF "{STRING}" 发生了严重错误:{}{STRING} +STR_NEWGRF_ERROR_POPUP :{WHITE}NewGRF "{STRING}" 发生了一个错误:{}{STRING} +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} 不能与 OpenTTD 报告的 TTDPatch 版本兼容 +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} 是为 {2:STRING} 版 TTD 开发的 STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} 应当与 {2:STRING} 配合 STR_NEWGRF_ERROR_INVALID_PARAMETER :{1:STRING} 参数错误:参数 {2:STRING} ({3:NUM}) -STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} 必须在 {2:STRING} 之前加载。 -STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} 必须在 {2:STRING} 后加载。 -STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} 需要OpenTTD {2:STRING} 或更高版本 +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} 必须在 {2:STRING} 之前加载 +STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} 必须在 {2:STRING} 后加载 +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} 需要 OpenTTD {2:STRING} 或更高版本 STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF 被设计为可平移 -STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :加载的NewGRF太多 +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :加载的 NewGRF 太多 STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :载入 {1:STRING} 为静态 NewGRF 时载入 {2:STRING} 可能造成同步错误 -STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :异常sprite (sprite {3:NUM}) -STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :未知的Action 0 属性 {4:HEX} (sprite {3:NUM}) -STR_NEWGRF_ERROR_INVALID_ID :尝试使用非法ID (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :异常 sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :未知的 Action 0 属性 {4:HEX} (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :尝试使用非法 ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} 含有损坏的图形元素{}所有损坏的图形元素{}将显示为红色的问号(?) -STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :具有多个Action 8 (sprite {3:NUM}) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :具有多个 Action 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :图像读取时发生越界错误 (sprite {3:NUM}) -STR_NEWGRF_ERROR_GRM_FAILED :GRF源文件不可访问 (sprite {3:NUM}) +STR_NEWGRF_ERROR_GRM_FAILED :GRF 源文件不可访问 (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} 被 {STRING} 禁用 -STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :错误/未知的sprite输出格式 (sprite {3:NUM}) -STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :参数列表元素过多(sprite {3:NUM}, 属性 {4:HEX}) -STR_NEWGRF_ERROR_INDPROD_CALLBACK :无效的产品回调函数 (sprite {3:NUM}, "{2:STRING}") +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :错误/未知的 sprite 输出格式 (sprite {3:NUM}) +STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :参数列表元素过多 (sprite {3:NUM},属性 {4:HEX}) +STR_NEWGRF_ERROR_INDPROD_CALLBACK :无效的产品回调函数 (sprite {3:NUM},"{2:STRING}") # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}注意! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}此操作将要改变一个进行中的游戏,{}操作可能导致游戏崩溃,{}确定继续? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}不能添加文件:重复的 GRF ID -STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}未找到匹配的文件 (已载入兼容的 GRF) -STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}加入的NewGRF文件达到上限,不能再新增。 +STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}未找到匹配的文件(已载入兼容的 GRF) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}加入的 NewGRF 文件达到上限,不能再新增 STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}已为缺失的文件载入兼容的 GRF STR_NEWGRF_DISABLED_WARNING :{WHITE}缺失的 GRF 文件已经被禁用 -STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}无法找到GRF文件 -STR_NEWGRF_UNPAUSE_WARNING :{WHITE}取消暂停可能造成错误. 请不要把接下来可能发生的错误当做Bug.{}继续么? +STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}无法找到 GRF 文件 +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}取消暂停可能造成错误。请不要把接下来可能发生的错误当做 Bug。{}继续么? # NewGRF status STR_NEWGRF_LIST_NONE :空 @@ -3556,32 +3578,32 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}找到 STR_NEWGRF_LIST_MISSING :{RED}缺失文件 # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}NewGRF '{0:STRING}'的行为可能造成同步错误或是崩溃。 +STR_NEWGRF_BROKEN :{WHITE}NewGRF“{0:STRING}”的行为可能造成同步错误或是崩溃 STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}{1:ENGINE}机车车厢的状态没在车库内发生变动 -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}当车辆不在车库中时,这将改变 '{1:ENGINE}' 的车辆长度. -STR_NEWGRF_BROKEN_CAPACITY :{WHITE}它会在 '{1:ENGINE}' 在机厂外或不在接受改装时改変其运载能力 -STR_BROKEN_VEHICLE_LENGTH :{WHITE} '{1:COMPANY}' 公司的列车 '{0:VEHICLE}' 长度无效。这可能是 NewGRF 导致。游戏可能会失去同步或崩溃。 +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}当车辆不在车库中时,这将改变“{1:ENGINE}”的车辆长度。 +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}它会在“{1:ENGINE}”在机厂外或不在接受改装时改変其运载能力 +STR_BROKEN_VEHICLE_LENGTH :{WHITE}{1:COMPANY} 所拥有的列车 {0:VEHICLE} 长度无效。这个错误可能是由 NewGRF 导致的。游戏可能会无法同步或崩溃 -STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' 的信息不正确 -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}购买'{1:ENGINE}' 后,将造成货物/运费的参数与购买列表不符,这将有可能造成自动更新/购买不成功。 -STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' 产生了一个死循环 +STR_NEWGRF_BUGGY :{WHITE}NewGRF“{STRING}”的信息不正确 +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}购买“{1:ENGINE}”后,将造成货物/运费的参数与购买列表不符,这将有可能造成自动更新/购买不成功 +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}“{1:STRING}”产生了一个死循环 STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}回调函数 {1:HEX} 返回了一个未知/错误的结果 {2:HEX} -STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' 返回了错误的货物类型。位于产品回调函数 {2:HEX} 处 +STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}“{1:STRING}”返回了错误的货物类型。位于产品回调函数 {2:HEX} 处 # 'User removed essential NewGRFs'-placeholders for stuff without specs -STR_NEWGRF_INVALID_CARGO : +STR_NEWGRF_INVALID_CARGO :<无效货物> STR_NEWGRF_INVALID_CARGO_ABBREV :?? -STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of -STR_NEWGRF_INVALID_ENGINE : -STR_NEWGRF_INVALID_INDUSTRYTYPE : +STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} / <无效货物> +STR_NEWGRF_INVALID_ENGINE :<无效载具型号> +STR_NEWGRF_INVALID_INDUSTRYTYPE :<无效工业> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). -STR_INVALID_VEHICLE :<不明载具> +STR_INVALID_VEHICLE :<无效载具> # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}正在扫描 NewGRF -STR_NEWGRF_SCAN_MESSAGE :{BLACK}正在扫描 NewGRF。 这可能需要一些时间,取决于其数量... -STR_NEWGRF_SCAN_STATUS :{BLACK}已扫描{NUM}个 NewGRF,预计 NewGRF总数为 {NUM} +STR_NEWGRF_SCAN_MESSAGE :{BLACK}正在扫描 NewGRF。这可能需要一些时间,取决于其数量…… +STR_NEWGRF_SCAN_STATUS :{BLACK}已扫描 {NUM} 个 NewGRF,预计 NewGRF 总数为 {NUM} STR_NEWGRF_SCAN_ARCHIVES :正在扫描压缩包 # Sign list window @@ -3591,14 +3613,14 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}显示 # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}标记标志文字 -STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到标志的位置. 单击的同时按住Ctrl会在新视点中显示标志位置 +STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到标志所在的位置。按住 单击会在新视点中显示目标位置 STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}前往下个标记 STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}前往上个标记 STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}为标记起名 # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}城镇 +STR_TOWN_DIRECTORY_CAPTION :{WHITE}城镇({COMMA} 座,共 {COMMA}座) STR_TOWN_DIRECTORY_NONE :{ORANGE}- 没有 - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (都市){BLACK} ({COMMA}) @@ -3607,21 +3629,21 @@ STR_TOWN_POPULATION :{BLACK}地图 # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} -STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (都市) +STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN}(都市) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}人口:{ORANGE}{COMMA}{BLACK} 房屋:{ORANGE}{COMMA} -STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} 上月:{ORANGE}{COMMA}{BLACK} 最大:{ORANGE}{COMMA} -STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} 最后分钟:{ORANGE}{COMMA}{BLACK} 最大:{ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}上月产出的{WHITE}{CARGO_LIST}{BLACK}:{ORANGE}{COMMA}{BLACK} 最大产量:{ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}上分钟产出的{WHITE}{CARGO_LIST}{BLACK}:{ORANGE}{COMMA}{NBSP}{BLACK}最大产量:{ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}城镇发展所必需的货物: -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED} 需要: {ORANGE}{STRING} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED} 需要:{ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} 冬季的需求 STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}已运输 {GREEN} -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}已运输:{CARGO_TINY} /{RED}总需求: {CARGO_LONG} -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (已运输) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}城镇每 {ORANGE}{UNITS_DAYS_OR_SECONDS}{BLACK}{NBSP}成长一次 -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}城镇每 {ORANGE}{UNITS_DAYS_OR_SECONDS}{BLACK}{NBSP}成长一次(正接受资助) -STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK} 城镇发展正在 {RED}停滞 {BLACK}! -STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}当前城镇噪音: {ORANGE}{COMMA}{BLACK} 最大: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到城镇所在的位置. 单击的同时按住Ctrl会在新视点中显示城镇位置 +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}已运输:{CARGO_TINY} /{RED}总需求:{CARGO_LONG} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN}(已运输) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}城镇每 {ORANGE}{UNITS_DAYS_OR_SECONDS}{BLACK}成长一次 +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}城镇每 {ORANGE}{UNITS_DAYS_OR_SECONDS}{BLACK}成长一次(正接受资助) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}城镇发展已{RED}停滞 +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}当前城镇噪音:{ORANGE}{COMMA}{BLACK} 最大:{ORANGE}{COMMA} +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到城镇的位置。按住 键点选会在新视点中显示目标位置 STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}地方政府 STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}显示地方政府的信息 STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}城镇改名 @@ -3638,7 +3660,7 @@ STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} STR_LOCAL_AUTHORITY_ZONE :{BLACK}城区 STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}显示地方政府行政区边界 STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}对运输公司评价: -STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} +STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}:{ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}可执行的操作: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}在本市可以执行的操作{}点击查看详细信息 STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}执行 @@ -3678,7 +3700,7 @@ STR_GOALS_TEXT :{ORANGE}{STRING STR_GOALS_NONE :{ORANGE}- 无目标 - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}点击使得视图移动到该工业/城镇/地块. Ctrl+左键 在该处创建一个视点. +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}将屏幕中心移动到当前工业或城镇所占格的位置。按住 键点选会在新视点中显示目标位置 # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}帮助索引 @@ -3710,11 +3732,11 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :关闭 # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}财政补贴项目 STR_SUBSIDIES_OFFERED_TITLE :{BLACK}尚未中标的项目: -STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}将{STRING}从{STRING}运至{STRING}{YELLOW} ({STRING}) +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}将{STRING}从{STRING}运至{STRING}{YELLOW}({STRING}) STR_SUBSIDIES_NONE :{ORANGE}没有 STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}已经中标的项目: -STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}将 {STRING} 从 {STRING} 运送到 {STRING}{YELLOW} ({COMPANY}{YELLOW},截止日期为 {STRING}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}将屏幕中心移动到当前工业或城镇的位置。按住 键点选会在新视点中显示目标位置。 +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}将 {STRING} 从 {STRING} 运送到 {STRING}{YELLOW}({COMPANY}{YELLOW},{STRING}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}将屏幕中心移动到当前工业或城镇的位置。按住 键点选会在新视点中显示目标位置 STR_SUBSIDIES_OFFERED_EXPIRY_DATE :在 {DATE_SHORT} 之前 STR_SUBSIDIES_OFFERED_EXPIRY_TIME :剩余时间:{UNITS_MONTHS_OR_MINUTES} STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :直到 {DATE_SHORT} @@ -3725,8 +3747,8 @@ STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}全域历史纪录 STR_STORY_BOOK_SPECTATOR :全域历史纪录 STR_STORY_BOOK_TITLE :{YELLOW}{STRING} -STR_STORY_BOOK_GENERIC_PAGE_ITEM :第{NUM}页 -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}从下拉选单中选择想要查看的页面. +STR_STORY_BOOK_GENERIC_PAGE_ITEM :第 {NUM} 页 +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}从下拉选单中选择想要查看的页面 STR_STORY_BOOK_PREV_PAGE :{BLACK}上一个 STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}转到上一页 STR_STORY_BOOK_NEXT_PAGE :{BLACK}下一个 @@ -3734,9 +3756,9 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}转到 STR_STORY_BOOK_INVALID_GOAL_REF :{RED}无效的目标参照 # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}车站名称{}点击可将屏幕中心移动到车站所在位置. 单击的同时按住Ctrl会在新视点中显示车站位置 -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}按住 CTRL 可以同时选择多项 -STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} 车站 +STR_STATION_LIST_TOOLTIP :{BLACK}车站名称 - 点选名称以将屏幕中心移动到车站的位置。按住 键点选会在新视点中显示车站位置 +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}按住 键点选以选择多个项目 +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - 车站 {COMMA} 座 STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- 没有 - @@ -3752,7 +3774,7 @@ STR_STATION_LIST_CARGO_FILTER_EXPAND :显示更多… # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} -STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} 等待装货) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} 等待装货) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}接受 STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}显示接受的货物列表 @@ -3765,7 +3787,7 @@ STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}评价 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}显示车站评价 STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}每月供应数量与本地评价: STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}每分钟供应量与本地评价: -STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}:{YELLOW}{COMMA} / {STRING}({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}群组方式 STR_STATION_VIEW_WAITING_STATION :车站名:等候中 @@ -3783,12 +3805,12 @@ STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_S STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} 前往 本站 STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} 直达该站 -STR_STATION_VIEW_GROUP_S_V_D :来源-途经-目的地 -STR_STATION_VIEW_GROUP_S_D_V :来源-目的地-途经 -STR_STATION_VIEW_GROUP_V_S_D :途经-来源-目的地 -STR_STATION_VIEW_GROUP_V_D_S :途经-目的地-来源 -STR_STATION_VIEW_GROUP_D_S_V :目的地-来源-途经 -STR_STATION_VIEW_GROUP_D_V_S :目的地-途经-来源 +STR_STATION_VIEW_GROUP_S_V_D :来源 - 途经 - 目的地 +STR_STATION_VIEW_GROUP_S_D_V :来源 - 目的地 - 途经 +STR_STATION_VIEW_GROUP_V_S_D :途经 - 来源 - 目的地 +STR_STATION_VIEW_GROUP_V_D_S :途经 - 目的地 - 来源 +STR_STATION_VIEW_GROUP_D_S_V :目的地 - 来源 - 途经 +STR_STATION_VIEW_GROUP_D_V_S :目的地 - 途经 - 来源 ###length 8 STR_CARGO_RATING_APPALLING :垃圾(最差评价) @@ -3800,7 +3822,7 @@ STR_CARGO_RATING_VERY_GOOD :优秀 STR_CARGO_RATING_EXCELLENT :卓越 STR_CARGO_RATING_OUTSTANDING :完美(最高评价) -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到车站所在的位置. 单击的同时按住Ctrl会在新视点中显示车站位置 +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到车站所在的位置。按住 单击会在新视点中显示目标位置 STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}重命名车站 STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}显示所有调度计划中含有此车站的列车 @@ -3815,9 +3837,9 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}禁止 # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到路点所在的位置。按住 单击会在新视点中显示路点。 +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到路点所在的位置。按住 单击会在新视点中显示路点 STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}修改路点名 -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到浮标所在的位置。按住 单击会在新视点中显示目标位置。 +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到浮标所在的位置。按住 单击会在新视点中显示目标位置 STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}修改浮标名 STR_EDIT_WAYPOINT_NAME :{WHITE}编辑路点名称 @@ -3862,22 +3884,22 @@ STR_FINANCES_MAX_LOAN :{WHITE}贷款 STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BANK_BALANCE :{WHITE}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}贷款 {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}增加贷款。按住 键操作以贷款最大额度。 +STR_FINANCES_BORROW_TOOLTIP :{BLACK}增加贷款。按住 键操作以贷款最大额度 STR_FINANCES_REPAY_BUTTON :{BLACK}还款 {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}偿还贷款。按住 键操作以偿还最大额度。 +STR_FINANCES_REPAY_TOOLTIP :{BLACK}偿还贷款。按住 键操作以偿还最大额度 STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}基础建设 # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} -STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(总裁) +STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(总裁) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}开业时间:{WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}色彩方案: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}载具总数: -STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} 列火车 -STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} 辆汽车 -STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} 架飞机 -STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} 艘轮船 +STR_COMPANY_VIEW_TRAINS :{WHITE}列车 {COMMA} 列 +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}车辆 {COMMA} 辆 +STR_COMPANY_VIEW_AIRCRAFT :{WHITE}飞机 {COMMA} 架 +STR_COMPANY_VIEW_SHIPS :{WHITE}船舶 {COMMA} 艘 STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}无 STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}公司市值:{WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}基建设施: @@ -3893,8 +3915,8 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}建立 STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}查看总部 STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}查看公司总部 STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}重置总部 -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}以公司市值 1% 的代价重建总部,按住 键单击可以显示所需资金。 -STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}固定资产维护费明细 +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}以公司市值 1% 的代价重建总部,按住 键单击可以显示所需资金 +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}基建详情 STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}显示详细的设施情况 STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}给予资金 STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}给予该公司资金 @@ -3915,7 +3937,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :总裁姓名 STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :输入你要给予的金额 STR_BUY_COMPANY_MESSAGE :{WHITE}我们正在寻找一家愿意收购我们的公司。{}{}您愿意收购 {COMPANY} ({CURRENCY_LONG}) 吗? -STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}恶意收购 {COMPANY} 时,您会买下其所有的资产,还清其所有的债务,并支付其两年的利润。{}{}总价预计为 {CURRENCY_LONG}.{}{}您想继续此收购吗? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}恶意收购 {COMPANY} 时,您会买下其所有的资产,还清其所有的债务,并支付其两年的利润。{}{}总价预计为 {CURRENCY_LONG}。{}{}您想继续此收购吗? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} 的设施 @@ -3932,17 +3954,17 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/周期 # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}工业设施 +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}工业({COMMA} 座,共 {COMMA} 座) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- 没有 - -STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% 已运输){BLACK} +STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW}({COMMA}% 已运输){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING} -STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} -STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} -STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING},{STRING},{STRING}以及其余 {NUM} 个…… -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}工业设施{}点击可以将屏幕中心移动到其所在位置. 单击的同时按住Ctrl会在新视点中显示工业位置 -STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}接受的货物:{SILVER}{STRING} -STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}产出的货物:{SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}、{STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}、{STRING}、{STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}、{STRING}、{STRING}……(尚有 {NUM} 个未显示) +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}工业名称 - 点选名称以将屏幕中心移动到当前工业的位置。按住 键点选会在新视点中显示工业位置 +STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}接受货物:{SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}产出货物:{SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :所有货物类型 STR_INDUSTRY_DIRECTORY_FILTER_NONE :无 @@ -3950,21 +3972,21 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :无 STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}上月产量: STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}上分钟产量: -STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% 已运输) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到当前工业的位置。按住 键点选会在新视点中显示工业位置。 -STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}生产等级: {YELLOW}{COMMA}% -STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}此工业已经宣布即刻停业倒闭! +STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK}({COMMA}% 已运输) +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到当前工业的位置。按住 键点选会在新视点中显示工业位置 +STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}生产等级:{YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}此工业已经宣布即刻停业倒闭! -STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}需要: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}产出:{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING} +STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :,{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES :{BLACK}需要: STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{0:STRING}{BLACK}{3:STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} 等待中{STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}:库存 {CARGO_SHORT} {STRING} STR_CONFIG_GAME_PRODUCTION :{WHITE}改变产量 -STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}修改产量 (百分比, 最高 800%) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}修改产量(百分比,最高为 800%) # Vehicle lists ###length VEHICLE_TYPES @@ -4021,15 +4043,15 @@ STR_GROUP_DEFAULT_AIRCRAFTS :未分组飞机 STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}组 - 点击一个组别以显示所有隶属此组的车辆。拖曳组别标签以重新排列组别的次序和层级。 +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}组 - 点击一个组别以显示所有隶属此组的车辆。拖曳组别标签以重新排列组别的次序和层级 STR_GROUP_CREATE_TOOLTIP :{BLACK}创建分组 STR_GROUP_DELETE_TOOLTIP :{BLACK}删除分组 STR_GROUP_RENAME_TOOLTIP :{BLACK}重命名该分组 STR_GROUP_LIVERY_TOOLTIP :{BLACK}改变所选组的配色方案 -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}点击以停止本组自动更新功能的使用。按下CTRL并点击来同样应用于子组。 +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}点击以停止本组自动更新功能的使用。按下 CTRL 并点击来同样应用于子组 STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}删除分组 -STR_GROUP_DELETE_QUERY_TEXT :{WHITE}确定要删除这个分组及其下级分组么? +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}确定要删除这个分组及其下级分组么? STR_GROUP_ADD_SHARED_VEHICLE :添加共享车辆 STR_GROUP_REMOVE_ALL_VEHICLES :移除所有车辆 @@ -4061,23 +4083,23 @@ STR_BUY_VEHICLE_SHIP_CAPTION :购买船只 STR_BUY_VEHICLE_AIRCRAFT_CAPTION :购买飞机 STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}售价:{GOLD}{CURRENCY_LONG}{BLACK} 重量:{GOLD}{WEIGHT_SHORT} -STR_PURCHASE_INFO_COST_REFIT_WEIGHT :{BLACK}售价: {GOLD}{CURRENCY_LONG}{BLACK} (改装花费: {GOLD}{CURRENCY_LONG}{BLACK}) 重量: {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_COST_REFIT_WEIGHT :{BLACK}售价:{GOLD}{CURRENCY_LONG}{BLACK}(改装花费:{GOLD}{CURRENCY_LONG}{BLACK})重量:{GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}速度:{GOLD}{VELOCITY}{BLACK} 功率:{GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}速度:{GOLD}{VELOCITY} -STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}在海洋上的速度: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}在河流上的速度: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}在海洋上的速度:{GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}在河流上的速度:{GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}运行费用:{GOLD}{CURRENCY_LONG}/年 STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}运行费用:{GOLD}{CURRENCY_LONG}/周期 STR_PURCHASE_INFO_CAPACITY :{BLACK}运载能力:{GOLD}{CARGO_LONG} {STRING} -STR_PURCHASE_INFO_REFITTABLE :(可改装) +STR_PURCHASE_INFO_REFITTABLE :(可改装) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}设计日期:{GOLD}{NUM}{BLACK} 寿命:{GOLD}{COMMA} 年 STR_PURCHASE_INFO_RELIABILITY :{BLACK}最大可靠性:{GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}售价:{GOLD}{CURRENCY_LONG} -STR_PURCHASE_INFO_COST_REFIT :{BLACK}售价: {GOLD}{CURRENCY_LONG}{BLACK} (改装费用: {GOLD}{CURRENCY_LONG}{BLACK}) +STR_PURCHASE_INFO_COST_REFIT :{BLACK}售价:{GOLD}{CURRENCY_LONG}{BLACK}(改装费用:{GOLD}{CURRENCY_LONG}{BLACK}) STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}重量:{GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}售价:{GOLD}{CURRENCY_LONG}{BLACK} 速度:{GOLD}{VELOCITY} -STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}售价:{GOLD}{CURRENCY_LONG}{BLACK} (改装费用:{GOLD}{CURRENCY_LONG}{BLACK}) 速度:{GOLD}{VELOCITY} -STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}运载能力:{GOLD}{CARGO_LONG}, {CARGO_LONG} +STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}售价:{GOLD}{CURRENCY_LONG}{BLACK}(改装费用:{GOLD}{CURRENCY_LONG}{BLACK})速度:{GOLD}{VELOCITY} +STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}运载能力:{GOLD}{CARGO_LONG}、{CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}功率:{GOLD}+{POWER}{BLACK} 重量:{GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}可改装为:{GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :所有类型 @@ -4085,8 +4107,8 @@ STR_PURCHASE_INFO_NONE :无 STR_PURCHASE_INFO_ENGINES_ONLY :仅机车 STR_PURCHASE_INFO_ALL_BUT :所有货物但 {CARGO_LIST} 除外 STR_PURCHASE_INFO_MAX_TE :{BLACK}最大牵引力:{GOLD}{FORCE} -STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}航行距离: {GOLD}{COMMA} 格 -STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}飞机类型: {GOLD}{STRING} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}航行距离:{GOLD}{COMMA} 格 +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}飞机类型:{GOLD}{STRING} ###length 3 STR_CARGO_TYPE_FILTER_ALL :所有货物类型 @@ -4094,10 +4116,10 @@ STR_CARGO_TYPE_FILTER_FREIGHT :货运 STR_CARGO_TYPE_FILTER_NONE :没有 ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列车选择列表。点击载具以展示信息。按住 键点选以显示 / 隐藏当前载具。 -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}路面车辆选择列表。点击车辆查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏车辆的种类 -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}船舶选择列表。点击船舶查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏船舶的种类 -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}飞行器选择列表。点击飞行器查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏飞行器的种类 +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列车选择列表。点击载具以展示信息。按住 键点选以显示 / 隐藏当前载具 +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}汽车选择列表。点击载具以展示信息。按住 键点选以显示 / 隐藏当前载具 +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}船舶选择列表。点击载具以展示信息。按住 键点选以显示 / 隐藏当前载具 +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}飞机选择列表。点击飞机查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏飞机的种类 ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}购买车头/车厢 @@ -4112,7 +4134,7 @@ STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}购买 STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}购买并改装飞机 ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}购买选定的列车,按住 键单击以显示预计费用。 +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}购买选定的列车,按住 键单击以显示预计费用 STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}购买选定的汽车,按住 键单击以显示预计费用 STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}购买选定的船只,按住 键单击以显示预计费用 STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}购买选定的飞机。按住 键单击以显示预计费用 @@ -4168,10 +4190,10 @@ STR_DEPOT_RENAME_DEPOT_CAPTION :重命名车库 STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} 车辆{STRING} -STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) +STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG}({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}列车 - 左键拖动可调整车厢,右击可查看详情。按Ctrl执行上述操作可同时操作之后车厢。 +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}列车 - 左键拖动可调整车厢,右击可查看详情。按 操作以同时操作该车厢与其之后的所有车厢 STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}汽车 - 右击可查看详细信息 STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}船只 - 右击可查看详细信息 STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}飞机 - 右击可查看详细信息 @@ -4213,16 +4235,16 @@ STR_DEPOT_CLONE_SHIP :{BLACK}克隆 STR_DEPOT_CLONE_AIRCRAFT :{BLACK}克隆飞机 ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}复制火车。点击此按钮然后再点击任意一列在车库内或车库外的火车以复制购买。按住 键单击以共享调度计划。按住 键单击以显示预计费用。 -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}复制汽车。点击此按钮然后再点击任意一辆在车库内或车库外的载具以复制购买。按住 键单击以共享调度计划。按住 键单击以显示预计费用。 -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}复制船只。点击此按钮然后再点击任意一辆在车库内或车库外的载具以复制购买。按住 键单击以共享调度计划。按住 键单击以显示预计费用。 -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}复制飞机。按此按钮后{}点击一个在机库内或外面的飞机即可。按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}复制火车。点击此按钮然后再点击任意一列在车库内或车库外的火车以复制购买。按住 键单击以共享调度计划。按住 键单击以显示预计费用 +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}复制汽车。点击此按钮然后再点击任意一辆在车库内或车库外的载具以复制购买。按住 键单击以共享调度计划。按住 键单击以显示预计费用 +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}复制船只。点击此按钮然后再点击任意一辆在车库内或车库外的载具以复制购买。按住 键单击以共享调度计划。按住 键单击以显示预计费用 +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}复制飞机。点击此按钮然后再点击任意一辆在车库内或车库外的载具以复制购买。按住 键单击以共享调度计划。按住 键单击以显示预计费用 ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到列车车库所在的位置。按住 单击会在新视点中显示列车车库位置。 -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到车库所在的位置。按住 单击会在新视点中显示目标位置。 -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到当前船坞的位置. 单击的同时按住Ctrl会在新视点中显示船坞位置 -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到当前机库的位置. 单击的同时按住Ctrl会在新视点中显示机库位置 +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到列车车库所在的位置。按住 单击会在新视点中显示列车车库位置 +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到车库所在的位置。按住 单击会在新视点中显示目标位置 +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到船坞所在的位置。按住 单击会在新视点中显示目标位置 +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到机库所在的位置。按住 单击会在新视点中显示目标位置 ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}显示所有调度计划中含有此车库的列车 @@ -4320,35 +4342,35 @@ STR_REPLACE_MAGLEV_VEHICLES :磁悬浮列车 STR_REPLACE_ROAD_VEHICLES :路面交通工具 STR_REPLACE_TRAM_VEHICLES :电车 -STR_REPLACE_REMOVE_WAGON :{BLACK}清理挂车({STRING}):{ORANGE}{STRING} +STR_REPLACE_REMOVE_WAGON :{BLACK}移除车厢({STRING}):{ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}当车辆升级可能造成列车变长时{}自动从最前面的挂车去掉若干节以保证列车长度不变 -STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. 按下CTRL并点击来同样应用于子组 +STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}。按下 CTRL 并点击来同样应用于子组 # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}将主视角中心移动到列车所在的位置。双击将会在主视角中跟踪列车。单击的同时按住Ctrl会在新视点中显示列车位置 -STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK} 将主视角中心移动到车辆所在的位置。双击将会在主视角中跟踪车辆。单击的同时按住 Ctrl 会在新视点中显示车辆位置 -STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}将主视角中心移动到船只所在的位置。双击将会在主视角中跟踪船只。单击的同时按住Ctrl会在新视点中显示船只位置 -STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}将主视角中心移动到飞机所在的位置。双击将会在主视角中跟踪飞机。单击的同时按住Ctrl会在新视点中显示飞机位置 +STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}将主视角中心移动到列车所在的位置。双击将会在主视角中跟踪列车。按 键操作以在新视点中显示列车 +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}将主视角中心移动到载具所在的位置。双击将会在主视角中跟踪载具。按 键操作以在新视点中显示载具 +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}将主视角中心移动到船舶所在的位置。双击将会在主视角中跟踪船舶。按 键操作以在新视点中显示船舶 +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}将主视角中心移动到飞机所在的位置。双击将会在主视角中跟踪飞机。按 键操作以在新视点中显示飞机 ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令列车前往车库。按住 键操作以仅作保养。 -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令汽车前往车库{}Ctrl+单击 时汽车只进行保养 -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令船只前往船坞{}Ctrl+单击 时船只只进行保养 -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令飞机前往机库{}Ctrl+单击 时飞机只进行保养 +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令列车前往车库。按住 键操作以仅作保养 +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令汽车前往车库。按住 键操作以仅作保养 +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令船舶前往船坞。按住 键操作以仅作保养 +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令飞机前往机库。按住 键操作以仅作保养 ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}复制这列火车。按住 键单击以共享调度计划。按住 键单击以显示预计费用。 -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}复制这辆汽车。按住 键单击以共享调度计划,按住 键单击以显示预计费用。 -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}复制这条船只。按住 键单击以共享调度计划,按住 键单击以显示所需资金。 -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}复制飞机。按住 键单击以共享调度计划。按住 键单击以显示预计费用。 +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}复制这列火车。按住 键单击以共享调度计划。按住 键单击以显示预计费用 +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}复制这辆汽车。按住 键单击以共享调度计划,按住 键单击以显示预计费用 +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}复制这条船只。按住 键单击以共享调度计划,按住 键单击以显示所需资金 +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}复制飞机。按住 键单击以共享调度计划。按住 键单击以显示预计费用 STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}命令列车强行通过信号 STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}命令列车调头 STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}强制汽车掉头 -STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到当前指令的目的地。单击的同时按住Ctrl会在新视点中显示指令目的地的位置 +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到指令目的地所在的位置。按住 单击会在新视点中显示目标位置 ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}改装列车以装载另一类型的货物 @@ -4357,10 +4379,10 @@ STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}改装 STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}改装飞机装载货物的类型 ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}显示列车的调度计划. 单击的同时按住Ctrl以显示列车的时刻表 -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}显示车辆的调度指令. 单击的同时按住Ctrl以显示车辆的时刻表 -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}显示船只的调度计划. 单击的同时按住Ctrl以显示船只的时刻表 -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}显示飞机的调度计划. 单击的同时按住Ctrl以显示飞机的时刻表 +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}显示列车的调度计划。单击的同时按住 Ctrl 以显示列车的时刻表 +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}显示车辆的调度指令。单击的同时按住 Ctrl 以显示车辆的时刻表 +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}显示船只的调度计划。单击的同时按住 Ctrl 以显示船只的时刻表 +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}显示飞机的调度计划。单击的同时按住 Ctrl 以显示飞机的时刻表 ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}显示列车的详细信息 @@ -4378,16 +4400,16 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}当前 STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}装载/卸货 STR_VEHICLE_STATUS_LEAVING :{LTBLUE}发车 STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}等待班次均匀发车时间 -STR_VEHICLE_STATUS_CRASHED :{RED}已撞毁! +STR_VEHICLE_STATUS_CRASHED :{RED}已撞毁! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}抛锚 STR_VEHICLE_STATUS_STOPPED :{RED}停运 -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}正在停止,{VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - 正在停止 STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}没有电力 STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}等待空余轨道 STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}距离下一目的地过远 STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - 正前往 {0:STATION} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}没有目标,{VELOCITY} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - 没有目标 STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - 正前往 {0:WAYPOINT} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - 正前往 {0:DEPOT} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - 正在前往 {0:DEPOT} 以进行维护 @@ -4408,7 +4430,7 @@ STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GRE STR_VEHICLE_COMMAND_STARTED :{GREEN}已开始 # Vehicle details -STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (详细信息) +STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE}(详细信息) ###length VEHICLE_TYPES STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}给列车命名 @@ -4418,12 +4440,12 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}命名 STR_VEHICLE_INFO_AGE :{COMMA} 年 ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} 年 ({COMMA}) -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}年龄:{LTBLUE}{STRING}{BLACK} 运行成本:{LTBLUE}{CURRENCY_LONG} /年 +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}年龄:{LTBLUE}{STRING}{BLACK} 运行成本:{LTBLUE}{CURRENCY_LONG}/年 STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}年龄:{LTBLUE}{STRING}{BLACK} 运行费用:{LTBLUE}{CURRENCY_LONG}/周期 STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最大速度:{LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}最高速度: {LTBLUE}{VELOCITY} {BLACK}飞机种类: {LTBLUE}{STRING} -STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}最大速度: {LTBLUE}{VELOCITY} {BLACK}飞机类型: {LTBLUE}{STRING} {BLACK}续航里程: {LTBLUE}{COMMA} 格 +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}最高速度:{LTBLUE}{VELOCITY} {BLACK}飞机种类:{LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}最大速度:{LTBLUE}{VELOCITY} {BLACK}飞机类型:{LTBLUE}{STRING} {BLACK}续航里程:{LTBLUE}{COMMA} 格 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}重量:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最大速度:{LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}重量:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最大速度:{LTBLUE}{VELOCITY} {BLACK}最大牵引力:{LTBLUE}{FORCE} @@ -4434,24 +4456,24 @@ STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}本期 STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}可靠性:{LTBLUE}{COMMA}% {BLACK}上次保养后抛锚的次数:{LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}建造年份:{LTBLUE}{NUM}{BLACK} 价值:{LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}运载能力: {LTBLUE}无{STRING} +STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}运载能力:{LTBLUE}无{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}运载能力:{LTBLUE}{0:CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}运载能力:{LTBLUE}{0:CARGO_LONG}{3:STRING} (x{4:NUM}) -STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}运载能力:{LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} +STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}运载能力:{LTBLUE}{CARGO_LONG},{CARGO_LONG}{STRING} -STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}转运成本: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}联运账面收入:{LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}每 {LTBLUE}{COMMA}{NBSP}天进行维护{BLACK} 上次维护日期:{LTBLUE}{STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}服务间隔:{LTBLUE}{COMMA}{NBSP}分钟{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}保养周期:{LTBLUE}{COMMA}%{BLACK} 上次保养:{LTBLUE}{STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}维修间隔:{LTBLUE}{COMMA}{NBSP}分钟{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}维护间隔:{LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :最近保养:{LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :最近保养:{LTBLUE}{NUM}{NBSP}分钟前 -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :将维修间隔增大 10 天。按住 点击可将维修间隔增大 5 天。 -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}将维修间隔增大 5 分。按住 点击可将维修间隔增大 1 分 。 -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}将维修间隔增大 10%。按住 点击可将维修间隔增大 5% 。 -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}将维修间隔缩短 10 天。按住 点击可将维修间隔缩短 5 天。 -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}将维修间隔缩短 5 分。按住 点击可将维修间隔缩短 1 分 。 -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}将维修间隔缩短 10%。按住 点击可将维修间隔缩短 5% 。 +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :将维修间隔增大 10 天。按住 点击可将维修间隔增大 5 天 +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}将维修间隔增大 5 分。按住 点击可将维修间隔增大 1 分 +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}将维修间隔增大 10%。按住 点击可将维修间隔增大 5% +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}将维修间隔缩短 10 天。按住 点击可将维修间隔缩短 5 天 +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}将维修间隔缩短 5 分。按住 点击可将维修间隔缩短 1 分 +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}将维修间隔缩短 10%。按住 点击可将维修间隔缩短 5% STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}更改服务时间间隔类型 STR_VEHICLE_DETAILS_DEFAULT :默认 @@ -4474,8 +4496,8 @@ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}{CARGO_ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}空 -STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} (来自 {STATION}) -STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} (来自 {STATION} (x{NUM})) +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG}(来自 {STATION}) +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG}(来自 {STATION} (x{NUM})) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}货物 STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}显示运载货物的详情 @@ -4486,16 +4508,16 @@ STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}显示 STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}全部货物 STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}根据不同的挂车种类显示相应的总运力 -STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}运力: {LTBLUE} +STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}运力:{LTBLUE} # Vehicle refit -STR_REFIT_CAPTION :{WHITE}{VEHICLE} (改装) +STR_REFIT_CAPTION :{WHITE}{VEHICLE}(改装) STR_REFIT_TITLE :{GOLD}选择要运输的货物类型: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}新的装载能力:{GOLD}{CARGO_LONG}{}{BLACK}改装费用:{RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}新装载量: {GOLD}{CARGO_LONG}{}{BLACK}改装后收入: {GREEN}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}新的运载类型: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}改装所需: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}新装载量: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}改装后收入: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}请选择要改装的车辆. 拖动鼠标可多选.点击空白区域选择整辆列车. Ctrl+左键 选定该车厢及其之后车厢。 +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}新装载量:{GOLD}{CARGO_LONG}{}{BLACK}改装后收入:{GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}新的运载类型:{GOLD}{CARGO_LONG},{GOLD}{CARGO_LONG}{}{BLACK}改装所需:{RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}新装载量:{GOLD}{CARGO_LONG},{GOLD}{CARGO_LONG}{}{BLACK}改装后收入:{GREEN}{CURRENCY_LONG} +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}选择改装的车厢。按 键拖曳以选择多节车厢。点选空白的区域以选择整列列车。按 键选择车厢以选择该车厢及其之后的车厢 ###length VEHICLE_TYPES STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}选择希望列车装载的货物类型 @@ -4516,11 +4538,11 @@ STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}改装 STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}改装飞机以运输选择的货物类型 # Order view -STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (调度计划) +STR_ORDERS_CAPTION :{WHITE}{VEHICLE}(调度计划) STR_ORDERS_TIMETABLE_VIEW :{BLACK}时刻表 STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}切换到时刻表视图 -STR_ORDERS_LIST_TOOLTIP :{BLACK}调度列表{}单击一个调度指令以选定{}CTRL+左键{}将视点移动到相应的车站 +STR_ORDERS_LIST_TOOLTIP :{BLACK}调度列表 - 点击命令以选定命令。按 键操作以跳至命令目标在地图上的位置 STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} @@ -4550,9 +4572,9 @@ STR_ORDER_DROP_NO_UNLOADING :不卸载 STR_ORDER_TOOLTIP_UNLOAD :{BLACK}修改当前指令在车站的卸载措施 STR_ORDER_REFIT :{BLACK}改装 -STR_ORDER_REFIT_TOOLTIP :{BLACK}选择要在调度计划中改装的货物类型{}CTRL+单击 可以去掉改装计划 +STR_ORDER_REFIT_TOOLTIP :{BLACK}选择要在调度计划中改装的货物类型{}CTRL+ 单击 可以去掉改装计划 STR_ORDER_REFIT_AUTO :{BLACK}自动改装 -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}选择在此调度计划内使用何种货物类型来自动改装。 Ctrl+单击以移除自动改装。自动改装仅在载具支持时进行。 +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}选择在此调度计划内使用何种货物类型来自动改装。Ctrl+ 单击以移除自动改装。自动改装仅在载具支持时进行 STR_ORDER_DROP_REFIT_AUTO :固定货物 STR_ORDER_DROP_REFIT_AUTO_ANY :可用类型 @@ -4576,10 +4598,10 @@ STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}跳过 STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :装载进度 STR_ORDER_CONDITIONAL_RELIABILITY :可靠性 STR_ORDER_CONDITIONAL_MAX_SPEED :最大速度 -STR_ORDER_CONDITIONAL_AGE :寿命(年) +STR_ORDER_CONDITIONAL_AGE :寿命(年) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :需要维修 STR_ORDER_CONDITIONAL_UNCONDITIONALLY :总是 -STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :剩余寿命年限 (年) +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :剩余寿命年限(年) STR_ORDER_CONDITIONAL_MAX_RELIABILITY :最大可靠度 ###next-name-looks-similar @@ -4597,29 +4619,29 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}要比 STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}请输入要比较的值 STR_ORDERS_SKIP_BUTTON :{BLACK}跳过 -STR_ORDERS_SKIP_TOOLTIP :{BLACK}跳过当前命令并执行下一条命令{}CTRL+单击 可以跳过选定的命令 +STR_ORDERS_SKIP_TOOLTIP :{BLACK}跳过当前命令并执行下一条命令。按 键操作以直接跳至选定的命令 STR_ORDERS_DELETE_BUTTON :{BLACK}删除 STR_ORDERS_DELETE_TOOLTIP :{BLACK}删除高亮的调度命令 STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}删除全部调度 STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}退出共享调度计划 -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}退出共享调度计划。 按住 Ctrl 键单击可以同时清除此载具的调度计划。 +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}退出共享调度计划。按 键单击可以同时清除此载具的调度计划 STR_ORDERS_GO_TO_BUTTON :{BLACK}前往 STR_ORDER_GO_TO_NEAREST_DEPOT :前往最近的车库 STR_ORDER_GO_TO_NEAREST_HANGAR :前往最近的机库 STR_ORDER_CONDITIONAL :条件性命令跳过 STR_ORDER_SHARE :共享调度计划 -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}在调度列表的结尾或选定项目前{}增加一条新指令,按住Ctrl使命令为“装满任意货物”{}路点命令为“不停车”{}车库命令为“保养” +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}在选定的指令前插入新指令,或者添加新指令至计划末尾。按 键点选车站、路点或车库以分别应用“满载任意一种货物”、“不停车前往”以及“班次均匀”。点击另一辆载具以复制其调度计划,按住 点选则可共享调度计划。如果调度计划上有任何指令涉及车库,则该载具不会自行维护 STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}显示所有共享此调度计划的{}车辆/船只/飞机 # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :经过 {WAYPOINT} -STR_ORDER_GO_NON_STOP_TO_WAYPOINT :经过(不停) {WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :经过(不停){WAYPOINT} STR_ORDER_SERVICE_AT :维修在 -STR_ORDER_SERVICE_NON_STOP_AT :维修,不停靠于 +STR_ORDER_SERVICE_NON_STOP_AT :维修,不停靠于 STR_ORDER_NEAREST_DEPOT :最近的车库 STR_ORDER_NEAREST_HANGAR :最近的机库 @@ -4632,16 +4654,16 @@ STR_ORDER_SHIP_DEPOT :船坞 STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} -STR_ORDER_REFIT_ORDER :(改装为 {STRING}) -STR_ORDER_REFIT_STOP_ORDER :(改装为{STRING}并停留) -STR_ORDER_STOP_ORDER :(停留) +STR_ORDER_REFIT_ORDER :(改装为 {STRING}) +STR_ORDER_REFIT_STOP_ORDER :(改装为{STRING}并停留) +STR_ORDER_STOP_ORDER :(停留) STR_ORDER_WAIT_TO_UNBUNCH :(班次均匀) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} -STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(不能使用车站){POP_COLOUR} {STRING} {STATION} {STRING} +STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(不能使用车站){POP_COLOUR} {STRING} {STATION} {STRING} -STR_ORDER_IMPLICIT :(自动) +STR_ORDER_IMPLICIT :(自动) STR_ORDER_FULL_LOAD :(装满全部货物) STR_ORDER_FULL_LOAD_ANY :(装满任意货物后离开) @@ -4657,20 +4679,20 @@ STR_ORDER_TRANSFER_NO_LOAD :(联运并空 STR_ORDER_NO_UNLOAD :(不卸载并若有就装货) STR_ORDER_NO_UNLOAD_FULL_LOAD :(不卸载并等待全部货物装满) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(不卸货并装满任意货物离开) -STR_ORDER_NO_UNLOAD_NO_LOAD :(不卸货也不装货) +STR_ORDER_NO_UNLOAD_NO_LOAD :(不卸货也不装货) -STR_ORDER_AUTO_REFIT :(自动改装为运载 {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(装满所有货物,允许自动改装为运载 {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :装满任意货物,允许自动改装为运载 {STRING}) -STR_ORDER_UNLOAD_REFIT :(卸货且装载,允许自动改装为运载 {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(卸货且装满所有货物,允许自动改装为运载 {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(卸货且装满任意货物,允许自动改装为运载 {STRING}) -STR_ORDER_TRANSFER_REFIT :(联运且装载,允许自动改装为运载 {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(联运且装满所有货物,允许自动改装为运载 {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(联运且装满任意货物,允许自动改装为运载 {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(不卸货且装载,允许自动改装为运载 {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(不卸货且装满所有货物,允许自动改装为运载 {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(不卸货且装满任意货物,允许自动改装为运载 {STRING}) +STR_ORDER_AUTO_REFIT :(自动改装为运载 {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(装满所有货物,允许自动改装为运载 {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(装满任意货物,允许自动改装为运载 {STRING}) +STR_ORDER_UNLOAD_REFIT :(卸货且装载,允许自动改装为运载 {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(卸货且装满所有货物,允许自动改装为运载 {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(卸货且装满任意货物,允许自动改装为运载 {STRING}) +STR_ORDER_TRANSFER_REFIT :(联运且装载,允许自动改装为运载 {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(联运且装满所有货物,允许自动改装为运载 {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(联运且装满任意货物,允许自动改装为运载 {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(不卸货且装载,允许自动改装为运载 {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(不卸货且装满所有货物,允许自动改装为运载 {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(不卸货且装满任意货物,允许自动改装为运载 {STRING}) STR_ORDER_AUTO_REFIT_ANY :可用类型 @@ -4679,31 +4701,31 @@ STR_ORDER_STOP_LOCATION_NEAR_END :[近端] STR_ORDER_STOP_LOCATION_MIDDLE :[中间] STR_ORDER_STOP_LOCATION_FAR_END :[远端] -STR_ORDER_OUT_OF_RANGE :{RED} (下一个目的地距离过远) +STR_ORDER_OUT_OF_RANGE :{RED}(下一个目的地距离过远) STR_ORDER_CONDITIONAL_UNCONDITIONAL :跳至 {COMMA} STR_ORDER_CONDITIONAL_NUM :跳至 {COMMA} [ 当 {STRING} {STRING} {COMMA} ] STR_ORDER_CONDITIONAL_TRUE_FALSE :跳至 {COMMA} [ 当 {STRING} {STRING}] -STR_INVALID_ORDER :{RED} (非法的调度计划) +STR_INVALID_ORDER :{RED}(非法的调度计划) # Time table window -STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (时刻表) +STR_TIMETABLE_TITLE :{WHITE}{VEHICLE}(时刻表) STR_TIMETABLE_ORDER_VIEW :{BLACK}命令 STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}切换到调度计划视图 -STR_TIMETABLE_TOOLTIP :{BLACK}时刻表 - 单击一个命令以选定。 +STR_TIMETABLE_TOOLTIP :{BLACK}时刻表 - 单击一个命令以选定 STR_TIMETABLE_NO_TRAVEL :原地待命 -STR_TIMETABLE_NOT_TIMETABLEABLE :行驶 (自动;由下个手动指令指定时间) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :行驶 (无时刻表) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :限速 {2:VELOCITY} (无时刻表) +STR_TIMETABLE_NOT_TIMETABLEABLE :行驶(自动;由下个手动指令指定时间) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :行驶(无时刻表) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :限速 {2:VELOCITY}(无时刻表) STR_TIMETABLE_TRAVEL_FOR :途中行驶 {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :开往{STRING} ,限速为 {VELOCITY} -STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :行驶 ({STRING}, 无时刻表) -STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :前往 {STRING},以最大速度 {VELOCITY} -STR_TIMETABLE_STAY_FOR_ESTIMATED :(停靠 {STRING}, 无时刻表) -STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(驶往 {STRING}, 无时刻表) +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :行驶({STRING},无时刻表) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :前往 {STRING},以最大速度 {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(停靠 {STRING},无时刻表) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(驶往 {STRING},无时刻表) STR_TIMETABLE_STAY_FOR :并且停留 {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :并行驶{STRING} @@ -4718,36 +4740,36 @@ STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}本时 STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}本时刻表将会在 {COMMA} 秒内开始 STR_TIMETABLE_START :{BLACK}开始时刻表 -STR_TIMETABLE_START_TOOLTIP :{BLACK}选择此时刻表开始的时间。如果订单完全按时刻表安排,则按住Ctrl键并单击会根据它们的相对顺序,且均匀分配共享此订单的所有车辆的开始时间。 +STR_TIMETABLE_START_TOOLTIP :{BLACK}选择此时刻表开始的时间。如果调度计划有完善的时刻表,则按住 键单击会根据它们的相对顺序均匀分配共享此调度计划的所有车辆的出开始时间 STR_TIMETABLE_START_SECONDS_QUERY :直至时刻表开始的秒数 STR_TIMETABLE_CHANGE_TIME :{BLACK}改变时间 -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}改变高亮选择的命令执行的时间,按住Ctrl单击可为所有命令设置时间 +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}修改选定命令设定的时间。按住 键操作以修改所有命令的限时 STR_TIMETABLE_CLEAR_TIME :{BLACK}清除时间 -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}清除选定命令设定的时间。按住 键操作以清除所有命令的限时。 +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}清除选定命令设定的时间。按住 键操作以清除所有命令的限时 STR_TIMETABLE_CHANGE_SPEED :{BLACK}更改限速 -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}更改高亮调度命令的最高限速。按住Ctrl键单击可为所有命令设置速度 +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}修改选定命令设定的限速。按住 键操作以修改所有命令的限速 STR_TIMETABLE_CLEAR_SPEED :{BLACK}取消限速 -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}清除选定命令设定的限速。按住 键操作以清除所有命令的限速。 +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}清除选定命令设定的限速。按住 键操作以清除所有命令的限速 STR_TIMETABLE_RESET_LATENESS :{BLACK}清除晚点计数器 -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}重置晚点计数器,从而使车辆被视为准时到达。CTRL+点击会重置全分组的计数器,从而使晚点最多的载具被视为准点而其他被视为早点 +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}重置晚点计数器,从而使车辆被视为准时到达。按 键操作以重置全分组的计数器,从而使晚点最多的载具被视为准点而其他被视为早点 STR_TIMETABLE_AUTOFILL :{BLACK}自动填充 -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}根据下一次运行的时间自动填充时刻表。按住Ctrl单击可保持等候时间 +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}根据下一次运行的时间自动填充时刻表。按住 Ctrl 单击可保持等候时间 STR_TIMETABLE_EXPECTED :{BLACK}预期时间 STR_TIMETABLE_SCHEDULED :{BLACK}表定时间 STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}切换显示(根据实际情况计算的)预期时间或表定时间 -STR_TIMETABLE_ARRIVAL_DATE :抵: {COLOUR}{DATE_TINY} +STR_TIMETABLE_ARRIVAL_DATE :抵:{COLOUR}{DATE_TINY} STR_TIMETABLE_DEPARTURE_DATE :发:{COLOUR}{DATE_TINY} -STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :抵: {COLOUR}{COMMA} 秒 -STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :发: {COLOUR}{COMMA} 秒 +STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :抵:{COLOUR}{COMMA} 秒 +STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :发:{COLOUR}{COMMA} 秒 # Date window (for timetable) @@ -4762,32 +4784,32 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}选择 # AI debug window STR_AI_DEBUG :{WHITE}AI/脚本调试 STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}AI名称 +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}AI 名称 STR_AI_DEBUG_SETTINGS :{BLACK}AI 设置 STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}修改 AI 设置 STR_AI_DEBUG_RELOAD :{BLACK}重载 AI -STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}关闭AI并重启AI +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}关闭 AI 并重启 AI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}启用/停用 当 AI 记录信息符合断点字符串时中断执行的功能 -STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}中断点: +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}中断点: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}中断点 -STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}当AI记录信息与该字符串相符时暂停游戏 +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}当 AI 记录信息与该字符串相符时暂停游戏 STR_AI_DEBUG_MATCH_CASE :{BLACK}符合大小写 -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}切换对比AI 记录信息是否与断点字符串相符时是否要符合大小写 +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}切换对比 AI 记录信息是否与断点字符串相符时是否要符合大小写 STR_AI_DEBUG_CONTINUE :{BLACK}继续 -STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}取消暂停AI -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}查看此AI的调试输出。按住Ctrl键点选以打开新窗口 +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}取消暂停 AI +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}查看此 AI 的调试输出。按住 操作以打开新窗口 STR_AI_GAME_SCRIPT :{BLACK}游戏脚本 -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}检查游戏脚本日志。按住Ctrl键点选以打开新窗口 +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}检查游戏脚本日志。按住 操作以打开新窗口 -STR_ERROR_AI_NO_AI_FOUND :找不到可用的AI。{}本AI是一个演示AI,并不会在游戏中做任何动作,{}您可以通过“在线查找扩展包”功能下载新的AI。 -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}您使用的一个AI崩溃了。请附上一张AI调试窗口的截图,将此错误通报AI作者。 -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI调试窗口只对服务器可用 +STR_ERROR_AI_NO_AI_FOUND :找不到可用的 AI。{}本 AI 是一个演示 AI,并不会在游戏中做任何动作,{}您可以通过“在线查找扩展包”功能下载新的 AI +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}您使用的一个 AI 崩溃了。请附上一张 AI 调试窗口的截图,将此错误通报 AI 作者 +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI 调试窗口只对服务器可用 # AI configuration window STR_AI_CONFIG_CAPTION_AI :{WHITE}AI 设置 STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}游戏脚本设定 STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}下局游戏将启用这些脚本 -STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}下局游戏将启用这些AI +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}下局游戏将启用这些 AI STR_AI_CONFIG_HUMAN_PLAYER :玩家 STR_AI_CONFIG_RANDOM_AI :随机 AI STR_AI_CONFIG_NONE :(无) @@ -4796,9 +4818,9 @@ STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}电脑 STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}电脑公司建立间隔 {ORANGE}{COMMA} 分钟 STR_AI_CONFIG_MOVE_UP :{BLACK}上移 -STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}在列表中将选择的AI上移 +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}在列表中将选择的 AI 上移 STR_AI_CONFIG_MOVE_DOWN :{BLACK}下移 -STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}在列表中将选择的AI下移 +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}在列表中将选择的 AI 下移 STR_AI_CONFIG_GAMESCRIPT :{SILVER}游戏脚本 STR_AI_CONFIG_GAMESCRIPT_PARAM :{SILVER}参数 @@ -4806,7 +4828,7 @@ STR_AI_CONFIG_AI :{SILVER}AI STR_AI_CONFIG_CHANGE_AI :{BLACK}选择 AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}选择游戏脚本 -STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}载入另一脚本。CTRL+点击以显示所有可用版本 +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}载入另一脚本。CTRL+ 点击以显示所有可用版本 STR_AI_CONFIG_CONFIGURE :{BLACK}设定 STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}设定脚本参数 @@ -4816,9 +4838,9 @@ STR_AI_LIST_CAPTION_AI :AI STR_AI_LIST_CAPTION_GAMESCRIPT :游戏脚本 STR_AI_LIST_TOOLTIP :{BLACK}点击选择 AI -STR_AI_LIST_AUTHOR :{LTBLUE}作者: {ORANGE}{STRING} -STR_AI_LIST_VERSION :{LTBLUE}版本: {ORANGE}{NUM} -STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} +STR_AI_LIST_AUTHOR :{LTBLUE}作者:{ORANGE}{STRING} +STR_AI_LIST_VERSION :{LTBLUE}版本:{ORANGE}{NUM} +STR_AI_LIST_URL :{LTBLUE}URL:{ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}接受 STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}选择高亮的 AI @@ -4835,13 +4857,11 @@ STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}小地 # Script Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} 参数 -STR_AI_SETTINGS_CAPTION_AI :{WHITE}AI参数 +STR_AI_SETTINGS_CAPTION_AI :{WHITE}AI 参数 STR_AI_SETTINGS_CAPTION_GAMESCRIPT :游戏脚本 STR_AI_SETTINGS_CLOSE :{BLACK}关闭 STR_AI_SETTINGS_RESET :{BLACK}重设 -STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}:{ORANGE}[{STRING},{STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING},{STRING}] +STR_AI_SETTINGS_SETTING :{STRING}:{ORANGE}{STRING} # Textfile window @@ -4850,8 +4870,8 @@ STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}通过 STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}退回到定位历史 STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}取消定位历史撤回 -STR_TEXTFILE_WRAP_TEXT :{WHITE}強迫文字换行 -STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}強迫宽于窗格的內文自动换行 +STR_TEXTFILE_WRAP_TEXT :{WHITE}强制文字换行 +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}强制宽于窗口的文本自动换行 STR_TEXTFILE_VIEW_README :{BLACK}查看说明 STR_TEXTFILE_VIEW_README_TOOLTIP :查看此项目的说明文件 STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}更新日志 @@ -4863,7 +4883,7 @@ STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING} 的更新日志 STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} {WHITE}的版权信息 STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}预览调查结果 -STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD 文档 '{STRING}' +STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD 文档“{STRING}” # Vehicle loading indicators @@ -4882,44 +4902,44 @@ STR_INCOME_FLOAT_COST :{RED}支出:{ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}收入:{CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}收入:{CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}中转:{CURRENCY_LONG} -STR_FEEDER :{YELLOW}中转:{CURRENCY_LONG} -STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}联运: {CURRENCY_LONG}{WHITE} / {GREEN}收入: {CURRENCY_LONG} -STR_FEEDER_INCOME :{YELLOW}联运: {CURRENCY_LONG}{WHITE} / {GREEN}收入: {CURRENCY_LONG} -STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}联运: {CURRENCY_LONG}{WHITE} / {RED}支付: {CURRENCY_LONG} -STR_FEEDER_COST :{YELLOW}联运: {CURRENCY_LONG}{WHITE} / {RED}支付: {CURRENCY_LONG} +STR_FEEDER :{YELLOW}联运:{CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}联运:{CURRENCY_LONG}{WHITE} / {GREEN}收入:{CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}联运:{CURRENCY_LONG}{WHITE} / {GREEN}收入:{CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}联运:{CURRENCY_LONG}{WHITE} / {RED}支出:{CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}联运:{CURRENCY_LONG}{WHITE} / {RED}支出:{CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}预计费用:{CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}预计收入:{CURRENCY_LONG} # Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}保存仍在继续{}请耐心等待…… +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}保存仍在继续{}请耐心等待! STR_ERROR_AUTOSAVE_FAILED :{WHITE}自动保存失败 STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}不能读取驱动器 -STR_ERROR_GAME_SAVE_FAILED :{WHITE}保存游戏失败{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}保存游戏失败…… STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}不能删除文件 -STR_ERROR_GAME_LOAD_FAILED :{WHITE}游戏存档读取失败{}{STRING} -STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :内部错误: {STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}读取游戏失败…… +STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :内部错误:{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :无法识别的存档 - {STRING} -STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :该存档是新版本的。当前版本无法读取。 +STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :该存档是新版本的。当前版本无法读取 STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :文件无法读取 STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :文件无法写入 STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :数据完整性检查失败 STR_GAME_SAVELOAD_ERROR_PATCHPACK :该存档是来自修改版的游戏 STR_GAME_SAVELOAD_NOT_AVAILABLE :<不可用> -STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}游戏已保存为无电车版。所有电车已被去除。 +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}游戏已保存为无电车版。所有电车已被去除 # Map generation messages -STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}生成场景失败!无合适地点建设城镇。 +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}生成场景失败……{}……无合适地点建设城镇 STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}当前场景中没有城镇…… STR_ERROR_PNGMAP :{WHITE}无法从 PNG 文件中读取场景…… -STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... 文件未找到。 -STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... 不能转换图像格式{}请使用8位或24位PNG格式图片 -STR_ERROR_PNGMAP_MISC :{WHITE}... 似乎出现了错误{}(可能是损坏的文件等) +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}……文件未找到 +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}……不能转换图像格式{}请使用 8 位或 24 位 PNG 格式图片 +STR_ERROR_PNGMAP_MISC :{WHITE}……似乎出现了错误{}(可能是损坏的文件等) STR_ERROR_BMPMAP :{WHITE}无法从 BMP 文件中读取场景…… -STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... 不能转换图像格式。 +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}……不能转换图像格式 -STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... 图像太大了 +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}……图像太大了 STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}缩放警告 STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}不推荐将源图片过度放缩,是否继续生成? @@ -4929,10 +4949,10 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}只找 # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}超大截图 -STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}屏幕截图需要 {COMMA} x {COMMA} 像素。 截图将需要一段时间。确认继续截图? +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}屏幕截图需要 {COMMA} x {COMMA} 像素。截图将需要一段时间。确认继续截图? -STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}高度图已经被成功保存为 '{STRING}'。最高峰高度是 {NUM} -STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}屏幕截图已经被成功保存为{} '{STRING}' +STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}高度图已经被成功保存为“{STRING}”。最高峰高度是 {NUM} +STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}屏幕截图已经被成功保存为{} “{STRING}” STR_ERROR_SCREENSHOT_FAILED :{WHITE}屏幕截图失败! # Error message titles @@ -4948,31 +4968,31 @@ STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}土地 STR_ERROR_CAN_T_DO_THIS :{WHITE}不能这样做…… STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}必须先摧毁建筑 STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}无法清除这个区域…… -STR_ERROR_SITE_UNSUITABLE :{WHITE}... 地点不合适 -STR_ERROR_ALREADY_BUILT :{WHITE}... 已经建好了 +STR_ERROR_SITE_UNSUITABLE :{WHITE}……地点不合适 +STR_ERROR_ALREADY_BUILT :{WHITE}……已经建好了 STR_ERROR_OWNED_BY :{WHITE}……所有者是 {STRING} -STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... 此区域由另一公司所有 +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}……此区域由另一公司所有 STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}……已达地形限制 -STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... 已达地块清理限制 -STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... 已经达最大植树量 -STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}名称重复!请重新命名. +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}……已达地块清理限制 +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}……已经达最大植树量 +STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}名称重复!请重新命名 STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}目标位置有 {1:STRING} STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}暂停时不能进行此操作 # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} 地方政府不批准此操作…… STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN}地方政府{}不同意在本市范围内再兴建一座机场 -STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} 考虑到噪音控制,地方当局拒绝修建机场。 -STR_ERROR_BRIBE_FAILED :{WHITE}您的贿赂行动被当地检察机关发现,赃款均已没收,您在本市评价已降为最低。 +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} 考虑到噪音控制,地方当局拒绝修建机场 +STR_ERROR_BRIBE_FAILED :{WHITE}您的贿赂行动被当地检察机关发现,赃款均已没收,您在本市评价已降为最低 # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}不能提高这里的地面…… STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}不能降低这里的地面…… -STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}无法在此处变更地形... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}无法在此处变更地形…… STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}挖掘将破坏隧道 -STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}已经是海平面了 -STR_ERROR_TOO_HIGH :{WHITE}太高了 -STR_ERROR_ALREADY_LEVELLED :{WHITE}... 已经平了 +STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}……已经是海平面了 +STR_ERROR_TOO_HIGH :{WHITE}……太高了 +STR_ERROR_ALREADY_LEVELLED :{WHITE}……已经平了 STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}这样的话,在它上面的桥梁会太高 # Company related errors @@ -4981,84 +5001,87 @@ STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}不能 STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}……最大贷款额度是{CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}不能再贷款了…… -STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}没有要偿还的贷款了 -STR_ERROR_CURRENCY_REQUIRED :{WHITE}需要{CURRENCY_LONG} +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}……没有要偿还的贷款了 +STR_ERROR_CURRENCY_REQUIRED :{WHITE}……需要{CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}不能偿还贷款…… STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}不能将银行的贷款送给别人…… STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}不能给予该公司资金…… STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}不能收购公司…… -STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}不能设置公司总部 +STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}不能设置公司总部…… # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}不能建设任何城镇 +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}无法建设城镇…… STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}不能重命名城镇…… STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}不能在这里建设城镇…… -STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}无法扩展城镇... -STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}太靠近地图边缘了 -STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}太靠近另一个城镇了 -STR_ERROR_TOO_MANY_TOWNS :{WHITE}城镇太多了 -STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}地图上没有多余的地方了 +STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}无法扩展城镇…… +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}……太靠近地图边缘了 +STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}……太靠近另一个城镇了 +STR_ERROR_TOO_MANY_TOWNS :{WHITE}……城镇太多了 +STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}……地图上没有多余的地方了 STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}正在进行道路工程 -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}无法删除城镇...{}城镇范围内还有车站、车库或无法移除的区块 -STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... 城市中心没有合适的地方放置公司塑像 +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}无法删除城镇……{}城镇范围内还有车站、车库或无法移除的区块 +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}……城市中心没有合适的地方放置公司塑像 +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}不能建造房屋…… # Industry related errors -STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}…… 游戏中的工业过多 +STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}……游戏中的工业过多 STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}不能生成工业设施…… STR_ERROR_CAN_T_BUILD_HERE :{WHITE}不能在这里建设 {STRING} …… STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}不能在此处建设这种类型的工业设施…… -STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}无法勘探工业... -STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}距离另一工业设施过近…… -STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}必须先建设一个城镇…… -STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}每个城镇只能建设一个…… -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}只能在人口超过 1200 的城镇建造…… -STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}只能在雨林中建设…… -STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}只能在沙漠中建设…… -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}只能在城镇中建设…… -STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... 只能在靠近城市中心建造 -STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}只能在低海拔区域建设…… -STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}只能被放置在地图边缘…… -STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}林场只能设置在雪线以上的地方…… -STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... 只能在雪线以上建造 -STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... 只能在雪线以下建造 +STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}无法勘探工业…… +STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}……距离另一工业设施过近 +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}……必须先建设一个城镇 +STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}……每个城镇只能建设一个 +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}……只能在人口超过 1200 的城镇建造 +STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}……只能在雨林中建设 +STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}……只能在沙漠中建设 +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}……只能在城镇中建设 +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}……只能在靠近城市中心建造 +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}……只能在低海拔区域建设 +STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}……只能被放置在地图边缘 +STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}……林场只能设置在雪线以上的地方 +STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}……只能在雪线以上建造 +STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}……只能在雪线以下建造 STR_ERROR_PROSPECTING_WAS_UNLUCKY :{WHITE}由于运气不好,勘探失败了;请再试一次 STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}没有合适的地方勘探这种工业 -STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}没有合适的地方建设 “{STRING}” 工业 +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}没有合适的地方建设“{STRING}”工业 STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}请更改参数以生成较好的场景 # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}不能在这里建设火车站…… -STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}不能建设公共汽车站 -STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}不能建设汽车货场 -STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}此处无法建设客运电车站... -STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}此处无法建设货运电车站... +STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}不能建设公共汽车站…… +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}不能建设汽车货场…… +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}此处无法建设客运电车站…… +STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}此处无法建设货运电车站…… STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}不能在这里新建码头…… STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}不能在这里兴建机场…… STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}与另一车站相连 STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}……车站范围过大 +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}……轨道数量不正确 +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}……站台长度不正确 STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}车站过多 STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}分体站台太多 STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}公共汽车站过多 STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}汽车货场过多 STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}距离另一码头过近 STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}距离另一机场过近 -STR_ERROR_CAN_T_RENAME_STATION :{WHITE}不能重命名车站 -STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... 城镇所有的道路 -STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}道路方向不对 -STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... 途中型车站不能建在转角处 -STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... 不能在岔路口修建过路型站台 +STR_ERROR_CAN_T_RENAME_STATION :{WHITE}不能重命名车站…… +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}……城镇所有的道路 +STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}……道路方向不对 +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}……途中型车站不能建在转角处 +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}……不能在岔路口修建过路型站台 # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}不能拆除站台的一部分…… STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}请先拆除火车站 STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}不能移除公共汽车站…… -STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}不能移除汽车货场 -STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}无法移除客运电车车站... -STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}无法移除货运电车车站... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}不能移除汽车货场…… +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}无法移除客运电车车站…… +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}无法移除货运电车车站…… STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}必须先拆除汽车站 -STR_ERROR_THERE_IS_NO_STATION :{WHITE}... 这里没有车站 +STR_ERROR_THERE_IS_NO_STATION :{WHITE}……这里没有车站 STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}必须先拆除火车站 STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}必须先拆除公共汽车站 @@ -5073,36 +5096,39 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}距离 STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}距离另一路点过近 STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}不能在这里设置路点…… -STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}不能将浮标放置在这里。 +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}不能在这里设置路点…… +STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}不能将浮标放置在这里…… STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}不能更改路点名称…… STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}不能从这里拆除路点…… +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}不能移除这里的道路路点…… STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}必须先拆除铁路路点 -STR_ERROR_BUOY_IN_THE_WAY :{WHITE}指定的位置有浮标…… -STR_ERROR_BUOY_IS_IN_USE :{WHITE}…… 浮标正在被其他公司使用 +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}必须先拆除道路路点 +STR_ERROR_BUOY_IN_THE_WAY :{WHITE}……指定的位置有浮标 +STR_ERROR_BUOY_IS_IN_USE :{WHITE}……浮标正在被其他公司使用 # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}不能在这里建设列车车库…… STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}不能在这里修建汽车车库…… -STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}此处无法建造电车车库... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}此处无法建造电车车库…… STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}不能在这里建造船坞…… -STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}无法重命名车库... +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}无法重命名车库…… -STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... 列车只能停在车库中 -STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}…… 必须停在车库中 -STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... 船只只能在船坞内停下。 -STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... 飞机只有在机库中才可停止 +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}……列车只能停在车库中 +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}……必须停在车库中 +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}……船只只能在船坞内停下 +STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}……飞机只有在机库中才可停止 STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}只有列车停在车库中时才能更改挂车 STR_ERROR_TRAIN_TOO_LONG :{WHITE}列车过长 -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}无法调转车辆方向... -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... 含有多节车辆 +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}无法调转车辆方向…… +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}……含有多节车辆 STR_ERROR_INCOMPATIBLE_RAIL_TYPES :铁路类型不匹配 STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}无法移动载具…… STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}后端车头一定要跟着前端车头 -STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}找不到附近的车库…… +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}找不到附近的车库 STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}在附近找不到车库 STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :车库类型错误 @@ -5116,8 +5142,8 @@ STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}…… # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE}在更新后总长会过长 -STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}当前没有进行中的车辆更新计划. -STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(现金不够) +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}当前没有进行中的车辆更新计划 +STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(现金不够) STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}新车辆不能装载 {STRING} STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}新车辆无法在调度计划 {NUM} 时改装 @@ -5133,53 +5159,53 @@ STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}不能 STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}不能在这里铺设轨道…… STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}不能从这里拆除轨道…… STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}不能从这里拆除信号灯…… -STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}无法转换此处的信号灯… -STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... 这里没有铁路 -STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... 这里没有信号灯 +STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}无法转换此处的信号灯…… +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}……这里没有铁路 +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}……这里没有信号灯 STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}不能转换铁路的类型…… # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}必须先拆除公路 -STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... 单行道不能有交叉路口 +STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}……单行道不能有交叉路口 STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}不能在这里修筑公路…… -STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}此处无法建造电车道... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}此处无法建造电车道…… STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}不能拆除这里的公路…… -STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}无法移除此处的电车道... -STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... 这里没有道路 -STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... 这里没有电车轨道 -STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}无法转换道路类型 -STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}无法转换电车道类型 +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}无法移除此处的电车道…… +STR_ERROR_THERE_IS_NO_ROAD :{WHITE}……这里没有道路 +STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}……这里没有电车轨道 +STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}无法转换道路类型…… +STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}无法转换电车道类型…… STR_ERROR_NO_SUITABLE_ROAD :{WHITE}没有合适的道路 STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}没有合适的电车道 # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}不能在这里兴建运河…… STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}不能在这里兴建船闸…… -STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}不能在这里加设河流... -STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}必须在水上建造…… -STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}不能在水上建造…… -STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}...不能建在公海上 -STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... 不能在运河上建设 -STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... 不能在河流上建造…… +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}不能在这里加设河流…… +STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}……必须在水上建造 +STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}……不能在水上建造 +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}……不能建在海上 +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}……不能在运河上建设 +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}……不能在河流上建造 STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}请先移除运河 STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}无法在此建设渡槽…… # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}……此处已经有树木了 -STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... 树木种类与地形不符 +STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}……树木种类与地形不符 STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}不能在这里植树…… # Bridge related errors -STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}不能在这里架设桥梁 +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}不能在这里架设桥梁…… STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}必须先拆除桥梁 STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}起止点不能相同 STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}桥梁起止点不在同一水平高度 STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}桥梁对于现有地形来说位置太低了 STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}这桥梁对这个地形而言太高了 STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}起止两端必须在一条线上 -STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}桥的两端必须都位于地面上 -STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... 桥梁太长 +STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}……桥的两端必须都位于地面上 +STR_ERROR_BRIDGE_TOO_LONG :{WHITE}……桥梁太长 STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}桥梁终点将越出地图 # Tunnel related errors @@ -5189,23 +5215,23 @@ STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}必须 STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}规划位置中有另一条隧道 STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}隧道出口将超出地图边界 STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}隧道出口的地形无法处理 -STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... 隧道过长 +STR_ERROR_TUNNEL_TOO_LONG :{WHITE}……隧道过长 # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}……已有太多物件 -STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}无法建立物件... +STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}无法建立物件…… STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}目标处有其他物体 -STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}目标处有公司总部 -STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}不能购买这个地块! -STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}你已经拥有此地块! +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}……目标处有公司总部 +STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}不能购买这个地块…… +STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}……你已经拥有此地块! STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}……已达物件建造上限 # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}无法新建分组…… STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}无法删除分组…… STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}无法重命名分组…… -STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}无法移动分组... -STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... 组从属关系不能出现自环 +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}无法移动分组…… +STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}……组从属关系不能出现自环 STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}无法从该组移除所有载具…… STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}无法添加载具到该组…… STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}无法添加共享指令的载具到该组…… @@ -5231,76 +5257,81 @@ STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}不能 STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}不能改装飞机…… ###length VEHICLE_TYPES -STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}不能给列车命名... +STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}不能给列车命名…… STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}不能命名汽车…… -STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}不能命名船只 +STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}不能命名船只…… STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}不能为飞机命名…… ###length VEHICLE_TYPES -STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}不能 启动/停止 列车! -STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}不能 停止/启动 汽车... -STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}不能 停止/启动 船只…… -STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}不能 启动/停止 飞机 +STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}不能停止/启动列车…… +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}不能停止/启动汽车…… +STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}不能停止/启动船只…… +STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}不能停止/启动飞机…… ###length VEHICLE_TYPES STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}不能命令列车前往车库…… -STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}不能命令该汽车前往车库... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}不能命令汽车前往车库…… STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}不能命令船只前往船坞…… STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}不能命令飞机返回机库…… ###length VEHICLE_TYPES STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}不能购买列车…… -STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}不能购买汽车... +STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}不能购买汽车…… STR_ERROR_CAN_T_BUY_SHIP :{WHITE}不能购买船只…… STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}不能购买飞机…… ###length VEHICLE_TYPES -STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}不能重命名车辆的类型... +STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}不能重命名列车型号…… STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}不能重命名汽车型号…… STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}不能重命名船只型号…… -STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}不能重命名型号类型…… +STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}不能重命名飞机信号…… ###length VEHICLE_TYPES STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}不能出售列车…… -STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}不能出售汽车... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}不能出售汽车…… STR_ERROR_CAN_T_SELL_SHIP :{WHITE}不能出售船只…… STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}不能出售飞机…… STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}游戏中的车辆过多 STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}不能改变保养周期…… -STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... 载具已撞毁 +STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}……载具已撞毁 -STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}...并非所有车辆都相同 +STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}……并非所有车辆都相同 STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}没有可用的载具 STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}请改动您的 NewGRF 设置 STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}暂时沒有可用的载具 -STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}在{DATE_SHORT}后开始新游戏,或使用一款能提供早期载具的NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}在{DATE_SHORT}后开始新游戏,或使用一款能提供早期载具的 NewGRF + +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}没有可用的城镇道路类型 +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}请改动您的 NewGRF 设置 +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}目前没有可用的城镇道路类型 +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}在 {DATE_SHORT} 后开始新游戏,或使用一款能提供早期城镇可建造的道路类型的 NewGRF # Specific vehicle errors -STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}不能让列车冒险通过信号... -STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}不能命令列车调头... +STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}不能让列车冒险通过信号…… +STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}不能命令列车调头…… STR_ERROR_TRAIN_START_NO_POWER :没有接触网! -STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}车辆无法调头... +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}车辆无法调头…… STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}飞机正在飞行 # Order related errors -STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}没有多余的调度计划的位置了…… -STR_ERROR_TOO_MANY_ORDERS :{WHITE}调度计划过多…… +STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}没有多余的调度计划的位置了 +STR_ERROR_TOO_MANY_ORDERS :{WHITE}调度计划过多 STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}不能插入新的调度计划…… STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}不能删除调度计划…… STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}不能执行这个命令…… -STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}不能移动这条命令… -STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}不能跳过当前命令… -STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}不能跳转到选定的命令... -STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}车辆无法到达全部站点 -STR_ERROR_CAN_T_ADD_ORDER :{WHITE}车辆无法到达那个车站 -STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}一个共享此调度计划的载具无法到达那个车站 -STR_ERROR_CAN_T_COPY_ORDER_VEHICLE_LIST :{WHITE}...并不是所有的车辆都有相同的指令 -STR_ERROR_CAN_T_SHARE_ORDER_VEHICLE_LIST :{WHITE}...并不是所有的车辆都有相同的指令 +STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}不能移动这条命令…… +STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}不能跳过当前命令…… +STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}不能跳转到选定的命令…… +STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}……车辆无法到达全部站点 +STR_ERROR_CAN_T_ADD_ORDER :{WHITE}……车辆无法到达那个车站 +STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}……一个共享此调度计划的载具无法到达那个车站 +STR_ERROR_CAN_T_COPY_ORDER_VEHICLE_LIST :{WHITE}……并不是所有的车辆都有相同的指令 +STR_ERROR_CAN_T_SHARE_ORDER_VEHICLE_LIST :{WHITE}……并不是所有的车辆都有相同的指令 STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}不能共享调度计划…… STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}不能停止共享调度计划…… @@ -5316,41 +5347,42 @@ STR_ERROR_NO_DOCK :{WHITE}这里 STR_ERROR_NO_AIRPORT :{WHITE}没有机场/直升机场 STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}没有兼容载具对应道路类型的站点 STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}没有兼容此有轨电车道路类型的站点 -STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}没有适合铰接式道路车辆的站点.{}铰接式道路车辆需要通过式车站,而不是港湾式车站 +STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}没有适合铰接式道路车辆的站点。{}铰接式道路车辆需要通过式车站,而不是港湾式车站 STR_ERROR_AIRPORT_NO_PLANES :{WHITE}这架飞机不能降落在这个直升机场 STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}这架直升机不能降落在这个机场 STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}没有铁路路点 +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}没有道路路点 STR_ERROR_NO_BUOY :{WHITE}没有浮标 # Timetable related errors -STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}不能给车辆编制时刻表… +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}不能给车辆编制时刻表…… STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}载具只能在车站停靠等候 -STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}此车辆将不停靠本站。 -STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... 时刻表不完整 +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}此载具将不停靠本站 +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}……时刻表不完整 STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}……时刻表尚未开始 # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}……标志太多了 STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}不能在这里放置标志…… STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}不能更改标志的名称…… -STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}无法删除标记... +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}无法删除标记…… # Translatable comment for OpenTTD's desktop shortcut ###external 1 -STR_DESKTOP_SHORTCUT_COMMENT :基于Transport Tycoon Deluxe(运输大亨豪华版)的模拟运营游戏 +STR_DESKTOP_SHORTCUT_COMMENT :基于 Transport Tycoon Deluxe(运输大亨豪华版)的模拟运营游戏 # Translatable descriptions in media/baseset/*.ob* files ###external 10 -STR_BASEGRAPHICS_DOS_DESCRIPTION :运输大亨DOS豪华版原版图形包. -STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :运输大亨DOS豪华德语版原版图形包. -STR_BASEGRAPHICS_WIN_DESCRIPTION :运输大亨Windows豪华版原版图形包. -STR_BASESOUNDS_DOS_DESCRIPTION :运输大亨DOS豪华版原版音效包. -STR_BASESOUNDS_WIN_DESCRIPTION :Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包. -STR_BASESOUNDS_NONE_DESCRIPTION :一个空的音效包. -STR_BASEMUSIC_WIN_DESCRIPTION :Transport Tycoon Deluxe(运输大亨Windows豪华版)的原版音乐包 -STR_BASEMUSIC_DOS_DESCRIPTION :运输大亨DOS豪华版原版音乐。 -STR_BASEMUSIC_TTO_DESCRIPTION :原版运输大亨(DOS版及地图编辑器扩展)音乐。 -STR_BASEMUSIC_NONE_DESCRIPTION :一个没有实际内容的音乐包. +STR_BASEGRAPHICS_DOS_DESCRIPTION :运输大亨 DOS 豪华版原版图形包。 +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :运输大亨 DOS 豪华德语版原版图形包。 +STR_BASEGRAPHICS_WIN_DESCRIPTION :运输大亨 Windows 豪华版原版图形包。 +STR_BASESOUNDS_DOS_DESCRIPTION :运输大亨 DOS 豪华版原版音效包。 +STR_BASESOUNDS_WIN_DESCRIPTION :Transport Tycoon Deluxe Windows(运输大亨 Windows 豪华版)的原版音效包。 +STR_BASESOUNDS_NONE_DESCRIPTION :一个空的音效包。 +STR_BASEMUSIC_WIN_DESCRIPTION :Transport Tycoon Deluxe(运输大亨 Windows 豪华版)的原版音乐包 +STR_BASEMUSIC_DOS_DESCRIPTION :运输大亨 DOS 豪华版原版音乐。 +STR_BASEMUSIC_TTO_DESCRIPTION :原版运输大亨(DOS 版及地图编辑器扩展)音乐。 +STR_BASEMUSIC_NONE_DESCRIPTION :一个没有实际内容的音乐包。 ##id 0x2000 # Town building names @@ -5474,33 +5506,33 @@ STR_SV_STNAME_FALLBACK :{STRING} {NUM} ##id 0x8000 ###length 116 # Vehicle names -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (蒸汽机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank(蒸汽机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250(内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut 内燃机车 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut 内燃机车 -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (蒸汽机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (蒸汽机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (蒸汽机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (蒸汽机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (内燃机) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (电力) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (电力) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (电力) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'亚洲之星' (电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0(蒸汽机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee'(蒸汽机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4'(蒸汽机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P'(蒸汽机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash'(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25'(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37'(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47'(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125'(内燃机) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30'(电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40'(电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.'(电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'亚洲之星'(电力) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :旅客车厢 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :邮政车厢 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :煤炭挂车 @@ -5528,8 +5560,8 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :玩具篷车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :电池挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :汽水挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :塑料挂车 -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (电力) -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001'(电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1'(电力) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :旅客车厢 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :邮政车厢 @@ -5558,10 +5590,10 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :玩具篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :电池卡车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :跳跳汁挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :塑料挂车 -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (电力) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (电力) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (电力) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan'(电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops'(电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus'(电力) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera'(电力) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow 火箭 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :旅客车厢 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :邮政车厢 @@ -5744,7 +5776,7 @@ STR_FORMAT_DATE_SHORT :{1:NUM} 年 {0: STR_FORMAT_DATE_LONG :{2:NUM} 年 {1:STRING} 月 {0:STRING} 日 STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM} -STR_FORMAT_COMPANY_NUM :(公司 {COMMA}) +STR_FORMAT_COMPANY_NUM :(公司 {COMMA}) STR_FORMAT_GROUP_NAME :组 {COMMA} STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} @@ -5775,7 +5807,7 @@ STR_COMPANY_SOMEONE :某人 STR_SAVEGAME_DURATION_REALTIME :{NUM} 时 {NUM} 分 STR_SAVEGAME_NAME_DEFAULT :{COMPANY},{STRING} -STR_SAVEGAME_NAME_SPECTATOR :观众, {1:STRING} +STR_SAVEGAME_NAME_SPECTATOR :观众,{1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) @@ -5797,7 +5829,7 @@ STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} -STR_HIDDEN_ENGINE_NAME :{ENGINE} (隐藏) +STR_HIDDEN_ENGINE_NAME :{ENGINE}(隐藏) STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} @@ -5807,6 +5839,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}M +STR_CURRENCY_SHORT_GIGA :{NBSP}B +STR_CURRENCY_SHORT_TERA :{NBSP}T + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5823,6 +5860,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 268186796c..8434a6d57e 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -270,12 +270,15 @@ STR_COLOUR_SECONDARY_ORANGE :Oranžová STR_COLOUR_SECONDARY_BROWN :Hnedá STR_COLOUR_SECONDARY_GREY :Šedá STR_COLOUR_SECONDARY_WHITE :Biela +STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Rovnaká ako primárna # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL} mph STR_UNITS_VELOCITY_METRIC :{DECIMAL} km/h STR_UNITS_VELOCITY_SI :{DECIMAL} m/s +STR_UNITS_VELOCITY_GAMEUNITS_DAY :{DECIMAL}{NBSP}políčok/deň +STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}políčok/sek STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}uzlov STR_UNITS_POWER_IMPERIAL :{DECIMAL}hp @@ -317,8 +320,15 @@ STR_UNITS_HEIGHT_METRIC :{DECIMAL} m STR_UNITS_HEIGHT_SI :{DECIMAL} m # Time units used in string control characters +STR_UNITS_DAYS :{COMMA}{NBSP}{P deň dni dní} +STR_UNITS_SECONDS :{COMMA}{NBSP}sek{P 0 "unda" "undy" "únd"} +STR_UNITS_TICKS :{COMMA}{NBSP}tik{P "" y ov} +STR_UNITS_MONTHS :{NUM}{NBSP}mesiac{P "" "e" "ov"} +STR_UNITS_MINUTES :{NUM}{NBSP}{P minúta minút minút} +STR_UNITS_YEARS :{NUM}{NBSP}roky{P "" y ov} +STR_UNITS_PERIODS :{NUM}{NBSP}{P obdobie obdobia období} # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filter: @@ -343,7 +353,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Uchop a STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Prepnúť veľkosť okna STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Navigačná lišta - posúva zoznam hore/dole STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvná lišta - posúva zoznam doľava/doprava -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolovať budovy atď. na rovný terén. Ctrl označí oblasť diagonálne. Shift zobrazí odhadovanú cenu +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolovať budovy atď. na rovný terén. Ctrl+Klik+Ťah myšou označí oblasť diagonálne. Shift zobrazí odhadovanú cenu # Show engines button ###length VEHICLE_TYPES @@ -362,7 +372,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Zapnutí STR_BUTTON_DEFAULT :{BLACK}Predvolené STR_BUTTON_CANCEL :{BLACK}Zrušiť STR_BUTTON_OK :{BLACK}OK -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Upozornenie: Administrátori serveru môžu prečítať tento text. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :;+ľščťžýáíé='qwertzuiopúäasdfghjklô§ň\ yxcvbnm,.- @@ -385,7 +394,9 @@ STR_SORT_BY_TYPE :Typ STR_SORT_BY_TRANSPORTED :Prepravené STR_SORT_BY_NUMBER :Číslo STR_SORT_BY_PROFIT_LAST_YEAR :Zisk v minulom roku +STR_SORT_BY_PROFIT_LAST_PERIOD :Zisk v minulom období STR_SORT_BY_PROFIT_THIS_YEAR :Zisk v tomto roku +STR_SORT_BY_PROFIT_THIS_PERIOD :Zisk v tomto období STR_SORT_BY_AGE :Vek STR_SORT_BY_RELIABILITY :Spoľahlivosť STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Kapacita podľa typu nákladu @@ -413,9 +424,13 @@ STR_SORT_BY_POPULATION :Populácia STR_SORT_BY_RATING :Hodnotenie STR_SORT_BY_NUM_VEHICLES :Počet vozidiel STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Celkový zisk v minulom roku +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Celkový zisk v minulom období STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Celkový zisk v tomto roku +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Celkový zisk v tomto období STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Priemerný zisk v minulom roku +STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Priemerný zisk v minulom období STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Priemerný zisk v tomto roku +STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Priemerný zisk v tomto období # Group by options for vehicle list STR_GROUP_BY_NONE :Žiadne @@ -431,32 +446,32 @@ STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pozastav STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Zrýchliť priebeh hry STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Možnosti a nastavenia STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Uložiť, načítať alebo opustiť hru, ukončiť program -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Zobraziť mapu, extra výrez, tok nákladu alebo zoznam značiek -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Zobraziť zoznam miest -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Zobraziť dotácie -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Zoznam staníc spoločnosti -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Finančné informácie o spoločnosti -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Informácie o spoločnosti -STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Zobraziť knihu príbehov -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Zobraziť zoznam cieľov -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Zobrazte firemné grafy a sadzby platieb za náklad -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Hodnotenie spoločností -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Preskúmať odvetvia alebo zafinancovať výstavbu nového odvetvia -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Zoznam vlakov spoločnosti. Ctrl+klik prepína zoznam skupín/vozidiel -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Zoznam cestných vozidiel spoločnosti. Ctrl+klik prepína zoznam skupín/vozidiel -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Zoznam lodí spoločnosti. Ctrl+klik prepína zoznam skupín/vozidiel -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Zoznam lietadiel spoločnosti. Ctrl+klik prepína zoznam skupín/vozidiel -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Priblížiť pohľad -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Oddialiť pohľad -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Výstavba železnice -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Výstavba ciest -STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Výstavba električkových tratí +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Otvoriť mapu, extra výrez, tok nákladu alebo zoznam značiek +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Otvoriť zoznam miest, alebo založiť nové mesto +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Otvoriť zoznam dotácí +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Otvoriť zoznam staníc spoločnosti +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Otvoriť finančné informácie o spoločnosti +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Otvoriť informácie o spoločnosti +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Otvoriť knihu príbehov +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Otvoriť zoznam cieľov +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Otvoriť firemné grafy a sadzby platieb za náklad +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Otvoriť hodnotenia spoločností +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Preskúmať odvetvia priemyslu alebo zafinancovať výstavbu nového priemyslu +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Otvoriť zoznam vlakov spoločnosti. Ctrl+Klik zobrazí alebo skryje skupiny vlakov +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Otvoriť zoznam cestných vozidiel spoločnosti. Ctrl+Klik zobrazí alebo skryje skupiny vozidiel +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Otvoriť zoznam lodí spoločnosti. Ctrl+Klik zobrazí alebo skryje skupiny lodí +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Otvoriť zoznam lietadiel spoločnosti. Ctrl+Klik zobrazí alebo skryje skupiny vozidiel +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Priblížiť +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Oddialiť +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Výstavba železničnej infraštruktúry +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Výstavba cestnej infraštruktúry +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Výstavba električkovej infraštruktúry STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Výstavba vodných ciest STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Výstavba letísk -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Otvoriť panel nástrojov pre úpravy terénu, výsadbu stromov, a pod. -STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Zobraziť okno zvuku a hudby -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Zobraziť poslednú správu/novinku, históriu správ alebo vymazať všetky správy -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informácie o pozemku, snímka obrazovky, o OpenTTD a nástrojoch pre vývojárov +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Otvoriť panel nástrojov pre úpravy terénu, výsadbu stromov, alebo pokladanie značiek +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Otvoriť okno zvuku a hudby +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Otvoriť poslednú správu/novinku, históriu správ alebo vymazať všetky správy +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Otvoriť informácie o pozemku, menu snímkov obrazovky, o OpenTTD a nástroje pre vývojárov STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Prepnúť panely nástrojov # Extra tooltips for the scenario editor toolbar @@ -466,15 +481,15 @@ STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Posunúť začiatok o rok dozadu STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Posunúť začiatok o rok dopredu STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Kliknúť pre zadanie počiatočného roku -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Zobraziť mapu, zoznam miest -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Generovanie krajiny -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generovanie miest -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generovanie priemyslu -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Stavba cesty -STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Výstavba električkovej trate -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Sadiť stromy. Ctrl označí oblasť diagonálne. Shift zobrazí odhadovanú cenu +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Zobraziť mapu, extra výrez, zoznam miest, priemyslu a značiek +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Otvoriť menu pre úpravu terénu alebo vytváranie nového sveta +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Postaviť alebo generovať mestá +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Postaviť alebo generovať priemysel +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Výstavba cestnej infraštruktúry +STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Výstavba električkovej infraštruktúry +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Sadiť stromy. Ctrl+Klik+Ťah myšou označí oblasť diagonálne. Shift zobrazí odhadovanú cenu STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Umiestniť popis -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Umiestniť objekt. Ctrl označí oblasť diagonálne. Shift zobrazí odhadovanú cenu +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Umiestniť objekt. Ctrl+Klik+Ťah myšou označí oblasť diagonálne. Shift zobrazí odhadovanú cenu # Scenario editor file menu ###length 7 @@ -486,6 +501,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Opustiť editor STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Ukončiť + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Možnosti hry @@ -493,6 +509,7 @@ STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Nastavenia STR_SETTINGS_MENU_AI_SETTINGS :Nastavenia AI STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :Nastavenia skriptu STR_SETTINGS_MENU_NEWGRF_SETTINGS :Nastavenia NewGRF +STR_SETTINGS_MENU_SANDBOX_OPTIONS :Možnosti sandboxu STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Nastavenia priehľadnosti STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Zobraziť názvy miest STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Zobraziť názvy staníc @@ -572,6 +589,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Vymazať všetk # About menu STR_ABOUT_MENU_LAND_BLOCK_INFO :Informácie o pozemku +STR_ABOUT_MENU_HELP :Nápoveda a manuály STR_ABOUT_MENU_TOGGLE_CONSOLE :Zobraziť / skryť konzolu STR_ABOUT_MENU_AI_DEBUG :Ladenie AI/skriptu STR_ABOUT_MENU_SCREENSHOT :Snímka obrazovky @@ -580,6 +598,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :O hre 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite zarovnávač STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Prepnúť okrajové boxy STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Prepnutie zafarbenia blokov hliny +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Prepnúť kontúry widgetov ###length 31 STR_DAY_NUMBER_1ST :1. @@ -656,8 +675,11 @@ STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Graf pre STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Graf hodnotenia výkonu (najvyššie hodnotenie je 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Graf hodnoty spoločnosti +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Posledných 72 minút STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Ceny prepravy +STR_GRAPH_CARGO_PAYMENT_RATES_DAYS :{TINY_FONT}{BLACK}Dní v preprave +STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLACK}Sekúnd v preprave STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Platba za prepravu 10 jednotiek (alebo 10 000 litrov) nákladu cez 20 políčok STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Povoliť všetky STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Zakázať všetky @@ -675,6 +697,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Kliknú # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Hodnotenie spoločností STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inžinier STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Manažér dopravy STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Koordinátor dopravy @@ -706,7 +729,11 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Úver: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Spolu: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Počet vozidiel, ktoré vykazovali zisk v poslednom roku. Tieto vozidlá zahrňujú cestné vozidlá, vlaky, lode a lietadlá +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Počet vozidiel, ktoré vykazovali zisk v poslednom období. Tieto vozidlá zahrňujú cestné vozidlá, vlaky, lode a lietadlá STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Počet nedávno obsluhovaných staníc. Železničné stanice, autobusové zastávky, letiská a pod. sa počítajú oddelene aj keď patria do rovnakej stanice +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Zisk vozidla s najnižším príjmom (len vozidlá staršie ako 2 roky sú zahrnuté) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Zisk vozidla s najnižším príjmom (len vozidlá staršie ako 2 obdobia sú zahrnuté) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Množstvo peňazí zarobených v kvartáli s najmenším ziskom v posledných 12 kvartáloch STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Množstvo peňazí zarobených v kvartáli s najväčším ziskom v posledných 12 kvartáloch STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Počet jednotiek nákladu prepravených v posledných štyroch kvartáloch @@ -761,6 +788,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Kliknú STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Kliknite na hudobnú stopu pre jej odstránenie z programu (len Vlastný1 alebo Vlastný2) # Highscore window +STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Najlepšie spoločnosti STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Obchodník STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN.g :Obchodníci @@ -857,6 +885,7 @@ STR_STATUSBAR_AUTOSAVE :{RED}AUTOULOŽE STR_STATUSBAR_SAVING_GAME :{RED}* * HRA SA UKLADÁ * * STR_STATUSBAR_SPECTATOR :{WHITE}(sledujúci) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(neobmedzené financie) # News message history STR_MESSAGE_HISTORY :{WHITE}Archív správ @@ -941,6 +970,8 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} je veľmi zastaralé a urgentne potrebuje výmenu STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} nemôže nájsť cestu k pokračovaniu STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} sa stratil{G 0 "" "a" "o"} +STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :{WHITE}{VEHICLE} zisk za posledný rok bol {CURRENCY_LONG} +STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}{VEHICLE} zisk za posledné obdobie bol {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} sa nemôže dostať do ďalšej stanice, pretože tá je príliš ďaleko STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Príkaz zmeňiť tovar po zlyhaní zastavil {VEHICLE} @@ -952,13 +983,23 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G " STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Otvoriť okno skupiny zamerané na skupinu vozidla +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} už neprjíma: {CARGO_LIST} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} teraz prijíma: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Ponuka dotácie skončila:{}{}Preprava {STRING.g} z {STRING} do {STRING} už nebude dotovaná STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Dotácie stiahnuté:{}{}Preprava {STRING.g} z {STRING} do {STRING} už nie je dotovaná +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Ponuka dotácie:{}{}Prvá preprava {STRING.g} z {STRING} do {STRING} bude dotovaná miestnou správou po dobu {UNITS_YEARS_OR_MINUTES}! ###length 4 +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Dotácia udelená spoločnosti {STRING}!{}{}{STRING} z {STRING} do {STRING} bude o 50% výnosnejšia po dobu {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Dotácia udelená spoločnosti {STRING}!{}{}{STRING} z {STRING} do {STRING} bude 2x výnosnejšia po dobu {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Dotácia udelená spoločnosti {STRING}!{}{}{STRING} z {STRING} do {STRING} bude 3x výnosnejšia po dobu {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Dotácia udelená spoločnosti {STRING}!{}{}{STRING} z {STRING} do {STRING} bude 4x výnosnejšia po dobu {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Dopravný chaos v {TOWN}!{}{}Kompletná rekonštrukcie ciest zaplatená {STRING} prináša 6 mesiacov utrpenia všetkým vodičom! +STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Dopravný chaos v {TOWN}!{}{}Kompletná rekonštrukcie ciest zaplatená {STRING} prináša 6 minút utrpenia všetkým vodičom! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Prepravné monopoly! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}Autorita mesta {TOWN} podpísala kontrakt s {STRING} pre exkluzívne transportné práva na 12 mesiacov! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}Autorita mesta {TOWN} podpísala kontrakt s {STRING} pre exkluzívne transportné práva na 12 minút! # Extra view window STR_EXTRA_VIEWPORT_TITLE :{WHITE}Pohľad {COMMA} @@ -971,25 +1012,26 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Nastavi STR_GAME_OPTIONS_CAPTION :{WHITE}Možnosti hry STR_GAME_OPTIONS_TAB_GENERAL :Všeobecné +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Vyberte všeobecné nastavenia STR_GAME_OPTIONS_TAB_GRAPHICS :Grafika +STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Vyberte nastavenia grafiky STR_GAME_OPTIONS_TAB_SOUND :Zvuk +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Vyberte nastavenia zvuku a hudby +STR_GAME_OPTIONS_TAB_SOCIAL :Sociálne +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Vyberte nastavenia sociálnej integrácie STR_GAME_OPTIONS_VOLUME :Hlasitosť STR_GAME_OPTIONS_SFX_VOLUME :Zvukové efekty STR_GAME_OPTIONS_MUSIC_VOLUME :Hudba -STR_GAME_OPTIONS_VOLUME_0 :0 % -STR_GAME_OPTIONS_VOLUME_25 :25 % -STR_GAME_OPTIONS_VOLUME_50 :50 % -STR_GAME_OPTIONS_VOLUME_75 :75 % -STR_GAME_OPTIONS_VOLUME_100 :100 % +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% hlasitosť STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Mena STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výber menovej jednotky STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Libra šterlingov STR_GAME_OPTIONS_CURRENCY_USD :Americký dolár STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1032,6 +1074,8 @@ STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský do STR_GAME_OPTIONS_CURRENCY_INR :Indická rupia STR_GAME_OPTIONS_CURRENCY_IDR :Indonézska rupia STR_GAME_OPTIONS_CURRENCY_MYR :Malajzijský ringgit +STR_GAME_OPTIONS_CURRENCY_LVL :Lotyšské Laty +STR_GAME_OPTIONS_CURRENCY_PTE :Portugalské Escudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatické ukladanie STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Výber intervalu automatického ukladania @@ -1073,15 +1117,20 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Začiark STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Mierkové úkosy STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Začiarknutím tohto políčka zmeníte úkosy podľa veľkosti rozhrania +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Použiť tradičné "Sprite" písmo +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Začiarknite toto políčko, ak uprednostňujete použitie tradičného písma sprite s pevnou veľkosťou +STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Vyhladzovacie písma +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Začiarknite toto políčko, ak chcete vyhladiť písma s meniteľnou veľkosťou -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatizovaný prieskum STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Zúčastniť sa automatizovaného prieskumu +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Ak je zapnuté, OpenTTD odošle výsledky prieskumu pri ukončení hry +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}O prieskume a súkromí +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Otvorí prehliadač s viacero informáciami o automatickom prieskume +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Náhľad výsledkov prieskumu +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Zobraziť výsledky prieskumu aktuálnej hry STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafika @@ -1102,9 +1151,23 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Základn STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Výber sady hudby, ktorá má byť použitá STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatočné informácie o základnej sade hudby +STR_GAME_OPTIONS_ONLINE_CONTENT :Získať Obsah +STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(žiadne nainštalované doplnky na integráciu so sociálnymi platformami) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :Platforma: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Stav pluginu: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Beží +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Nepodarilo sa inicializovať +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} nebeží +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Vyložený +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Duplicitný doplnok +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}Nepodporovaná verzia +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Neplatný podpis + +STR_BASESET_STATUS :{STRING} {RED}({NUM} chýbajúc{P i e e}/poškoden{P ý é é} súbor{P "" y y}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nepodarilo sa načítať zoznam podporovaných rozlíšení STR_ERROR_FULLSCREEN_FAILED :{WHITE}Zobrazovanie na celú obrazovku zlyhalo @@ -1117,6 +1180,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Znížen STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zvýšenie hodnoty vašej meny oproti jednej libre (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Nastaviť kurz pre vašu menu oproti libre (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Oddeľovač: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Nastaviť oddeľovač pre vašu menu + STR_CURRENCY_PREFIX :{LTBLUE}Predpona: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Nastavit prefix pre vašu menu STR_CURRENCY_SUFFIX :{LTBLUE}Prípona: {ORANGE}{STRING} @@ -1267,12 +1333,14 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :vpravo STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}sek{P 0 "unda" "undy" "únd"} +STR_CONFIG_SETTING_INFINITE_MONEY :Neobmedzené financie: {STRING} +STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Umožniť neobmedzené míňanie peňazí, a vypnúť bankrupciu spoločností STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximálny počiatočný úver: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximálna množstvo peňazí ktoré si môže spoločnosť požičať (bez inflácie) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximálna množstvo peňazí ktoré si môže spoločnosť požičať (bez inflácie). Ak je nastavené na "Žiaden úver", žiadne peniaze nebudú dostupné, iba v prípade že ich dodáva herný skript, alebo sú nastavené neobmedzené financie STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Žiadny úver {RED}Vyžaduje Herný skript na poskytnutie počiatočných prostriedkov +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Žiadny úver STR_CONFIG_SETTING_INTEREST_RATE :Úroková sadzba: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Úroková sadzba úveru; kontroluje infláciu ak je povolená @@ -1292,7 +1360,9 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Zvoľte ako ve STR_CONFIG_SETTING_SUBSIDY_DURATION :Trvanie dotácie: {STRING} ###length 2 STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Počet rokov, na ktoré sa udelí dotácia +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Nastaviť počet období na ktoré sa udelí dotácia +STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR_PERIODS} ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Žiadne ponúknuté dotácie @@ -1300,7 +1370,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Cena stavby: {S STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Zvoľte úroveň cien výstavby a nákupov STR_CONFIG_SETTING_RECESSIONS :Recesie: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ak je povolené, každých pár rokov sa môže vyskytnúť recesia. Počas recesie je všetká produkcia znatelne nižšia (po skončení recesie sa produkcia vráti na normálnu úroveň) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ak je povolené, recesia sa môže periodicky opakovať. Počas recesie je všetká produkcia znatelne nižšia (po skončení recesie sa produkcia vráti na normálnu úroveň) STR_CONFIG_SETTING_TRAIN_REVERSING :Zakázať otáčanie vlakov v staniciach: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ak je povolené vlaky sa nebudú otáčať v staniciach, ktoré niesu na konci trate, aj keby sa im tým skrátila cesta do ďalšieho cieľa @@ -1351,10 +1421,10 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Strmosť svahu STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Strmosť svahu na diel pre vozidlá. Vyššia hodnota spôsobuje väčší problém pri prejazde cez vrcholce. STR_CONFIG_SETTING_FORBID_90_DEG :Zakázať vlakom a lodiam otáčanie o 90°: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 stupňové zákruty vznikajú keď sa spojí horizontálna a vertikálna dráha. Týmto vznikne potreba vlaku "otočiť sa" o 90 stupňov pri prechode touto zákrutou namiesto 45 stupňovího prejazdu ako pri ostatných kombináciách trate. Toto isté platí aj pre lode. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 stupňové zákruty vznikajú keď sa spojí horizontálna a vertikálna dráha. Týmto vznikne potreba vlaku "otočiť sa" o 90 stupňov pri prechode touto zákrutou namiesto 45 stupňovího prejazdu ako pri ostatných kombináciách trate STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Povoliť spájať stanice nepriamo hraničiace: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Povoľuje pridanie časti stanice bez priamej manipulácie s existujúcimi časťami. Použite Ctrl+Click na položenie novej časti. +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Povoľuje pridanie časti stanice bez priamej manipulácie s existujúcimi časťami. Použite Ctrl+Klik na položenie novej časti. STR_CONFIG_SETTING_INFLATION :Inflácia: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Povoluje infláciu v ekonomike, kedy náklady stúpaju rýchlejšie ako platby za prepravy. @@ -1390,9 +1460,11 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Vpravo ###length 2 STR_CONFIG_SETTING_SHOWFINANCES :Zobraziť rozpočet na konci roku: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :Zobraziť rozpočet na konci obdobia: {STRING} ###length 2 STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ak zapnuté, okno s financiami sa ukáže na konci každého roku a umožňuje tak rýchly náhľad na stav financií spoločnosti. +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :Ak zapnuté, okno s financiami sa ukáže na konci každého obdobia a umožňuje tak rýchly náhľad na stav financií spoločnosti. STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nové príkazy sú štandardne 'nonstop': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normálne, vlak vždy zastaví v každej stanici cez ktorú prechádza. Povolením tohoto nastavenia, vlak bude pokračovať cez všetky stanice ktoré má v ceste až do svojej cieľovej stanice. Uvedomte si to, že toto nastavenie definuje "pôvodné" nastavenie LEN pre nové trasy. Samostatne zadávané cesty môžu byť nastavené aj inak. @@ -1415,10 +1487,12 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Každý pohľad STR_CONFIG_SETTING_BRIBE :Umožniť podplácanie miestnej správy: {STRING} ###length 2 STR_CONFIG_SETTING_BRIBE_HELPTEXT :Povolí podplácanie miestnej samosprávy. Ak podplácanie zistí inšpektor, spoločnosť nebude môcť podplácať v danom meste počas nasledujúcich 6 mesiacov. +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Umožnite firmám pokúsiť sa podplatiť miestny mestský úrad. Ak si úplatok všimne kontrolór, firma nebude môcť v meste konať šesť minút STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Povoliť zakúpenie exkluzívnych dopravných práv: {STRING} ###length 2 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ak si spoločnosť zakúpi exkluzívne prepravné práva od mesta, stanice protihráčov (pasažieri a náklad) nebudú prijímať žiaden náklad po celý rok ! +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ak si spoločnosť zakúpi exkluzívne prepravné práva od mesta, stanice protihráčov (pasažieri a náklad) nebudú prijímať žiaden náklad po dobu 12 mesiacov ! +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :Ak si spoločnosť zakúpi exkluzívne prepravné práva od mesta, stanice protihráčov (pasažieri a náklad) nebudú prijímať žiaden náklad po dobu 12 minút ! STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Povoliť financovanie stavieb: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Povoliť spoločnostiam finančne prispievať na rozvoj mesta a budovanie nových domov. @@ -1443,6 +1517,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Žiadne STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Obmedzené STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normálny +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Povoliť výstavbu križovatiek na cestách či koľajniciach vlastnených protihráčom: {STRING} +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Povoliť výstavbu križovatiek na cestách či koľajniciach vlastnených protihráčom STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Povoliť prejazdné zastávky na mestských cestách: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Povoliť budovanie "prejazdných" nakládok a zastávok na cestách vlastnených mestom @@ -1456,6 +1532,8 @@ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Ak je zapnuté, STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Predvolená farba novej spoločnosti: {STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Zvoľte začiatočnú farbu pre spoločnosť +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Počiatočná sekundárna farba spoločnosti: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Zvoľte počiatočnú sekundárnu farbu spoločnosti, pokiaľ používate NewGRF, ktorý to umožňuje STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Letiská nikdy neexiprujú: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Povoluje zachovať vsetky typy letísk navzdy. @@ -1472,16 +1550,31 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :U všetkých vo STR_CONFIG_SETTING_WARN_INCOME_LESS :Varovať ak je vozidlo stratové: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ak je zapnuté, zobrazí sa správa ak vozidlo nevykázalo žiaden zisk za predošlý rok. +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ak je zapnuté, zobrazí sa správa ak vozidlo nevykázalo žiaden zisk za predošlý kalendárny rok. +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Ak je zapnuté, zobrazí sa správa ak vozidlo nevykázalo žiaden zisk za predošlé obdobie. + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Nikdy neprestať s výrobou starých vozidiel: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ak je zapnuté, všetky vozidlá zostanú k dispozícii navždy. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Časovač: {STRING} +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Zvoliť jednotky pre časovač. Toto nieje možné neskôr zmeniť.{}{}Kalendárový základ je klasický OpenTTD mód, kde rok má 12 mesiacov, a každý mesiac 28-31 dní.{}{}V hodinovom móde, produkcia tovaru a financie sú založené na minútových krokoch, čo je zhruba tak dlho, ako trvá 30 dní v kalendárovom móde. Zoskupené sú po 12 minútových obdobiach, čo je ekvivalent jedného roka v kalendárovom móde.{}{}V oboch módoch je klasický kalendár, ktorý je použitý na predstavenie nových vozidiel, domov, a inej infraštruktúry ###length 2 +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalendár +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Hodiny +STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minút za rok: {STRING} +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Zvoľte počet minút za jeden kalendárny rok. Predvolená hodnota je 12. Nastavte 0, aby sa kalendárne obdobie nemenilo. Zväčšovanie dĺžky jedného kalendárneho roka spomaľuje priebeh celej hry(uvádzanie nových vozidiel, domov a inej infraštruktúry). Nemá však vplyv na rýchlosť vozidiel, alebo ekonomickú simuláciu (mimo inflácie). Toto nastavenie je dostupné len v hodinovom móde +STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special +STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (čas kalendáru pozastavený) +STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Škála produkcie tovaru mestom: {STRING} +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Zvýšenie produkcie tovaru mestami o toľkoto percent +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Škála produkcie tovaru priemyslom: {STRING} +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Škála produkcie tovaru priemyslom o toľkoto percent +STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatická obnova dopravných prostriedkov, keď sú staré: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Ak je zapnuté, vozidlá blížiace sa ku koncu svojej životnosti budú automaticky vymenené ak sú splnené podmienky na výmenu. @@ -1499,7 +1592,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Trvanie zobraze STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Trvanie zobrazenia chybovej hlášky v červenom okne. Uvedomte si že niektoré "kritické" správy nezmiznú po uplynutí času, ale musia byť zatvorené ručne. STR_CONFIG_SETTING_HOVER_DELAY :Ukázať nápovedu: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Oneskorenie pred zobrazením nápovedy po prejdení prvku rozhrania myšou. Nápoveda môže byť eventuálne nastavené aj na kliknutie pravým tlačidlom myši pri hodnote 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Oneskorenie pred zobrazením nápovedy po prejdení na prvok rozhrania myšou. Ak je hodnota nastavenená na 0, tak je nápoveda zobrazená po kliknutí pravým tlačidlom myši STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Zobrazenie po {COMMA} milisekundách ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Klik pravým tlačidlom @@ -1511,8 +1604,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Hrúbka čiar v STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Hrúbka čiar v grafe. Tenké čiary sú presnejšie, hrubšie zasa lepšie viditeľné STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Zobraziť názov NewGRF v okne vozidiel: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Pridá riadok do zoznamu vozidiel, ktorý ukazuje z akého NewGRF vozidlo pochádza. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Zobraziť náklad, ktorý môžu vozidlá prepravovať v oknách zoznamu {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Pridá riadok do zoznamu vozidiel, ktorý ukazuje z akého NewGRF vozidlo pochádza +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Zobraziť náklad, ktorý môžu vozidlá prepravovať v oknách zoznamu: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Ak je zapnuté, v zoznamoch vozidiel sa nad ňou zobrazí prepravovateľný náklad vozidla STR_CONFIG_SETTING_LANDSCAPE :Krajina: {STRING} @@ -1525,27 +1618,27 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Pôvodný STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TERRAIN_TYPE :Typ terénu: {STRING} -STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Len TerraGenesis) Hornatosť krajiny +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Zvoľte výšku hôr a kopcov STR_CONFIG_SETTING_INDUSTRY_DENSITY :Hustota priemyslu: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Nastavte, koľko má byť vygenerovaného priemyslu a aká úroveň by mala byť zachovaná v priebehu hry STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximálna vzdialenosť od okrajov mapy pre rafinérie: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinérie ropy sú vybudované len na okrajoch mapy, tzn na pobreží pri ostrovných mapách +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinérie ropy sú vybudované len na okrajoch mapy, tzn na pobreží pri ostrovných mapách. Na mapách väčších ako 256 polí je táto hodnota proporcionálne zväčená STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Úroveň hranice snehu: {STRING} -STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Určuje v akej výške začína sneh v subarktickej krajine. Sneh tiež ovplyvňuje generáciu priemyslu a požiadavky rastu mesta. Môže byť upravené iba cez Editor scenára, alebo je vypočítane cez "pokrytie snehom" +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Zvoľte, v akej výške začína sneh v subarktickej krajine. Sneh tiež ovplyvňuje generáciu priemyslu a požiadavky rastu mesta. Môže byť upravené iba cez Editor scenára, alebo je vypočítane cez "pokrytie snehom" STR_CONFIG_SETTING_SNOW_COVERAGE :Pokrytie snehom: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Ovláda približnú zasneženú rozlohu v subpolárnej krajine. Sneh taktiež ovlyvňuje generáciu priemyslu a požiadavky rastu mesta. Používa sa iba pri vytváraní krajiny. Pevnina tesne nad výškou mora je vždy bez snehu +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Zvoľte približnú zasneženú rozlohu v subpolárnej krajine. Sneh taktiež ovlyvňuje generáciu priemyslu a požiadavky rastu mesta. Používa sa iba pri vytváraní krajiny. Pevnina tesne nad výškou mora a vo výške mora je vždy bez snehu STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Pokrytie púšťou: {STRING} -STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Ovláda približnú rozlohu púšte v subtropickej krajine. Púšť taktiež ovlyvňuje generáciu priemyslu. Používa sa iba pri vytváraní krajiny +STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Zvoľte približnú rozlohu púšte v subtropickej krajine. Púšť taktiež ovlyvňuje generáciu priemyslu. Používa sa iba pri vytváraní krajiny STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Členitosť terénu : {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Len TerraGenesis) Vyberte hustotu kopcov: Rovinaté krajiny majú menej, viac pozdĺžných kopcov. Hornaté krajiny majú veľa kopcov, ktoré sa môžu opakovať +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Vyberte tvar a hustotu kopcov. Rovinaté krajiny majú menej, viac pozdĺžných kopcov. Hornaté krajiny majú veľa menších kopcov ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Veľmi rovný STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Rovný @@ -1553,7 +1646,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Členitý STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Veľmi členitý STR_CONFIG_SETTING_VARIETY :Rozmanitosť distribúcie: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :(len TerraGenesis) Skontrolujte či mapa obsahuje oba terény aj horský aj nížinný. Pretože to robí mapy rovinatejšie, ostatné nastavenia by mali byť zvolené ako hornatý +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Zvoliť, či mapa obsahuje oba terény aj horský aj nížinný. Čím väčšia rozmanitosť, tým väčšie budú rozdiely v prevýšeniach medzi rovinami a horami STR_CONFIG_SETTING_RIVER_AMOUNT :Množstvo riek: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Vyberte koľko riek sa má generovať @@ -1573,6 +1666,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Jazdia naľavo STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Jazdia napravo STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Orientácia výškovej mapy: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Zvoľte, ktorým smerom je výšková mapa otočená, aby zapadla do herného sveta ###length 2 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Proti smeru hodinových ručičiek STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :V smere hodinových ručičiek @@ -1599,7 +1693,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tmavozelená STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fialová STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Farby prekrytia toku nákladu: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Nastavte farebnú schému použitú pre prekrytie toku nákladu. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Nastavte farebnú schému pre vrstvu toku nákladu ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Zelenočervená STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Zelenomodrá @@ -1607,7 +1701,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Sivá až červ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Odtiene šedej STR_CONFIG_SETTING_SCROLLMODE :Správanie pohľadu pri posúvaní myšou: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Reakcia na posúvanie (scrollovanie) na mape +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Správanie pri posúvaní mapy. Nastavenie "uzamknutá pozícia myši" nefunguje na všetkých systémoch, ako sú webové verzie, dotykové displeje, Linuxové distribúcie s Waylandom a iné ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Pohyb pohľadu s pravým tlačidlom myši, poloha myši uzamknutá STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Pohyb mapy s pravým tlačidlom myši, poloha myši uzamknutá @@ -1665,6 +1759,9 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Žiadna STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zatvoriť okno kliknutím pravým tlačidlom: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zatvorí okno kliknutím pravým tlačidlom do vnútra. Prestane ukazovať nápovedu pri kliknutí pravým tlačidlom! ###length 3 +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Nie +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Áno +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Áno, okrem zamknutých STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Použiť {STRING} formát dátumu v názve uloženej hry STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formát dátumu v názvoch uložených hier @@ -1690,7 +1787,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Povolí použit STR_CONFIG_SETTING_LOADING_INDICATORS :Zobraziť ukazovatele nakladania/vykladania: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Zvoľte či indikátory nakladania/vykladania budú zobrazené nad vozidlom. +STR_CONFIG_SETTING_TIMETABLE_MODE :Jednotka času pre cestovné poriadky: {STRING} +STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Zvoľte jednotky času použité v cestovných poriadkoch ###length 3 +STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Dní +STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Sekundy +STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Tiknutia STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Zobraziť príchody a odchody v cestovných poriadkoch: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Zobrazí predpokladané časy príchodov a odchodov v časových rozpisoch. @@ -1712,7 +1814,7 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Zachovať stave STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Zachovaj okno s nástrojmi na stavbu mostov/tunelov otvorené aj po použití STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automaticky odstraňovať návestidlá pri výstavbe železnice: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automaticky odstraňovať návestidla pri výstavbe železnice, ak návestidlá blokujú výstavbu. To však môže niekedy smerovať k zrážke vlakov. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automaticky odstraňovať návestidlá pri výstavbe železnice, ak návestidlá blokujú výstavbu. Toto však môže niekedy viesť k zrážke vlakov STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Limit zrýchlenia priebehu hry: {STRING} STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limit rýchlosti hry pri zapnutí zrýchlenia priebehu hry. 0 = bez limitu (tak rýchlo, ako to umožní počítač). Hodnoty pod 100% spomalia hru. Horný limit závisí od špecifikácií počítača a môže sa meniť s hrou. @@ -1728,9 +1830,11 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Prehrať zvuk p ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR :Koniec roka: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Koniec obdobia: {STRING} ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Prehrať zvuk na konci roku pri zobrazení zhrnutia výkonu spoločnosti počas roka v porovnaní s minulým rokom +STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Prehrať zvuk na konci každého obdobia, ktorý oznámy výkon spoločnosti počas tohoto obdobia oproti minulému obdobiu STR_CONFIG_SETTING_SOUND_CONFIRM :Výstavba: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Prehrať zvuk pri úspešnej výstavbe alebo pri iných akciách @@ -1777,11 +1881,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Povoliť AI po STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#op kódov pred uspaním skriptu: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximálny počet krokov skriptu počas 1 ťahu. STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maximálne využitie pamäte na skript: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Koľko pamäte môže jeden skript spotrebovať pred násilným ukončením. Pri veľkých mapách bude možno potrebné túto hodnotu zvýšiť. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Koľko pamäte môže jeden skript spotrebovať pred násilným ukončením. Pri veľkých mapách bude možno potrebné túto hodnotu zvýšiť STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Servisné intervaly v percentách: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Zvoľte či servisovanie vozidiel bude podliehať času od posledného servisu, alebo poklesom percenta návratnosti z celkovej maximálnej návratnosti. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Ak je zapnuté, vozidlá sa budú pokúšať navštíviť servis ak ich spoľahlivosť klesne pod nastavenú hodnotu percent maximálnej spoľahlivosti.{}{}Napríklad, ak je maximálna spoľahlivosť 90% a servisný interval je 20%, vozidlo sa pokúsi ísť do servisu keď dosiahne 72% STR_CONFIG_SETTING_SERVINT_TRAINS :Predvolený interval servisu pre vlaky: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Nastav predvolený interval pre nové vlaky. Ak nie je nastavený podrobnejší interval. @@ -1791,13 +1895,16 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Predvolený int STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Nastav predvolený interval pre nové lietadlá. Ak nie je nastavený podrobnejší interval. STR_CONFIG_SETTING_SERVINT_SHIPS :Predvolený interval servisu pre lode: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Nastav predvolený interval pre nové lode. Ak nie je nastavený podrobnejší interval. -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} deň/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :vypnuté STR_CONFIG_SETTING_NOSERVICE :Vypnúť servisy, ak sú vypnuté poruchy: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Ak je zapnuté, vozidlá nebudú servisované ak sú vypnuté poruchy. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Pokuta za rýchlosť nakládky pre vlaky, ktoré sú dlhšie ako stanica: {STRING} +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Keď je táto možnosť povolená, vlaky, ktoré sú pre stanicu príliš dlhé, nakladajú pomalšie ako vlak, ktorý sa do stanice zmestí. Toto nastavenie neovplyvňuje hľadanie cesty STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Obmedzenie rýchlosti pre vagóny: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Ak je zapnuté, použijú sa tiež rýchlostné obmedzenia pre vagóny na obmedzenie celkovej rýchlosti vlakov. @@ -1862,13 +1969,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Rok od ktorého STR_CONFIG_SETTING_STARTING_YEAR :Začiatok hry v roku: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Rok ukončenia skórovania: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Rok v ktorom končí hra pre zaznamenanie skóre. Na konci tohto roku sa nahrá skóre spoločnosti a zobrazí sa tabuľka s najvyšším skóre, avšak hráči môžu v hre naďalej pokračovať.{}Ak je tento rok pred začiatkom hry, tabuľka sa nikdy nezobrazí. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Rok v ktorom končí hra pre zaznamenanie skóre. Na konci tohto roku sa nahrá skóre spoločnosti a zobrazí sa tabuľka s najvyšším skóre, avšak hráči môžu v hre naďalej pokračovať.{}Ak je tento rok pred začiatkom hry, tabuľka sa nikdy nezobrazí STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nikdy STR_CONFIG_SETTING_ECONOMY_TYPE :Typ ekonomiky: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Plynulá ekonomika robí zmeny v produkcii častejšie a v menších krokoch. Zamrznutá ekonomika neumožňuje zmeny v produkcii, ani zatváranie priemyslu. Toto nastavenie nemusí ovplyvňovať priemysel z NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Plynulá ekonomika robí zmeny v produkcii častejšie a v menších krokoch. Zamrznutá ekonomika neumožňuje zmeny v produkcii, ani zatváranie priemyslu. Toto nastavenie nemusí ovplyvňovať priemysel z NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Originálna STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Plynulá @@ -1887,8 +1994,9 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automaticky sta STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Zvoľte rok od ktorého sa budú používať elekrické návestidlá na tratiach. Pred týmto rokom sa budú používať mechanické návestidlá (funkcionalita je ale stále rovnaká, iba vzhľad je rozličný) STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Prepínanie medzi typmi návestidiel: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Výber návestidiel použitých v zámene pomocou Ctrl+kliku na návestidlo počas umiestňovania návestidiel +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Výber návestidiel použitých v zámene pomocou Ctrl+Kliku na návestidlo počas umiestňovania návestidiel ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Len táto skupina STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Všetky viditeľné STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Zobraziť typy návestidiel: {STRING} @@ -1911,8 +2019,8 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Povolí mestám STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Mestá umožňujú stavbu železničných priecestí: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Povolením nastavenia sa umožní mestám stavať železničné priecestia -STR_CONFIG_SETTING_NOISE_LEVEL :Povoliť mestom určené hlukové limity pre letiská: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Ak je nastavenie vypnuté, potom môžu byť dve letiská v jednom meste. Ak je nastavenie zapnuté, počet letísk je obmedzený prijateľnou hlučnosťou, ktorá závisí od počtu obyvateľov a veľkosti letiska a jeho vzdialenosti od mesta +STR_CONFIG_SETTING_NOISE_LEVEL :Obmedziť plánovanie letiska na základe úrovne hluku: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Povolí mestám zakázať výstavbu letiska na základe ich maximálnej povolenej úrovne hluku, ktorá závisí na počte obyvateľov, veľkosti letiska a vzdialenosti od mesta. Ak ej toto nastavenie vypnuté, mestá dovoľujú maximálne 2 letiská, pokiaľ vzťah s mestom nieje nastavený na "Zhovievavý" STR_CONFIG_SETTING_TOWN_FOUNDING :Zakladanie nových miest počas hry: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Povolením nastavenia umožní hráčom zakladať nové mestá na mape. @@ -1922,7 +2030,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :povolené STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :povolené, vlastné rozloženie mesta STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Generovanie nákladu v mestách: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Množstvo nákladu produkovaného domami v mestách, podmienené celkovou populáciou mesta.{}Kvadratický rast: Mesto s dvojnásobnou veľkosťou produkuje štvornásobné množstvo cestujúcich.{}Lineárny rast: Mesto s dvojnásobnou veľkosťou produkuje dvojnásobné množstvo cestujúcich. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Množstvo nákladu produkovaného domami v mestách, podmienené celkovou populáciou mesta.{}Kvadratický rast: Mesto s dvojnásobnou veľkosťou produkuje štvornásobné množstvo cestujúcich.{}Lineárny rast: Mesto s dvojnásobnou veľkosťou produkuje dvojnásobné množstvo cestujúcich ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Kvadratické STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineárne @@ -1963,7 +2071,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4-krát STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8-krát STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Najvyššie rozlíšenie grafických prvkov: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limit maximálneho rozlíšenia grafických prvkov. Limitovanie rozlíšenia prvkov znemožní používanie vysokého rozlíšenia aj keď je dostupné. To pomáha zachovať zjednotený vzhľad hry, ak sa používa mix GRF súborov s a bez vysokého rozlíšenia. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limit maximálneho rozlíšenia grafických prvkov. Limitovanie rozlíšenia prvkov znemožní používanie vysokého rozlíšenia aj keď je dostupné. To pomáha zachovať zjednotený vzhľad hry, ak sa používa mix GRF súborov s a bez vysokého rozlíšenia ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -1986,30 +2094,34 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :žiadne STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Násobok počiatočnej veľkosti mesta: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Priemerná veľkosť veľkomiest v porovnaní k mestám na začiatku hry. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Aktualizovať spojovací graf každých {STRING} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Čas medzi po sebe idúcimi prepočítavaniami spojovacieho grafu. Každé prepočítanie vypočíta trasu pre jednu komponentu grafu. To znamená, že hodnota X tohoto nastavenia neobnoví celý graf, len niektoré jeho časti. Čím menšia táto hodnota, tým viac procesorového času je potreba na jeho vypočítanie. Čím je hodnota vyššia, tým dlhšie bude trvať začiatok distrubúcie tovaru na nových trasách +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Využiť {STRING} na prepočítanie distribučného grafu +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Čas potrebný na prepočítanie komponentov spojovacieho grafu. Keď započne prepočítavanie, vytvorí sa nové vlákno ktorému je umožnené existovať po túto dobu. Čím je hodnota nižšia, tým je väčšia pravdepodobnosť, že vlákno nedobehne kedy má. Hra sa pozastaví ("lag") pokial vlákno nedobehne. Čím je hodnota vyššia, tým dlhšie bude trvať grafu sa aktualizovať v prípade, že sa trasy zmenia STR_CONFIG_SETTING_DISTRIBUTION_PAX :Druh distribúcie pre cestujúcich: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symetricky" znamená, že približne rovnaké množstvo pasažierov bude cestovať zo stanice A do stanice B ako z B do A. "Asymetricky" znamená, že v oboch smeroch môže cestovať ľubovoľné množstvo pasažierov. "Manuálne" znamená, že sa pre pasažierov nevykoná automatická distribúcia. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symetricky" znamená, že približne rovnaké množstvo pasažierov bude cestovať zo stanice A do stanice B ako z B do A. "Asymetricky" znamená, že v oboch smeroch môže cestovať ľubovoľné množstvo pasažierov. "Manuálne" znamená, že sa pre pasažierov nevykoná automatická distribúcia STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Druh distribúcie pre poštu: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symetricky" znamená, že približne rovnaké množstvo pošty bude odoslané zo stanice A do stanice B ako z B do A. "Asymetricky" znamená, že v oboch smeroch môže byť odoslané ľubovoľné množstvo pošty. "Manuálne" znamená, že sa pre poštu nevykoná automatická distribúcia. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symetricky" znamená, že približne rovnaké množstvo pošty bude odoslané zo stanice A do stanice B ako z B do A. "Asymetricky" znamená, že v oboch smeroch môže byť odoslané ľubovoľné množstvo pošty. "Manuálne" znamená, že sa pre poštu nevykoná automatická distribúcia STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Druh distribúcie pre náklad prevážaný obrnenými vozidlami: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Náklad prevážaný obrnenými vozidlami sú cennosti v miernom, diamanty v subtropickom alebo zlato v subarktickom podnebí. NewGRF to môže zmeniť. "Symetricky" znamená, že rovnaké množstvo nákladu bude odoslané zo stanice A do stanice B a naopak. "Asymetricky" znamená, že v oboch smeroch môže byť odoslané ľubovoľné množstvo nákladu. "Manuálne" znamená, že sa pre náklad nevykoná automatická distribúcia. Doporučuje sa nastaviť na "asymetricky" alebo "manuálne" pri hraní v subarktickom alebo subtropickom, pretože banky prijímajú náklad iba v týchto podnebiach. Pre mierne podnebie si môžete vybrať aj "symetricky", pretože banky budú posielať cennosti späť do pôvodnej banky, ktorá ich odoslala. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Náklad prevážaný obrnenými vozidlami sú cennosti v miernom, diamanty v subtropickom alebo zlato v subarktickom podnebí. NewGRF to môže zmeniť. "Symetricky" znamená, že rovnaké množstvo nákladu bude odoslané zo stanice A do stanice B a naopak. "Asymetricky" znamená, že v oboch smeroch môže byť odoslané ľubovoľné množstvo nákladu. "Manuálne" znamená, že sa pre náklad nevykoná automatická distribúcia. Doporučuje sa nastaviť na "asymetricky" alebo "manuálne" pri hraní v subarktickom alebo subtropickom, pretože banky prijímajú náklad iba v týchto podnebiach. Pre mierne podnebie si môžete vybrať aj "symetricky", pretože banky budú posielať cennosti späť do pôvodnej banky, ktorá ich odoslala STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Druh distribúcie pre ostatné druhy nákladu: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymetricky" znamená, že v oboch smeroch môže byť odoslané ľubovoľné množstvo nákladu. "Manuálne" znamená, že sa pre náklad nevykoná automatická distribúcia. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymetricky" znamená, že v oboch smeroch môže byť odoslané ľubovoľné množstvo nákladu. "Manuálne" znamená, že sa pre náklad nevykoná automatická distribúcia ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuálne STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymetricky STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symetricky STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Presnosť distribúcie: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Čím viac nastavíte, tým viac procesorového času zaberie vypočítavanie trás spojov. Pokiaľ to bude trvať príliš dlho, môžete si všimnúť oneskorenie. Ak nastavíte nízku hodnotu, rozdelenie bude nepresné a môže sa stať, že náklad nebude odoslaný na miesta, ktoré očakávate. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Čím viac nastavíte, tým viac procesorového času zaberie vypočítavanie trás spojov. Pokiaľ to bude trvať príliš dlho, môžete si všimnúť oneskorenie. Ak nastavíte nízku hodnotu, rozdelenie bude nepresné a môže sa stať, že náklad nebude odoslaný na miesta, ktoré očakávate STR_CONFIG_SETTING_DEMAND_DISTANCE :Vplyv vzdialenosti na požiadavky: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ak nastavíte toto na hodnotu väčšiu ako 0, tak vzdialenosť medzi východiskovou stanicou A nejakého nákladu a možnou cieľovou stanicou B bude mať vplyv na množstvo nákladu poslaného z A do B. Čím bude B ďalej od A, tým menej nákladu bude odoslaného. Čím viac nastavíte, tým menej nákladu bude odoslaného do vzdialenejších staníc a viac nákladu bude odoslaného do bližších staníc. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ak nastavíte toto na hodnotu väčšiu ako 0, tak vzdialenosť medzi východiskovou stanicou A nejakého nákladu a možnou cieľovou stanicou B bude mať vplyv na množstvo nákladu poslaného z A do B. Čím bude B ďalej od A, tým menej nákladu bude odoslaného. Čím viac nastavíte, tým menej nákladu bude odoslaného do vzdialenejších staníc a viac nákladu bude odoslaného do bližších staníc STR_CONFIG_SETTING_DEMAND_SIZE :Množstvo vráteného nákladu pre symetrický mód: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nastavením na menej ako 100% sa bude symetrická distribúcia správať viac asymetricky. Menej nákladu sa bude povinne vracať späť, ak sa určité množstvo pošle do stanice. Ak nastavíte 0%, symetrická distribúcia sa bude správať ako asymetrická. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nastavením na menej ako 100% sa bude symetrická distribúcia správať viac asymetricky. Menej nákladu sa bude povinne vracať späť, ak sa určité množstvo pošle do stanice. Ak nastavíte 0%, symetrická distribúcia sa bude správať ako asymetrická STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Vyťaženie krátkych ciest pred použitím vysokokapacitných ciest: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Často je viac ciest medzi dvoma stanicami. Cargodist vyťaží najprv najkratšiu cestu, potom využije druhú najkratšiu cestu až kým nebude vyťažená atď. Vyťaženie je určené podľa odhadu kapacity a plánovaného využitia. Ak sú vyťažené všetky trasy a nepostačuje to, preťaží všetky trasy, s preferenciou najkapacitnejšej. Väčšinou algoritmus neodhadne kapacitu presne. Toto nastavenie umožňuje určiť na koľko percent musí byť vyťažená prvá pred výberom nasledujúcej dlhšej. Nastavte na menej ako 100%, aby sa zabránilo preplneniu staníc v prípade nadhodnotenia kapacity. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Často je viac ciest medzi dvoma stanicami. Cargodist vyťaží najprv najkratšiu cestu, potom využije druhú najkratšiu cestu až kým nebude vyťažená atď. Vyťaženie je určené podľa odhadu kapacity a plánovaného využitia. Ak sú vyťažené všetky trasy a nepostačuje to, preťaží všetky trasy, s preferenciou najkapacitnejšej. Väčšinou algoritmus neodhadne kapacitu presne. Toto nastavenie umožňuje určiť na koľko percent musí byť vyťažená prvá pred výberom nasledujúcej dlhšej. Nastavte na menej ako 100%, aby sa zabránilo preplneniu staníc v prípade nadhodnotenia kapacity STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Jednotky rýchlosti (pozemné): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Jednotky rýchlosti (námorné): {STRING} @@ -2017,6 +2129,8 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Vždy, keď sa STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiálne (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrické (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Herné jednotky (políčka/deň) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Herné jednotky (políčka/sekunda) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Uzle STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Jednotky výkonu vozidiel: {STRING} @@ -2067,29 +2181,23 @@ STR_CONFIG_SETTING_ACCOUNTING :Účtovníctvo STR_CONFIG_SETTING_VEHICLES :Vozidlá STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fyzika STR_CONFIG_SETTING_VEHICLES_ROUTING :Smerovanie +STR_CONFIG_SETTING_VEHICLES_ORDERS :Príkazy STR_CONFIG_SETTING_LIMITATIONS :Obmedzenia STR_CONFIG_SETTING_ACCIDENTS :Katastrofy / Nehody STR_CONFIG_SETTING_GENWORLD :Generovanie sveta STR_CONFIG_SETTING_ENVIRONMENT :Prostredie +STR_CONFIG_SETTING_ENVIRONMENT_TIME :Čas STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Miestne správy STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Mestá STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Priemysel STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribúcia nákladu +STR_CONFIG_SETTING_ENVIRONMENT_TREES :Stromy STR_CONFIG_SETTING_AI :Konkurenti STR_CONFIG_SETTING_AI_NPC :Počítačový hráči STR_CONFIG_SETTING_NETWORK :Sieť -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Algoritmus hľadania cesty pre vlaky: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Vyhľadávač trasy pre vlaky -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Algoritmus hľadania cesty pre cestné vozidlá: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Vyhľadávač trasy pre cestné vozidlá -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Algoritmus hľadania cesty pre lode: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Vyhľadávač trasy pre lode STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatické obrátenie na návestidlách: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Povoliť vlakom otočiť sa na návestidlách, ak tam čakajú dlhý čas -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(odporučený) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Zmeniť hodnotu nastavenia @@ -2116,6 +2224,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Pridelen # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Chyba v nastavení videa... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... nenašlo sa kompatibilné GPU. Hardvérové zrýchlenie vypnuté +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... Hra spadla kvôli ovládaču GPU. Hardvérová akcelerácia je vypnutá # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2129,6 +2238,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Viacero STR_INTRO_GAME_OPTIONS :{BLACK}Možnosti hry STR_INTRO_HIGHSCORE :{BLACK}Najvyššie skóre +STR_INTRO_HELP :{BLACK}Nápoveda a manuály STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Nastavenia STR_INTRO_NEWGRF_SETTINGS :{BLACK}Nastavenia NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Skontrolovať online obsah @@ -2148,13 +2258,14 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vybrať STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vybrať subtropickú krajinu STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vybrať krajinu hračiek -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Zobraziť možnosti hry -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Zobraziť tabuľku hráčov s najvyšším skóre -STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Zobraziť nastavenia -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Zobraziť nastavenia NewGRF +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Otvoriť možnosti hry +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Otvoriť tabuľku hráčov s najvyšším skóre +STR_INTRO_TOOLTIP_HELP :{BLACK}Získajte prístup k dokumentácií a on-line zdrojom +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Otvoriť nastavenia +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Otvoriť nastavenia NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Skontrolovať nový a aktualizovaný obsah pre stiahnutie -STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Zobraziť AI nastavenia -STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Zobraz nastavenia skriptu +STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Otvoriť nastavenia AI +STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Otvoriť nastavenia skriptu STR_INTRO_TOOLTIP_QUIT :{BLACK}Ukončiť 'OpenTTD' STR_INTRO_BASESET :{BLACK}Vo vybranej základnej sade grafiky chýba {NUM} prv{P ok ky kov}. Prosím skontrolujte aktualizácie sady grafiky. @@ -2172,9 +2283,20 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Ste si STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ste si istý, že chcete opustiť tento scenár? # Help window +STR_HELP_WINDOW_CAPTION :{WHITE}Nápoveda a manuály +STR_HELP_WINDOW_WEBSITES :{BLACK}Webstránky +STR_HELP_WINDOW_DOCUMENTS :{BLACK}Dokumenty +STR_HELP_WINDOW_README :{BLACK}Čítajma +STR_HELP_WINDOW_CHANGELOG :{BLACK}Log zmien +STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Známe chyby +STR_HELP_WINDOW_LICENSE :{BLACK}Licencia +STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD +STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Manuál / Wiki +STR_HELP_WINDOW_BUGTRACKER :{BLACK}Nahlásiť chybu +STR_HELP_WINDOW_COMMUNITY :{BLACK}Komunita # Cheat window -STR_CHEATS :{WHITE}Cheaty +STR_CHEATS :{WHITE}Možnosti sandboxu STR_CHEAT_MONEY :{LTBLUE}Zvýšiť hotovosť o {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hrať za spoločnosť: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magický buldozér (odstráni priemysel a nehnuteľnosti): {ORANGE}{STRING} @@ -2185,6 +2307,7 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Zmeniť STR_CHEAT_CHANGE_DATE :{LTBLUE}Zmeniť dátum: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Zmeniť súčasný rok STR_CHEAT_SETUP_PROD :{LTBLUE}Povoliť zmenu objemu výroby: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Nastaviť hodnotenie staníc na 100%: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Farebná schéma @@ -2194,12 +2317,20 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Zobrazi STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Zobraziť farebné schémy pre cestné vozidlá STR_LIVERY_SHIP_TOOLTIP :{BLACK}Zobraziť farebné schémy pre lode STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Zobraziť farebné schémy pre lietadlá -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vyber primárnu farbu pre vybranú schému. Ctrl + klik nastaví túto farbu pre každú schému -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vyber sekundárnu farbu pre vybranú schému. Ctrl + klik nastaví túto farbu pre každý schému +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Zobraziť farby skupín vlakov +STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Zobraziť farby skupín cestných vozidiel +STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Zobraziť farby skupín lodí +STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Zobraziť farby skupín lietadiel +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vyber primárnu farbu pre vybranú schému. Ctrl+Klik nastaví túto farbu pre každú schému +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vyber sekundárnu farbu pre vybranú schému. Ctrl+Klik nastaví túto farbu pre každú schému STR_LIVERY_PANEL_TOOLTIP :{BLACK}Vyber farebnú schému, ktorá sa má meniť (CTRL+klik pre viacero schém). Zaškrtávacie pole prepína používanie schémy +STR_LIVERY_TRAIN_GROUP_EMPTY :Niesú nastavené žiadne skupiny vlakov +STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :Nieje vytvorená žiadna skupina cestných vozidiel +STR_LIVERY_SHIP_GROUP_EMPTY :Žiadne skupiny lodí niesú nastavené +STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Niesú nastavené žiadne skupiny lietadiel ###length 23 -STR_LIVERY_DEFAULT :Štandardná schéma +STR_LIVERY_DEFAULT :Predvolená schéma STR_LIVERY_STEAM :Parný rušeň STR_LIVERY_DIESEL :Dieselový rušeň STR_LIVERY_ELECTRIC :Elektrický rušeň @@ -2302,6 +2433,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Veľkos STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Veľkosť mapy v hre{}Klikni pre triedenie podľa rozlohy STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dátum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Aktuálny dátum +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}h {NUM}m +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Hrací čas +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Hrací čas, keď hra{}nebola pozastavená STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Jazyk, verzia serveru, atd. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Vyberte hru zo zoznamu @@ -2317,6 +2451,7 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Adresa STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Kód pozvánky: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Počiatočný dátum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Aktuálny dátum: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Hrací čas: {WHITE}{NUM}h {NUM}m STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Herný skript: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Heslo: STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER JE OFFLINE @@ -2350,7 +2485,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Názov h STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nastaviť heslo STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zabezpeč hru heslom, ak nechceš povoliť verejný prístup -STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Viditeľnosť +STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Viditeľnosť: STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Aby ostatní hráči videli tento server v zozname verejných servrov STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" i ov} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximálny počet klientov: @@ -2381,7 +2516,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Načíta STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Odpojiť sa STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server je chránený. Zadaj heslo -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Spoločnosť je chránená. Zadaj heslo # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Zoznam pripojených klientov @@ -2430,13 +2564,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Pomocou STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Vyhodiť STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Ban STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Vymazať -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Odomknúť heslom STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Akcia administrátora STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Ste si istý, že chcete vyhodiť hráča '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Ste si istý, že chcete zabanovť hráča '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Ste si istý, že chcete vymazať spoločnosť '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Ste si istý, že chcete zresetovať heslo pre spoločnosť '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Použiť presmerovanie? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Nepodarilo sa uskutočniť pripojenie medzi Vami a servrom '{STRING}'.{}Chceli by ste presmerovať toto pripojenie cez '{STRING}'? @@ -2444,24 +2576,18 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Nie STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Áno, tentokrát STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Áno, znova sa nepýtať +STR_NETWORK_ASK_SURVEY_CAPTION :Zúčastniť sa automatizovaného prieskumu? +STR_NETWORK_ASK_SURVEY_TEXT :Chceli by ste sa zúčastniť automatického prieskumu?{}OpenTTD bude zdieľať prieskum keď ukončite hru.{}Toto nastavenie môžete kedykoľvek zmeniť v nastavení "Nastavenia Hry" +STR_NETWORK_ASK_SURVEY_PREVIEW :Náhľad výsledkov prieskumu +STR_NETWORK_ASK_SURVEY_LINK :O prieskume a súkromí STR_NETWORK_ASK_SURVEY_NO :Nie STR_NETWORK_ASK_SURVEY_YES :Áno STR_NETWORK_SPECTATORS :Pozorovatelia -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neukladať zadané heslo -STR_COMPANY_PASSWORD_OK :{BLACK}Nastaviť spoločnosti nové heslo -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Heslo spoločnosti -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Predvolené heslo spoločnosti -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Použiť toto heslo ako predvolené pre nové spoločnosti - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Pridať sa STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pridať sa a hrať za túto spoločnosť -STR_COMPANY_VIEW_PASSWORD :{BLACK}Heslo -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Ochrániť svoju spoločnosť heslom, aby sa zabránilo pripojeniu neoprávnených užívateľov -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Nastavte heslo spoločnosti # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Poslať @@ -2490,6 +2616,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Meno va STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Názov vašeho servra nebol nastavený. Názov môžete nastaviť na vrchu okna hry pre viacerých hráčov STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Revizia hry u tohto klienta nezodpoveda revizii hry na serveri. STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Nesprávne heslo +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Nie ste na zozname povolených klientov STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Server je plný STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Si zabanovaný na tomto serveri STR_NETWORK_ERROR_KICKED :{WHITE}Bol si vyhodený z hry @@ -2505,7 +2632,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Meno va STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Možná strata pripojenia STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Posledných {NUM} sekúnd nedorazili zo servera žiadne dáta -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :všeobecná chyba STR_NETWORK_ERROR_CLIENT_DESYNC :chyba synchronizácie STR_NETWORK_ERROR_CLIENT_SAVEGAME :nemôžem načítať mapu @@ -2517,6 +2644,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :prijatý neplat STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :chybná verzia hry STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :meno sa už používa STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :nesprávne heslo +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :nie je na zozname povolených STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :zlá spoločnosť-id in DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :vyhodený zo servera STR_NETWORK_ERROR_CLIENT_CHEATER :sa pokúšal cheatovať @@ -2581,7 +2709,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK} Hľadan STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Opúšťate OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Pravidlá a podmienky pre sťahovanie obsahu z externých webových stránok sa líšia.{}Musíte sa obrátiť na externé webové stránky pre inštrukcie, ako inštalovať obsah do OpenTTD.{}Chcete pokračovať? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/meno filtra: -STR_CONTENT_OPEN_URL :{BLACK}Navštív webstránku +STR_CONTENT_OPEN_URL :{BLACK}Webstránka STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Choď na webstránku pre ďalší obsah STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Sťahovanie STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Začať sťahovanie ozačeného obsahu @@ -2652,6 +2780,7 @@ STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Prepnú STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Prepnúť priehľadnosť mostov. Ctrl+klik uzamkne nastavenie STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Prepnúť priehľadnosť objektov ako sú majáky a vysielače. Ctrl+klik uzamkne nastavenie STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Prepnúť priehľadnosť trakčného vedenia. Ctrl+klik uzamkne nastavenie +STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Prepnúť priehladnosť textu doby nakladania/príjmu. Ctrl+Klik toto nastavenie uzamkne STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Nastaviť objekty neviditeľné namiesto priehľadných # Linkgraph legend window @@ -2667,7 +2796,10 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}preťažené # Linkgraph tooltip +STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}{CARGO_LONG} bude prepravených za mesiac z {STATION} do {STATION} ({COMMA}% celkovej kapacity){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG} bude prepravených za minútu z {STATION} do {STATION} ({COMMA}% celkovej kapacity){STRING} STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} na prepravu naspäť ({COMMA}% kapacity) +STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Priemerný čas cesty: {UNITS_DAYS_OR_SECONDS} # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Ukázať oblasť pokrytia @@ -2677,6 +2809,8 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Nezvýra STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Zobraziť oblasť pokrytia stavanej plochy STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Prijíma: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Dodáva: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Výdavky na údržbu: {GOLD}{CURRENCY_SHORT}/year +STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Výdavky na údržbu: {GOLD}{CURRENCY_SHORT}/period # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Spojiť stanicu @@ -2694,15 +2828,15 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Výstavba elekt STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Výstavba jednokoľajky (Monorail) STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Výstavba magnetickej dráhy (Maglev) -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Postaviť železničnú trať. Ctrl odstráni časť trate. Shift zobrazí odhadovanú cenu -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Postaviť železničnú trať v automatickom režime. Ctrl odstráni časť trate. Shift zobrazí odhadovanú cenu +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Postaviť železničnú trať. Ctrl+Klik odstráni časť trate. Shift zobrazí odhadovanú cenu +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Postaviť železničnú trať v automatickom režime. Ctrl+Klik odstráni časť trate. Shift zobrazí odhadovanú cenu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Postaviť vlakové depo (na nákup a opravu vlakov). Shift zobrazí odhadovanú cenu -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Umiestniť smerový bod. Ctrl umožní spájanie smerových bodov. Shift zobrazí odhadovanú cenu -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Postaviť železničnú stanicu. Ctrl umožní spájanie staníc. Shift zobrazí odhadovanú cenu -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Umiestniť železničné návestidlá. Ctrl prepína mechanické/svetelné návestidlá{}Ťahanie umiestní návestidlá na rovnom úseku trate. Ctrl umiestní návestidlá až po najbližšiu križovatku alebo návestidlo{}Ctrl+klik prepína otvorenie okna na výber návestidla. Shift zobrazí odhadovanú cenu +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Umiestniť smerový bod. Ctrl+Klik umožní spájanie smerových bodov. Shift zobrazí odhadovanú cenu +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Postaviť železničnú stanicu. Ctrl+Klik umožní spájanie staníc. Shift zobrazí odhadovanú cenu +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Umiestniť železničné návestidlá. Ctrl+Klik prepína mechanické/svetelné návestidlá{}Ťahanie umiestní návestidlá na rovnom úseku trate. Ctrl umiestní návestidlá až po najbližšiu križovatku alebo návestidlo{}Ctrl+Klik prepína otvorenie okna na výber návestidla. Shift zobrazí odhadovanú cenu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Postaviť železničný most. Shift zobrazí odhadovanú cenu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Postaviť železničný tunel. Shift zobrazí odhadovanú cenu -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Prepnúť na odstránenie železničnej trate, návestidiel, smerových bodov a staníc. Ctrl odstráni aj koľaj smerového bodu a stanice +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Prepnúť na odstránenie železničnej trate, návestidiel, smerových bodov a staníc. Ctrl+Klik odstráni aj koľaj smerového bodu a stanice STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Konvertovať/vylepšiť typ železnice. Shift zobrazí odhadovanú cenu STR_RAIL_NAME_RAILROAD :Železnica @@ -2716,7 +2850,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Vybrať # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Smerový bod -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vyber typ kontrolného bodu # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Výber železničnej stanice @@ -2729,12 +2862,20 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Dĺžka STR_STATION_BUILD_DRAG_DROP :{BLACK}Automaticky STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Automaticky postaviť stanicu podľa označeného bloku terénu -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vyberte druh stanice pre zobrazenie -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vyberte typ stanice pre vystavbu +STR_PICKER_MODE_ALL :Všetko +STR_PICKER_MODE_USED :Použité +STR_PICKER_MODE_SAVED :Uložené. + +STR_PICKER_HOUSE_CLASS_TOOLTIP :Zvoľ veľkosť zóny mesta na zobrazenie + + +STR_HOUSE_PICKER_CLASS_ZONE1 :Okraj STR_STATION_CLASS_DFLT :Pôvodná STR_STATION_CLASS_DFLT_STATION :Predvolená stanica +STR_STATION_CLASS_DFLT_ROADSTOP :Predvolená zastávka STR_STATION_CLASS_WAYP :Smerové body +STR_STATION_CLASS_WAYP_WAYPOINT :Predvolený bod # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Výber návestidla @@ -2751,7 +2892,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Výstupn STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinované návestidlo (elektrické){}Funguje zároveň ako vstupné aj výstupné návestidlo. Tým umožňuje budovať veľké "stromové" hierarchie návestidiel STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Trasové návestidlo (elektrické){}Trasové návestidlo povolí viac vlakov v jednom úseku súčasne, ak má vlak voľnú trasu, ktorú si rezervuje. Bežné trasové návestidla môžu vlaky prechádzať aj opačným smerom STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednosmerné trasové návestidlo (elektrické){}Trasové návestidlo povolí viac vlakov v jednom úseku súčasne, ak má vlak voľnú trasu, ktorú si rezervuje. Jednosmerné trasové návestidla môžu vlaky prechádzať iba z prednej strany -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Zameniť návestidlo{}Po vybratí, kliknutím na existujúce návestidlo dochádza k zámene na vybraný typ a variantu návestidla. Ctrl+klik prepne existujúcu variantu. Shift+klik zobrazí odhadovanú cenu zámeny +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Zameniť návestidlo{}Kliknutím na existujúce návestidlo dochádza k zámene na vybraný typ a variantu návestidla. Ctrl+Klik prepne existujúcu variantu. Shift+Klik zobrazí odhadovanú cenu zámeny STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Hustota návestidiel pri stavbe ťahaním STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Znížiť hustotu návestidiel STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Zvýšit hustotu návestidiel @@ -2777,16 +2918,16 @@ STR_BRIDGE_TUBULAR_SILICON :Krytý plastov # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Výstavba ciest STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Výstavba električkových tratí -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Postaviť časť cesty. Ctrl odstráni časť cesty. Shift zobrazí odhadovanú cenu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Postaviť časť električkovej trate. Ctrl odstráni časť trate. Shift zobrazí odhadovanú cenu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Postaviť časť cesty v automatickom režime. Ctrl odstráni časť cesty. Shift zobrazí odhadovanú cenu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Postaviť časť električkovej trate v automatickom režime. Ctrl odstráni časť trate. Shift zobrazí odhadovanú cenu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Postaviť časť cesty. Ctrl+Klik odstráni časť cesty. Shift zobrazí odhadovanú cenu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Postaviť časť električkovej trate. Ctrl+Klik odstráni časť trate. Shift zobrazí odhadovanú cenu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Postaviť časť cesty v automatickom režime. Ctrl+Klik odstráni časť cesty. Shift zobrazí odhadovanú cenu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Postaviť časť električkovej trate v automatickom režime. Ctrl+Klik odstráni časť trate. Shift zobrazí odhadovanú cenu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Postaviť automobilovú garáž (na výrobu a opravu vozidiel). Shift zobrazí odhadovanú cenu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Postaviť električkovú garáž (na výrobu a opravu vozidiel). Shift zobrazí odhadovanú cenu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Postaviť autobusovú zastávku. Ctrl umožní spájanie staníc. Shift zobrazí odhadovanú cenu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Postaviť električkovú zastávku. Ctrl umožní spájanie staníc. Shift zobrazí odhadovanú cenu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Postaviť vykládku. Ctrl umožní spájanie staníc. Shift zobrazí odhadovanú cenu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Postaviť električkovú vykládku. Ctrl umožní spájanie staníc. Shift zobrazí odhadovanú cenu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Postaviť autobusovú zastávku. Ctrl+Klik umožní spájanie staníc. Shift zobrazí odhadovanú cenu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Postaviť električkovú zastávku. Ctrl+Klik umožní spájanie staníc. Shift zobrazí odhadovanú cenu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Postaviť vykládku. Ctrl+Klik umožní spájanie staníc. Shift zobrazí odhadovanú cenu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Postaviť električkovú vykládku. Ctrl+Klik umožní spájanie staníc. Shift zobrazí odhadovanú cenu STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Prepnúť na stavbu jednosmernej cesty STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Postaviť cestný most. Shift zobrazí odhadovanú cenu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Postaviť električkový most. Shift zobrazí odhadovanú cenu @@ -2822,11 +2963,11 @@ STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Vodné c STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Postaviť časť vodného kanálu. Shift zobrazí odhadovanú cenu STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Postaviť stavidlá. Shift zobrazí odhadovanú cenu STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Postaviť lodenicu (na výrobu a opravu lodí). Shift zobrazí odhadovanú cenu -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Postaviť prístav. Ctrl umožní spájanie staníc. Shift zobrazí odhadovanú cenu +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Postaviť prístav. Ctrl+Klik umožní spájanie staníc. Shift zobrazí odhadovanú cenu STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Umiestniť bóju na vyznačenie trasy. Shift zobrazí odhadovanú cenu STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Postaviť akvadukt. Shift zobrazí odhadovanú cenu -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Definovať oblasť vody.{}Vytvorí vodný kanál, pri stlačení CTRL na úrovni mora zaplaví okolie -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Umiestniť rieku. Ctrl označí oblasť diagonálne +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Definovať oblasť vody. Ctrl+Klik na úrovni mora zaplaví okolie +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Umiestniť rieku. Ctrl+Klik označí oblasť diagonálne # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Orientácia lodenice @@ -2837,7 +2978,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Prístav # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Výstavba letísk -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Postaviť letisko. Ctrl umožní spájanie staníc. Shift zobrazí odhadovanú cenu +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Postaviť letisko. Ctrl+Klik umožní spájanie staníc. Shift zobrazí odhadovanú cenu # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Výber letiska @@ -2864,15 +3005,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Vytvára # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Úprava terénu -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Znížiť roh políčka. Ťahaním znížite prvý vybraný roh a vyrovnáte celú vybranú oblasť na novú výšku. Ctrl označí oblasť diagonálne. Shift zobrazí odhadovanú cenu -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Zvýšiť roh políčka. Ťahaním zvýšite prvý vybraný roh a vyrovnáte celú vybranú oblasť na novú výšku. Ctrl označí oblasť diagonálne. Shift zobrazí odhadovanú cenu -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Vyrovnať výšku terénu podľa vybraného rohu. Ctrl označí oblasť diagonálne. Shift zobrazí odhadovanú cenu -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Zakúpiť pozemok pre budúce použitie. Ctrl označí oblasť diagonálne. Shift zobrazí odhadovanú cenu +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Znížiť roh políčka. Ctrl+Ťah myšou znížite prvý vybraný roh a vyrovnáte celú vybranú oblasť na novú výšku. Ctrl+Klik+Ťah označí oblasť diagonálne. Shift zobrazí odhadovanú cenu +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Zvýšiť roh políčka. Klik+Ťah myšou zvýšite prvý vybraný roh a vyrovnáte celú vybranú oblasť na novú výšku. Ctrl+Klik+Ťah myšou označí oblasť diagonálne. Shift zobrazí odhadovanú cenu +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Vyrovnať výšku terénu podľa vybraného rohu. Ctrl+Klik+Ťah myšou označí oblasť diagonálne. Shift zobrazí odhadovanú cenu +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Zakúpiť pozemok pre budúce použitie. Ctrl+Klik+Ťah myšou označí oblasť diagonálne. Shift zobrazí odhadovanú cenu # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Výber objektu -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Vyberte objekt na vybudovanie. Ctrl označí oblasť diagonálne. Shift zobrazí odhadovanú cenu -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Vyberte triedu objektu na vybudovanie STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Náhľad objektu STR_OBJECT_BUILD_SIZE :{BLACK}Rozmery: {GOLD}{NUM} x {NUM} políčok @@ -2883,20 +3022,20 @@ STR_OBJECT_CLASS_TRNS :Vysielače STR_PLANT_TREE_CAPTION :{WHITE}Stromy STR_PLANT_TREE_TOOLTIP :{BLACK}Vybrať druh stromu na sadenie. Ak sa už strom na políčku nachádza, pridá sa viac stromov zmiešaných druhov nezávisle od vybraného druhu STR_TREES_RANDOM_TYPE :{BLACK}Náhodný druh stromov -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Umiestniť stromy náhodného druhu. Ctrl označí oblasť diagonálne. Shift zobrazí odhadovanú cenu +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Umiestniť stromy náhodného druhu. Ctrl+Klik+Ťah myšou označí oblasť diagonálne. Shift zobrazí odhadovanú cenu STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Náhodné stromy STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Zasadiť stromy náhodne po celej krajine STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normálne -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Sadiť stromy po jednom, ťahaním po krajine. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Sadiť stromy po jednom, ťahaním po krajine STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Porast -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Sadiť malé porasty ťahaním po krajine. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Sadiť malé porasty ťahaním po krajine STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Les -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Sadiť veľké lesy ťahaním po krajine. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Sadiť veľké lesy ťahaním po krajine # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generovanie územia STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Umiestniť náhodne skaly -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Vytvoriť oblasť púšte.{}Držaním Ctrl ju odstránite +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Vytvoriť oblasť púšte.{}Ctrl+Klik ju odstránite STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Pre zvýšenie/zníženie oblasti je potrebné zväčšiť územie STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Pre zvýšenie/zníženie oblasti je potrebné zmenšiť územie STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Vygenerovať náhodné územie @@ -2910,7 +3049,7 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ste si i # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Vytvorenie mesta STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nové mesto -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Založiť nové mesto. Shift+klik zobrazí odhadovanú cenu +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Založiť nové mesto. Shift zobrazí odhadovanú cenu STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Nahodné mesto STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Postaviť mesto na náhodnej pozícii STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Veľa náhodných miest @@ -2976,7 +3115,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vyber pr # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informácie o pozemku -STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu políčka. Ctrl+klik otvorí nové okno s pohľadom na políčko +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu políčka. Ctrl+Klik otvorí nové okno s pohľadom na políčko STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Náklady na odstránenie: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Náklady na odstránenie: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Zisk pri odstránení: {LTBLUE}{CURRENCY_LONG} @@ -2987,8 +3126,9 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlastní STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Vlastník železnice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Miestna správa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neznáme -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Súradnice: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Postavené: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Súradnice: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Index políčka: {LTBLUE}{NUM} ({HEX}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Postavené/opravené: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Trieda stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typ stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Trieda letiska: {LTBLUE}{STRING} @@ -3105,11 +3245,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Snímková frekvencia STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Frekvencia simulácie: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Počet herných tiknutí simulovaných za sekundu. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Počet herných tiknutí simulovaných za sekundu STR_FRAMERATE_RATE_BLITTER :{BLACK}Snímková frekvencia grafiky: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Počet video snímok vykreslených za sekundu. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Počet video snímok vykreslených za sekundu STR_FRAMERATE_SPEED_FACTOR :{BLACK}Súčasný násobok hernej rýchlosti: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Súčasná rýchlosť hry v porovnaní s rýchlosťou, akou by mala hra normálne bežať. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Súčasná rýchlosť hry v porovnaní s rýchlosťou, akou by mala hra normálne bežať STR_FRAMERATE_CURRENT :{WHITE}Teraz STR_FRAMERATE_AVERAGE :{WHITE}Priemer STR_FRAMERATE_MEMORYUSE :{WHITE}Pamäť @@ -3195,11 +3335,15 @@ STR_MAPGEN_MAPSIZE :{BLACK}Veľkos STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Výber veľkosti mapy v políčkach. Počet dostupných políčok bude o trochu nižší STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Počet miest: +STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Zvoľte hustotu miest, alebo zadajte vlastné číslo STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Názvy miest: STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Výber štýlu názvov miest STR_MAPGEN_DATE :{BLACK}Rok: +STR_MAPGEN_DATE_TOOLTIP :{BLACK}Vyberte dátum začiatku STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Počet priemyslu: +STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Zvoľte hustotu priemyslu, alebo zadajte vlastné číslo STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Najvyšší vrchol: +STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Vyberte najvyšší vrchol, ktorý sa hra pokúsi vytvoriť, meraný v nadmorskej výške STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Zvýšiť maximálnu výšku najvyššieho vrchola na mape o jeden STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Znížiť maximálnu výšku najvyššieho vrchola na mape o jeden STR_MAPGEN_SNOW_COVERAGE :{BLACK}Pokrytie snehom: @@ -3212,16 +3356,18 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Zníži STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Typ terénu: STR_MAPGEN_SEA_LEVEL :{BLACK}Rozloha mora: +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Zvoľte výšku hladiny mora STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rieky: STR_MAPGEN_SMOOTHNESS :{BLACK}Členitosť: STR_MAPGEN_VARIETY :{BLACK}Rozmanitosť distribúcie: STR_MAPGEN_GENERATE :{WHITE}Generovať +STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Vytvorte si svet a hrajte OpenTTD! STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}Nastavenia NewGRF -STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Zobraziť nastavenia NewGRF +STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Otvoriť nastavenia NewGRF STR_MAPGEN_AI_SETTINGS :{BLACK}Nastavenia AI -STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Zobraziť AI nastavenia +STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Otvoriť nastavenia AI STR_MAPGEN_GS_SETTINGS :{BLACK}Nastavenia skriptu -STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Zobraz nastavenia skriptu +STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Otvoriť nastavenia skriptu ###length 21 STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Anglické (pôvodné) @@ -3248,6 +3394,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Katalánske # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Okraje mapy: +STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Vyberte si hranice herného sveta STR_MAPGEN_NORTHWEST :{BLACK}Severo-západ STR_MAPGEN_NORTHEAST :{BLACK}Severo-východ STR_MAPGEN_SOUTHEAST :{BLACK}Juho-východ @@ -3260,7 +3407,9 @@ STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuáln STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Orientácia výškovej mapy: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Názov výškovej mapy: +STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}Názov obrazového súboru s výškovou mapou STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Veľkosť: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}Veľkosť zdrojového obrázka výškovej mapy. Aby ste dosiahli čo najlepšie výsledky, každý okraj by mal zodpovedať dostupnej dĺžke okraja mapy v OpenTTD, ako napríklad 256, 512, 1024 atď. STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Cieľová výška vrcholu @@ -3275,6 +3424,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Rovná k STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generovať rovnú krajinu STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Náhodná krajina STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Výška rovnej krajiny: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Vyberte výšku zeme nad hladinou mora STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Znizit vysku rovnej krajiny o jedno STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Zvýšiť výšku rovnej krajiny o jedno @@ -3288,10 +3438,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Skutoč STR_GENERATION_PROGRESS :{WHITE}{NUM}% hotových STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Generovanie sveta +STR_GENERATION_LANDSCAPE_GENERATION :Generujem krajinu STR_GENERATION_RIVER_GENERATION :{BLACK}Generovanie riek -STR_GENERATION_TREE_GENERATION :{BLACK}Generovanie stromov -STR_GENERATION_OBJECT_GENERATION :{BLACK}Generovanie objektov STR_GENERATION_CLEARING_TILES :{BLACK}Generovanie nerovností a skál +STR_GENERATION_TOWN_GENERATION :Vytváranie mesta +STR_GENERATION_INDUSTRY_GENERATION :Vytváranie priemyslu +STR_GENERATION_OBJECT_GENERATION :{BLACK}Generovanie objektov +STR_GENERATION_TREE_GENERATION :{BLACK}Generovanie stromov STR_GENERATION_SETTINGUP_GAME :{BLACK}Nastavovanie hry STR_GENERATION_PREPARING_TILELOOP :{BLACK}Spúšťanie políčkového cyklu STR_GENERATION_PREPARING_SCRIPT :{BLACK}Spúšťanie skriptu @@ -3361,6 +3514,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Uložiť STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Uložiť predvoľby do práve vybraného názvu # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Zmeniť parametre základnej grafiky STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Zmeniť NewGRF parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zatvoriť STR_NEWGRF_PARAMETERS_RESET :{BLACK}Resetovať @@ -3377,11 +3531,11 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Skontrol STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} na {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Typ koľají +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Typ cesty STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variabilný 60+x parameter (hexadecimálne) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Zarovnanie sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Ďalší sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Prejsť na najbližší normálny sprite, vynechajúc akékoľvek falošné/prefarbené sprites a sprites fontu použité na konci STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Prejsť na sprite @@ -3491,18 +3645,17 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Brať/ne # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Upraviť text popisu -STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu popisu. Ctrl+klik otvorí nové okno s pohľadom na popis +STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu popisu. Ctrl+Klik otvorí nové okno s pohľadom na značku STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Prejsť na ďalší popis STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Prejsť na predchádzajúci popis STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Zadajte názov pre popis # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Mestá STR_TOWN_DIRECTORY_NONE :{ORANGE}- Žiadne - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Veľkomesto){BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Názvy miest - kliknite na názov pre pohľad na mesto. Ctrl+klik otvorí nové okno s pohľadom na mesto +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Názvy miest - kliknite na názov pre pohľad na mesto. Ctrl+Klik otvorí nové okno s pohľadom na mesto STR_TOWN_POPULATION :{BLACK}Svetová populácia: {COMMA} # Town view window @@ -3510,15 +3663,18 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Veľkomesto) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Obyvateľstvo: {ORANGE}{COMMA}{BLACK} Domov: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} minulý mesiac: {ORANGE}{COMMA}{BLACK} najviac: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} poslednú minútu: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Tovar potrebný k rozrastu mesta: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} potrebný STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} potrebné v zime STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} doručené STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (stále potrebné) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (doručené) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Mesto rastie každ{P 0 ý é ých} {ORANGE}{UNITS_DAYS_OR_SECONDS} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Mesto rastie každých {ORANGE}{UNITS_DAYS_OR_SECONDS} (dotované) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Mesto {RED}nerastie{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Hlukový limit v meste: {ORANGE}{COMMA}{BLACK} max.: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu mesta. Ctrl+klik otvorí nové okno s pohľadom na mesto +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu mesta. Ctrl+Klik otvorí nové okno s pohľadom na mesto STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Miestna správa STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Zobraziť informácie o miestnej správe STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Zmeniť názov mesta @@ -3555,8 +3711,12 @@ STR_LOCAL_AUTHORITY_ACTION_BRIBE :Podplatiť mies STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Spustiť malú reklamnú kampaň, ktorá priláka viac cestujúcich a nákladu k vašej spoločnosti.{}Zabezpečí dočasné zvýšenie hodnotenia staníc v malom okruhu okolo centra mesta.{}{POP_COLOUR}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Spustiť strednú reklamnú kampaň, ktorá priláka viac cestujúcich a nákladu k vašej spoločnosti.{}Zabezpečí dočasné zvýšenie hodnotenia staníc v stredne veľkom okruhu okolo centra mesta.{}{POP_COLOUR}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Spustiť veľkú reklamnú kampaň, ktorá priláka viac cestujúcich a nákladu k vašej spoločnosti.{}Zabezpečí dočasné zvýšenie hodnotenia staníc vo veľkom okruhu okolo centra mesta.{}{POP_COLOUR}Cena: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Financovať rekonštrukciu cestnej infraštruktúry.{}Spôsobí znateľné narušenie chodu poremávky po dobu 6 mesiacov.{}{POP_COLOUR}Cena: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MINUTES :{PUSH_COLOUR}{YELLOW}Financovať rekonštrukciu cestnej infraštruktúry.{}Spôsobí znateľné narušenie chodu poremávky po dobu 6 minút.{}{POP_COLOUR}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Postaviť sochu na počesť vašej spoločnosti.{}Zabezpečí trvalé zvýšenie hodnotenia staníc v tomto meste.{}{POP_COLOUR}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Financovať výstavbu nových budov v meste.{}Zabezpečí dočasné zrýchlenie rastu tohto mesta.{}{POP_COLOUR}Cena: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Zakúpiť exkluzívne prepravné práva na 12 mesiacov.{}Autority tohot mesta neumožnia cestujúcim a priemyslu využívať prepravné stanice protihráčov. Úspešné podplatenie od protihráča tento kontrakt zruší.{}{POP_COLOUR}Cena: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Zakúpiž exkluzívne prepravné práva na 12 minút.{}Autority tohot mesta neumožnia cestujúcim a priemyslu využívať prepravné stanice protihráčov. Úspešné podplatenie od protihráča tento kontrakt zruší.{}{POP_COLOUR}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Podplatiť miestnu správu pre zvýšenie hodnotenia vašej spoločnosti a zrušiť exkluzívne prepravné práva konkurenta, s rizikom prísneho trestu pri odhalení.{}{POP_COLOUR}Cena: {CURRENCY_LONG} # Goal window @@ -3571,7 +3731,7 @@ STR_GOALS_TEXT :{ORANGE}{STRING STR_GOALS_NONE :{ORANGE}- Nič - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni pre vycentrovanie pohľadu na priemysel/mesto/políčko. Ctrl+klik otvorí nové okno s pohľadom na priemysel/mesto/políčko +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni pre vycentrovanie pohľadu na priemysel/mesto/políčko. Ctrl+Klik otvorí nové okno s pohľadom na priemysel/mesto/políčko # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Otázka @@ -3603,9 +3763,15 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Zavrieť # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Dotácie STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Ponúknuté dotácie: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} z {STRING} do {STRING}{YELLOW} ({STRING}) STR_SUBSIDIES_NONE :{ORANGE}Žiadne STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}V súčasnosti poskytované dotácie: -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliknúť na trasu pre centrovanie pohľadu na továreň/mesto +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} z {STRING} do {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliknúť na trasu pre centrovanie pohľadu na továreň/mesto. Ctrl+Klik otvorí nové okno s pohľadom na továreň/mesto +STR_SUBSIDIES_OFFERED_EXPIRY_DATE :do {DATE_SHORT} +STR_SUBSIDIES_OFFERED_EXPIRY_TIME :do {UNITS_MONTHS_OR_MINUTES} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :do {DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :Zostáva {UNITS_MONTHS_OR_MINUTES} # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Kniha príbehov @@ -3621,13 +3787,20 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ísť na STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Neplatný odkaz na cieľ # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Názvy staníc - klikni pre pohľad na polohu stanice. Ctrl+klik presunie pohľad na stanicu -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Podržte CTRL pre výber viacerých položiek +STR_STATION_LIST_TOOLTIP :{BLACK}Názvy staníc - klikni pre pohľad na polohu stanice. Ctrl+Klik otvorí nové okno s pohľadom na stanicu +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl+Klik pre výber viacerých položiek STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stanic{P a e ""} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Žiadne - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Označiť všetky možnosti +STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Všetky druhy nákladu a žiadne hodnotenia +STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Viacero druhov nákladu +STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Žiaden typ nákladu +STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :Iba hodnotenie bez nákladu +STR_STATION_LIST_CARGO_FILTER_SELECT_ALL :Vybrať všetky a bez hodnotenia +STR_STATION_LIST_CARGO_FILTER_NO_RATING :Žiadne hodnotenie tovaru +STR_STATION_LIST_CARGO_FILTER_EXPAND :Zobraziť viac... # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} @@ -3643,6 +3816,8 @@ STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Spoločnosť {Y STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Hodnotenie STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Zobraziť hodnotenia stanice +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}Dodávka za mesiac a miestne hodnotenie: +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}Dodávka za minútu a miestne hodnotenie: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Zoskupiť podľa @@ -3678,7 +3853,7 @@ STR_CARGO_RATING_VERY_GOOD :Veľmi dobré STR_CARGO_RATING_EXCELLENT :Výborné STR_CARGO_RATING_OUTSTANDING :Perfektné -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu stanice. Ctrl+klik otvorí nové okno s pohľadom na stanicu +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu stanice. Ctrl+Klik otvorí nové okno s pohľadom na stanicu STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Zmeniť názov stanice STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Zobraziť všetky vlaky, ktoré majú túto stanicu v cestovnom poriadku @@ -3693,9 +3868,9 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Zakáž # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu smerového bodu. Ctrl+klik otvorí nové okno s pohľadom na smerový bod +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu smerového bodu. Ctrl+Klik otvorí nové okno s pohľadom na smerový bod STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Zmeniť meno smerového bodu -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu bóje. Ctrl+klik otvorí nové okno s pohľadom na bóju +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu bóje. Ctrl+Klik otvorí nové okno s pohľadom na bóju STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Zmeniť meno bóje STR_EDIT_WAYPOINT_NAME :{WHITE}Upraviť názvy smerových bodov @@ -3703,6 +3878,8 @@ STR_EDIT_WAYPOINT_NAME :{WHITE}Upraviť # Finances window STR_FINANCES_CAPTION :{WHITE}Financie spoločnosti {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_YEAR_CAPTION :{WHITE}Rok +STR_FINANCES_PERIOD_CAPTION :{WHITE}Obdobie ###length 3 STR_FINANCES_REVENUE_TITLE :{WHITE}Výnosy @@ -3738,9 +3915,9 @@ STR_FINANCES_MAX_LOAN :{WHITE}Maximál STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BANK_BALANCE :{WHITE}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Požičať {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Zvýšiť veľkosť úveru. Crtl+klik požičia koľko sa dá +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Zvýšiť veľkosť úveru. Crtl+Klik požičia koľko sa dá STR_FINANCES_REPAY_BUTTON :{BLACK}Splatiť {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Splatiť časť úveru. Ctrl+klik splatí koľko sa dá +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Splatiť časť úveru. Ctrl+Klik splatí koľko sa dá STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infraštruktúra # Company view @@ -3769,11 +3946,13 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Postavi STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Pozrieť sídlo STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Pozrieť sídlo spoločnosti STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Premiestniť sídlo -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sídlo spoločnosti je možné premiestniť za 1% hodnoty spoločnosti. Shift+klik zobrazí odhadovanú cenu +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sídlo spoločnosti je možné premiestniť za 1% hodnoty spoločnosti. Shift zobrazí odhadovanú cenu STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaily STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Zobraziť podrobné políčka infraštruktúry STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Dať peniaze STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Presunúť peniaze do tejto spoločnosti +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Násilné pravziatie +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Násilné pravziatie tejto spoločnosti STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nová tvár STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Vybrať novú tvár prezidenta @@ -3789,6 +3968,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Meno prezidenta STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Zadajte množstvo peňazí, ktoré chcete dať spoločnosti STR_BUY_COMPANY_MESSAGE :{WHITE}Hľadáme záujemcu o kúpu našej spoločnosti{}{}Chcete kúpiť našu spoločnosť {COMPANY} za {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}V násilnom prevziatí spoločnosti {COMPANY} odkúpite všetky jej aktíva, splatíte dlhy, a zaplatíte sumu vo výške zisku 2 rokov.{}{}Táto cena je zhruba {CURRENCY_LONG}.{}{}Chete pokračovať v tomto násilnom prevzatí? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} - Infraštruktúra @@ -3801,9 +3981,10 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Vodné k STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stanice: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Políčka staníc STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Letiská +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENCY_LONG}/rok +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/obdobie # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Priemysel STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nič - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% prepraven{P é é ých}){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3811,7 +3992,7 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} a {NUM} ďalšie... -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Názvy priemyslu - klikni na meno pre vycentrovanie pohľadu na priemysel. Ctrl+klik otvorí nové okno s pohľadom na priemysel +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Názvy priemyslu - klikni na meno pre vycentrovanie pohľadu na priemysel. Ctrl+Klik otvorí nové okno s pohľadom na priemysel STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Prijímaný náklad: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Produkovaný náklad: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Všetky druhy nákladu @@ -3820,8 +4001,9 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :Žiadne # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produkcia minulý mesiac: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Produkcia za poslednú minútu: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% prepraven{P é é ých}) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu priemyslu. Ctrl+klik otvorí nové okno s pohľadom na priemysel +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu priemyslu. Ctrl+Klik otvorí nové okno s pohľadom na priemysel STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Úroveň produkcie: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Priemysel oznámil blížiace sa uzatvorenie! @@ -3861,6 +4043,7 @@ STR_VEHICLE_LIST_REPLACE_VEHICLES :Vymeniť vozidl STR_VEHICLE_LIST_SEND_FOR_SERVICING :Vykonať servis STR_VEHICLE_LIST_CREATE_GROUP :Vytvoriť skupinu STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Zisk tento rok: {CURRENCY_LONG} (minulý rok: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Zisk za toto obdobie: {CURRENCY_LONG} (minulé obdobie: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -3895,7 +4078,7 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}Vytvori STR_GROUP_DELETE_TOOLTIP :{BLACK}Zrušiť vybranú skupinu STR_GROUP_RENAME_TOOLTIP :{BLACK}Premenovať vybranú skupinu STR_GROUP_LIVERY_TOOLTIP :{BLACK}Zmeniť farebnú schému vybranej skupiny -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Znemožniť automatické nahradzovanie v skupine. Ctrl+klik znemožní nahradzovanie aj v podskupinách. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Znemožniť automatické nahradzovanie v skupine. Ctrl+klik znemožní nahradzovanie aj v podskupinách STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Vymazať skupinu STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Ste si istý, že chcete vymazať túto skupinu a jej podskupiny? @@ -3906,7 +4089,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Odstrániť vš STR_GROUP_RENAME_CAPTION :{BLACK}Premenovať skupinu STR_GROUP_PROFIT_THIS_YEAR :Zisk v tomto roku: +STR_GROUP_PROFIT_THIS_PERIOD :Zisk za toto obdobie: STR_GROUP_PROFIT_LAST_YEAR :Zisk v minulom roku: +STR_GROUP_PROFIT_LAST_PERIOD :Zisk za posledné obdobie: STR_GROUP_OCCUPANCY :Súčasné využitie: STR_GROUP_OCCUPANCY_VALUE :{NUM}% @@ -3933,6 +4118,8 @@ STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Rýchlos STR_PURCHASE_INFO_SPEED :{BLACK}Rýchlosť: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Rýchlosť na oceáne: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Rýchlosť na kanále/rieke: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}Prevádzkové náklady: {GOLD}{CURRENCY_LONG}/rok +STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Prevádzkové náklady: {GOLD}{CURRENCY_LONG}/obdobie STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapacita: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(možná prestavba) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Vyrobené: {GOLD}{NUM}{BLACK} Životnosť: {GOLD}{COMMA} rok{P "" y ov} @@ -3959,10 +4146,10 @@ STR_CARGO_TYPE_FILTER_FREIGHT :Nákladné STR_CARGO_TYPE_FILTER_NONE :Žiadne ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Výber vlakov. Pre získanie informácií klikni na vlak. CTRL+klik prepne skrytie typu vlaku. -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Výber cestných vozidiel. Pre získanie informácií klikni na vozidlo. CTRL+klik prepne skrytie typu vozidla. -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Zoznam lodí. Pre získanie informácií klikni na loď. CTRL+klik prepnie skrytie typu lode. -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Zoznam lietadiel. Pre získanie informácií klikni na lietadlo. CTRL+klik prepnie skrytie typu lietadla. +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Výber vlakov. Pre získanie informácií klikni na vlak. Ctrl+Klik zobrazí/skryje tento typ vlaku +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Výber cestných vozidiel. Pre získanie informácií klikni na vozidlo. Ctrl+Klik zobrazí/skryje tento typ vozidla +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Zoznam lodí. Pre získanie informácií klikni na loď. Ctrl+Klik zobrazí/skryje tento typ lode +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Zoznam lietadiel. Pre získanie informácií klikni na lietadlo. Ctrl+Klik zobrazí/skryje tento typ lietadla ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kúpiť vlak @@ -3977,16 +4164,16 @@ STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Kúpiť STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Kúpiť a prestavať lietadlo ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybraný vlak. Shift+klik zobrazí odhadovanú cenu bez nákupu -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybrané vozidlo. Shift+klik zobrazí odhadovanú cenu bez nákupu -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybranú loď. Shift+klik zobrazí odhadovanú cenu bez nákupu -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybrané lietadlo. Shift+klik zobrazí odhadovanú cenu bez nákupu +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybraný vlak. Shift zobrazí odhadovanú cenu bez nákupu +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybrané vozidlo. Shift zobrazí odhadovanú cenu +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybranú loď. Shift zobrazí odhadovanú cenu bez nákupu +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kúpiť vybrané lietadlo. Shift zobrazí odhadovanú cenu bez nákupu ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kúpiť a prestavať vybraný vlak. Shift+klik zobrazí odhadovanú cenu bez nákupu -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kúpiť a prestavať vybrané vozidlo. Shift+klik zobrazí odhadovanú cenu bez nákupu -STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kúpiť a prestavať vybranú loď. Shift+klik zobrazí odhadovanú cenu bez nákupu -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kúpiť a prestavať vybrané lietadlo. Shift+klik zobrazí odhadovanú cenu bez nákupu +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kúpiť a prestavať vybraný vlak. Shift zobrazí odhadovanú cenu bez nákupu +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kúpiť a prestavať vybrané vozidlo. Shift zobrazí odhadovanú cenu bez nákupu +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kúpiť a prestavať vybranú loď. Shift zobrazí odhadovanú cenu nákupu +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Kúpiť a prestavať vybrané lietadlo. Shift+Klik zobrazí odhadovanú cenu bez nákupu ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Premenovať @@ -4036,7 +4223,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vo STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vlaky - ťahaj ľavým kliknutím pre pridanie/odoberanie vozidiel, pravým kliknutím sa zobrazia informácie o vozidle. Ctrl+pravé kliknutie zobrazí celkové informácie +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vlaky - ťahaj ľavým kliknutím pre pridanie/odoberanie vozidiel, pravým kliknutím sa zobrazia informácie o vozidle. Podržte Ctrl pre aplikovanie oboch funkcií na reťaz STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vozidlá - pravým kliknutím na vozidlo sa zobrazia informácie STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Lode - pravým kliknutím na loď sa zobrazia informácie STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lietadlá - pravým kliknutím na lietadlo sa zobrazia informácie @@ -4078,16 +4265,16 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Klonova STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonovať lietadlo ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Zakúpiť kópiu vlaku vrátane vagónov. Kliknite na toto tlačidlo a potom na vlak v depe alebo mimo neho. Ctrl+klik bude zdieľať príkazy. Shift+klik zobrazí odhadovanú cenu -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Zakúpiť kópiu cestného vozidla. Kliknite na toto tlačidlo a potom na vozidlo v garáži alebo mimo nej. Ctrl+klik bude zdieľať príkazy. Shift+klik zobrazí odhadovanú cenu -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Zakúpiť kópiu lode. Kliknite na toto tlačidlo a potom na loď v lodenici alebo mimo nej. Ctrl+klik bude zdieľať príkazy. Shift+klik zobrazí odhadovanú cenu -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Zakúpiť kópiu lietadla. Kliknite na toto tlačidlo a potom na lietadlo v hangári alebo mimo neho. Ctrl+klik bude zdieľať príkazy. Shift+klik zobrazí odhadovanú cenu +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Zakúpiť kópiu vlaku vrátane vagónov. Kliknite na toto tlačidlo a potom na vlak v depe alebo mimo neho. Ctrl+Klik bude zdieľať príkazy. Shift zobrazí odhadovanú cenu +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Zakúpiť kópiu cestného vozidla. Kliknite na toto tlačidlo a potom na vozidlo v garáži alebo mimo nej. Ctrl+Klik bude zdieľať príkazy. Shift zobrazí odhadovanú cenu +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Zakúpiť kópiu lode. Kliknite na toto tlačidlo a potom na loď v lodenici alebo mimo nej. Ctrl+Klik bude zdieľať príkazy. Shift zobrazí odhadovanú cenu +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Zakúpiť kópiu lietadla. Kliknite na toto tlačidlo a potom na lietadlo v hangári alebo mimo neho. Ctrl+Klik bude zdieľať príkazy. Shift zobrazí odhadovanú cenu ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu depa. Ctrl+klik otvorí nové okno s pohľadom na depo -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu garáže. Ctrl+klik otvorí nové okno s pohľadom na garáž -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu lodenice. Ctrl+klik otvorí nové okno s pohľadom na lodenicu -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu hangáru. Ctrl+klik otvorí nové okno s pohľadom na hangár +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu depa. Ctrl+Klik otvorí nové okno s pohľadom na depo +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu garáže. Ctrl+Klik otvorí nové okno s pohľadom na garáž +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu lodenice. Ctrl+Klik otvorí nové okno s pohľadom na lodenicu +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu hangáru. Ctrl+Klik otvorí nové okno s pohľadom na hangár ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Zobraziť zoznam všetkých vlakov, ktoré majú toto depo v zozname príkazov @@ -4125,6 +4312,18 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE :{G=z}električk STR_ENGINE_PREVIEW_AIRCRAFT :{G=s}lietadlo STR_ENGINE_PREVIEW_SHIP :{G=z}loď +STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING} +STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING} +STR_ENGINE_PREVIEW_COST_WEIGHT :Cena: {CURRENCY_LONG} Váha: {WEIGHT_SHORT} +STR_ENGINE_PREVIEW_COST_MAX_SPEED :Cena: {CURRENCY_LONG} Max. Rýchlosť: {VELOCITY} +STR_ENGINE_PREVIEW_SPEED_POWER :Rýchlosť: {VELOCITY} Výkon: {POWER} +STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Rýchlosť: {VELOCITY} Výkon: {POWER} Max. T.E.: {FORCE} +STR_ENGINE_PREVIEW_TYPE :Typ lietadla: {STRING} +STR_ENGINE_PREVIEW_TYPE_RANGE :Typ lietadla: {STRING} Dolet: {COMMA} políčok +STR_ENGINE_PREVIEW_RUNCOST_YEAR :Prevádzkové náklady: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Prevádzkové náklady: {CURRENCY_LONG}/obdobie +STR_ENGINE_PREVIEW_CAPACITY :Kapacita: {CARGO_LONG} +STR_ENGINE_PREVIEW_CAPACITY_2 :Kapacita: {CARGO_LONG}, {CARGO_LONG} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Výmena {STRING} - {STRING} @@ -4181,27 +4380,27 @@ STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Ctrl+ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu vlaku. Dvojité kliknutie bude sledovať vlak v hlavnom pohľade. Ctrl+klik otvorí nové okno s pohľadom na vlak -STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu vozidla. Dvojité kliknutie bude sledovať vozidlo v hlavnom pohľade. Ctrl+klik otvorí nové okno s pohľadom na vozidlo -STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu lode. Dvojité kliknutie bude sledovať loď v hlavnom pohľade. Ctrl+klik otvorí nové okno s pohľadom na loď -STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu lietadla. Dvojité kliknutie bude sledovať lietadlo v hlavnom pohľade. Ctrl+klik otvorí nové okno s pohľadom na lietadlo +STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu vlaku. Dvojité kliknutie bude sledovať vlak v hlavnom pohľade. Ctrl+Klik otvorí nové okno s pohľadom na vlak +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu vozidla. Dvojité kliknutie bude sledovať vozidlo v hlavnom pohľade. Ctrl+Klik otvorí nové okno s pohľadom na vozidlo +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu lode. Dvojité kliknutie bude sledovať loď v hlavnom pohľade. Ctrl+Klik otvorí nové okno s pohľadom na loď +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu lietadla. Dvojité kliknutie bude sledovať lietadlo v hlavnom pohľade. Ctrl+Klik otvorí nové okno s pohľadom na lietadlo ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslať vlak do depa. Ctrl+klik iba servis -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslať vozidlo do garáže. Ctrl+klik iba servis. -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslať loď do lodenice. Ctrl+klik iba servis -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslať lietadlo do hangáru. Ctrl+klik iba servis +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslať vlak do depa. Ctrl+Klik iba servis +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslať vozidlo do garáže. Ctrl+Klik iba servis. +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslať loď do lodenice. Ctrl+Klik iba servis +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslať lietadlo do hangáru. Ctrl+Klik iba servis ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Zakúpiť kópiu vlaku vrátane vagónov. Ctrl+klik bude zdieľať príkazy. Shift+klik zobrazí odhadovanú cenu -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Zakúpiť kópiu cestného vozidla. Ctrl+klik bude zdieľať príkazy. Shift+klik zobrazí odhadovanú cenu -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Zakúpiť kópiu lode. Ctrl+klik bude zdieľať príkazy. Shift+klik zobrazí odhadovanú cenu -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Zakúpiť kópiu lietadla. Ctrl+klik bude zdieľať príkazy. Shift+klik zobrazí odhadovanú cenu +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Zakúpiť kópiu vlaku vrátane vagónov. Ctrl+Klik bude zdieľať príkazy. Shift zobrazí odhadovanú cenu +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Zakúpiť kópiu cestného vozidla. Ctrl+Klik bude zdieľať príkazy. Shift zobrazí odhadovanú cenu +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Zakúpiť kópiu lode. Ctrl+Klik bude zdieľať príkazy. Shift zobrazí odhadovanú cenu +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Zakúpiť kópiu lietadla. Ctrl+Klik bude zdieľať príkazy. Shift zobrazí odhadovanú cenu STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Prinútiť vlak pokračovať cez návestidlo bez čakania na zelenú STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Otočiť vlak naopak STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Prinútiť vozidlo otočiť sa naopak -STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na cieľovú pozíciu. Ctrl+klik otvorí nové okno s pohľadom na cieľ +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na cieľovú pozíciu. Ctrl+Klik otvorí nové okno s pohľadom na cieľ ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Prestavať vlak na iný druh nákladu @@ -4230,24 +4429,26 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Činnos # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Nakladá / Vykladá STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Opúšta +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Čakám na rozloženie STR_VEHICLE_STATUS_CRASHED :{RED}Zničené! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Pokazený STR_VEHICLE_STATUS_STOPPED :{RED}Zastavené -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Zastavuje, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Zastavuje STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Nie je prúd STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Čakám na uvoľnenie trate STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}K ďalšej destinácii je to príliš ďaleko -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Smeruje do {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Bez určenia, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Smeruje do {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Smeruje do {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Servis v {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Smeruje do {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Bez určenia +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Smeruje do {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Smeruje do {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Servis v {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Rozbaliť a poslať do servisu v {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Nedokáže sa dostať do {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Nedokáže sa dostať do {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Nedokáže sa dostať do {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Nedokáže sa dostať do {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Nedokáže sa dostať do {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Nedokáže sa dostať do {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Nedokáže sa dostať do {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Nedokáže sa dostať do {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4270,6 +4471,7 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Pomenova STR_VEHICLE_INFO_AGE :{COMMA} rok{P "" y ov} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} rok{P "" y ov} ({COMMA}) STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Vek: {LTBLUE}{STRING}{BLACK} Prevádzkové náklady: {LTBLUE}{CURRENCY_LONG}/rok +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Vek: {LTBLUE}{STRING}{BLACK} Prevádzkové náklady: {LTBLUE}{CURRENCY_LONG}/obdobie STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. rýchlosť: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Rýchlosť: {LTBLUE}{VELOCITY} {BLACK}Typ lietadla: {LTBLUE}{STRING} @@ -4279,6 +4481,8 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Hmotnos STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Zisk v tomto roku: {LTBLUE}{CURRENCY_LONG} (minulý rok: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Zisk v tomto roku: {LTBLUE}{CURRENCY_LONG} (minulý rok: {CURRENCY_LONG}) {BLACK}Min. výkon: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Zisk za toto obdobie: {LTBLUE}{CURRENCY_LONG} (minulé obdobie: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Zisk za toto obdobie: {LTBLUE}{CURRENCY_LONG} (miunlé obdobie: {CURRENCY_LONG}) {BLACK}Min. výkon: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Spoľahlivosť: {LTBLUE}{COMMA}% {BLACK}Poruchy od posledného servisu: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Vyrobený: {LTBLUE}{NUM}{BLACK} Cena: {LTBLUE}{CURRENCY_LONG} @@ -4289,9 +4493,22 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapacita STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer kredity: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servisný interval: {LTBLUE}{COMMA}{NBSP}dní{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Servisný interval: {LTBLUE}{COMMA}{NBSP}{P "minúta" "minúty" "minút"}{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servisný interval: {LTBLUE}{COMMA}%{BLACK} {STRING} +STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Posledný servis: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Posledný servis: pred {LTBLUE}{NUM} {P "minútou" "minútami" "minútami"} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Zvýši servisný interval o 10 dní. Ctrl+klik zvýši servisný interval o 5 dní +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Zvýši servisný interval o 5 minút. Ctrl+klik zvýši servisný interval o 1 minútu +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Zvýši servisný interval o 10 percent. Ctrl+klik zvýši servisný interval o 5 percent +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Zníži servisný interval o 10 dní. Ctrl+klik skráti servisný interval o 5 dní +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Zníži servisný interval o 5 minút. Ctrl+klik skráti servisný interval o 1 minútu +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Zníži servisný interval o 10 percent. Ctrl+klik skráti servisný interval o 5 percent STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Zmeniť typ servisného intervalu STR_VEHICLE_DETAILS_DEFAULT :Štandardné +STR_VEHICLE_DETAILS_DAYS :Dní +STR_VEHICLE_DETAILS_MINUTES :Minúty STR_VEHICLE_DETAILS_PERCENT :Percentáž ###length VEHICLE_TYPES @@ -4330,7 +4547,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nová ka STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}{}{BLACK}Príjem z prestavby: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cena prestavby: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Príjem z prestavby: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Vyber vozidlo k prestavbe. Ťah myšou umožní vybrať viacej vozidiel. Kliknutie do voľného mista vybere celé vozidlo. Ctrl+Klik vyberie vozidlo a následujúci reťaz +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Vyber vozidlo k prestavbe. Klik+Ťah myšou umožní vybrať viacej vozidiel. Kliknutie do voľného mista vybere celé vozidlo. Ctrl+Klik vyberie vozidlo a následujúci reťaz ###length VEHICLE_TYPES STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Vybrať typ prepravovaného nákladu @@ -4355,8 +4572,9 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Cestovný poriadok STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Prepnút na zobrazenie cestovného poriadku -STR_ORDERS_LIST_TOOLTIP :{BLACK}Zoznam príkazov - kliknúť na príkaz pre označenie. Ctrl+klik presunie pohľad na cieľ príkazu +STR_ORDERS_LIST_TOOLTIP :{BLACK}Zoznam príkazov - kliknúť na príkaz pre označenie. Ctrl+Klik presunie pohľad na cieľ príkazu STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Koniec príkazov - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Koniec zdieľaných príkazov - - @@ -4393,9 +4611,14 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Dostupný nákl STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vždy choď STR_ORDER_DROP_SERVICE_DEPOT :Servis, ak je potrebný STR_ORDER_DROP_HALT_DEPOT :Zastav +STR_ORDER_DROP_UNBUNCH :Rozdeliť # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES +STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Zvoľte akciu, ktorá sa má vykonať v tomto depe +STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Zvoľte akciu, ktorá sa vykoná v tomto depe +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Zvoľte akciu, ktorá sa vykoná v tomto depe +STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Zvoľte akciu, ktorá sa vykoná v tomto hangári ###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Údaje vozidla na základe ktorých sa vykoná skok @@ -4426,13 +4649,13 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Hodnota, STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Zadajte hodnotu, s ktorou sa má porovnať STR_ORDERS_SKIP_BUTTON :{BLACK}Preskočiť -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Preskočiť aktuálny príkaz a začať ďalší. Ctrl+klik pre skok na označený príkaz +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Preskočiť aktuálny príkaz a začať ďalší. Ctrl+Klik pre skok na označený príkaz STR_ORDERS_DELETE_BUTTON :{BLACK}Vymazať STR_ORDERS_DELETE_TOOLTIP :{BLACK}Vymazať označený príkaz STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Vymazať všetky príkazy STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Prestať zdieľať -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Prestať zdieľať zoznam príkazov. Ctrl+klik naviac zmaže všetky príkazy tohoto vozidla +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Prestať zdieľať zoznam príkazov. Ctrl+Klik naviac zmaže všetky príkazy tohoto vozidla STR_ORDERS_GO_TO_BUTTON :{BLACK}Choď do STR_ORDER_GO_TO_NEAREST_DEPOT :Choď do najbližšieho depa @@ -4465,6 +4688,7 @@ STR_ORDER_REFIT_ORDER :(Prestavba na { STR_ORDER_REFIT_STOP_ORDER :(Prestavba na {STRING} a zastav) STR_ORDER_STOP_ORDER :(Zastav) +STR_ORDER_WAIT_TO_UNBUNCH :(Počkať na rozdelenie) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Nemožno použiť stanicu){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4542,23 +4766,28 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Toto voz STR_TIMETABLE_STATUS_LATE :{BLACK}Toto vozidlo mešká {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Toto vozidlo ide {STRING} skôr STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Tento cestovný poriadok ešte nezačal +STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Tento cestovný poriadok začne v {STRING} +STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Tento cestovný poriadok začne za {COMMA} sekúnd +STR_TIMETABLE_START :{BLACK}Začať cestovný poriadok +STR_TIMETABLE_START_TOOLTIP :{BLACK}Vyberte, kedy sa má začať cestovný poriadok. Ctrl+Klik rovnomerne rozdelí začiatky všetkých vozidiel, ktoré zdielajú tento poriadok, na základe ich relatívneho poradia +STR_TIMETABLE_START_SECONDS_QUERY :Počet sekúnd do začiatku cestovného poriadku STR_TIMETABLE_CHANGE_TIME :{BLACK}Zmeniť čas -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zmeniť dĺžku trvania označeného príkazu. Ctrl+klik nastaví čas pre všetky príkazy +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zmeniť dĺžku trvania označeného príkazu. Ctrl+Klik nastaví čas pre všetky príkazy STR_TIMETABLE_CLEAR_TIME :{BLACK}Odstrániť čas -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Odstrániť dĺžku trvania označeného príkazu. Ctrl+klik vymaže čas pre všetky príkazy +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Odstrániť dĺžku trvania označeného príkazu. Ctrl+Klik vymaže čas pre všetky príkazy STR_TIMETABLE_CHANGE_SPEED :{BLACK}Zmeniť maximálnu rýchlosť -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Zmeniť maximálnu rýchlosť označeného príkazu. Ctrl+klik nastaví rýchlosť pre všetky príkazy +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Zmeniť maximálnu rýchlosť označeného príkazu. Ctrl+Klik nastaví rýchlosť pre všetky príkazy STR_TIMETABLE_CLEAR_SPEED :{BLACK}Odstrániť rýchlostné obmedzenie -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Odstrániť obmedzenie maximánej rýchlosti označeného príkazu. Ctrl+klik vymaže rýchlosť pre všetky príkazy +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Odstrániť obmedzenie maximánej rýchlosti označeného príkazu. Ctrl+Klik vymaže rýchlosť pre všetky príkazy STR_TIMETABLE_RESET_LATENESS :{BLACK}Reset meškania -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Vynulovať počítadlo meškania, takže vozidlo pôjde presne. Ctrl+klik vynuluje celú skupinu, takže posledné vozidlo bude bez meškania a ostatné prídu skôr +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Vynulovať počítadlo meškania, takže vozidlo pôjde presne. Ctrl+Klik vynuluje celú skupinu, takže posledné vozidlo bude bez meškania a ostatné prídu skôr STR_TIMETABLE_AUTOFILL :{BLACK}Automaticky vyplniť STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Vyplniť časový plán automaticky s hodnotami z nasledujúcej trasy. Ctrl+klik - pokúsiť sa udržať čakacie doby @@ -4567,6 +4796,10 @@ STR_TIMETABLE_EXPECTED :{BLACK}Očakáv STR_TIMETABLE_SCHEDULED :{BLACK}Plánované STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Prepnúť medzi očakávaným a plánovaným +STR_TIMETABLE_ARRIVAL_DATE :P: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :O: {COLOUR}{DATE_TINY} +STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :P: {COLOUR}{COMMA} sek +STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :O: {COLOUR}{COMMA} sek # Date window (for timetable) @@ -4594,9 +4827,9 @@ STR_AI_DEBUG_MATCH_CASE :{BLACK}Porovná STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Prepnúť porovnávanie denníka AI znovu po príkaze na pozastavenie STR_AI_DEBUG_CONTINUE :{BLACK}Pokračovať STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Odpauzovať a povoliť AI -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Ukázať ladiaci výpis tejto UI +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Ukázať ladiaci výpis tejto AI. Ctrl+Klik ho otvorí v novom okne STR_AI_GAME_SCRIPT :{BLACK}Skript -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Pozri log skriptu +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Pozri log skriptu. Ctrl+Klik ho otvorí v novom okne STR_ERROR_AI_NO_AI_FOUND :Nebolo nájdená žiadne použitelné AI.{}Toto AI je hlúpe a nebude nič robiť.{}Môžete si stiahnúť niekoľko AI cez 'Online Obsah' systém. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Jeden z bežiacich skriptov spadol. Prosím nahláste to autorovi a priložte screenshot Debugovacej obrazovky. @@ -4612,6 +4845,7 @@ STR_AI_CONFIG_RANDOM_AI :Náhodná AI STR_AI_CONFIG_NONE :(žiadne) STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Maximálny počet konkurentov: {ORANGE}{COMMA} +STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Interval medzi začiatkami súperov: {ORANGE}{COMMA} minút{P a y ""} STR_AI_CONFIG_MOVE_UP :{BLACK}Posunúť vyššie STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Posunúť vyššie vybrané AI v zozname @@ -4661,15 +4895,25 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN # Textfile window +STR_TEXTFILE_JUMPLIST :{WHITE}Obsah +STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Skočiť do sekcie v zobrazenom súbore pomocou tohoto zoznamu +STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} +STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Späť v histórií navigácie +STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Vrátiť sa vpred v histórií navigácie STR_TEXTFILE_WRAP_TEXT :{WHITE}Zalamovať text STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Zalamovať text v okne tak, aby ho nebolo nutné posúvať -STR_TEXTFILE_VIEW_README :{BLACK}Zobraziť readme +STR_TEXTFILE_VIEW_README :{BLACK}Readme +STR_TEXTFILE_VIEW_README_TOOLTIP :Zobraziť readme tohoto obsahu STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Log zmien +STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Zobraziť zoznam zmien tohoto obsahu STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licencia +STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Zobraziť licenciu tohoto obsahu ###length 5 STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} "čítajma" {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} log zmien {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licencia {STRING} +STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Náhľad výsledkov prieskumu +STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}OpenTTD dokument '{STRING}' # Vehicle loading indicators @@ -4697,12 +4941,12 @@ STR_MESSAGE_ESTIMATED_COST :{WHITE}Odhadova STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Odhadovaný zisk: {CURRENCY_LONG} # Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ukladanie hry este bezi,{}pockajte prosim na dokoncenie! +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ukladanie hry ešte beží,{}počkajte prosím na dokončenie! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatické ukladanie zlyhalo STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Zariadenie je nečitateľné -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Uloženie hry zlyhalo{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Uloženie hry zlyhalo... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Súbor sa nedá vymazať -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nahratie hry zlyhalo{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nahratie hry zlyhalo... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interná chyba: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Poškodená uložená hra - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Hra bola uložená vo vyššej verzii @@ -4796,7 +5040,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Spoločn STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nemôžete tu postaviť sídlo spoločnosti... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nie je možné postaviť viac miest +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nie je možné postaviť viac miest... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Mesto nemôže byť odstránené... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Nemôžete tu založiť mesto... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Nemožno rozšíriť mesto... @@ -4844,6 +5088,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nemôže STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Susedí z viacerými stanicami/výkladkami STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stanica je príliš veľká +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :V stanici je príliš veľa kolají. +STR_ERROR_STATION_DISALLOWED_LENGTH :Príliš dlhá stanica. STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Príliš veľa staníc/vykládok STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Veľa častí vlakovej stanice STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Príliš veľa autobusových zastávok @@ -4914,6 +5160,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Nemožno STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Nesprávny typ depa # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... môže mať len jeden zdieľaný príkaz +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... nemôžeš použiť príkaz k plnému naloženiu pokial má vozidlo zdielaný príkaz +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... nemôžeš rozplánovať vozidlá s príkazmi na plné naloženie +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... nemôžeš použiť podmienený príkaz pokial má vozidlo zdielaný príkaz +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... nemôžeš rozplánovať vozidlá s podmieneným príkazom # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} je dlho po výmene @@ -5079,6 +5330,8 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmena va STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Zatiaľ nie sú dostupné žiadne vozidlá STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Začnite novú hru po {DATE_SHORT} alebo použite NewGRF, ktoré zabezpečí vozidlá v skoršom čase +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmena vašej konfigurácie NewGRF + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nemožno nechať vlak prejsť návestidlo ak hrozí nebezpečenstvo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nemožno otočiť vlak naopak... @@ -5127,6 +5380,8 @@ STR_ERROR_NO_BUOY :{WHITE}Nenašla STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Vozidlu nie je možné zadať cestovný poriadok ... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozidlá možu cakat len v staniciach. STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Toto vozidlo nezastavuje v tejto stanici. +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... cestovný poriadok nieje dokončený +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... cestovný poriadok ešte nezačal # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... príliš veľa popisov @@ -5572,6 +5827,7 @@ STR_UNKNOWN_STATION :neznáma stanic STR_DEFAULT_SIGN_NAME :Popis STR_COMPANY_SOMEONE :niekto +STR_SAVEGAME_DURATION_REALTIME :{NUM}h {NUM}m STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Pozorovateľ, {1:STRING} @@ -5606,6 +5862,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}tis +STR_CURRENCY_SHORT_MEGA :{NBSP}mil +STR_CURRENCY_SHORT_GIGA :{NBSP}bil +STR_CURRENCY_SHORT_TERA :{NBSP}tril + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5622,6 +5883,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 06f1a88917..4052ce9788 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -534,6 +534,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Izhod iz urejev STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Izhod + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Možnosti igre @@ -1009,7 +1010,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valute STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbira valut -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Funt STR_GAME_OPTIONS_CURRENCY_USD :Dolar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1089,6 +1090,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatne + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nalaganje seznama podprtih resolucij ni uspelo STR_ERROR_FULLSCREEN_FAILED :{WHITE}Celozaslonski način spodletel @@ -1100,6 +1102,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zmanjša STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Povečaj količino svojega denarja za en funt (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Nastavi tečaj menjave svoje valute za en funt (£) + STR_CURRENCY_PREFIX :{LTBLUE}Predpona: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Nastavi oznako za svojo valuto STR_CURRENCY_SUFFIX :{LTBLUE}Zapona: {ORANGE}{STRING} @@ -1436,6 +1439,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Opozori, če je ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Če je omogočeno, se odpre sporočilo, v kolikor neko vozilo ni ustvarilo dobička v koledarskem letu. + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozila nikoli ne dotrajajo: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Če je omogočeno, vsi modeli vozil ostanejo omogočeni po uvedbi. @@ -1718,7 +1722,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Privzeto servis STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Nastavitev privzetega obdobja servisiranja za letala, razen če ni izjemno nastavljeno obdobje za posamično letalo. STR_CONFIG_SETTING_SERVINT_SHIPS :Privzeto servisno obdobje ladij: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Nastavitev privzetega obdobja servisiranja za ladje, razen če ni izjemno nastavljeno obdobje za posamično ladjo. -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} d{P 0 an neva dni dni}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Onemogočeno @@ -1976,17 +1981,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Razpored tovora STR_CONFIG_SETTING_AI :Tekmeci STR_CONFIG_SETTING_AI_NPC :Računalniški igralci -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Iskalnik poti za vlake: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Iskalnik poti za vlake. -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Iskalnik poti za vozila: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Iskalnik poti za cestna vozila. -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Logaritem poti za ladje: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Iskalnik poti za ladje. STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Avtomatično obračanje pri signalih: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Dovoli vlakom obračanje na signalih, če so tam čakali že dolgo. -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Priporočeno) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Spremeni vrednost @@ -2257,7 +2253,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Iščem STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Odklopi STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Strežnik je zaščiten.Vnesi geslo -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Podjetje je zaščiteno. Vnesi geslo # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Seznam gostov @@ -2276,19 +2271,9 @@ STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Zagotov STR_NETWORK_SPECTATORS :Gledalci -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne shrani vnešenega gesla -STR_COMPANY_PASSWORD_OK :{BLACK}Dodeli družbi novo geslo -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Geslo družbe -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Privzeto geslo družbe -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Uporabi geslo te družbe kot privzeto za nove družbe - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Pridruži se STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pridruži se in igraj kot to podjetje -STR_COMPANY_VIEW_PASSWORD :{BLACK}Geslo -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Zaščiti svoje podjetje z geslom, da preprečiš priključitev drugih uporabnikov k podjetju -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Nastavi geslo podjetja # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Pošlji @@ -2327,7 +2312,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Priklop STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Povezava je mogoče prekinjena STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Zadnj{P 0 o i e ih} {NUM} sekund{P o i e ""} ni bilo prejetih nobenih podatkov s strežnika -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :splošna napaka STR_NETWORK_ERROR_CLIENT_DESYNC :desinhronizacijska napaka STR_NETWORK_ERROR_CLIENT_SAVEGAME :ni mogoče naložiti zemljevida @@ -2525,7 +2510,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Izberi s # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Točka poti -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Izberi vrsto točke poti # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Izbira železniške postaje @@ -2538,8 +2522,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Izberi d STR_STATION_BUILD_DRAG_DROP :{BLACK}Vleci in spusti STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Zgradi postajo s povleci in spusti -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Izberi vrsto postaje za prikaz -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Izberi vrsto postaje za gradnjo + + + STR_STATION_CLASS_DFLT :Privzeta postaja STR_STATION_CLASS_WAYP :Točke poti @@ -2671,8 +2656,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kupi zem # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Izbor zgradbe -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Izberi zgradbo za postavitev. Shift preklaplja med izgradnjo in predvidenimi stroški -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Izberi vrsto objekta za gradnjo STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Predogled zgradbe STR_OBJECT_BUILD_SIZE :{BLACK}Velikost: {GOLD}{NUM} x {NUM} polj @@ -2772,7 +2755,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Lastnik STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Lastnik železnice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalna oblast: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Brez -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinate: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Zgrajeno: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Razred postaje: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta postaje: {LTBLUE}{STRING} @@ -2995,9 +2977,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% n STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Ustvarjanje sveta STR_GENERATION_RIVER_GENERATION :{BLACK}Ustvarjanje reke -STR_GENERATION_TREE_GENERATION :{BLACK}Ustvarjanje dreves -STR_GENERATION_OBJECT_GENERATION :{BLACK}Ustvarjanje zgradbe STR_GENERATION_CLEARING_TILES :{BLACK}Generiranje grobih in skalnatih tal +STR_GENERATION_OBJECT_GENERATION :{BLACK}Ustvarjanje zgradbe +STR_GENERATION_TREE_GENERATION :{BLACK}Ustvarjanje dreves STR_GENERATION_SETTINGUP_GAME :{BLACK}Nastavljanje igre STR_GENERATION_PREPARING_TILELOOP :{BLACK}Zagnano ponavljanje polj STR_GENERATION_PREPARING_SCRIPT :{BLACK}Poganjam skripto @@ -3082,7 +3064,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tip železnice STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF spremenljivka 60+x parameter (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Uravnavam sličico {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Naslednja sličica STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Nadaljuj k naslednji navadni sličici, zanemari vse navidezne/pobarvane/besedilne sličice in okvir na koncu STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Pojdi na sličico @@ -3191,7 +3172,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Pojdi na STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Vpiši ime za znak # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Mesta STR_TOWN_DIRECTORY_NONE :{ORANGE}- Brez - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Mesto){BLACK} ({COMMA}) @@ -3469,7 +3449,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Polja po STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Letališča # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrije STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Brez - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} @@ -4285,9 +4264,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Predvide STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Shranjevanje poteka,{}Prosim počakaj, da se zaključi! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Samodejno shranjevanje spodletelo STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Pogona ni mogoče prebrati -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Shranjevanje igre ni uspelo{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Datoteke ni mogoče zbrisati -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nalaganje igre ni uspelo{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna napaka: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Napaka v shranjeni igri - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Igra je bila shranjena z novejso razlicico @@ -4648,6 +4625,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zamenjaj STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ni še vozil na razpolago. STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Začni novo igro po {DATE_SHORT} ali uporabi NewGRF, ki vsebuje zgodnja vozila + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ni mogoče, da vlak v nevarnosti pelje mimo signalov... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ni mogoče spremeniti smeri vlaka... @@ -5204,6 +5182,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index c7b0ad5839..20a4d37ebf 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -309,7 +309,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Al activ STR_BUTTON_DEFAULT :{BLACK}Por defecto STR_BUTTON_CANCEL :{BLACK}Cancelar STR_BUTTON_OK :{BLACK}Aceptar -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Advertencia: Los administradores del servidor podrían ser capaces de leer cualquier texto introducido aquí. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :º1234567890'¡\qwertyuiop`+asdfghjklñ´ç? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Längd: {NUM} @@ -438,6 +437,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Avsluta scenari STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Avsluta +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Generera städer +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Placera ut hus + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Spelinställningar @@ -621,14 +623,14 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Inaktivera alla STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Visa alla godstyper på grafen över fraktförtjänster STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Visa inga godstyper på grafen över fraktförtjänster -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Växla graf för godstyp av/på +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Slå på/av denna godstyps graf STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Visa detaljerad prestationsgradering # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Nyckel till företagsgrafer -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klicka här för att visa/dölja företaget i grafen +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Slå på/av detta företags graf # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Företagstabell @@ -791,7 +793,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Öken STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snö -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Växla stadsnamn på/av på kartan +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Slå på/av visning av stadsnamn STR_SMALLMAP_CENTER :{BLACK}Centrera minikartan på den nuvarande positionen STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -956,18 +958,14 @@ STR_GAME_OPTIONS_VOLUME :Volym STR_GAME_OPTIONS_SFX_VOLUME :Ljudeffekter STR_GAME_OPTIONS_MUSIC_VOLUME :Musik -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaenheter STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Välj valutaenhet STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Brittiskt pund STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1011,6 +1009,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupie STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk rupie STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk ringgit STR_GAME_OPTIONS_CURRENCY_LVL :Lettiska Lats +STR_GAME_OPTIONS_CURRENCY_PTE :Portugisisk escudo STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Spara automatiskt STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Välj intervall mellan automatiskt sparande @@ -1053,15 +1052,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skala b STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Kryssa i den här rutan för att skala bården efter gränssnittets storlek STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Använd traditionellt sprite-typsnitt -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Kryssa i den här rutan om du föredrar att använda det traditionella sprite-typsnittet med fast storlek. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Kryssa i den här rutan om du föredrar att använda det traditionella sprite-typsnittet med fast storlek STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias-typsnitt -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Kryssa i den här rutan för anti-aliasing av typsnitt med justerbar storlek. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Kryssa i den här rutan för anti-aliasing av typsnitt med justerbar storlek -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatisk undersökning STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Delta i en automatisk undersökning @@ -1090,6 +1085,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musikpak STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Välj vilket musikpaket som ska användas STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Yttligare information om musikpaketet +STR_GAME_OPTIONS_ONLINE_CONTENT :Hämta innehåll +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Kontrollera om det finns nytt och uppdaterat innehåll att ladda ned + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(inga tillägg för att integrera med sociala plattformar installerade) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1117,6 +1115,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Minska v STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Öka värdet för din valuta med ett pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Sätt växelkursen för din valuta mot ett pund (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Skiljetecken: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Ange skiljetecknet för din valuta + STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Sätt prefix-sträng för din valuta STR_CURRENCY_SUFFIX :{LTBLUE}Ändelse: {ORANGE}{STRING} @@ -1271,10 +1272,10 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Obegränsat kap STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Tillåt obegränsat spenderande och inaktivera konkurser av företag STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximalt startlån: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximalt belopp ett företag kan låna (där inflationen inte tas med i beräkningen) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximalt belopp ett företag kan låna (där inflationen inte tas med i beräkningen). Om inställt på "Inga lån" kommer inga pengar finnas tillgängliga såvida inte utdelat av ett spelskript eller inställningen "Obegränsat kapital" STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Inget lån {RED}Kräver spelskript som sätter startkapital +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Inga lån STR_CONFIG_SETTING_INTEREST_RATE :Räntenivå: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Räntenivå för lån; styr även inflationen om sådan är aktiverad @@ -1355,7 +1356,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Sluttningars lu STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Lutningsgrad för lutande rutor för vägfordon. Högre värden gör det svårare att komma upp för en backe STR_CONFIG_SETTING_FORBID_90_DEG :Förbjud tåg att göra 90°-svängar: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-graderssvängar inträffar då ett horisontellt spår följs direkt av ett vertikalt spår på angränsande ruta, vilket tvingar tåget att svänga 90 grader om det kör utefter spåret. Detta i motsats till andra kombinationer av spårbitar där tåget svänger 45 grader i taget. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-graderssvängar inträffar då ett horisontellt spår följs direkt av ett vertikalt spår på angränsande ruta, vilket tvingar tåget att svänga 90 grader om det kör utefter spåret. Detta i motsats till andra kombinationer av spårbitar där tåget svänger 45 grader i taget STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillåt att stationer som inte är byggda direkt brevid varandra slås ihop: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Tillåt tillägg av stationsdelar till en station utan direktkontakt med existerande delar genom Ctrl+Klick vid utplacering av nya delar. @@ -1467,7 +1468,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Företagets sta STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Välj startfärg för företaget STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Företagets andravalsstartfärg: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Välj andravalsfärg för företaget att starta med, om du använder en NewGRF som stöder det. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Välj andravalsfärg för företaget att starta med, om du använder en NewGRF som stöder det STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flygplatser blir aldrig gamla: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Aktivering av denna inställning gör så att alla flygplatstyper finns kvar i obegränsad tid efter att de blivit tillgängliga @@ -1487,26 +1488,29 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Varna om ett fo STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Om det är aktiverat skickas ett nyhetsmeddelande ut när ett fordon inte har gått med vinst under ett år STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Om det är aktiverat skickas ett nyhetsmeddelande ut när ett fordon inte har gått med vinst under en period +STR_CONFIG_SETTING_WARN_OLD_VEHICLE :Varna om ett fordon börjar bli gammalt: {STRING} +STR_CONFIG_SETTING_WARN_OLD_VEHICLE_HELPTEXT :Om det är aktiverat skickas ett nyhetsmeddelande ut när ett fordon börjar bli gammalt + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Fordon blir aldrig gamla: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Om det är aktiverat förblir alla fordonstyper tillgängliga i obegränsad tid efter att de introducerats STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Tidhållning: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Välj enheter för spelets tidhållning. Detta kan inte ändras senare.{}{}Kalenderbaserat spelläge är den klassiska OpenTTD-upplevelsen, där ett år består av 12 månader och varje månad har 28-31 dagar.{}{}I Väggklockbaserat spelläge är fordonsrörelse, godsproduktion, och finanser istället baserade på enminutssteg, vilket är ungefär så länge som en 30-dagarsmånad tar i Kalenderbaserat spelläge. Dessa är grupperade i 12-minutersperioder motsvarande ett år i Kalenderbaserat spelläge.{}{}Oavsett spelläge finns det alltid en klassisk kalender som används för introduktionsdatum av fordon, byggnader, och annan infrastruktur. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Välj enheter för spelets tidhållning. Detta kan inte ändras senare.{}{}Kalenderbaserat spelläge är den klassiska OpenTTD-upplevelsen, där ett år består av 12 månader och varje månad har 28-31 dagar.{}{}I Väggklockbaserat spelläge är godsproduktion och finanser istället baserade på enminutssteg, vilket är ungefär så länge som en 30-dagarsmånad tar i Kalenderbaserat spelläge. Dessa är grupperade i 12-minutersperioder motsvarande ett år i Kalenderbaserat spelläge.{}{}Oavsett spelläge finns det alltid en klassisk kalender som används för introduktionsdatum av fordon, byggnader, och annan infrastruktur ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalender STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Väggklocka STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minuter per år: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Välj antalet minuter som går i ett kalenderår. Standard är 12 minuter. Sätt till 0 för att stoppa kalendertiden från att ändras. Denna inställning påverkar inte spelets ekonomiska simulering, och är endast tillgänglig för tidhållning medelst väggklocka. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Välj antalet minuter som går i ett kalenderår. Standard är 12 minuter. Sätt till 0 för att stoppa kalendertiden från att ändras. Denna inställning påverkar inte spelets ekonomiska simulering, och är endast tillgänglig för tidhållning medelst väggklocka STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (kalendertid frusen) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Skala godsproduktionen för städer: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skala godsproduktionen för städer med detta procentantal. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Skala godsproduktionen för städer med detta procenttal STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Skala godsproduktionen för industrier: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skala godsproduktionen för industrier med detta procentantal. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Skala godsproduktionen för industrier med detta procenttal STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Förnya fordon automatiskt när de blir gamla: {STRING} @@ -1525,7 +1529,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Visningstid fö STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tid som felmeddelanden i ett rött fönster ska visas. Notera att vissa (kritiska) felmeddelanden inte stängs automatiskt efter denna tid, utan måste stängas manuellt STR_CONFIG_SETTING_HOVER_DELAY :Visa tooltips: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Fördröjning innan tooltips visas när muspekaren hålls över ett gränssnittselement. Alternativt kan tooltips bindas till den högra musknappen när detta värde är satt till 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Fördröjning innan tooltips visas när muspekaren hålls över ett gränssnittselement. Alternativt kan tooltips bindas till den högra musknappen när detta värde är satt till 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Håll muspekaren i {COMMA} millisekund{P 0 "" er} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Högerklick @@ -1537,8 +1541,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Linjetjocklek i STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Linjernas bredd i grafernas kurvor. En tunn linje är lättare att läsa av mer precist, medan en tjockare linje är lättare att se och gör det lättare att skilja mellan de olika färgerna STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Visa NewGRF:ens namn i fordonsbyggnadsfönstret: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Lägg till en rad i fordonsbyggnadsfönstret som visar vilken NewGRF det valda fordonet kommer ifrån. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Visa godstyper som fordonen kan transportera i listorna {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Lägg till en rad i fordonsbyggnadsfönstret som visar vilken NewGRF det valda fordonet kommer ifrån +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Visa godstyper som fordonen kan transportera i listfönstren: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Om det är aktiverat kommer fordonets transportabla last att visas ovanför den i fordonslistor STR_CONFIG_SETTING_LANDSCAPE :Landskap: {STRING} @@ -1557,7 +1561,7 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industritäthet STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Ange hur många industrier som ska genereras och vilken nivå som ska bibehållas under spelet STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximalt avstånd mellan oljeindustrier och kartans kant: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Begränsar hur långt från kartans kant oljeraffinaderier och oljeplattformar kan byggas. På ö-kartor säkerställer detta att de är nära kusten. På kartor större än 256 rutor skalas detta värde upp. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Begränsar hur långt från kartans kant oljeraffinaderier och oljeplattformar kan byggas. På ö-kartor säkerställer detta att de är nära kusten. På kartor större än 256 rutor skalas detta värde upp STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snögränsens höjd: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Välj på vilken höjd snötäcket börjar i det subarktiska landskapet. Snö påverkar även industrigeneration och städers tillväxtkrav. Kan endast modifieras via Scenarioredigeraren eller beräknas via "snötäckning" @@ -1571,7 +1575,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Välj den ungef STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Terrängens svårhetsgrad: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Välj form och frekvens av kullar. Böljande landskap har färre, mer utbredda kullar, medan landskap med tuff terräng har fler, mer låga kullar. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Välj form och frekvens av kullar. Böljande landskap har färre, mer utbredda kullar, medan landskap med tuff terräng har fler, mer låga kullar ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Väldigt lätt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Lätt @@ -1579,7 +1583,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Svår STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Väldigt svår STR_CONFIG_SETTING_VARIETY :Varierad distribution: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Välj om kartan ska innehålla både berg och flacka områden. Ju större variation desto större höjdskillnad mellan bergiga och flacka områden. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Välj om kartan ska innehålla både berg och flacka områden. Ju större variation desto större höjdskillnad mellan bergiga och flacka områden STR_CONFIG_SETTING_RIVER_AMOUNT :Antal floder: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Välj hur många floder att generera @@ -1626,7 +1630,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mörkgrön STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violett STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Färger på godsflödesöverlägg: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Ställ in det färgschema som ska användas på godsflödesöverlägget. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Ställ in det färgschema som ska användas på godsflödesöverlägget ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Grön till röd (original) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Grön till blå @@ -1747,10 +1751,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Behåll byggnad STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Håll verktygen för byggnation av broar, tunnlar, etc. öppna efter användning STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatiskt ta bort signaler vid byggande av järnväg: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Ta automatiskt bort signaler vid byggande av järnväg om signalerna är i vägen. Notera att detta kan leda till att tåg krockar. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Ta automatiskt bort signaler vid byggande av järnväg om signalerna är i vägen. Notera att detta kan leda till att tåg krockar STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Begränsning av snabbspolning: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Begränsa hur snabbt spelet går när snabbspolning är aktiverad. 0 = ingen begränsning (så snabbt som din dator tillåter). Värden under 100% saktar ner spelet. Den övre begränsningen beror på din dators specifikationer och kan variera beroende på spelet. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Begränsa hur snabbt spelet går när snabbspolning är aktiverad. 0 = ingen begränsning (så snabbt som din dator tillåter). Värden under 100% saktar ner spelet. Den övre begränsningen beror på din dators specifikationer och kan variera beroende på spelet STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normal spelhastighet ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Ingen begränsning (Så snabbt som din dator tillåter) @@ -1814,11 +1818,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillåt datorst STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes innan skript sätts i viloläge: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximalt antal beräkningssteg ett skript kan utföra i en omgång STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maximal minnesanvändning per skript: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Hur mycket minne ett enda skript kan konsumera innan det tvingas avslutas. Det kan behöva ökas för stora kartor. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Hur mycket minne ett enda skript kan konsumera innan det tvingas avslutas. Det kan behöva utökas för stora kartor STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Visa serviceintervall i procent: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :När det är aktiverat försöker fordon bli servade när deras tillförlitlighet har fallit med en viss procentsats av den maximala tillförlitligheten.{}{}Till exempel, om ett fordons maximala tillförlitlighet är 90% och serviceintervallet är 20% kommer fordonet söka service när tillförlitligheten är 72%.Välj om fordonsservice ska triggas av hur lång tid som har gått sedan senaste service eller av att tillförlitligheten faller med +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :När det är aktiverat försöker fordon bli servade när deras tillförlitlighet har fallit med en viss procentsats av den maximala tillförlitligheten.{}{}Till exempel, om ett fordons maximala tillförlitlighet är 90% och serviceintervallet är 20% kommer fordonet söka service när tillförlitligheten är 72% STR_CONFIG_SETTING_SERVINT_TRAINS :Normalt serviceintervall för tåg: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Välj vilket serviceintervall som normalt sett ska användas för nya tåg, om inget annat serviceintervall uttryckligen anges @@ -1828,7 +1832,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Normalt service STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Välj vilket serviceintervall som normalt sett ska användas för nya flygplan, om inget annat serviceintervall uttryckligen anges STR_CONFIG_SETTING_SERVINT_SHIPS :Normalt serviceintervall för skepp: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Välj vilket serviceintervall som normalt sett ska användas för nya skepp, om inget annat serviceintervall uttryckligen anges -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dag{P 0 "" ar}/Minut{P 0 "" er}/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}dag{P 0 "" ar} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}minut{P 0 "" er} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Inaktiverat @@ -1836,7 +1844,7 @@ STR_CONFIG_SETTING_NOSERVICE :Inaktivera serv STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :När det är aktiverat servas inte fordon om de inte kan få motorstopp STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Straff i lastningshastighet för tåg som är längre än stationen: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Om aktiverad, kommer tåg som är för långa för en station att lastas långsammare än tåg som får plats på stationen. Denna inställning påverkar inte vägfinnare. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Om aktiverad, kommer tåg som är för långa för en station att lastas långsammare än tåg som får plats på stationen. Denna inställning påverkar inte vägfinnare STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Använd hastighetsbegränsningar för tågvagnar: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :När det är aktiverat tas även hänsyn till vagnarnas hastighetsbegränsningar när ett tågs maxhastighet beräknas @@ -1901,13 +1909,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Årtal då tidn STR_CONFIG_SETTING_STARTING_YEAR :Startår: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Slutår för poängräkning: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Årtal då spelet slutar räkna poäng. Vid slutet av detta år sparas företagets poäng och listan med de bästa spelresultaten visas, men därefter kan spelarna fortsätta att spela.{}Om årtalet är satt till innan startåret visas aldrig de bästa spelresultaten. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Årtal då spelet slutar räkna poäng. Vid slutet av detta år sparas företagets poäng och listan med de bästa spelresultaten visas, men därefter kan spelarna fortsätta att spela.{}Om årtalet är satt till innan startåret visas aldrig de bästa spelresultaten STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Aldrig STR_CONFIG_SETTING_ECONOMY_TYPE :Typ av ekonomi: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Jämn ekonomi gör att produktionen ändrar sig oftare i mindre steg. Frusen ekonomi förhindrar produktions ändringar och att industrier stänger. Denna inställning har ingen effekt om industrien kommer från en NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Jämn ekonomi gör att produktionen ändrar sig oftare och i mindre steg. Frusen ekonomi förhindrar produktionsändringar och att industrier stänger. Denna inställning kan vara verkningslös om en NewGRF bidrar med industrityper ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Jämn @@ -1962,7 +1970,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Tillåten STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Tillåten, vanlig stads-layout STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Fraktgods som genereras i staden: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Hur mycket fraktgods som produceras av hus i städer, i förhållande till den totala befolkningen i staden.{}Kvadratisk tillväxt: En dubbelt så stor stad genererar fyra gånger så många passagerare.{}Linjär tillväxt: En dubbelt så stor stad genererar dubbelt så många passagerare. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Hur mycket fraktgods som produceras av hus i städer, i förhållande till den totala befolkningen i staden.{}Kvadratisk tillväxt: En dubbelt så stor stad genererar fyra gånger så många passagerare.{}Linjär tillväxt: En dubbelt så stor stad genererar dubbelt så många passagerare ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Kvadratisk (original) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linjär @@ -2003,7 +2011,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Högsta upplösning som sprites ska använda: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Begränsa den maximala upplösningen för sprites. Begränsning av spritens upplösning hindrar användandet av högre upplösningar även om det finns tillgängligt. Detta kan hjälpa att hålla spelets utseende mer enhetlig vid användandet av flera olika GRF filer med högre och lägre upplösning. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Begränsa den maximala upplösningen för sprites. Begränsning av spritens upplösning hindrar användandet av högre upplösningar även om det finns tillgängligt. Detta kan hjälpa att hålla spelets utseende mer enhetlig vid användandet av flera olika GRF filer med högre och lägre upplösning ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2027,33 +2035,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial stadsst STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Storstäders genomsnittliga storlek i relation till vanliga städers vid spelets början STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Uppdatera distributionsdiagram var {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tid mellan efterföljande omräkningar av länkgrafen. Varje omräkning beräknar planerna för en komponent i grafen. Det betyder att ett värde X för den här inställningen inte betyder att hela grafen kommer att uppdateras var X:e sekund. Bara viss komponent kommer att göra det. Ju kortare du ställer in den desto mer CPU-tid kommer att behövas för att beräkna den. Ju längre du ställer in den desto längre tid tar det tills lastdistributionen startar på nya rutter. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tid mellan efterföljande omräkningar av länkgrafen. Varje omräkning beräknar planerna för en komponent i grafen. Det betyder att ett värde X för den här inställningen inte betyder att hela grafen kommer att uppdateras var X:e sekund. Bara viss komponent kommer att göra det. Ju kortare du ställer in den desto mer CPU-tid kommer att behövas för att beräkna den. Ju längre du ställer in den desto längre tid tar det tills lastdistributionen startar på nya rutter STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Ta {STRING} för omräkning av distributionsdiagrammet -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tid som det tar för varje omräkning av en länkdiagramkomponent. När en omräkning startas skapas en tråd som tillåts köra i detta antal sekunder. Ju kortare du ställer in detta desto mer sannolikt är det att tråden inte är färdig när den ska. Sedan stannar spelet tills det är ("lag"). Ju längre du ställer in den desto längre tid tar det för distributionen att uppdateras när rutter ändras. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tid som det tar för varje omräkning av en länkdiagramkomponent. När en omräkning startas skapas en tråd som tillåts köra i detta antal sekunder. Ju kortare du ställer in detta desto mer sannolikt är det att tråden inte är färdig när den ska. Sedan stannar spelet tills det är ("lag"). Ju längre du ställer in den desto längre tid tar det för distributionen att uppdateras när rutter ändras STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributionssätt för passagerare: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetriskt" innebär att ungefär samma antal passagerare färdas från station A till station B som från B till A. "Asymmetriskt" innebär att en godtycklig mängd passagerare kan färdas i vardera riktningen. "Manuellt" innebär att ingen automatisk distribution av passagerare sker. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetriskt" innebär att ungefär samma antal passagerare färdas från station A till station B som från B till A. "Asymmetriskt" innebär att en godtycklig mängd passagerare kan färdas i vardera riktningen. "Manuellt" innebär att ingen automatisk distribution av passagerare sker STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distributionssätt för post: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetriskt" innebär att ungefär samma mängd post skickas från station A till station B som från B till A. "Asymmetriskt" innebär att en godtycklig mängd post kan skickas i vardera riktningen. "Manuellt" innebär att ingen automatisk distribution av post sker. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetriskt" innebär att ungefär samma mängd post skickas från station A till station B som från B till A. "Asymmetriskt" innebär att en godtycklig mängd post kan skickas i vardera riktningen. "Manuellt" innebär att ingen automatisk distribution av post sker STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distributionssätt för den BEPANSRADE godsklassen: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Den BEPANSRADE godsklassen innehåller värdesaker i det tempererade, diamanter i det subtropiska eller guld i det subarktiska klimatet. NewGRFer kan ändra detta. "Symmetriskt" innebär att ungefär samma mängd av detta gods skickas från station A till station B som från B till A. "Asymmetriskt" innebär att en godtycklig mängd av detta gods kan skickas i vardera riktningen. "Manuellt" innebär att ingen automatisk distribution av denna godstyp sker. Det är rekommenderat att välja "asymmetriskt" eller "manuellt" vid subarktiskt eller subtropiskt klimat, då banker endast tar emot gods i dessa klimat. Vid tempererat klimat kan även "symmetriskt" väljas, då banker kan skicka tillbaka värdesaker till den bank de kom ifrån. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Den BEPANSRADE godsklassen innehåller värdesaker i det tempererade, diamanter i det subtropiska eller guld i det subarktiska klimatet. NewGRFer kan ändra detta. "Symmetriskt" innebär att ungefär samma mängd av detta gods skickas från station A till station B som från B till A. "Asymmetriskt" innebär att en godtycklig mängd av detta gods kan skickas i vardera riktningen. "Manuellt" innebär att ingen automatisk distribution av denna godstyp sker. Det är rekommenderat att välja "asymmetriskt" eller "manuellt" vid subarktiskt eller subtropiskt klimat, då banker endast tar emot gods i dessa klimat. Vid tempererat klimat kan även "symmetriskt" väljas, då banker kan skicka tillbaka värdesaker till den bank de kom ifrån STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distributionssätt för övriga godsklasser: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymmetriskt" innebär att en godtycklig mängd gods kan skickas i vardera riktningen. "Manuellt" innebär att ingen automatisk distribution av dessa godstyper sker. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymmetriskt" innebär att en godtycklig mängd gods kan skickas i vardera riktningen. "Manuellt" innebär att ingen automatisk distribution av dessa godstyper sker ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuellt STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetriskt STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetriskt STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distributionsnoggrannhet: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Ju högre du sätter denna, desto längre CPU-tid kommer beräkningen av länkgrafen ta. Om det tar för lång tid kan spelet lagga. Om du däremot sätter den till ett lågt värde kommer distributionen att bli inexakt, vilket kan leda till att godset inte skickas dit du förväntar dig. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Ju högre du sätter denna, desto längre CPU-tid kommer beräkningen av länkgrafen ta. Om det tar för lång tid kan spelet lagga. Om du däremot sätter den till ett lågt värde kommer distributionen att bli inexakt, vilket kan leda till att godset inte skickas dit du förväntar dig STR_CONFIG_SETTING_DEMAND_DISTANCE :Avståndets påverkan på efterfrågan: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Om du sätter denna till ett värde högre än 0 kommer avståndet mellan ursprungsstationen A för en viss last och en möjlig destination B påverka mängden last som skickas från A till B. Ju längre B är ifrån A, desto mindre last kommer att skickas. Ju högre du sätter den, desto mindre last kommer att skickas till avlägsna stationer och desto mer last kommer att skickas till närbelägna stationer. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Om du sätter denna till ett värde högre än 0 kommer avståndet mellan ursprungsstationen A för en viss last och en möjlig destination B påverka mängden last som skickas från A till B. Ju längre B är ifrån A, desto mindre last kommer att skickas. Ju högre du sätter den, desto mindre last kommer att skickas till avlägsna stationer och desto mer last kommer att skickas till närbelägna stationer STR_CONFIG_SETTING_DEMAND_SIZE :Mängd återsänd last i symmetriskt läge: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Genom att sätta denna till mindre än 100% får man den symmetriska distributionen att bete sig mer som den asymmetriska. En mindre andel än vanligt av den last som skickas till en station kommer att skickas tillbaka. Sätter du den till 0% beter sig den symmetriska distributionen precis som den asymmetriska. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Genom att sätta denna till mindre än 100% får man den symmetriska distributionen att bete sig mer som den asymmetriska. En mindre andel än vanligt av den last som skickas till en station kommer att skickas tillbaka. Sätter du den till 0% beter sig den symmetriska distributionen precis som den asymmetriska STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Belastning av korta rutter innan rutter med hög kapacitet används: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Ofta finns det flera rutter mellan två givna stationer. Godsdistributionen kommer att fylla upp den första rutten först och därefter den näst kortaste tills den är mättad osv. Mättnadsgraden bestäms utifrån en uppskattning av kapaciteten och planerad användning. När godsdristributionen har belastat samtliga rutter, och om det finns kvarvarande behov, då kommer samtliga rutter att överbelastas med preferens för rutterna med högst kapacitet. Uppskattningen av kapaciteten kommer oftast inte ske med hög noggrannhet. Denna inställning tillåter dig att ställa in hur många procent som en kort rutt ska belastas innan algoritmen ska välja nästa längre rutt. Sätt värdet till under 100 % om du vill undvika överfulla stationer i händelse av överskattad kapacitet. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Ofta finns det flera rutter mellan två givna stationer. Godsdistributionen kommer att fylla upp den första rutten först och därefter den näst kortaste tills den är mättad osv. Mättnadsgraden bestäms utifrån en uppskattning av kapaciteten och planerad användning. När godsdristributionen har belastat samtliga rutter, och om det finns kvarvarande behov, då kommer samtliga rutter att överbelastas med preferens för rutterna med högst kapacitet. Uppskattningen av kapaciteten kommer oftast inte ske med hög noggrannhet. Denna inställning tillåter dig att ställa in hur många procent som en kort rutt ska belastas innan algoritmen ska välja nästa längre rutt. Sätt värdet till under 100 % om du vill undvika överfulla stationer i händelse av överskattad kapacitet STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighetsenhet (land)t: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Hastighetsenheter (nautical): {STRING} @@ -2128,17 +2136,8 @@ STR_CONFIG_SETTING_AI :Motståndare STR_CONFIG_SETTING_AI_NPC :Datorspelare STR_CONFIG_SETTING_NETWORK :Nätverk -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Vägfinnare för tåg: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Vägfinnare som tåg ska använda -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Vägfinnare för vägfordon: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Vägfinnare som vägfordon ska använda -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Vägfinnare för skepp: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Vägfinnare som skepp ska använda STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Vänd automatiskt vid signaler: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Tillåt att tåg vänder vid en signal om de har väntat där länge -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Rekommenderad) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Ändra inställningsvärde @@ -2457,7 +2456,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Hämtar STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Koppla ifrån STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servern är skyddad. Ange lösenord -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Företaget är skyddat. Ange lösenord # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Spelare online @@ -2484,6 +2482,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Ditt spelarnamn STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Administrativa handlingar att utföra för denna klient STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Administrativa handlingar att utföra för detta företag STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Gå med i detta företag +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Tillåt att denna klient ansluter till ditt företag STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Skicka ett meddelande till denna spelare STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Skicka ett meddelande till alla spelare i detta företag STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Skicka ett meddelande till alla åskådare @@ -2506,13 +2505,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Via rel STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Kasta ut STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Bannlys STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Ta bort -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Lås upp med lösenord STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Administratörshandling STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Är du säker på att du vill kasta ut spelaren '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Är du säker på att du vill bannlysa spelaren '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Är du säker på att du vill ta bort företaget {COMPANY}? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Är du säker på att du vill återställa företaget {COMPANY}s lösenord? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Använd relä? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Misslyckades med att etablera en anslutning mellan dig och servern '{STRING}'.{}Vill du använda '{STRING}' som relä för denna session? @@ -2529,19 +2526,9 @@ STR_NETWORK_ASK_SURVEY_YES :Ja STR_NETWORK_SPECTATORS :Åskådare -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Spara inte det inmatade lösenordet -STR_COMPANY_PASSWORD_OK :{BLACK}Ge företaget det nya lösenordet -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Företagslösenord -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Förvalt företagslösenord -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Använd detta företagslösenord som förval för nya företag - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Gå med STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Gå med och spela som detta företag -STR_COMPANY_VIEW_PASSWORD :{BLACK}Lösenord -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Lösenordsskydda ditt företag för att förhindra att obehöriga spelare ansluter -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Ange företagets lösenord # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Skicka @@ -2570,6 +2557,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Du har i STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Du har inte angivit något servernamn. Namninställning kan göras högst upp i flerspelarfönstret STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Servern har en annan version än denna klient STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Fel lösenord +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Du finns ej med på listan över tillåtna klienter STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Servern är full STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Du är bannlyst från den här servern STR_NETWORK_ERROR_KICKED :{WHITE}Du blev utkastad från spelet @@ -2585,7 +2573,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Ditt spe STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Anslutningen har troligtvis försvunnit STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}De senaste {NUM} sekunderna har inget data mottagits från servern -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :allmänt fel STR_NETWORK_ERROR_CLIENT_DESYNC :synkroniseringsfel STR_NETWORK_ERROR_CLIENT_SAVEGAME :kunde inte ladda kartan @@ -2597,6 +2585,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :mottog felaktig STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :fel revision STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :namnet används redan STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :fel lösenord +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :ej på tillåt-listan STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :fel företags-id i DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :utkastad av servern STR_NETWORK_ERROR_CLIENT_CHEATER :försökte fuska @@ -2802,7 +2791,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Välj ri # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Riktmärke -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Välj riktmärkestyp # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Val av tågstation @@ -2815,14 +2803,39 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Välj l STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Släpp STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bygg en station genom att dra & släppa -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Välj vilken stationsklass som ska visas -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Välj stationstyp att bygga +STR_PICKER_MODE_ALL :Alla +STR_PICKER_MODE_ALL_TOOLTIP :Slå av/på visning av objekt från alla klasser +STR_PICKER_MODE_USED :Använda +STR_PICKER_MODE_USED_TOOLTIP :Slå av/på visning av endast existerande objekt +STR_PICKER_MODE_SAVED :Sparade +STR_PICKER_MODE_SAVED_TOOLTIP :Slå av/på visning av endast sparade objekt + +STR_PICKER_STATION_CLASS_TOOLTIP :Välj vilken klass av stationer som ska visas +STR_PICKER_STATION_TYPE_TOOLTIP :Välj en stationstyp att bygga. Ctrl+Klick för att lägga till eller ta bort i sparade objekt +STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Välj vilken klass av riktmärken som ska visas +STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Välj ett riktmärke att bygga. Ctrl+Klick för att lägga till eller ta bort i sparade objekt +STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Välj vilken klass av busstationer som ska visas +STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Välj en busstationstyp att bygga. Ctrl+Klick för att lägga till eller ta bort i sparade objekt +STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Välj vilken klass av laststationer som ska visas +STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Välj en laststationstyp att bygga. Ctrl+Klick för att lägga till eller ta bort i sparade objekt +STR_PICKER_OBJECT_CLASS_TOOLTIP :Välj vilken klass av objekt som ska visas +STR_PICKER_OBJECT_TYPE_TOOLTIP :Välj en objektstyp att bygga. Ctrl+Klick för att lägga till eller ta bort i sparade objekt. Ctrl+Klick+Drag för att välja ytan diagonalt. Håll även in Shift för att endast visa uppskattad kostnad +STR_PICKER_HOUSE_CLASS_TOOLTIP :Välj vilken stadszon som ska visas +STR_PICKER_HOUSE_TYPE_TOOLTIP :Välj en hustyp att bygga. Ctrl+Klick för att lägga till eller ta bort i sparade objekt + +STR_HOUSE_PICKER_CAPTION :Husval + +STR_HOUSE_PICKER_CLASS_ZONE1 :Gräns +STR_HOUSE_PICKER_CLASS_ZONE2 :Utkanter +STR_HOUSE_PICKER_CLASS_ZONE3 :Yttrerförorter +STR_HOUSE_PICKER_CLASS_ZONE4 :Innerförorter +STR_HOUSE_PICKER_CLASS_ZONE5 :Stadskärnan STR_STATION_CLASS_DFLT :Original STR_STATION_CLASS_DFLT_STATION :Standardstation STR_STATION_CLASS_DFLT_ROADSTOP :Standardvägstopp STR_STATION_CLASS_WAYP :Riktmärken -STR_STATION_CLASS_WAYP_WAYPOINT :Standard vägpunkt +STR_STATION_CLASS_WAYP_WAYPOINT :Standardriktmärke # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalval @@ -2852,14 +2865,14 @@ STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING} STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY} STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG} STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} -STR_BRIDGE_NAME_SUSPENSION_STEEL :Hängbro, Stål -STR_BRIDGE_NAME_GIRDER_STEEL :Balkbro, Stål -STR_BRIDGE_NAME_CANTILEVER_STEEL :Konsolbro, Stål -STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hängbro, Betong +STR_BRIDGE_NAME_SUSPENSION_STEEL :Hängbro, stål +STR_BRIDGE_NAME_GIRDER_STEEL :Balkbro, stål +STR_BRIDGE_NAME_CANTILEVER_STEEL :Konsolbro, stål +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hängbro, betong STR_BRIDGE_NAME_WOODEN :Träbro STR_BRIDGE_NAME_CONCRETE :Betongbro -STR_BRIDGE_NAME_TUBULAR_STEEL :Rörbro, Stål -STR_BRIDGE_TUBULAR_SILICON :Rörbro, Kisel +STR_BRIDGE_NAME_TUBULAR_STEEL :Rörbro, stål +STR_BRIDGE_TUBULAR_SILICON :Rörbro, kisel # Road construction toolbar @@ -2959,8 +2972,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Köp mar # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Val av objekt -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Välj objekt att bygga. Ctrl+Klick+Drag för att välja ytan diagonalt. Håll även in Shift för att endast visa uppskattad kostnad -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Välj typ av objekt att bygga STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Förhandsvisning av objektet STR_OBJECT_BUILD_SIZE :{BLACK}Storlek: {GOLD}{NUM} x {NUM} rutor @@ -2975,11 +2986,11 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Placera STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Slumpmässigt träd STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantera träd slumpmässigt över landskapet STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plantera träd genom att dra över landskapet. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plantera träd genom att dra över landskapet STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Skogsdunge -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantera mindre skogar genom att dra över landskapet. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantera mindre skogar genom att dra över landskapet STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Skog -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantera större skogar genom att dra över landskapet. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantera större skogar genom att dra över landskapet # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Skapa mark @@ -3075,7 +3086,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Spårvä STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Järnvägens ägare: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokala myndigheter: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Rutindex: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Byggd/renoverad: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklass: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstyp: {LTBLUE}{STRING} @@ -3193,11 +3205,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Bildfrekvens STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Simulationsfrekvens: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Antal spel-tick som simuleras per sekund. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Antal spel-tick som simuleras per sekund STR_FRAMERATE_RATE_BLITTER :{BLACK}Bildfrekvens för grafik: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Antal bildrutor som återges per sekund. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Antal bildrutor som återges per sekund STR_FRAMERATE_SPEED_FACTOR :{BLACK}Spelets nuvarande hastighetsfaktor: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hur snabbt spelet för närvarande körs, jämfört med förväntad hastighet vid normal simulationsfrekvens. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hur snabbt spelet för närvarande körs, jämfört med förväntad hastighet vid normal simulationsfrekvens STR_FRAMERATE_CURRENT :{WHITE}Nuvarande STR_FRAMERATE_AVERAGE :{WHITE}Genomsnittlig STR_FRAMERATE_MEMORYUSE :{WHITE}Minne @@ -3386,10 +3398,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vill du STR_GENERATION_PROGRESS :{WHITE}{NUM}% färdigt STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Generera värld +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Landskapsgenerering STR_GENERATION_RIVER_GENERATION :{BLACK}Generera Flod -STR_GENERATION_TREE_GENERATION :{BLACK}Generera Träd -STR_GENERATION_OBJECT_GENERATION :{BLACK}Generera objekt STR_GENERATION_CLEARING_TILES :{BLACK}Svår och stenig markgenerering +STR_GENERATION_TOWN_GENERATION :{BLACK}Stadsgenerering +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Industrigenerering +STR_GENERATION_OBJECT_GENERATION :{BLACK}Generera objekt +STR_GENERATION_TREE_GENERATION :{BLACK}Generera Träd STR_GENERATION_SETTINGUP_GAME :{BLACK}Ställer in spel STR_GENERATION_PREPARING_TILELOOP :{BLACK}Kör tile-loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Kör skript @@ -3481,7 +3496,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Vägtyp STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variabel 60+x parameter (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Justera spriteobjekt {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Justerar spriteobjekt: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Justerar spriteobjekt: Action 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Justerar spriteobjekt: Åtgärd 0x5, typ {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nästa spriteobjekt STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsätt till nästa nomala spriteobjekt, ignorera eventuella pseudo/recolour/font spriteobjekt och börja om efter sista spriteobjektet STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå till spriteobjekt @@ -3490,6 +3507,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Tidigare STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsätt till föregående normala spriteobjekt, ignorera eventuella pseudo/recolour/font spriteobjekt och börja om från slutet efter första spriteobjektet STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation av det valda objektet. Justeringen ignoreras när objektet ritas. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytta runt objektet och ändra förskjutningen i X- och Y-led. Ctrl+klicka för att flytta runt objektet åtta steg i taget +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Förskjutningscentrerad @@ -3524,7 +3542,7 @@ STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF-filen den v STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :För många NewGRFer är laddade STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Att ladda {1:STRING} som statisk NewGRF med {2:STRING} kan orsaka desynkronisering STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Oväntat spriteobjekt (spriteobjekt {3:NUM}) -STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Okänd Action 0-egenskap {4:HEX} (spriteobjekt {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Okänd Åtgärd 0-egenskap {4:HEX} (spriteobjekt {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Försök att använda ett ogiltligt ID (spriteobjekt {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} innehåller ett skadat spriteobjekt. Alla korrupta spriteobjekt kommer att visas som röda frågetecken (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Innehåller flera Action 8 (spriteobjekt {3:NUM}) @@ -3598,7 +3616,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Åk till STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Mata in ett namn för skylten # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Städer +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Städer ({COMMA} av {COMMA}) STR_TOWN_DIRECTORY_NONE :{ORANGE}- Inga - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Stad){BLACK} ({COMMA}) @@ -3932,7 +3950,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/period # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrier +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrier ({COMMA} av {COMMA}) STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Inga - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transporterat){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4021,12 +4039,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Ogrupperade fly STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - klicka på en grupp för att lista alla fordon i gruppen. Dra och släpp grupper för att ordna hierarkin. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - klicka på en grupp för att lista alla fordon i gruppen. Dra och släpp grupper för att ordna hierarkin STR_GROUP_CREATE_TOOLTIP :{BLACK}Klicka för att skapa en grupp STR_GROUP_DELETE_TOOLTIP :{BLACK}Ta bort vald grupp STR_GROUP_RENAME_TOOLTIP :{BLACK}Byt namn på vald grupp STR_GROUP_LIVERY_TOOLTIP :{BLACK}Byt färgschema på vald grupp -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klicka för att skydda denna grupp mot allmän automatisk förnyelse. Ctrl+klicka för att också skydda undergrupper. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klicka för att skydda denna grupp mot allmän automatisk förnyelse. Ctrl+klicka för att också skydda undergrupper STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Ta bort grupp STR_GROUP_DELETE_QUERY_TEXT :{WHITE} Är du säker på att du vill ta bort denna grupp och alla efterkommande? @@ -4213,10 +4231,10 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Klona sk STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klona flygplan ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Köp en kopia av ett tåg inklusive alla vagnar. Klicka på denna knapp och sen på ett tåg i eller utanför depån. Ctrl+Klick för att dela ordrar. Håll även in Shift för att endast visa uppskattad kostnad -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Köp en kopia av ett vägfordon. Klicka på denna knapp och sen på ett vägfordon i eller utanför depån. Ctrl+Klick för att dela ordrar. Håll även in Shift för att endast visa uppskattad kostnad -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Köp en kopia av ett skepp. Klicka på denna knapp och sen på ett skepp i eller utanför depån. Ctrl+Klick för att dela ordrar. Håll även in Shift för att endast visa uppskattad kostnad -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Köp en kopia av en flygfarkost. Klicka på denna knapp och sen på en flygfarkost i eller utanför hangaren. Ctrl+Klick för att dela ordrar. Håll även in Shift för att endast visa uppskattad kostnad +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Köp en kopia av ett tåg inklusive alla vagnar. Klicka på denna knapp och sedan på ett tåg i eller utanför depån. Ctrl+klicka för att dela ordrar. Håll även in Shift för att endast visa uppskattad kostnad +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Köp en kopia av ett vägfordon. Klicka på denna knapp och sedan på ett vägfordon i eller utanför depån. Ctrl+klicka för att dela ordrar. Håll även in Shift för att endast visa uppskattad kostnad +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Köp en kopia av ett skepp. Klicka på denna knapp och sedan på ett skepp i eller utanför depån. Ctrl+klicka för att dela ordrar. Håll även in Shift för att endast visa uppskattad kostnad +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Köp en kopia av en flygfarkost. Klicka på denna knapp och sedan på en flygfarkost i eller utanför hangaren. Ctrl+klicka för att dela ordrar. Håll även in Shift för att endast visa uppskattad kostnad ###length VEHICLE_TYPES STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrera huvudvyn ovanför depån. Ctrl+Klick för att öppna en ny fönstervy över tågdepåns läge @@ -4334,10 +4352,10 @@ STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Centrera STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på flygfarkostens position. Dubbelklicka för att följa flygfarkosten i huvudvyn. Ctrl+Klick för att öppna en ny fönstervy över flygfarkostens position ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka tåg till depå. Ctrl+Klick för service endast -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka fordon till depå. Ctrl+Klick för service endast -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka skepp till depå. Ctrl+Klick för service endast -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka flygfarkost till hangar. Ctrl+Klick för service endast +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka tåg till depå. Ctrl+Klick för att endast serva +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka fordon till depå. Ctrl+Klick för att endast serva +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka skepp till depå. Ctrl+Klick för att endast serva +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka flygfarkost till hangar. Ctrl+Klick för att endast serva ###length VEHICLE_TYPES STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Köp en kopia av tåget inklusive alla vagnar. Ctrl+Klick för att dela ordrar. Håll även in Shift för att endast visa uppskattad kostnad @@ -4381,22 +4399,22 @@ STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Väntar STR_VEHICLE_STATUS_CRASHED :{RED}Kraschad! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Motorstopp STR_VEHICLE_STATUS_STOPPED :{RED}Stoppat -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stannar, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Stannar STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Ingen kraft STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Väntar på ledig väg STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Nästa destination ligger för långt bort -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}På väg mot {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Inga order, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} -På väg mot {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Inga ordrar STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}På väg mot {WAYPOINT} i {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}På väg mot {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Service vid {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Glesa ut och serva vid {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - På väg mot {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Service vid {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Glesa ut och serva vid {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE} Kan inte nå {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Kan inte nå {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Kan inte nå {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Kan inte nå {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Kan inte nå {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Kan inte nå {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Kan inte nå {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Kan inte nå {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4442,10 +4460,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapacite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK} Överför kredit: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Serviceintervall: {LTBLUE}{COMMA}{NBSP}dagar{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Serviceintervall: {LTBLUE}{COMMA}{NBSP}minuter{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Serviceintervall: {LTBLUE}{COMMA}{NBSP}minut{P "" er}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Serviceintervall: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Senast servad: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Senast servad: {LTBLUE}{NUM} minuter sedan +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Senast servad: {LTBLUE}{NUM} minut{P "" er} sedan STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Öka serviceintervall med 10 dagar. Ctrl+Klick för att öka serviceintervall med 5 dagar STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Öka serviceintervall med 5 minuter. Ctrl+Klick för att öka serviceintervall med 1 minut STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Öka serviceintervall med 10 procent. Ctrl+Klick för att öka serviceintervall med 5 procent @@ -4610,7 +4628,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Åk till närms STR_ORDER_GO_TO_NEAREST_HANGAR :Åk till närmsta hangar STR_ORDER_CONDITIONAL :Villkorat order-hopp STR_ORDER_SHARE :Dela order -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Infoga ny order före markerad order, eller lägg till i slutet av listan. Ctrl+Klick på en station för 'full last någon godstyp', på ett riktmärke för att invertera inställningen 'non-stop som standard', och på en depå för 'service'. Klicka på ett annat fordon för att kopiera dess ordrar eller Ctrl+Klick för att dela ordrar. En depåorder stänger av automatisk service av fordonet +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Infoga ny order före markerad order, eller lägg till i slutet av listan. Ctrl+Klick på en station för 'full last någon godstyp', på ett riktmärke för att invertera inställningen 'non-stop som standard', och på en depå för 'glesa ut'. Klicka på ett annat fordon för att kopiera dess ordrar eller Ctrl+Klick för att dela ordrar. En depåorder stänger av automatisk service av fordonet STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Visa alla fordon som har samma schema @@ -4636,7 +4654,7 @@ STR_ORDER_REFIT_ORDER :(Anpassa för { STR_ORDER_REFIT_STOP_ORDER :(Anpassa för {STRING} och stanna) STR_ORDER_STOP_ORDER :(Stanna) -STR_ORDER_WAIT_TO_UNBUNCH :(invänta utglesning) +STR_ORDER_WAIT_TO_UNBUNCH :(Invänta utglesning) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Kan ej använda stationen){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4840,8 +4858,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spelskript STR_AI_SETTINGS_CLOSE :{BLACK}Stäng STR_AI_SETTINGS_RESET :{BLACK}Återställ STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4894,9 +4910,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Uppskatt STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Sparar fortfarande,{}vänta tills det är slutfört! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosparning misslyckades STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan inte läsa från disk -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Sparandet av spelet misslyckades{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Sparandet av spelet misslyckades... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan inte ta bort filen -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Inläsningen av spelet misslyckades{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Inläsningen av spelet misslyckades... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internt fel: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Trasig sparfil - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Sparfilen är gjord med en nyare version @@ -4990,7 +5006,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan inte STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan inte bygga huvudkontor här... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan inte bygga några städer +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan inte bygga några städer... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kan inte byta namn på stad... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kan inte grunda stad här... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kan inte expandera stad... @@ -5001,6 +5017,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... det STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Vägarbete pågår STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan inte ta bort den här staden...{}En station eller depå refererar till staden eller så kan inte en stadsägd ruta tas bort. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... det finns ingen lämplig plats för en staty i stadens centrum +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Kan inte bygga hus... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... för många industrier @@ -5038,6 +5055,8 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kan inte STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Angränsar till mer än en station/hållplats STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stationen för utspridd +STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... antalet spår stöds ej +STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... längden stöds ej STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}För många stationer/hållplatser STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}För många delar på järnvägsstationen STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}För många busshållplatser @@ -5072,12 +5091,15 @@ STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Måste r STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Gränsar mot mer än ett existerande riktmärke STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}... för nära ett annat riktmärke -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan inte bygga riktmärke här... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan inte bygga järnvägsriktmärke här... +STR_ERROR_CAN_T_BUILD_ROAD_WAYPOINT :{WHITE}Kan inte bygga vägriktmärke här... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kan inte placera boj här... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan inte ändra riktmärkets namn... -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan inte ta bort riktmärke här... -STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Måste ta bort riktmärke först +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan inte ta bort järnvägsriktmärke här... +STR_ERROR_CAN_T_REMOVE_ROAD_WAYPOINT :{WHITE}Kan inte ta bort vägriktmärke här... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Måste ta bort järnvägsriktmärke först +STR_ERROR_MUST_REMOVE_ROADWAYPOINT_FIRST :{WHITE}Måste ta bort vägriktmärke först STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boj i vägen STR_ERROR_BUOY_IS_IN_USE :{WHITE}... bojen används av ett annat företag! @@ -5278,6 +5300,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Ändra d STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Inga fordon är tillgängliga än STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Starta ett nytt spel efter {DATE_SHORT} eller använd en NewGRF som erbjuder tidiga fordon +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Inga vägtyper som kan byggas av städer finns tillgängliga +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Ändra din NewGRF-konfiguration +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Inga vägtyper som kan byggas av städer finns tillgängliga ännu +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Starta ett nytt spel efter {DATE_SHORT} eller använd en NewGRF som tidigt erbjuder vägtyper som städer kan bygga + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan inte tillåta tåg att passera signal under fara... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan inte byta tågets riktning... @@ -5319,7 +5346,8 @@ STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Det finn STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Det finns inga hållplatser som passar för ledade vägfordon.{}Ledade vägfordon kräver genomfartshållplatser, inte lastbryggor STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Det här flygplanet kan inte landa på den här helikopterflygplatsen STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Den här helikoptern kan inte landa på den här flygplatsen -STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Det finns inget riktmärke +STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Det finns inget järnvägsriktmärke +STR_ERROR_NO_ROAD_WAYPOINT :{WHITE}Det finns inget vägriktmärke STR_ERROR_NO_BUOY :{WHITE}Det finns ingen boj # Timetable related errors @@ -5807,6 +5835,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}t +STR_CURRENCY_SHORT_MEGA :{NBSP}mn +STR_CURRENCY_SHORT_GIGA :{NBSP}md +STR_CURRENCY_SHORT_TERA :{NBSP}bn + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5823,6 +5856,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 97a5a0b64e..04f781f8e2 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -307,7 +307,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}இந STR_BUTTON_DEFAULT :{BLACK}இயல்பிருப்பு STR_BUTTON_CANCEL :{BLACK}தவிர் STR_BUTTON_OK :{BLACK}சரி -STR_WARNING_PASSWORD_SECURITY :{YELLOW}எச்சரிக்கை: சேவையக நிர்வாகிகளால் இங்கு உள்ளிட்டப்படும் எந்த உரையையும் படிக்க முடியும். # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -379,18 +378,18 @@ STR_GOTO_ORDER_VIEW :{BLACK}கட ###length 31 STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}இடை நிறுத்து STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}அதி வேகமாக விளையாடு -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}விருப்பத் தேர்வு +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}விருப்பத்தேர்வுகள் மற்றும் அமைப்புகள் STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}விளையாட்டை சேமி,கைவிடு, வெளியேறு STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}வரைபடத்தை காட்டு -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}நகர புத்தகம் காண்பி +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}நகரங்களின் பட்டியலை காட்டு அல்லது புதிய நகரத்தினை நிறுவு STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}மானியங்களைக் காட்டு STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}நிறுவனத்தின் நிலையங்களின் பட்டியலை காண்பி STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}நிறுவனத்தின் நிதி நிலைமையை காட்டு STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}நிறுவனத்தின் விவரங்களை காட்டு STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}கதை புத்தகத்தினைக் காட்டு -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}குறிக்கோள் பட்டியலைக் காட்டு -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}வரைபடம் காண்பி -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}நிறுவங்களின் பட்டியலை காட்டு +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}குறிக்கோள் பட்டியலைத் திற +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}நிறுவன வரைபடங்களைத் திற. மேலும் சரக்கு விலைப்பட்டியலைக் காட்டு +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}நிறுவங்களின் பட்டியலைத் திற STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}ஓர் தொழிற்சாலையை கட்டு அல்லது தொழிற்சாலைகளின் பட்டியலை காட்டு STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}நிறுவனத்தின் இரயில்களைக் காட்டு. Ctrl+Click அழுத்தினால் குழு/வாகனங்களின் பட்டியல் தெரியும் STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}நிறுவனத்தின் சாலை வாகனங்களைக் காட்டு. Ctrl+Click அழுத்தினால் குழு/வாகனங்களின் பட்டியல் தெரியும் @@ -436,6 +435,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :சித்த STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :வெளியேறு + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :விளையாட்டு விருப்ப பேரம் @@ -606,7 +606,7 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}தொ STR_GRAPH_INCOME_CAPTION :{WHITE}வருமான வரைபடம் STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}பரிமாற்றம் செய்யப்பட்ட சரக்குப்பெட்டிகள் STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}கம்பெனி செயல்வரம்பு (அதிகபட்ச செயல்வரம்பு=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}கம்பெனி மதிப்பீடுகள் +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}நிறுவன மதிப்பீடு வரைபடம் STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}கடந்த 72 நிமிடங்கள் @@ -662,6 +662,7 @@ STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}மொ ###next-name-looks-similar STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}கடந்த 12 காலாண்டுகளில் மிகக் குறைந்த லாபத்துடன் காலாண்டில் செய்யப்பட்ட பணத்தின் அளவு +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}கடந்த 12 காலாண்டுகளில் அதிகபட்ச லாபத்துடன் காலாண்டில் செய்யப்பட்ட பணத்தின் அளவினைக் காட்டு STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}கடந்த நான்கு காலாண்டுகளில் சேர்க்கப்பட்ட சரக்கு பெட்டிகள் STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}கடந்த காலாண்டில் கையாளப்பட்ட சரக்கு வகைகள் STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}இந்த நிறுவனம் வங்கியில் வைத்திருக்கும் பணம் @@ -919,24 +920,21 @@ STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}பொ STR_GAME_OPTIONS_TAB_GRAPHICS :அசைவூட்டங்கள் STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}அசைவூட்ட அமைப்புகளைத் தேர்ந்தெடு STR_GAME_OPTIONS_TAB_SOUND :ஒலி +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}ஒலி மற்றும் இசை அமைப்புகளைத் தேர்ந்தெடு STR_GAME_OPTIONS_TAB_SOCIAL :சமூக +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}சமூக இணைப்பு அமைப்புகளைத் தேர்ந்தெடு STR_GAME_OPTIONS_VOLUME :ஒலி அளவு STR_GAME_OPTIONS_SFX_VOLUME :ஒலி விளைவுகள் STR_GAME_OPTIONS_MUSIC_VOLUME :இசை -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}நாணய பிரிவுகள் STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}நாணய பிரிவு தேர்ந்தெடுத்தல் STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :பிரித்தானிய பவுண்டு STR_GAME_OPTIONS_CURRENCY_USD :அமெரிக்கன் டாலர் STR_GAME_OPTIONS_CURRENCY_EUR :யுரோ @@ -1020,11 +1018,6 @@ STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}வழ STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}மாற்றுப்பெயர் எதிர்ப்பு எழுத்துருக்கள் STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}மறுஅளவிடக்கூடிய மாற்றுப்பெயர் எதிர்ப்பு எழுத்துருக்களுக்கு இந்தப் பெட்டியைத் தேர்வு செய்யவும். -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}தானியங்கி கணக்கெடுப்பு STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}தானியங்கி கணக்கெடுப்பில் சேர் @@ -1053,6 +1046,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}அட STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் அடிப்படை இசைத் தொகுப்பினைத் தேர்ந்தெடுக்கவும் STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}அடிப்படை இசைத் தொகுப்பு பற்றிய கூடுதல் தகவல்கள் + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(no plugins to integrate with social platforms installed) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1080,6 +1074,8 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}உங STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}உங்கள் நாணய மதிப்பினை ஒரு பவுண்டு (£) அளவு அதிகரிக்கவும் STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}உங்களது நாணயத்தின் நாணயமாற்று விகிதத்தை ஒரு பவுண்டாக (£) அமைக்கவும் +STR_CURRENCY_SEPARATOR :{LTBLUE}பிரிப்பான்: {ORANGE}{STRING} + STR_CURRENCY_PREFIX :{LTBLUE}முன் ஒட்டு: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}உங்கள் நாணயத்தின் முன் ஒட்டத்தினை அமையுங்கள் STR_CURRENCY_SUFFIX :{LTBLUE}பின் ஒட்டு: {ORANGE}{STRING} @@ -1092,7 +1088,7 @@ STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}யூ STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}யூரோவிற்கு தாமதமாக மாறுங்கள் STR_CURRENCY_PREVIEW :{LTBLUE}முன்னோட்டம்: {ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 பவுண்டு (£) உங்க்ள் நாணயத்தில் +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}உங்கள் நாணயத்தில் 10000 பவுண்டு (£) STR_CURRENCY_CHANGE_PARAMETER :{BLACK}பயனரால் மாற்றப்பட்ட பண குணாதிசயங்களை மாற்று STR_NONE :ஒன்றுமில்லை @@ -1352,12 +1348,15 @@ STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :முக்க STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :முக்கிய திரைபார்வை STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :ஒவ்வொரு திரைபார்வையும் -STR_CONFIG_SETTING_BRIBE :நகராட்சிக்கு கையூட்டுத் தர அனுமதி: {STRING} +STR_CONFIG_SETTING_BRIBE :நகராட்சிக்கு லஞ்சம் தர அனுமதி: {STRING} ###length 2 -STR_CONFIG_SETTING_BRIBE_HELPTEXT :உள்ளூர் நகர அதிகாரத்திற்கு லஞ்சம் கொடுக்க நிறுவனங்களை அனுமதிக்கவும். லஞ்சம் ஒரு ஆய்வாளரால் கவனிக்கப்பட்டால், நிறுவனம் ஆறு மாதங்களுக்கு நகரத்தில் செயல்பட முடியாது +STR_CONFIG_SETTING_BRIBE_HELPTEXT :நகராட்சிக்கு லஞ்சம் கொடுக்க நிறுவனங்களை அனுமதிக்கவும். லஞ்சம் ஒரு ஆய்வாளரால் கவனிக்கப்பட்டால், நிறுவனம் ஆறு மாதங்களுக்கு நகரத்தில் நடவடிக்கை எடுக்க முடியாது +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :நகராட்சிக்கு லஞ்சம் கொடுக்க நிறுவனங்களை அனுமதிக்கவும். லஞ்சம் ஒரு ஆய்வாளரால் கவனிக்கப்பட்டால், நிறுவனம் ஆறு நிமிடங்களுக்கு நகரத்தில் நடவடிக்கை எடுக்க முடியாது STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :போக்குவரத்து உரிமைகளை விற்க அனுமதிக்கவும்: {STRING} ###length 2 +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :ஒரு நிருவனம் நகரத்தில் பிரத்தியேக போக்குவரத்து உரிமைகளை வாங்கினால், எதிராளிகளின் நிலையங்கள் 12 மாதங்களுக்கு எந்த பயணிகள் அல்லது சரக்குகளையும் பெறாது +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :ஒரு நிருவனம் நகரத்தில் பிரத்தியேக போக்குவரத்து உரிமைகளை வாங்கினால், எதிராளிகளின் நிலையங்கள் 12 நிமிடங்களுக்கு எந்த பயணிகள் அல்லது சரக்குகளையும் பெறாது STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :கட்டடங்களை கட்ட அனுமதி: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :நிறுவனங்கள் நகரங்களுக்கு பணம் வழங்க அனுமதிக்கவும், புதிய வீடுகள் கட்ட @@ -1406,6 +1405,7 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :அனைத் STR_CONFIG_SETTING_WARN_INCOME_LESS :வாகனம் நஷ்டத்தில் ஓடினால் எச்சரி: {STRING} ###length 2 + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :வாகனங்கள் என்றும் காலாவதியாகாது: {STRING} STR_CONFIG_SETTING_TIMEKEEPING_UNITS :நேரம் காத்தல்: {STRING} @@ -1503,7 +1503,7 @@ STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}வி STR_CONFIG_SETTING_STATION_SPREAD :அதிக. நிலைய விரிப்பு: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :ஒரு நிலையத்தின் அதிகபட்ச பரப்பளவு. உயர் மதிப்புகள் விளையாட்டை மெதுவாக்கும் என்பதினை நினைவில் கொள்க -STR_CONFIG_SETTING_SERVICEATHELIPAD :ஹெலிகாப்ப்டர்களை தானாக சரிபார்ர்க்கவும்: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD :ஹெலிகாப்ப்டர்களைத் தானாக சரிபார்க்கவும்: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :சிறுபடத்தில் பயன்படுத்திய நில நிறம்: {STRING} @@ -1602,6 +1602,7 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :எதிர் STR_CONFIG_SETTING_QUICKGOTO :வாகன கட்டளைகளை விரிவாக உருவாக்கவும்: {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :இயல்புநிலை இரயில் வகை (புதிய ஆட்ட துவக்கம்/பழைய ஆட்டத்தின் ஏற்றம்): {STRING} ###length 3 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :முதலில் கிடைக்கும் STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :கடைசியில் கிடைக்கும் @@ -1681,7 +1682,8 @@ STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :சாலை STR_CONFIG_SETTING_SERVINT_AIRCRAFT :விமாங்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :புதிய விமானங்களுக்கான இயல்புநிலை சேவை இடைவெளியை அமைக்கவும், வாகனத்திற்கு வெளிப்படையான சேவை இடைவெளி எதுவும் அமைக்கப்படவில்லை என்றால் STR_CONFIG_SETTING_SERVINT_SHIPS :கப்பல்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}நா{P 0 "ள்" ட்கள்}/நிமிட{P 0 "ம்" ங்கள்}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :செயலிழக்க செய்யப்பட்டது @@ -1718,8 +1720,10 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :தொழிற STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :பொருளாதார மாற்றங்கள்: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :உலக பொருளாதார மாற்றங்களைப் பற்றி செய்தித்தாளினைக் காட்டு +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :நிறுவனத்தால் வழங்கப்படும் தொழிற்சாலைகளின் உற்பத்தி நிலை மாற்றங்கள் : {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :நிறுவனத்தால் வழங்கப்படும் தொழில்களின் உற்பத்தி நிலை மாறும்போது செய்தித்தாளைக் காட்டவும் +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :எதிர்-நிறுவனத்தால் வழங்கப்படும் தொழிற்சாலைகளின் உற்பத்தி நிலை மாற்றங்கள் : {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :மற்ற தொழிற்சாலைகளின் உற்பத்தி மாற்றங்கள்: {STRING} @@ -1935,17 +1939,8 @@ STR_CONFIG_SETTING_AI :போட்ட STR_CONFIG_SETTING_AI_NPC :கணினி வீரர்கள் STR_CONFIG_SETTING_NETWORK :இணையம் -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :இரயில்களுக்கான வழிகண்டுபிடிப்பான்: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :இரயில்கள் பயன்படுத்தப்போகும் வழிகண்டுபிடிப்பான் -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :சாலை வாகனங்களுக்கான வழிகண்டுபிடிப்பான்: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :சாலை வாகனங்கள் பயன்படுத்தப்போகும் வழிகண்டுபிடிப்பான் -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :கப்பல்களுக்கான வழிகண்டுபிடிப்பான்: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :கப்பல்கள் பயன்படுத்தப்போகும் வழிகண்டுபிடிப்பான் STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :சிக்னல்களில் தானியங்கி மீட்சி: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :இரயில்கள் நீண்ட நேரம் காத்திருந்தால், சிக்னலில் திரும்புவதற்கு அனுமதிக்கவும் -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(பரிந்துரைக்கப்பட்டது) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}அமைப்பின் மதிப்பினை மாற்று @@ -1985,6 +1980,7 @@ STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}அம STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF அமைப்புகள் STR_INTRO_ONLINE_CONTENT :{BLACK}கோப்புகளை இணையத்தில் தேடு STR_INTRO_AI_SETTINGS :{BLACK}செயற்கை நுண்ணறிவு அமைப்புகள் +STR_INTRO_GAMESCRIPT_SETTINGS :{BLACK}விளையாட்டு ஸ்கிரிப்ட் அமைப்புகள் STR_INTRO_QUIT :{BLACK}வெளியேறு STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}புதிய ஆட்டத்தினைத் தொடங்கும். Ctrl+Click அழுத்தினால் வரைபட அமைப்புவடிவாக்கம் தவிர்க்கப்படும் @@ -1999,16 +1995,17 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}'உப STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}'மிதவெப்பமண்டல' நிலப்பரப்புப் பாணியைத் தேர்ந்தெடுக்கவும் STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}'பொம்மைநில' நிலப்பரப்புப் பாணியைத் தேர்ந்தெடுக்கவும் -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}ஆட்டம் அமைப்புகளைக் காட்டு -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}புள்ளிகள் பட்டியலினைக் காட்டவும் +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}ஆட்ட அமைப்புகளைத் திற +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}புள்ளிகள் பட்டியலினைத் திற STR_INTRO_TOOLTIP_HELP :{BLACK}ஆவணங்கள் மற்றும் இணைய ஆதாரங்களுக்கான அணுகலைப் பெறுங்கள் STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}அமைப்புகளைத் திற -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF அமைப்புகளைக் காட்டு +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF அமைப்புகளைத் திற STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}பதிவிறக்கம் செய்ய புதிய மற்றும் புதுப்பிக்கப்பட்ட உள்ளடக்கத்தை பார்க்கவும் STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}AI அமைப்புகளைத் திற STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}விளையாட்டு ஸ்கிரிப்ட் அமைப்புகளைத் திற STR_INTRO_TOOLTIP_QUIT :{BLACK} 'OpenTTD'ஐ விட்டு வெளியேறு +STR_INTRO_BASESET :{BLACK}தேர்ந்தெடுக்கப்பட்ட அடிப்படை வரைகலை தொகுப்பில் {NUM}{P படம் படங்கள்} காணவில்லை. தயவுசெய்து அடிப்படை வரைகலை தொகுப்பிற்கான மேம்படுத்தல்களுக்கு தேடவும். STR_INTRO_TRANSLATION :{BLACK}இந்த மொழிபெயர்ப்பில் {NUM} இல்லை {P "" s}.மொழிபெயர்பாளராக பதிவு செய்து OpenTTDவிற்கு உதவவும். மேலும் விவரங்கள் அறிய readme.txt ஐ பார்க்கவும்.. # Quit window @@ -2067,7 +2064,7 @@ STR_LIVERY_SHIP_GROUP_EMPTY :கப்பல STR_LIVERY_AIRCRAFT_GROUP_EMPTY :விமானக் குழுக்கள் எதுவும் அமைக்கப்படவில்லை ###length 23 -STR_LIVERY_DEFAULT :Standard Livery +STR_LIVERY_DEFAULT :இயல்பிருப்பு Livery STR_LIVERY_STEAM :புகை பொறி STR_LIVERY_DIESEL :டீசல் பொறி STR_LIVERY_ELECTRIC :மின்சார பொறி @@ -2247,7 +2244,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}நி STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}இணைப்பை துண்டி STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}சர்வர் காக்கப்பட்டுள்ளது. கடவுச்சொல்லினை இடவும் -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}நிற்வனம் காக்கப்பட்டுள்ளது. கடவுச்சொல்லினை இடவும் # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :இணைய வீரர்கள் @@ -2288,7 +2284,6 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}ரி STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :வெளியேற்று STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :தடை செய் STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :நீக்கு -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :கடவுச்சொல் திறத்தல் STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}நிர்வாக நடவடிக்கை STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}நீங்கள் '{STRING}' வீரரை வெளியேற்ற விரும்புகிறீர்களா? @@ -2308,18 +2303,9 @@ STR_NETWORK_ASK_SURVEY_YES :ஆம் STR_NETWORK_SPECTATORS :கவனிப்பவர்கள் -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}கடவுச்சொல்லினை நினைவில் வைத்திருக்காதே -STR_COMPANY_PASSWORD_OK :{BLACK}நிற்வனத்திற்கு புதிய கடவுச்சொல்லினை கொடுக்கவும் -STR_COMPANY_PASSWORD_CAPTION :{WHITE}நிறுவனத்தின் கடவுச்சொல் -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}முதன்மையான நிறுவனத்தின் கடவுச்சொல் -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}இந்த நிறுவனத்தின் கடவுச்சொல்லையே புதிய நிறுவனங்களுக்கு பயன்படுத்து - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}சேர் STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}இந்த நிறுவனமாக சேர்ந்து விளையாடு -STR_COMPANY_VIEW_PASSWORD :{BLACK}கடவுச்சொல் -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}நிறுவனத்தின் கடவுச்சொல்லை அமை # Network chat STR_NETWORK_CHAT_SEND :{BLACK}அனுப்பு @@ -2361,7 +2347,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}சர STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}தொடர்பு துண்டிக்கப்பட வாய்ப்பு உள்ளது STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}கடந்த {NUM} வினாடி{P "" களில்} சர்வரிலிருந்து சர்வரிலிருந்து எந்த டேட்டாவும் கிடைக்கவில்லை -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :பொதுவான பிழை STR_NETWORK_ERROR_CLIENT_DESYNC :இணைப்பு பிழை STR_NETWORK_ERROR_CLIENT_SAVEGAME :வரைபடத்தை ஏற்ற முடியவில்லை @@ -2415,6 +2401,7 @@ STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}சர STR_NETWORK_MESSAGE_KICKED :*** {STRING} வெளியேற்றப்பட்டார். காரணம்: ({STRING}) STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}சர்வர் பதிவு தோல்வி +STR_NETWORK_ERROR_COORDINATOR_ISOLATED :{WHITE}உங்கள் சேவையகத்தை மற்றவர்கள் அணுக இயலாது # Content downloading window STR_CONTENT_TITLE :{WHITE}கோப்புகள் பதிவிறக்கம் செய்யப்படுகின்றன @@ -2430,6 +2417,7 @@ STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}அன STR_CONTENT_SEARCH_EXTERNAL :{BLACK}வெளி இணையதளங்களில் தேடு STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}OpenTTDஇன் கோப்பு சேவையில் கிடைக்காத கோப்புகளுக்கு OpenTTDஉடன் தொடர்பில்லாத இணையதளங்களில் தேடவும் STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}நீங்கள் OpenTTD ஐ விட்டு வெளியேறுகிறீர்கள்! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}வெளி இணையதளங்களிரிந்து கோப்புகளை பதிவிறக்குவதற்கான விதிமுறைகள் மற்றும் நிபந்தனைகள் மாறுபடலாம்.{}நீங்கள் கோப்புகளை நிறுவுவதற்கான வழிமுறைகளுக்கு அந்த வெளி இணையதளங்களை பார்க்க வேண்டும்.{}தொடர விருப்பமா? STR_CONTENT_FILTER_TITLE :{BLACK}குறியீடு/பெயர் வடிகட்டி: STR_CONTENT_OPEN_URL :{BLACK}இணையதளத்தினை பார்வையிடு STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}இந்த கோப்பின் விவரங்களினை அதன் இணையதளத்தில் பார்க்க @@ -2494,8 +2482,10 @@ STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}OpenTTD- # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}ஒளி அமைப்புகள் STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}வீடுகளுக்கான வெளிப்படைத்தன்மையை நிலைமாற்று. Ctrl+Click செய்தால் அதனைப் பூட்டும் +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}நிறுத்தங்கள், பணிமனைகள், வழிப்புள்ளிகள் போன்ற கட்டிகங்களுக்கான வெளிப்படைத்தன்மையை நிலைமாற்று. Ctrl+Click செய்தால் அதனைப் பூட்டும் STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}பாலத்திற்கான வெளிப்படைத்தன்மையை நிலைமாற்று. Ctrl+Click செய்தால் அதனைப் பூட்டும் STR_TRANSPARENT_STRUCTURES_TOOLTIP :கலங்கரைவிளக்கம் மற்றும் ஆண்டெனா போல கட்டடங்களின் வெளிப்படைத்தன்மையை நிலைமாற்று. Ctrl+கிளிக் பூட்ட செய்ய +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}மின்சார இரயில் கம்பிக்ளுக்கான வெளிப்படைத்தன்மையை நிலைமாற்று. Ctrl+Click செய்தால் அதனைப் பூட்டும் STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}வெளிப்படையானதற்கு பதிலாக கண்ணுக்கு தெரியாததாக பொருட்களை அமைக்கவும் # Linkgraph legend window @@ -2557,7 +2547,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}இர # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}பாதைப்புள்ளி -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}பாதைப்புள்ளி வகையினைத் தேர்ந்தெடுக்கவும் # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}இரயில் நிலையம் தேர்ந்தெடுத்தல் @@ -2570,8 +2559,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}இர STR_STATION_BUILD_DRAG_DROP :{BLACK}இழுத்து விடவும் STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}இழுத்து விடுவதன் மூலம் நிலையத்தினைக் கட்டவும் -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}காட்டுவதற்கு ஒரு நிலைய வகையினைத் தேர்ந்தெடுக்கவும் -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}கட்டப்போகும் நிலையத்தின் வகையினைத் தேர்ந்தெடுக்கவும் + + + STR_STATION_CLASS_DFLT :இயல்பிருப்பு STR_STATION_CLASS_DFLT_STATION :இயல்பிருப்பு நிலையம் @@ -2691,7 +2681,6 @@ STR_LANDSCAPING_TOOLBAR :{WHITE}நி # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}பொருள் தேர்ந்தெடுத்தல் -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}கட்டப்போகும் பொருளின் வகையினைத் தேர்ந்தெடு STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}பொருளின் முன்பார்வை STR_OBJECT_BUILD_SIZE :{BLACK}அளவு: {GOLD}{NUM} x {NUM} கட்டங்கள் @@ -2755,7 +2744,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 க STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}ஏதொவொறு # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}புதிய தொழிற்சாலையினை நிறுவு +STR_FUND_INDUSTRY_CAPTION :{WHITE}புதிய தொழிற்சாலையினை நிறுவுதல் STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}இந்தப் பட்டியலிருந்து பொருத்தமான தொழிற்சாலை ஒன்றினை தேர்ந்தெடு STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}மாறுபட்ட தொழிற்சாலைகளை உருவாக்குக STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}மாறுபட்ட தொழிற்சாலைகளை உருவாக்குக @@ -2796,7 +2785,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ட் STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}இரயில்வே உரிமையாளர்: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}நகராட்சி: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :ஒன்றுமில்லை -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}அச்சுத் தூரங்கள்: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}அச்சுத் தூரங்கள்: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}வட்ட எண்: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}கட்டப்பட்டது/புதுப்பிக்கப்பட்டது: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}நிலையத்தின் பிரிவு: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}நிலையத்தின் வகை: {LTBLUE}{STRING} @@ -3090,9 +3080,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}உலகம் உருவாக்குதல் STR_GENERATION_RIVER_GENERATION :{BLACK}ஆறு உருவாக்குதல் -STR_GENERATION_TREE_GENERATION :{BLACK}மரங்கள் உருவாக்குதல் -STR_GENERATION_OBJECT_GENERATION :{BLACK}பொருள் உருவாக்குதல் STR_GENERATION_CLEARING_TILES :{BLACK}சமமில்லாத மற்றும் கல்லான பகுதி உருவாக்குதல் +STR_GENERATION_OBJECT_GENERATION :{BLACK}பொருள் உருவாக்குதல் +STR_GENERATION_TREE_GENERATION :{BLACK}மரங்கள் உருவாக்குதல் STR_GENERATION_SETTINGUP_GAME :{BLACK}ஆட்டம் அமைக்கப்படுகின்றது STR_GENERATION_PREPARING_SCRIPT :{BLACK}வரிவடிவம் செயல்படுத்தப்படுகின்றது STR_GENERATION_PREPARING_GAME :{BLACK}ஆட்டம் தயாராகிறது @@ -3174,7 +3164,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :இரயில # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}ஸ்பிரிட் ஒழுங்காக்கப்படுகிறது {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}அடுத்த ஸ்பிரைட்டு STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}ஸ்பிரைட்டுயிற்கு செல்லவும் STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}முந்தைய ஸ்பிரைட்டு @@ -3200,11 +3189,11 @@ STR_NEWGRF_ERROR_MSG_ERROR :{RED}பிழ STR_NEWGRF_ERROR_MSG_FATAL :{RED}மரணம்: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}"{STRING}" NewGRF மரணமான பிழை ஏற்பட்டுள்ளது:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :OpenTTDஆல் தெரிவித்த TTDPatch விருத்துடன் {1:STRING} செயல்படாது -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} ஆனது {STRING} TTD பதிப்பிற்காகவே +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} ஆனது {2:STRING} TTD பதிப்பிற்காகவே STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ஆனது {STRING} உடன் இணைந்து பயன்படுத்த வடிவமைக்கப்பட்டுள்ளது -STR_NEWGRF_ERROR_INVALID_PARAMETER :செல்லாத குணாதிசயம் {1:STRING} இன்: குணாதிசயம் {STRING} ({NUM}) -STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} ஆனது {STRING} இற்கு முன்னால் ஏற்றப்பட வேண்டும் -STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} ஆனது {STRING} இற்கு பின்னால் ஏற்றப்பட வேண்டும் +STR_NEWGRF_ERROR_INVALID_PARAMETER :செல்லாத குணாதிசயம் {1:STRING} இன்: குணாதிசயம் {2:STRING} ({3:NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} ஆனது {2:STRING} இற்கு முன்னால் ஏற்றப்பட வேண்டும் +STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} ஆனது {2:STRING} இற்கு பின்னால் ஏற்றப்பட வேண்டும் STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} இற்கு OpenTTD பதிப்பு {STRING} இற்கு அதிகமான பதிப்பு தேவைப்படுகிறது STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF கோப்பு மொழிபெயர்க்க வடிமைக்கப்பட்டது STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :அளவிற்கு அதிகமான NewGRF கள் ஏற்றப்பட்டுள்ளன @@ -3235,10 +3224,16 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}பய STR_NEWGRF_LIST_MISSING :{RED}கோப்புகள் இல்லை # NewGRF 'it's broken' warnings +STR_NEWGRF_BROKEN :{WHITE}'{0:STRING} என்ற NewGRFஇன் நடத்தையால் இணைப்பு பீழைகள் மற்றும் செயலிழப்புகள் ஏற்பட வாய்ப்புள்ளது +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}பணிமனையின் வெளியே '{1:ENGINE}'இன் இயங்கும் நிலையை மாற்றியது +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}பணிமனையின் வெளியே '{1:ENGINE}'இன் வாகன நீளத்தை மாற்றியது +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}பணிமனை அல்லது மாற்றியமைப்பின் வெளியே '{1:ENGINE}'இன் வாகன கொள்ளளவை மாற்றியது +STR_BROKEN_VEHICLE_LENGTH :{WHITE}{1:COMPANY}உடன் இரயில் {0:VEHICLE}இன் நீளம் செல்லாது. இதற்கான காரணம் அநேகமாக NewGRFகளுடன் சிக்கல் இருக்கலாம். இணைப்பு பிழை அல்லது செயலிழப்பு ஏற்படலாம். STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' தவரான தகவல்களினைத் தருகின்றது STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' தயாரிப்பு பின் அழைப்பில் முடிவில்லாத வட்டத்தினை உண்டாக்கியது STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}பின் அழைப்பு {1:HEX} திருப்பட்டது தெரியவில்லை/செல்லுபடியாகாத முடிவு {2:HEX} +STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}{2:HEX}ல் உற்பத்தி பின் அழைப்பில் {1:STRING} செல்லுபடியாகாத சரக்கு விதம் வழங்கியது # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<செல்லுபடியாகாத சரக்கு> @@ -3268,7 +3263,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}மு STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}குறியிற்கு பெயரிடவும் # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}நகரங்கள் STR_TOWN_DIRECTORY_NONE :{ORANGE}- ஒன்றுமில்லை - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (மாநகரம்){BLACK} ({COMMA}) @@ -3320,13 +3314,16 @@ STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :நகர ச STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :நிறுவன தலைவரின் சிலையினை கட்டு STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :புதிய கட்டடங்களை கட்ட நிதியுதவி செய் STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :சிறப்பு போக்குவரத்து உரிமைகளை வாங்கு -STR_LOCAL_AUTHORITY_ACTION_BRIBE :நகராட்சியிற்கு கையூட்டு கொடு +STR_LOCAL_AUTHORITY_ACTION_BRIBE :நகராட்சியிற்கு லஞ்சம் கொடு ###next-name-looks-similar STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}சிறிய விளம்பர பிரசாரத்தினைத் தொடங்கு, இதனால் பயணிகள் மற்றும் சரக்குகள் உங்களது போக்குவரத்து நிறுவனத்தினைப் பயன்படுத்துவர்.{}செலவு: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}சராசரி விளம்பர பிரசாரத்தினைத் தொடங்கு, இதனால் பயணிகள் மற்றும் சரக்குகள் உங்களது போக்குவரத்து நிறுவனத்தினைப் பயன்படுத்துவர்.{}செலவு: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}பெரிய விளம்பர பிரசாரத்தினைத் தொடங்கு, இதனால் பயணிகள் மற்றும் சரக்குகள் உங்களது போக்குவரத்து நிறுவனத்தினைப் பயன்படுத்துவர்.{}செலவு: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}தங்கள் நிறுவனத்தின் பெருமைக்காக ஓர் சிலையினைக் கட்டவும்.{}நிலையத்திற்கு நிரந்தர ஊக்கத்தை அளிக்கிறது.{}செலவு: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}12 மாதங்களுக்கு நகரத்தில் பிரத்தியேக போக்குவரத்து உரிமை வாங்கவும்.{}நகராட்சி பயணிகள் மற்றும் சரக்குகளை உங்கள் எதிராளிகளின் நிலையங்களை பயன்படுத்த அனுமதிக்காது. எதிராளியின் வெற்றிகரமான லஞ்சம் இந்த ஒப்பந்தத்தை ரத்து செய்யும்.{}{POP_COLOUR}செலவு: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}12 நிமிடங்களுக்கு நகரத்தில் பிரத்தியேக போக்குவரத்து உரிமை வாங்கவும்.{}நகராட்சி பயணிகள் மற்றும் சரக்குகளை உங்கள் எதிராளிகளின் நிலையங்களை பயன்படுத்த அனுமதிக்காது. எதிராளியின் வெற்றிகரமான லஞ்சம் இந்த ஒப்பந்தத்தை ரத்து செய்யும்.{}{POP_COLOUR}செலவு: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}மாட்டிக்கொண்டால் கடுமையான அபராதம் ஆபத்தில், உங்கள் மதிப்பீட்டை அதிகரிக்க மற்றும் எதிராளியின் பிரத்தியேக போக்குவரத்து உரிமைகளின் ரத்து செய்ய நகராட்சிக்கு லஞ்சம் தரவும்.{}{POP_COLOUR}செலவு: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}{COMPANY} குறிக்கோள்கள் @@ -3577,7 +3574,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/காலத்திற்கு # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}தொழிற்சாலைகள் STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- ஒன்றுமில்லை - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% கொண்டு செல்லப்பட்டது){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3585,6 +3581,7 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} மற்றும் {NUM} மேலும்... +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}தொழிற்சாலைகளின் பெயர்கள் - தொழிற்சாலயை முக்கிய காட்சியில் நடுவில் காட்ட பெயரில் கிளிக் செய்யவும். தொழிற்சாலையின் இடத்தில் புதிய காட்சியை திறக்க Ctrl+கிளிக் செய்யவும். STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}ஏற்றுக்கொள்ளப்படும் சரக்குகள்: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}உற்பத்தி செய்யப்பட்ட சரக்குகள்: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :அனைத்து சரக்கு வகைகள் @@ -3993,21 +3990,21 @@ STR_VEHICLE_STATUS_LEAVING :{LTBLUE}வி STR_VEHICLE_STATUS_CRASHED :{RED}மோதியது! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}பழுதானது STR_VEHICLE_STATUS_STOPPED :{RED}நின்றுவிட்டது -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}நிறுத்தப்படுகின்றது, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - நிறுத்தப்படுகின்றது STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}திறன் இல்லை STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}வழிக்காக காத்துக்கொண்டிருக்கிறது STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}செல்லுமிடம் நெடுந்தொலைவிலுள்ளது -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{STATION} இற்கு செல்கிறது, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}எந்த கட்டளைகளும் இல்லை, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE} {WAYPOINT}-இற்கு செல்கிறது, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE} {DEPOT}-இற்கு செல்கிறது, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE} {DEPOT}-இல் சர்வீஸ் செய்ய செல்கிறது, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - {0:STATION}-இற்கு செல்கிறது +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - எந்த கட்டளைகளும் இல்லை +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - {0:WAYPOINT}-இற்கு செல்கிறது +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - {0:DEPOT}-இற்கு செல்கிறது +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - {0:DEPOT}-இல் பழுதுபார்க்க செல்கிறது -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{STATION} நிலையத்தினை அடைய முடியவில்லை, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{WAYPOINT}-இனை அடைய முடியவில்லை, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{DEPOT}-இனை அடைய முடியாது , {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{DEPOT} இனை அடைய முடியவில்லை, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - {0:STATION}-இனை அடைய முடியவில்லை +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - {0:WAYPOINT}-இனை அடைய முடியவில்லை +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - {0:DEPOT}-இனை அடைய முடியாது +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - {0:DEPOT}-இனை அடைய முடியவில்லை # Vehicle stopped/started animations ###length 2 @@ -4134,6 +4131,7 @@ STR_ORDER_GO_TO :இங்கே STR_ORDER_GO_NON_STOP_TO :எங்கும் நிற்காமல் இங்கே செல் STR_ORDER_GO_VIA :இதன் வழியாக இங்கே செல் STR_ORDER_GO_NON_STOP_VIA :எங்கும் நிற்காமல் இதன் வழியாக செல் +STR_ORDER_TOOLTIP_NON_STOP :{BLACK}இந்தக் கட்டளையின் நிறுத்துதல் நடத்தையை மாற்றவும் STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}எந்த சரக்கினையும் முழுமையாக ஏற்று STR_ORDER_DROP_LOAD_IF_POSSIBLE :கிடைத்தால் ஏற்று @@ -4180,9 +4178,9 @@ STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}கொ STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :இதற்கு சமம் STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :இதற்கு சமம் இல்லை STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :இது குறைவு. இதற்கு -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :இது சமம் அல்லது குறைவு. இதற்கு +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :இதற்கு இது சமம் அல்லது குறைவு STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :இது அதிகம். இதற்கு -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :இது சமம் அல்லது அதிகம். இதற்கு +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :இதற்கு இது சமம் அல்லது அதிகம் STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :உண்மை STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :பொய் @@ -4421,8 +4419,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :விளைய STR_AI_SETTINGS_CLOSE :{BLACK}மூடு STR_AI_SETTINGS_RESET :{BLACK}முன்னிருந்தமாதிரி மாற்று STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4471,9 +4467,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}மத STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}பதிவாகிக்கொண்டிருக்கிறது,{}சிறிது நேரம் பொறுங்கள்,! STR_ERROR_AUTOSAVE_FAILED :{WHITE}தானியங்கிபதிவு தோல்வியடைந்தது STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}கணினி சேமிப்பகத்தினை படிக்க இயலவில்லை -STR_ERROR_GAME_SAVE_FAILED :{WHITE}ஆட்டத்தின் படிவு தோல்வியடைந்தது{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}கோப்பினை நீக்க இயலவில்லை -STR_ERROR_GAME_LOAD_FAILED :{WHITE}ஆட்டம் பதிவேறுவது தோல்வியடைந்தது{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :உள்பிழை: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :உடைந்த பதிவுஆட்டம் - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :புதிய பதிப்பினால் பதிவுஆட்டம் உருவாக்கப்பட்டுள்ளது @@ -4847,6 +4841,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}தங STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}தற்போது எந்த வாகனங்களும் கிடையாது STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}{DATE_SHORT} இற்கு பிறகு புதிய ஆட்டம் ஒன்றினைத் தொடங்கு அல்லது NewGRF ஒன்றினைப் பயன்படுத்தி பிற்கால வாகனங்களைப் பயன்படுத்து + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}இரயில் சிக்னலைத் தாண்டிச் செல்ல முடியாது... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}இரயில் செல்லும் திசையினை திருப்ப முடியாது... @@ -5373,6 +5368,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}m +STR_CURRENCY_SHORT_GIGA :{NBSP}பில்லியன் +STR_CURRENCY_SHORT_TERA :{NBSP}tn + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 0e5501ef44..5fec5c13b1 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -385,6 +385,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :ออกจา STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :ออก + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :ตัวเลือกเกม @@ -863,7 +864,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}หน STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}การเลือกสกุลเงิน -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :ปอนด์สเตอร์ลิง STR_GAME_OPTIONS_CURRENCY_USD :ดอลลาร์สหรัฐ STR_GAME_OPTIONS_CURRENCY_EUR :ยูโร @@ -946,6 +947,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}ข้ + STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen โหมดล้มเหลว # Custom currency window @@ -956,6 +958,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}ลด STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}เพิ่มจำนวนสกุลเงินของคุณสำหรับหนึ่งปอนด์ (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}กำหนดอัตราแลกเปลี่ยนของสกุลเงินหนึ่งปอนด์ (£) + STR_CURRENCY_PREFIX :{LTBLUE}คำนำหน้า: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}สัญลักษณ์หน้าสกุลเงินของท่าน STR_CURRENCY_SUFFIX :{LTBLUE}คำเสริมท้าย: {ORANGE}{STRING} @@ -1291,6 +1294,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :เตือน ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :เมื่อเปิดใช้งาน จะแสดงข้อความแจ้งเตือนเมื่อพาหนะไม่สามารถทำกำไรได้เมื่อครบกำหนดสิ้นปี + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :ยานพาหนะไม่หมดอายุ: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :เมื่อเปิดใช้งาน พาหนะทั้งหมดจะยังสามารถซื้อได้ตลอดไปหลังจากหมดช่วงระยะเวลา @@ -1574,7 +1578,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :ตั้งค STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงสำหรับอากาศยาน เป็นหน่วยวัน หรือหากเลือกการตั้งค่าโดยคิดจากเปอร์เซนต์ของประสิทธิภาพ จะเปลี่ยนไปใช้่หน่วยเปอร์เซนต์แทน STR_CONFIG_SETTING_SERVINT_SHIPS :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงของพาหนะทางน้ำ: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงสำหรับพาหนะทางน้ำ เป็นหน่วยวัน หรือหากเลือกการตั้งค่าโดยคิดจากเปอร์เซนต์ของประสิทธิ์ภาพ จะเปลี่ยนไปใช้่หน่วยเปอร์เซนต์แทน -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} วัน/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :ไม่ตั้ง @@ -1837,17 +1842,8 @@ STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :การกร STR_CONFIG_SETTING_AI :คู่แข่ง STR_CONFIG_SETTING_AI_NPC :ผู้เล่นคอมพิวเตอร์ -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :ตัวค้นหาเส้นทางสำหรับรถไฟ: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :การหาค้นหาเส้นทางของขบวนรถไฟ -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :ตัวค้นหาเส้นทางสำหรับรถยนต์: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :การค้นหาเส้นทางของยานพาหนะทางบก -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :ตัวค้นหาเส้นทางสำหรับเรือ: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :การค้นหาเส้นทางของยานพาหนะทางน้ำ STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :หมุนกลับขบวนอัตโนมัติที่เสาอาณัติสัญญาณ: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :อนุญาตให้ขบวนรถไฟกลับขบวนที่เสาอาณัติสัญญาณเมื่อมีการรอสัญญาณอนุญาตเป็นเวลานาน -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(แนะนำ) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}เปลี่ยนค่าการตั้งค่า @@ -2125,7 +2121,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}รว STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}ตัดการเชื่อมต่อ STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}เซิฟเวอร์มีการป้องกัน กรุณากรอกพาสเวิร์ด -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}บริษัทมีการป้องกัน. กรุณากรอกพาสเวิร์ด # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :รายชื่อผู้เล่นที่ออนไลน์ @@ -2150,7 +2145,6 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_STUN :{BLACK}Behind N STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}ทางรีเลย์ STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :ลบ -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :ปลดล็อครหัสผ่าน STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}คุณแน่ใจว่าจะเตะผู้เล่น '{STRING}' ใช่มั้ย? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}คุณแน่ใจหรือไม่ที่จะแบนผู้เล่น '{STRING}' คนนี้? @@ -2162,19 +2156,9 @@ STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}ใช STR_NETWORK_SPECTATORS :ผู้ชม -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}ไม่ทำการเก็บพาสเวิร์ดที่กรอกไว้แล้ว -STR_COMPANY_PASSWORD_OK :{BLACK}ตั้งพาสเวิร์ดของบริษัทใหม่ -STR_COMPANY_PASSWORD_CAPTION :{WHITE}พาสเวิร์ดของบริษัท -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}พาสเวิร์ดตั้งต้นของบริษัท -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}ใช้พาสเวิร์ดของบริษัทนี้เป็นพาสเวิร์ดตั้งต้นของบริษัทใหม่ - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}เข้าร่วม STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}เข้าร่วมและเล่นเป็นบริษัทนี้ -STR_COMPANY_VIEW_PASSWORD :{BLACK}พาสเวิร์ด -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}รหัสผ่านป้องกันบริษัทของคุณจากผู้เล่นที่ไม่ได้รับอนุญาตให้เข้าร่วม -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}ตั้งพาสเวิร์ดของบริษัท # Network chat STR_NETWORK_CHAT_SEND :{BLACK}ส่ง @@ -2216,7 +2200,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}ชื STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}การเชื่อมต่อล้มเหลว STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}{NUM} วินาทีสุดท้ายไม่มีข้อมูลส่งถึงเครื่องแม่ข่าย -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :การผิดพลาดทั่วไป STR_NETWORK_ERROR_CLIENT_DESYNC :desync ผิดพลาด STR_NETWORK_ERROR_CLIENT_SAVEGAME :ไม่สามารถโหลดแผนที่ได้ @@ -2416,7 +2400,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}เล # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}จุดตรวจ -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}เลือกชนิดของจุดตรวจ # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}ตัวเลือกของสถานีรถไฟ @@ -2429,8 +2412,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}เล STR_STATION_BUILD_DRAG_DROP :{BLACK}ลากและวาง STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}สร้างสถานีโดยใช้การลากและวาง -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}เลือกชนิดของสถานีที่จะแสดง -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}เลือกชนิดของสถานีที่จะสร้าง + + + STR_STATION_CLASS_DFLT :สถานีมาตรฐาน STR_STATION_CLASS_WAYP :จุดตรวจ @@ -2563,8 +2547,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}ซื # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}การเลือกวัตถุ -STR_OBJECT_BUILD_TOOLTIP :{BLACK}เลือกวัตถุเพื่อสร้าง กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้างและการแสดงมูลค่าโดยประมาณ -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}เลือกชนิดของวัตถุที่จะสร้าง STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}ตัวอย่างวัตถุ STR_OBJECT_BUILD_SIZE :{BLACK}ขนาด: {GOLD}{NUM} x {NUM} ช่อง @@ -2669,7 +2651,6 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ผู STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}ผู้ครอบครองทางรถไฟ: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}ขึ้นตรงกับผู้ดูแลในท้องถิ่น: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :ไม่มี -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}ตำแหน่ง: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}สร้างเมื่อ: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}ประเภทของสถานี: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}รูปแบบของสถานี: {LTBLUE}{STRING} @@ -2930,9 +2911,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}เครื่องมือสร้างแผนที่ STR_GENERATION_RIVER_GENERATION :{BLACK}สร้างแม่น้ำ -STR_GENERATION_TREE_GENERATION :{BLACK}สร้างต้นไม่ -STR_GENERATION_OBJECT_GENERATION :{BLACK}สร้างวัตถุ STR_GENERATION_CLEARING_TILES :{BLACK}สร้างพื้นหิน +STR_GENERATION_OBJECT_GENERATION :{BLACK}สร้างวัตถุ +STR_GENERATION_TREE_GENERATION :{BLACK}สร้างต้นไม่ STR_GENERATION_SETTINGUP_GAME :{BLACK}ตั้งค่าให้กับเกม STR_GENERATION_PREPARING_TILELOOP :{BLACK}Running tile-loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Running script @@ -3014,7 +2995,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :ประเภ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF ตัวแปร 60+x parameter (hexadecimal) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}sprite ถัดไป STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}เคลื่อนไปยัง sprite ปกติอันถัดไป โดยข้าม pseudo/recolour/font และวกกลับเมื่อถึงจุดสิ้นสุด STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}ไปยัง sprite @@ -3119,7 +3099,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}ไป STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}กรอกชื่อสำหรับป้าย # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}เมือง STR_TOWN_DIRECTORY_NONE :{ORANGE}- ไม่มี - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (เมือง){BLACK} ({COMMA}) @@ -3404,7 +3383,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}ชิ STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}ท่าอากาศยาน # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}อุตสาหกรรม STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- ไม่มี - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} @@ -4242,9 +4220,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}รา STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ขณะนี้กำลังบันทึก,{}โปรดรอจนกว่าจะเสร็จ! STR_ERROR_AUTOSAVE_FAILED :{WHITE}บันทึกอัตโนมัติล้มเหลว!!! STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}ไม่สามารถอ่านข้อมูลได้ -STR_ERROR_GAME_SAVE_FAILED :{WHITE}บันทึกเกมล้มเหลว!!!{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}ไม่สามารถทำการลบไฟล์ -STR_ERROR_GAME_LOAD_FAILED :{WHITE}โหลดเกมล้มเหลว{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :ข้อผิดพลาดจากภายใน: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :เกมที่บันทึกไว้ เสีย - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :เกมที่บันทึกไว้ สำหรับเวอร์ชันใหม่ @@ -4604,6 +4580,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}เป STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}ยังไม่มียานพาหานะให้เลือก STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}เริ่มเกมหลังจาก {DATE_SHORT} หรือเลือกใช้งาน NewGRF ของยานพาหนะที่จัดเตรียมไว้ก่อนหน้านี้ + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}ไม่สามารถสั่งให้รถไฟวิ่งผ่านเสาอาณัติสัญญาณที่แสดงท่า "ห้าม"... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}ไม่สามารถกลับทิศขบวนรถไฟได้... @@ -5114,6 +5091,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 5479c59f67..ffd06b5ecb 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -213,6 +213,8 @@ STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :與主色調相 STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP}英里/小時 STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}公里/小時 STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}米/秒 +STR_UNITS_VELOCITY_GAMEUNITS_DAY :{DECIMAL}{NBSP}格/日 +STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}格/秒 STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}節 STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}匹 @@ -254,8 +256,15 @@ STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP} STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}公尺 # Time units used in string control characters +STR_UNITS_DAYS :{COMMA}{NBSP}日 +STR_UNITS_SECONDS :{COMMA}{NBSP}秒 +STR_UNITS_TICKS :{COMMA}{NBSP}刻 +STR_UNITS_MONTHS :{NUM}{NBSP}個月 +STR_UNITS_MINUTES :{NUM}{NBSP}分 +STR_UNITS_YEARS :{NUM}{NBSP}年 +STR_UNITS_PERIODS :{NUM}{NBSP}個週期 # Common window strings STR_LIST_FILTER_TITLE :{BLACK}篩選: @@ -299,7 +308,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}如啟 STR_BUTTON_DEFAULT :{BLACK}預設值 STR_BUTTON_CANCEL :{BLACK}取消 STR_BUTTON_OK :{BLACK}確定 -STR_WARNING_PASSWORD_SECURITY :{YELLOW}警告:伺服器管理者可能可以閱讀在此處輸入的任何文字訊息 # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -350,9 +358,13 @@ STR_SORT_BY_POPULATION :人口 STR_SORT_BY_RATING :評價 STR_SORT_BY_NUM_VEHICLES :車輛數量 STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :去年總盈利 +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :上期總盈利 STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :今年總盈利 +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :本期總盈利 STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :去年平均盈利 +STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :上期平均盈利 STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :今年平均盈利 +STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :本期平均盈利 # Group by options for vehicle list STR_GROUP_BY_NONE :無 @@ -423,6 +435,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :離開編輯器 STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :離開 + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :遊戲選項 @@ -613,6 +626,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}點選 # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}公司排行榜 STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :維修技工 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :交通管制員 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :運輸管理師 @@ -791,6 +805,7 @@ STR_STATUSBAR_AUTOSAVE :{RED}自動儲 STR_STATUSBAR_SAVING_GAME :{RED}* * 遊戲儲存中 * * STR_STATUSBAR_SPECTATOR :{WHITE}旁觀者 +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(無限) # News message history STR_MESSAGE_HISTORY :{WHITE}訊息記錄 @@ -908,23 +923,21 @@ STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}選擇 STR_GAME_OPTIONS_TAB_GRAPHICS :圖形集 STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}選擇圖形設定 STR_GAME_OPTIONS_TAB_SOUND :音效 +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}選擇音效及音樂設定 +STR_GAME_OPTIONS_TAB_SOCIAL :社交 +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}選擇社交插件設定 STR_GAME_OPTIONS_VOLUME :音量 STR_GAME_OPTIONS_SFX_VOLUME :音效 STR_GAME_OPTIONS_MUSIC_VOLUME :音樂 -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}幣值單位 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}選擇幣值單位 STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :英鎊 STR_GAME_OPTIONS_CURRENCY_USD :美元 STR_GAME_OPTIONS_CURRENCY_EUR :歐元 @@ -1008,12 +1021,11 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}勾選 STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}縮放邊框 STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}勾選此方框以令邊框隨界面大小而縮放 +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}使用傳統點陣式字體 +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}勾選此方框以使用固定大小的傳統點陣式字體。 +STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}反鋸齒字體 +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}勾選此方框以使用反鋸齒字體。 -STR_GAME_OPTIONS_GUI_SCALE_1X :1倍 -STR_GAME_OPTIONS_GUI_SCALE_2X :2倍 -STR_GAME_OPTIONS_GUI_SCALE_3X :3倍 -STR_GAME_OPTIONS_GUI_SCALE_4X :4倍 -STR_GAME_OPTIONS_GUI_SCALE_5X :5倍 STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}自動問卷 STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}參與自動問卷 @@ -1042,6 +1054,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}關於 + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}無法擷取可用的螢幕解析度清單 STR_ERROR_FULLSCREEN_FAILED :{WHITE}無法切換全螢幕模式 @@ -1053,6 +1066,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}降低 STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}提升自訂幣值對 1 英鎊 (£) 的匯率 STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}設定自訂幣值對 1 英鎊 (£) 的匯率 + STR_CURRENCY_PREFIX :{LTBLUE}前置字:{ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}為你的貨幣指定前置字串 STR_CURRENCY_SUFFIX :{LTBLUE}後置字:{ORANGE}{STRING} @@ -1203,6 +1217,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :靠右 STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}秒 +STR_CONFIG_SETTING_INFINITE_MONEY :無限資金: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :最大貸款額:{STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :公司最多可借多少錢(此設定的值排除了通貨膨脹因素)。 @@ -1412,6 +1427,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :當車輛收入 ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :如啟用此選項,系統會為上一年度賺不到錢的車輛顯示訊息。 + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :車輛永不過期:{STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :如啟用此選項,所有車輛一經面世,就永遠可以選擇建造。 @@ -1420,6 +1436,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :如啟用此選 ###setting-zero-is-special +STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :車輛達到使用年限時自動更新:{STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :如啟用此選項,所有在符合替換條件時進入維修設施的車輛會被替換。 @@ -1630,7 +1647,10 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :啟用可以為 STR_CONFIG_SETTING_LOADING_INDICATORS :使用裝載進度指示:{STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :選擇是否在車輛裝卸的時候顯示裝載狀況。 +STR_CONFIG_SETTING_TIMETABLE_MODE :時刻表使用的時間單位:{STRING} ###length 3 +STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :日 +STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :秒 STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :顯示時刻表排定的到離時間:{STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :在時刻表上顯示預料的到站、出發時間。 @@ -1731,7 +1751,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :預設的飛機 STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :設定預設的飛機維護作業時距。所有沒有指定維護作業時距的飛機都會使用這個預設值。 STR_CONFIG_SETTING_SERVINT_SHIPS :預設的船舶維護作業時距:{STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :設定預設的船舶維護作業時距。所有沒有指定維護作業時距的船舶都會使用這個預設值。 -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}日/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :停用 @@ -2012,25 +2033,18 @@ STR_CONFIG_SETTING_LIMITATIONS :遊戲限制 STR_CONFIG_SETTING_ACCIDENTS :災難/事故 STR_CONFIG_SETTING_GENWORLD :地圖的產生 STR_CONFIG_SETTING_ENVIRONMENT :環境 +STR_CONFIG_SETTING_ENVIRONMENT_TIME :時間 STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :地方政府 STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :市鎮 STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :工業 STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :貨物分配 +STR_CONFIG_SETTING_ENVIRONMENT_TREES :樹木 STR_CONFIG_SETTING_AI :競爭對手 STR_CONFIG_SETTING_AI_NPC :電腦玩家 STR_CONFIG_SETTING_NETWORK :網路 -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :列車的路徑搜尋方式:{STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :設定列車使用的路徑搜尋方式。 -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :車輛的路徑搜尋方式:{STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :設定公路車輛(包括電車)使用的路徑搜尋方式。 -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :船舶的路徑搜尋方式:{STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :設定船舶使用的路徑搜尋方式。 STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :在號誌自動倒轉:{STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :設定是否容許列車在號誌前等候超過一段時間後調頭。 -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(建議) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}修改設定值 @@ -2146,9 +2160,11 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}顯示 STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}顯示車輛配色 STR_LIVERY_SHIP_TOOLTIP :{BLACK}顯示船舶配色 STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}顯示飛機配色 +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}顯示列車群組的配色 STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}選擇所選配色的主色調。如按住 Ctrl 鍵點選色調,則所有配色皆採用此顏色為主色調 STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}選擇所選配色的副色調。如按住 Ctrl 掣點選色調,則所有配色皆採用此顏色為副色調 STR_LIVERY_PANEL_TOOLTIP :{BLACK}選擇要修改的配色,按住 CTRL 可同時選擇多種配色,勾選方框可切換是否使用配色 +STR_LIVERY_TRAIN_GROUP_EMPTY :未有設置任何列車群組 ###length 23 STR_LIVERY_DEFAULT :標準配色 @@ -2254,6 +2270,7 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}地圖 STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}遊戲的地圖大小{}點選可以依大小排序 STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}日期 STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}目前日期 +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}遊戲經過時間 STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}語言、伺服器版本等 STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}點選清單内的遊戲即可選擇 @@ -2269,6 +2286,7 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}伺服 STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}邀請碼:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}開始日期:{WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}目前日期:{WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}遊戲經過時間: {WHITE}{NUM}小時 {NUM}分鐘 STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}遊戲腳本:{WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}受密碼保護! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}伺服器離線 @@ -2333,7 +2351,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}取得 STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}斷線 STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}伺服器受保護,輸入密碼 -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}公司受保護,輸入密碼 # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :在線玩家 @@ -2382,13 +2399,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}使用 STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :踢出 STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :停權 STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :刪除 -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :密碼解鎖 STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}管理員指令 STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}你確定要踢出玩家 '{STRING}' 嗎? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}你確定要將玩家 '{STRING}' 列入黑名單嗎? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}你確定要刪除「{COMPANY}」公司嗎? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}你確定要重設 '{COMPANY}'的公司密碼嗎? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}是否使用中繼伺服器? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}無法與伺服器 '{STRING}'連結.{}是否要透過中繼伺服 '{STRING}'進行連結? @@ -2403,19 +2418,9 @@ STR_NETWORK_ASK_SURVEY_YES :是 STR_NETWORK_SPECTATORS :旁觀者 -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}不要儲存所輸入的密碼 -STR_COMPANY_PASSWORD_OK :{BLACK}為公司設定新的密碼 -STR_COMPANY_PASSWORD_CAPTION :{WHITE}公司密碼 -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}預設公司密碼 -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}使用此密碼當作未來新公司的預設密碼 - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}加入 STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}加入並操控此公司 -STR_COMPANY_VIEW_PASSWORD :{BLACK}密碼 -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}以密碼保護您的公司,避免未授權的玩家接手 -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}設定公司密碼 # Network chat STR_NETWORK_CHAT_SEND :{BLACK}傳送 @@ -2459,7 +2464,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}你的 STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}可能發生連線中斷 STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}最後 {NUM} 秒沒有資料從伺服器過來 -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :一般錯誤 STR_NETWORK_ERROR_CLIENT_DESYNC :失去同步 STR_NETWORK_ERROR_CLIENT_SAVEGAME :無法載入地圖 @@ -2670,7 +2675,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}選擇 # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}號誌站 -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}顯示號誌站種類 # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}選擇火車站 @@ -2683,11 +2687,13 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}選擇 STR_STATION_BUILD_DRAG_DROP :{BLACK}拖放 STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}以拖曳方式興建車站 -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}選擇要顯示的車站種類 -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}選擇要興建的車站種類 -STR_STATION_CLASS_DFLT :預設車站 + + + +STR_STATION_CLASS_DFLT :預設 STR_STATION_CLASS_DFLT_STATION :預設車站 +STR_STATION_CLASS_DFLT_ROADSTOP :預設車站 STR_STATION_CLASS_WAYP :號誌站 STR_STATION_CLASS_WAYP_WAYPOINT :預設號誌站 @@ -2826,8 +2832,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}購買 # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}選擇物件 -STR_OBJECT_BUILD_TOOLTIP :{BLACK}選擇要建立的物件。按 Ctrl 以對角線選擇區域。按 Shift 可切換建立/顯示預估的建立費用。 -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}選擇物件的類別以進行建造 STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}預覽此物件 STR_OBJECT_BUILD_SIZE :{BLACK}大小:{GOLD}{NUM} x {NUM} 格 @@ -2942,8 +2946,9 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}電車 STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}鐵路所有者:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}地方政府:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :無 -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}座標:{LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}建於:{LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}座標:{LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}格編號:{LTBLUE}{NUM} ({HEX}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}建造或翻新於:{LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}車站風格:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}車站種類:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}機場等級:{LTBLUE}{STRING} @@ -3244,9 +3249,9 @@ STR_GENERATION_PROGRESS :{WHITE}完成 { STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}產生世界 STR_GENERATION_RIVER_GENERATION :{BLACK}產生河流 -STR_GENERATION_TREE_GENERATION :{BLACK}產生樹木 -STR_GENERATION_OBJECT_GENERATION :{BLACK}無法移動 STR_GENERATION_CLEARING_TILES :{BLACK}產生粗地與岩石區域 +STR_GENERATION_OBJECT_GENERATION :{BLACK}無法移動 +STR_GENERATION_TREE_GENERATION :{BLACK}產生樹木 STR_GENERATION_SETTINGUP_GAME :{BLACK}設定遊戲 STR_GENERATION_PREPARING_TILELOOP :{BLACK}執行單格迴圈中 STR_GENERATION_PREPARING_SCRIPT :{BLACK}正在運行腳本 @@ -3337,7 +3342,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :道路類型 STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x 參數(16 進位) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}定位 Sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}下一個子畫面 STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}繼續處理下個正常的子畫面,略過任何虛位/重新著色/文字字型相關的子畫面,並在到達最後的子畫面後,返回第一個子畫面繼續進行處理。 STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}前往子畫面 @@ -3454,7 +3458,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}前往 STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}輸入標誌名稱 # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}城市 STR_TOWN_DIRECTORY_NONE :{ORANGE}- 無 - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (城市){BLACK} ({COMMA}) @@ -3561,7 +3564,10 @@ STR_SUBSIDIES_CAPTION :{WHITE}補助 STR_SUBSIDIES_OFFERED_TITLE :{BLACK}提供補助的運輸服務: STR_SUBSIDIES_NONE :{ORANGE}- 無 - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}已獲補助的服務: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}將 {STRING} 從 {STRING} 運到 {STRING}{YELLOW} ({COMPANY}{YELLOW},{STRING}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}點選運送服務可將工業/市鎮置於畫面中央。 按住 Ctrl 點選可於工業/市鎮位置開啟新視窗視野 +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :直到{DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :剩餘{UNITS_MONTHS_OR_MINUTES} # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY}的歷史紀錄 @@ -3659,6 +3665,8 @@ STR_EDIT_WAYPOINT_NAME :{WHITE}編輯 # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} 財務狀況 {BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_YEAR_CAPTION :{WHITE}年份 +STR_FINANCES_PERIOD_CAPTION :{WHITE}週期 ###length 3 STR_FINANCES_REVENUE_TITLE :{WHITE}收入 @@ -3694,9 +3702,9 @@ STR_FINANCES_MAX_LOAN :{WHITE}貸款 STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BANK_BALANCE :{WHITE}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}貸款 {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}增加貸款。 按住 Ctrl 點選可貸款最大額度 +STR_FINANCES_BORROW_TOOLTIP :{BLACK}增加貸款。按住 Ctrl 以貸款最大額度 STR_FINANCES_REPAY_BUTTON :{BLACK}償還 {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}償還貸款。 按住 Ctrl 點選可償還最大額度 +STR_FINANCES_REPAY_TOOLTIP :{BLACK}償還貸款。按住 Ctrl 以償還最大額度 STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}基礎建設 # Company view @@ -3758,9 +3766,10 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}運河 STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}車站: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}車站設施 STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}機場 +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENCY_LONG}/年 +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/週期 # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}工業 STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- 無 - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} (運送了{COMMA}%){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3818,6 +3827,7 @@ STR_VEHICLE_LIST_REPLACE_VEHICLES :替換車輛 STR_VEHICLE_LIST_SEND_FOR_SERVICING :送去維護 STR_VEHICLE_LIST_CREATE_GROUP :建立群組 STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}今年盈利:{CURRENCY_LONG} (去年盈利:{CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}本期盈利:{CURRENCY_LONG}(上期:{CURRENCY_LONG}) STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :送到機廠 STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :送到車廠 @@ -3861,7 +3871,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :移去所有車 STR_GROUP_RENAME_CAPTION :{BLACK}重新命名群組 STR_GROUP_PROFIT_THIS_YEAR :今年盈利: +STR_GROUP_PROFIT_THIS_PERIOD :本期盈利: STR_GROUP_PROFIT_LAST_YEAR :去年盈利: +STR_GROUP_PROFIT_LAST_PERIOD :上期盈利: STR_GROUP_OCCUPANCY :目前使用率: STR_GROUP_OCCUPANCY_VALUE :{NUM}% @@ -3888,6 +3900,8 @@ STR_PURCHASE_INFO_SPEED_POWER :{BLACK}速度 STR_PURCHASE_INFO_SPEED :{BLACK}速度:{GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}海上速度:{GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}運河/河道上速度:{GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}營運成本:{GOLD}{CURRENCY_LONG}/年 +STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}營運成本:{GOLD}{CURRENCY_LONG}/週期 STR_PURCHASE_INFO_CAPACITY :{BLACK}容量:{GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(可改裝) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}設計年份:{GOLD}{NUM}{BLACK} 使用年限:{GOLD}{COMMA} 年 @@ -3971,7 +3985,7 @@ STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}顯示 STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切換是否顯示列車類型 STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切換是否顯示車輛類型 STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切換是否顯示船舶類型 -STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切換是否顯示飛機類型 +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}切換是否顯示飛機種類 ###length VEHICLE_TYPES STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}重新命名列車種類 @@ -4080,6 +4094,18 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE :電車車輛 STR_ENGINE_PREVIEW_AIRCRAFT :飛機 STR_ENGINE_PREVIEW_SHIP :船舶 +STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING} +STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING} +STR_ENGINE_PREVIEW_COST_WEIGHT :費用:{CURRENCY_LONG} 重量:{WEIGHT_SHORT} +STR_ENGINE_PREVIEW_COST_MAX_SPEED :費用:{CURRENCY_LONG} 最高速度:{VELOCITY} +STR_ENGINE_PREVIEW_SPEED_POWER :速度:{VELOCITY} 功率:{POWER} +STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :速度:{VELOCITY} 功率:{POWER} 最大牽引力:{FORCE} +STR_ENGINE_PREVIEW_TYPE :飛機種類:{STRING} +STR_ENGINE_PREVIEW_TYPE_RANGE :飛機種類:{STRING} 距離:{COMMA} 格 +STR_ENGINE_PREVIEW_RUNCOST_YEAR :營運成本:{CURRENCY_LONG}/年 +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :營運成本:{CURRENCY_LONG}/週期 +STR_ENGINE_PREVIEW_CAPACITY :容量:{CARGO_LONG} +STR_ENGINE_PREVIEW_CAPACITY_2 :容量:{CARGO_LONG}、{CARGO_LONG} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}替換 {STRING} - {STRING} @@ -4227,7 +4253,7 @@ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}年齡:{LTBLUE}{STRING}{BLACK} 營運成本:每年{LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最高速度:{LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}最大速度:{LTBLUE}{VELOCITY} {BLACK}飛機型號:{LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}最高速度:{LTBLUE}{VELOCITY} {BLACK}飛機型號:{LTBLUE}{STRING} STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}最高速度:{LTBLUE}{VELOCITY} {BLACK}飛機型號:{LTBLUE}{STRING} {BLACK}距離:{LTBLUE}{COMMA}格 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}載重:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最高速度:{LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}載重:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最高速度:{LTBLUE}{VELOCITY} {BLACK}最大牽引力:{LTBLUE}{FORCE} @@ -4351,6 +4377,7 @@ STR_ORDER_DROP_HALT_DEPOT :停留 # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}選擇船塢動作 ###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}跳躍指令依據 @@ -4497,7 +4524,9 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}此車 STR_TIMETABLE_STATUS_LATE :{BLACK}此車輛目前比表定時間遲 {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}此車輛目前比表定時間早 {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}此時刻表尚未實施 +STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}本時刻表將會在{COMMA}秒後開始 +STR_TIMETABLE_START :{BLACK}開始時刻表 STR_TIMETABLE_CHANGE_TIME :{BLACK}修改時刻 @@ -4522,6 +4551,10 @@ STR_TIMETABLE_EXPECTED :{BLACK}實際 STR_TIMETABLE_SCHEDULED :{BLACK}表定時間 STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}切換顯示 (根據實際情況的) 預期時間 或 表定時間 +STR_TIMETABLE_ARRIVAL_DATE :到:{COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :開:{COLOUR}{DATE_TINY} +STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :到:{COLOUR}{COMMA} 秒 +STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :開:{COLOUR}{COMMA} 秒 # Date window (for timetable) @@ -4567,6 +4600,7 @@ STR_AI_CONFIG_RANDOM_AI :隨機 AI STR_AI_CONFIG_NONE :(無) STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}競爭對手數目上限:{ORANGE}{COMMA} +STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}競爭對手建立公司間隔:{ORANGE}{COMMA}分鐘 STR_AI_CONFIG_MOVE_UP :{BLACK}向上移 STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}向上移動所選的 AI @@ -4579,7 +4613,7 @@ STR_AI_CONFIG_AI :{SILVER}AI STR_AI_CONFIG_CHANGE_AI :{BLACK}選擇 AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}選擇遊戲腳本 -STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}載入另一腳本 +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}載入另一腳本。按住 Ctrl 可顯示所有可用版本。 STR_AI_CONFIG_CONFIGURE :{BLACK}組態設定 STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}設定腳本的參數 @@ -4658,9 +4692,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}預估 STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}遊戲還在儲存中,{}請稍候! STR_ERROR_AUTOSAVE_FAILED :{WHITE}自動儲存失敗 STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}無法讀取磁碟 -STR_ERROR_GAME_SAVE_FAILED :{WHITE}遊戲儲存失敗{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}無法刪除檔案 -STR_ERROR_GAME_LOAD_FAILED :{WHITE}遊戲載入失敗{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :內部錯誤:{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :損壞的存檔 - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :該存檔是由較新版本的遊戲所產生 @@ -5037,6 +5069,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}請修 STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}未有可用的車輛 STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}在{DATE_SHORT}後開始新遊戲,或使用提供早期車輛的NewGRF + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}無法讓列車通過險阻號誌... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}無法倒轉列車方向... @@ -5564,6 +5597,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 154b0c4c5b..568788d5c7 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -309,7 +309,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Bu düğ STR_BUTTON_DEFAULT :{BLACK}Varsayılan STR_BUTTON_CANCEL :{BLACK}İptal STR_BUTTON_OK :{BLACK}Tamam -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Uyarı: Sunucu yöneticileri buraya yazılan yazıları okuyabilir. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :"1234567890*-\qwertyuıopğüasdfghjklşi,' zxcvbnmöç. . @@ -439,6 +438,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Editörden çı STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Oyundan Çık + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Seçenekler @@ -957,18 +957,13 @@ STR_GAME_OPTIONS_VOLUME :Ses seviyesi STR_GAME_OPTIONS_SFX_VOLUME :Ses efektleri STR_GAME_OPTIONS_MUSIC_VOLUME :Müzik -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Para birimleri STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Para birimi seçimi STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Sterlin STR_GAME_OPTIONS_CURRENCY_USD :Amerikan Doları STR_GAME_OPTIONS_CURRENCY_EUR :Avro @@ -1012,6 +1007,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Hindistan Rupis STR_GAME_OPTIONS_CURRENCY_IDR :Endonezya Rupiahı STR_GAME_OPTIONS_CURRENCY_MYR :Malezya Ringgiti STR_GAME_OPTIONS_CURRENCY_LVL :Letonya Latsı +STR_GAME_OPTIONS_CURRENCY_PTE :Portekiz Esküdosu STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Otomatik Kaydet STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Otomatik kaydetme sıklığını seçin @@ -1054,15 +1050,10 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Eğimi a STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Eğimi arayüz boyutuna göre ayarlamak için bu kutucuğu işaretleyin STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK} Geleneksel yazı tipini kullan -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK} Yazı tipini geleneksel eski haline döndürmek için bu kutucuğu işaretleyin +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Yazı tipini geleneksel sabit boyutlu haline döndürmek için bu kutucuğu işaretleyin STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Yazı tipi kenarlarını yumuşatma -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :Yeniden boyutlandırılabilir yazı tiplerinin kenarlarını yumuşatmak için bu kutuyu işaretleyin. +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Yeniden boyutlandırılabilir yazı tiplerinin kenarlarını yumuşatmak için bu kutuyu işaretleyin -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Otomatik anket STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Otomatik ankete katılın @@ -1091,6 +1082,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Temel m STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Kullanılacak temel müzik kümesini seçin STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Temel müzik hakkında daha fazla bilgi + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(yüklü sosyal platformlarla entegre edilecek eklenti yok) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1118,6 +1110,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Bir Ster STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Bir Sterlin'e (£) karşılık gelen para biriminizi arttırın STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Bir Sterlin'e (£) karşılık gelen para biriminizi belirleyin +STR_CURRENCY_SEPARATOR :{LTBLUE}Ayraç: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Para biriminiz için binler ayracını belirleyin + STR_CURRENCY_PREFIX :{LTBLUE}Ön ek: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Para biriminiz için ön ek belirleyin STR_CURRENCY_SUFFIX :{LTBLUE}Son ek: {ORANGE}{STRING} @@ -1488,6 +1483,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Bir aracın gel STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Etkinleştirildiğinde, eğer bir araç bir yıl içerisinde hiç kâr etmezse bir haber mesajı gönderilir. STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Etkinleştirildiğinde, eğer bir araç bir periyot içerisinde hiç kâr etmezse bir haber mesajı gönderilir. + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Eski araçlar sürekli üretilsin: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Etkinleştirildiğinde, tüm araç modelleri piyasaya çıkışlarından itibaren sonsuza dek satın alınabilir. @@ -1539,7 +1535,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grafiklerdeki STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :NewGRF'nin adını araç inşa penceresinde göster: {STRING} STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Araç inşa penceresine, seçilen aracın hangi NewGRF'den geldiğini gösteren bir satır ekleyin. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Liste menüsünde araçların taşıyabildiği kargoları göster {STRING} +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Liste pencerelerinde araçların taşıyabildiği kargoları göster: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Etkinleştirildiğinde, araç listesinin üstünde aracın nakliye edilebilir yükü gözükür STR_CONFIG_SETTING_LANDSCAPE :İklim: {STRING} @@ -1564,7 +1560,7 @@ STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Kar kalınlığ STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Kutupsal arazide, karın ne kadar yükseklikten başlayacağını denetleyin. Kar aynı zamanda fabrika oluşumunu ve şehir gelişme gereksinimini de etkiler. Yalnızca Senerya Editörü ile değiştirilebilir veya "kar örtüsü" üzerinden hesaplanır STR_CONFIG_SETTING_SNOW_COVERAGE :Kar örtüsü: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Arktik altındaki yaklaşık kar miktarını kontrol eder. Kar, aynı zamanda endüstri üretimini ve kasaba büyüme gereksinimlerini de etkiler. Yalnızca harita oluşumu sırasında kullanılır. Deniz seviyesinin hemen üzerindeki arazi her zaman karsızdır +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Arktik altındaki yaklaşık kar miktarını ayarlayın. Kar, aynı zamanda endüstri üretimini ve kasaba büyüme gereksinimlerini de etkiler. Yalnızca harita oluşumu sırasında kullanılır. Deniz seviyesindeki ve sahildeki araziler her zaman karsızdır STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :%{NUM} STR_CONFIG_SETTING_DESERT_COVERAGE :Çöl örtüsü: {STRING} @@ -1748,10 +1744,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Yapı araçlar STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Köprü, tünel vb. için kullanılan inşa araçlarını kullanımdan sonra da açık tut STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Ray yapımı sırasında sinyalleri otomatik olarak kaldır: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Ray yapımı sırasında sinyaller yolun üzerinde ise otomatik kaldır. Bunun potansiyel olarak tren kazalarına yol açabileceğini unutmayın. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Ray yapımı sırasında sinyaller yolun üzerinde ise otomatik kaldır. Bunun potansiyel olarak tren kazalarına yol açabileceğini unutmayın STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :İleri sarma hız limiti: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Hızlı ileri sarma etkinleştirildiğinde oyunun ne kadar hızlı sarıldığını sınırlayın. 0 = sınır yok (bilgisayarın el verdiği kadar). %100'ün altındaki değerler oyunu yavaşlatır. Üst sınır bilgisayarının özelliklerine ve oyuna göre değişkenlik gösterebilir. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Hızlı ileri sarma etkinleştirildiğinde oyunun ne kadar hızlı sarıldığını sınırlayın. 0 = sınır yok (bilgisayarın el verdiği kadar). %100'ün altındaki değerler oyunu yavaşlatır. Üst sınır bilgisayarının özelliklerine ve oyuna göre değişkenlik gösterebilir STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :%{NUM} normal oyun hızı ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Limit yok (bilgisayarın izin verdiği maksimum hızda ) @@ -1819,7 +1815,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Tek bir betiği STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Servis gecikmeleri yüzde ile: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Etkinleştirildiğinde, araçların güvenilirlik değerinin azami güvenilirliğe kıyasla belli bir yüzde oranında düşmesine bağlı olarak bakım yapar.{}{}Örneğin, eğer aracın azami güvenirliği %90 ve bakım aralığı %20 ise araç %72 güvenilirliğe ulaştığında bakım yapmayı dener. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Etkinleştirildiğinde, araçların güvenilirlik değerinin azami güvenilirliğe kıyasla belli bir yüzde oranında düşmesine bağlı olarak bakım yapar.{}{}Örneğin, eğer aracın azami güvenirliği %90 ve bakım aralığı %20 ise araç %72 güvenilirliğe ulaştığında bakım yapmayı dener STR_CONFIG_SETTING_SERVINT_TRAINS :Trenler için varsayılan bakım aralığı: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Yeni tren yolu araçları için varsayılan bakım aralığını ayarlar, eğer araç için özel bir bakım aralığı belirtilmemişse geçerlidir @@ -1829,7 +1825,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Hava araçları STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Yeni hava araçları için varsayılan bakım aralığını ayarlar, eğer araç için özel bir bakım aralığı belirtilmemişse geçerlidir STR_CONFIG_SETTING_SERVINT_SHIPS :Gemiler için varsayılan bakım aralığı: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Yeni gemiler için varsayılan bakım aralığını ayarlar, eğer araç için özel bir bakım aralığı belirtilmemişse geçerlidir -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}%gün/dakika +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Etkisiz @@ -2033,13 +2030,13 @@ STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Dağılım graf STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Bir bağlantı grafiği bileşeninin her yeniden hesaplanması için geçen süre. Bir yeniden hesaplama başlatıldığında, bu sayıda saniye boyunca çalışmasına izin verilen bir iş parçacığı oluşturulur. Bunu ne kadar kısa ayarlarsanız, iş parçacığının olması gerektiği zamanda bitmemiş olma olasılığı o kadar artar. Ardından oyun ("gecikme") olana kadar durur. Ne kadar uzun ayarlarsanız, rotalar değiştiğinde dağıtımın güncellenmesi o kadar uzun sürer. STR_CONFIG_SETTING_DISTRIBUTION_PAX :Yolcular için dağıtım kipi: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simetrik" seçildiğinde A durağından B durağına taşınan ile B'den A'ya taşınan yolcu miktarı kabaca eşit olur. "Asimetrik" seçildiğinde iki yönde de rastgele miktarda yolcu gönderilebilir. "el ile" seçildiğinde yolcular için otomatik dağıtım yapılmaz. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simetrik" seçildiğinde A durağından B durağına taşınan ile B'den A'ya taşınan yolcu miktarı kabaca eşit olur. "Asimetrik" seçildiğinde iki yönde de rastgele miktarda yolcu gönderilebilir. "el ile" seçildiğinde yolcular için otomatik dağıtım yapılmaz STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Posta için dağıtım kipi: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simetrik" seçildiğinde A durağından B durağına gönderilen ile B'den A'ya gönderilen posta miktarı kabaca eşit olur. "Asimetrik" seçildiğinde iki yönde de rastgele miktarda posta gönderilebilir. "El ile" seçildiğinde posta için otomatik dağıtım yapılmaz. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simetrik" seçildiğinde A durağından B durağına gönderilen ile B'den A'ya gönderilen posta miktarı kabaca eşit olur. "Asimetrik" seçildiğinde iki yönde de rastgele miktarda posta gönderilebilir. "El ile" seçildiğinde posta için otomatik dağıtım yapılmaz STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :ZIRHLI kargo sınıfı için dağıtım kipi: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :ZIRHLI kargo sınıfı ılıman iklimde değerli mallar, yarı-tropik iklimde elmaslar, veya yarı-soğuk iklimde altın içerir. NewGRF dosyaları bunu değiştirebilir. "Simetrik" olarak ayarlandığında A durağından B durağına gönderilen kargo miktarı, B'den A'ya gönderilene kabaca eşit olur. "Asimetrik" ise herhangi bir yönde rastgele miktarda kargo gönderilebileceğini gösterir. "El ile" seçildiğinde o kargo için otomatik dağıtım yapılmaz. Yarı-soğuk iklimde oynarken bu değeri "asimetrik" veya "el ile" olarak ayarlamanız tavsiye edilir, çünkü bankalar altınları altın madenine geri göndermez. Ilıman ve yarı-tropik iklim için aynı zamanda "simetrik" seçebilirsiniz, zira bankalar değerli malların bir kısmını malların geldiği kaynak bankaya geri gönderir. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :ZIRHLI kargo sınıfı ılıman iklimde değerli mallar, yarı-tropik iklimde elmaslar, veya yarı-soğuk iklimde altın içerir. NewGRF dosyaları bunu değiştirebilir. "Simetrik" olarak ayarlandığında A durağından B durağına gönderilen kargo miktarı, B'den A'ya gönderilene kabaca eşit olur. "Asimetrik" ise herhangi bir yönde rastgele miktarda kargo gönderilebileceğini gösterir. "El ile" seçildiğinde o kargo için otomatik dağıtım yapılmaz. Yarı-soğuk iklimde oynarken bu değeri "asimetrik" veya "el ile" olarak ayarlamanız tavsiye edilir, çünkü bankalar altınları altın madenine geri göndermez. Ilıman ve yarı-tropik iklim için aynı zamanda "simetrik" seçebilirsiniz, zira bankalar değerli malların bir kısmını malların geldiği kaynak bankaya geri gönderir STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Diğer kargo sınıfları için dağılım kipi: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimetrik", kargonun iki yönde de rastgele miktarda gönderileceğini gösterir. "El ile" seçildiği takdirde o kargolar için otomatik dağılım yapılmaz. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimetrik", kargonun iki yönde de rastgele miktarda gönderileceğini gösterir. "El ile" seçildiği takdirde o kargolar için otomatik dağılım yapılmaz ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :el ile (manual) STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetrik @@ -2054,7 +2051,7 @@ STR_CONFIG_SETTING_DEMAND_SIZE :Simetrik kip i STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Buraya %100'den küçük bir değer girmek simetrik dağılımın asimetrik bir dağılıma benzer şekilde davranmasına sebep olur. Eğer bir durağa belli miktar kargo gönderilmişse, daha az kargo zorla geri gönderilir. Eğer %0 olarak ayarlarsanız simetrik dağılım aynen asimetrik dağılım gibi davranmaya başlar. STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Yüksek kapasiteli güzergahları kullanmadan önce daha kısa güzergah doygunluğu: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Sıklıkla iki durak arasında birden fazla güzergah bulunur. Kargo dağıtımı önce en kısa güzergahı doygunluğa ulaştırır, ardından ikinci en kısa güzergahı doygunluğa ulaşana kadar kullanır ve böyle devam eder. Doygunluk, kapasite tahmini ve planlanan kullanım miktarına göre hesaplanır. Tüm güzergahlar doygunluğa ulaştığında eğer hala talep varsa, yüksek kapasiteli olan güzergahları tercih ederek tüm güzergahları aşırı yükler. Fakat çoğu zaman algoritma kapasiteyi isabetli olarak hesaplayamaz. Bu değer, daha kısa bir güzergahın yüzde kaç oranında doygunluğa ulaştığı zaman bir sonraki güzergahın seçileceğini ayarlamanızı sağlar. Yanlış (büyük) kapasite tahmini ihtimaline karşı aşırı dolu durakları önlemek için %100'den daha düşük bir değer seçin. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Sıklıkla iki durak arasında birden fazla güzergah bulunur. Kargo dağıtımı önce en kısa güzergahı doygunluğa ulaştırır, ardından ikinci en kısa güzergahı doygunluğa ulaşana kadar kullanır ve böyle devam eder. Doygunluk, kapasite tahmini ve planlanan kullanım miktarına göre hesaplanır. Tüm güzergahlar doygunluğa ulaştığında eğer hala talep varsa, yüksek kapasiteli olan güzergahları tercih ederek tüm güzergahları aşırı yükler. Fakat çoğu zaman algoritma kapasiteyi isabetli olarak hesaplayamaz. Bu değer, daha kısa bir güzergahın yüzde kaç oranında doygunluğa ulaştığı zaman bir sonraki güzergahın seçileceğini ayarlamanızı sağlar. Yanlış (büyük) kapasite tahmini ihtimaline karşı aşırı dolu durakları önlemek için %100'den daha düşük bir değer seçin STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hız birimi (kara): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Hız birimleri (denizcilik): {STRING} @@ -2129,17 +2126,8 @@ STR_CONFIG_SETTING_AI :Rakipler STR_CONFIG_SETTING_AI_NPC :Bilgisayar oyuncuları STR_CONFIG_SETTING_NETWORK :Ağ -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Trenler için yol bulucu: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Trenler için kullanılacak "yol bulucu" algoritma -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Karayolu taşıtları için yol bulucu: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Karayolu araçları için kullanılacak "yol bulucu" algoritma -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Gemiler için yol bulucu: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Gemiler için kullanılacak "yol bulucu" algoritma STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :İşaretlerde otomatik geri çevirme: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Tren sinyalde uzun süre beklediği takdirde ters yöne gitmesine izin ver -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Önerilen) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Ayar değerini değiştir @@ -2458,7 +2446,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Şirket STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Bağlantıyı kes STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Sunucu korumalı. Parola girin -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Şirket korumalı. Parola girin # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Aktif oyuncular @@ -2507,13 +2494,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Aktarıc STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :At STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Yasakla STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Sil -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Parola ile kilit açma STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Yönetici eylemi STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}'{STRING}' adlı oyuncuyu atmak istediğine emin misin? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}'{STRING}' adlı oyunucuyu yasaklamak istediğine emin misin? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}'{COMPANY}' şirketini silmek istediğine emin misin? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}'{COMPANY}' adlı şirketin şifresini sıfırlamak istediğine emin misin? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Aktarıcı kullan? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Sunucu '{STRING}' ile sizin aranızda bağlantı kurma başarısız oldu.{}Bu oturumu '{STRING}' ile aktarmak ister misiniz? @@ -2530,19 +2515,9 @@ STR_NETWORK_ASK_SURVEY_YES :Evet STR_NETWORK_SPECTATORS :İzleyiciler -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Girilen parolayı kaydetme -STR_COMPANY_PASSWORD_OK :{BLACK}Yeni parolayı şirkete ver -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Şirket parolası -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Öntanımlı şirket parolası -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Bu şirketin parolasını yeni şirketlerde öntanımlı olarak kullan - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Katıl STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Katıl ve bu şirket olarak oyna -STR_COMPANY_VIEW_PASSWORD :{BLACK}Parola -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Başkalarınin girmemesi için parola koy -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Şirket parolası # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Gönder @@ -2586,7 +2561,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}İsminiz STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Olası bağlantı kaybı STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Son {NUM} saniyedir sunucudan hiç veri gelmedi -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :genel hata STR_NETWORK_ERROR_CLIENT_DESYNC :desync hatası STR_NETWORK_ERROR_CLIENT_SAVEGAME :harita yüklenemiyor @@ -2598,6 +2573,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :geçersiz ya da STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :yanlış düzeltme STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :isim kullanımda STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :yanlış parola +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :izin verilenler listesinde değil STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :DoCommand için yanlış company-id STR_NETWORK_ERROR_CLIENT_KICKED :sunucu tarafından atıldı STR_NETWORK_ERROR_CLIENT_CHEATER :hile yapmaya çalıştı @@ -2803,7 +2779,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Tren gar # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Yerimi -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Yerimi türü seç # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Tren istasyonu Seçimi @@ -2816,8 +2791,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Tren ist STR_STATION_BUILD_DRAG_DROP :{BLACK}Sürükle Bırak STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Sürükle bırak tekniğiyle istasyon kur -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Görüntülenecek istasyon türünü seçin -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Yapılacak istasyon türünü seçin + + + STR_STATION_CLASS_DFLT :Varsayılan STR_STATION_CLASS_DFLT_STATION :Varsayılan istasyon @@ -2960,8 +2936,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Gelecekt # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Nesne Seçimi -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Yapılacak nesneyi seçin.Ctrl + Sol Tık'a basılı tutarak sürüklerseniz çapraz olarak seçersiniz. Ayrıca Shift tuşuna basılı tutarsanız sadece maliyetini görüntülersiniz. -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}İnşa edilecek nesnenin sınıfını seçin STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Nesnenin önizlemesi STR_OBJECT_BUILD_SIZE :{BLACK}Boyut: {GOLD}{NUM} x {NUM} kare @@ -2978,9 +2952,9 @@ STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Haritaya STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Arazinin üzerine sürükleyerek tekli ağaçlar dikin. STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Koru -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Arazinin üzerine sürükleyerek küçük ormanlar dikin. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Arazinin üzerine sürükleyerek küçük ormanlar dikin STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Orman -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Arazinin üzerine sürükleyerek büyük ormanlar dikin. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Arazinin üzerine sürükleyerek büyük ormanlar dikin # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Arazi Yapımı @@ -3076,7 +3050,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvay STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Demiryolu sahibi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Belediyesi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Hiçbiri -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatlar: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatlar: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Kare indeksi: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}İnşa/yenileme tarihi: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}İstasyon sınıfı: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}İstasyon türü: {LTBLUE}{STRING} @@ -3198,7 +3173,7 @@ STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Saniyede STR_FRAMERATE_RATE_BLITTER :{BLACK}Grafik kare oranı: {STRING} STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Saniyede işlenecek video kare sayısı. STR_FRAMERATE_SPEED_FACTOR :{BLACK}Şu anki oyun hız çarpanı: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Beklenen normal simülasyon hızı yerine, şu anda oyunun ne kadar hızlı çalıştığı. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Beklenen normal simülasyon hızı yerine, şu anda oyunun ne kadar hızlı çalıştığı STR_FRAMERATE_CURRENT :{WHITE}Geçerli STR_FRAMERATE_AVERAGE :{WHITE}Ortalama STR_FRAMERATE_MEMORYUSE :{WHITE}Bellek @@ -3387,10 +3362,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Oluştu STR_GENERATION_PROGRESS :{WHITE}%{NUM} tamamlandı STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Harita üretimi +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Peyzaj oluşumu STR_GENERATION_RIVER_GENERATION :{BLACK}Nehir oluşturma -STR_GENERATION_TREE_GENERATION :{BLACK}Ağaç üretimi -STR_GENERATION_OBJECT_GENERATION :{BLACK}Nesne oluşturma STR_GENERATION_CLEARING_TILES :{BLACK}Engebeli ve kayalık alan oluştur +STR_GENERATION_TOWN_GENERATION :{BLACK}Kasaba Oluşumu +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Endüstri Oluşumu +STR_GENERATION_OBJECT_GENERATION :{BLACK}Nesne oluşturma +STR_GENERATION_TREE_GENERATION :{BLACK}Ağaç üretimi STR_GENERATION_SETTINGUP_GAME :{BLACK}Oyun ayarlanıyor STR_GENERATION_PREPARING_TILELOOP :{BLACK}tile-loop çalıştırılıyor STR_GENERATION_PREPARING_SCRIPT :{BLACK}Betik çalıştırılıyor @@ -3482,7 +3460,7 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Yol türü: STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF değişkeni 60+x parametresi (onaltılı) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Nesne hizalanıyor {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Hizalanan Görüntü: ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sonraki nesne STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Tüm sahte/yeniden renklendirme/yazı tipi nesnelerini ve sondaki nesneden atlayarak bir sonraki normal nesneye geç STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Nesneye git @@ -3599,7 +3577,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Önceki STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Tabela için bir isim girin # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Şehirler STR_TOWN_DIRECTORY_NONE :{ORANGE}- Hiçbiri - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Şehir){BLACK} ({COMMA}) @@ -3933,7 +3910,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/periyot # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Fabrikalar STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Hiçbiri - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% taşındı){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4022,7 +3998,7 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Gruplanmamış STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruplar - gruba ait araçları listelemek için grubun üzerine tıklayın. Hiyerarşiyi düzenlemek için grupları sürükleyip bırakın. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruplar - gruba ait araçları listelemek için grubun üzerine tıklayın. Hiyerarşiyi düzenlemek için grupları sürükleyip bırakın STR_GROUP_CREATE_TOOLTIP :{BLACK}Grup oluşturmak için tıklayın STR_GROUP_DELETE_TOOLTIP :{BLACK}Seçili grubu sil STR_GROUP_RENAME_TOOLTIP :{BLACK}Seçili grubun ismini değiştir @@ -4841,8 +4817,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Oyun Betiği STR_AI_SETTINGS_CLOSE :{BLACK}Kapat STR_AI_SETTINGS_RESET :{BLACK}Yeniden başlat STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4895,9 +4869,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Tahmini STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Kayıt işlemi sürüyor,{}lütfen bitene kadar bekleyin! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Otomatik kayıt başarısız STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Sürücü okunamıyor -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Oyun kaydedilemedi{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Dosya silinemedi -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Dosya yüklenemedi{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :İç hata: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bozuk kayıtlı oyun - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Oyun yeni bir sürümle kaydedilmiş. @@ -5279,6 +5251,9 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Yeni New STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Henüz hiçbir araç kullanılabilir değil STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}{DATE_SHORT} sonra yeni bir oyun başlat veya erken araç sağlayan NewGRF kullan +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Kasabada inşa edilebilir yol türleri mevcut değil +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}NewGRF Yapılandırma Ayarlarını Değiştir + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Tehlikedeki tren sinyali geçemez... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Tren çevrilemez... @@ -5818,6 +5793,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}m +STR_CURRENCY_SHORT_GIGA :{NBSP}bn +STR_CURRENCY_SHORT_TERA :{NBSP}tn + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 109150e75b..55ec0afd81 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -249,7 +249,7 @@ STR_QUANTITY_TOFFEE :{WEIGHT_LONG} STR_QUANTITY_BATTERIES :{COMMA} батарей{P ка ки ок} STR_QUANTITY_PLASTIC :{VOLUME_LONG} пластику STR_QUANTITY_FIZZY_DRINKS :{COMMA} пляш{P ка ки ок} газованої води -STR_QUANTITY_N_A :немає +STR_QUANTITY_N_A :Відсутня # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : @@ -331,6 +331,7 @@ STR_COLOUR_SECONDARY_ORANGE :Помаран STR_COLOUR_SECONDARY_BROWN :Коричневий STR_COLOUR_SECONDARY_GREY :Сірий STR_COLOUR_SECONDARY_WHITE :Білий +STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Як базовий # Units used in OpenTTD @@ -380,8 +381,24 @@ STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP} STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}м # Time units used in string control characters +STR_UNITS_DAYS :{COMMA}{NBSP}день +STR_UNITS_DAYS.z :{COMMA}{NBSP}днів +STR_UNITS_SECONDS :{COMMA}{NBSP}секунда +STR_UNITS_SECONDS.d :{COMMA}{NBSP}секунди +STR_UNITS_SECONDS.z :{COMMA}{NBSP}секунд +STR_UNITS_TICKS :{COMMA}{NBSP}цок +STR_UNITS_TICKS.d :{COMMA}{NBSP}цоки +STR_UNITS_TICKS.z :{COMMA}{NBSP}цоків +STR_UNITS_MONTHS :{NUM}{NBSP}місяц{P ь я ів} +STR_UNITS_MINUTES :{NUM}{NBSP}хвилин{P а и ""} +STR_UNITS_YEARS :{NUM}{NBSP}рік +STR_UNITS_YEARS.d :{NUM}{NBSP}роки +STR_UNITS_YEARS.z :{NUM}{NBSP}ріків +STR_UNITS_PERIODS :{NUM}{NBSP}період +STR_UNITS_PERIODS.d :{NUM}{NBSP}періоди +STR_UNITS_PERIODS.z :{NUM}{NBSP}періодів # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Фільтр: @@ -406,7 +423,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Нати STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Розмір вікна великий/малий STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Смуга прокрутки - прокручує список вверх/вниз STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Смуга прокрутки - прокручує список вліво/вправо -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Зруйнувати будинки, дороги і т.п. Утримуйте Ctrl для виділення клітинок по діагоналі, або Shift - для показу витрат на руйнування +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Зруйнувати будинки, дороги тощо у квадраті суходолу. Ctrl+клац+протягування для виділення клітинок по діагоналі. Утримуйте Shift для показу витрат на руйнування # Show engines button ###length VEHICLE_TYPES @@ -425,7 +442,6 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}нати STR_BUTTON_DEFAULT :{BLACK}Стандартно STR_BUTTON_CANCEL :{BLACK}Скасувати STR_BUTTON_OK :{BLACK}Так -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Попередження: Адміністратори серверів можуть мати можливість читати будь-який текст, введений тут. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\йцукенгшщзхїфівапролджє ячсмитьбю. . @@ -468,10 +484,10 @@ STR_SORT_BY_RATING_MIN :за найни STR_SORT_BY_ENGINE_ID :за ID (класичний порядок) STR_SORT_BY_COST :за ціною STR_SORT_BY_POWER :за потужністю -STR_SORT_BY_TRACTIVE_EFFORT :за силою тяги +STR_SORT_BY_TRACTIVE_EFFORT :за тяговим зусиллям STR_SORT_BY_INTRO_DATE :за датою випуску STR_SORT_BY_RUNNING_COST :за вартістю експлуатації -STR_SORT_BY_POWER_VS_RUNNING_COST :за потужністю/вартістю експ. +STR_SORT_BY_POWER_VS_RUNNING_COST :за співвідношенням потужність/вартість експлуатації STR_SORT_BY_CARGO_CAPACITY :за місткістю STR_SORT_BY_RANGE :за дальністю STR_SORT_BY_POPULATION :за населенням @@ -488,33 +504,33 @@ STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Середні # Group by options for vehicle list STR_GROUP_BY_NONE :Нема -STR_GROUP_BY_SHARED_ORDERS :Спільні накази +STR_GROUP_BY_SHARED_ORDERS :Спільні завдання # Order button in shared orders vehicle list -STR_GOTO_ORDER_VIEW :{BLACK}Накази +STR_GOTO_ORDER_VIEW :{BLACK}Завдання STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Відкрити вікно завдань # Tooltips for the main toolbar ###length 31 STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Пауза STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Прискорити гру -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Опції -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Зберегти гру, покинути гру, вихід -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Показати карту -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Показати міста -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Показати субсидії +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Опції і налаштування +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Зберегти гру, завантажити гру, покинути гру, вихід +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Показує мапу, додаткове вікно, легенду вантажопотоку або список позначок +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Показує перелік міст або заснування міста +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Показує субсидії STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Показати список станцій компанії -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Фінансова інформація -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Головна інформація -STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Показати історію -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Показати список завдань -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Показати графіки -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Показати таблицю компаній -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Фінансувати будівництво нової промисловості -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Показати список поїздів компанії. Ctrl+клац мишою переключає відкриття звичайного/розширенного списку -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Показати список дорожнього транспорту компанії. Ctrl+клац мишою переключає відкриття звичайного/розширенного списку -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Показати список кораблів компанії. Ctrl+клац мишою переключає відкриття звичайного/розширенного списку -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Показати список повітряного транспорту компанії. Ctrl+клац мишою переключає відкриття звичайного/розширенного списку +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Покаже фінансову інформацію про компанію +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Покаже загальну інформацію про компанію +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Показує історію +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Покаже список завдань +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Показати графіки компаній і тарифи доставки вантажів +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Покаже таблицю компаній +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Показує перелік підприємств, ланцюг підприємств або фінансування будівництва нової промисловості +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Показує список поїздів компанії. Ctrl+клац показує або приховує групи, протилежно до обраного налаштування +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Показує список дорожнього транспорту компанії. Ctrl+клац показує або приховує групи, протилежно до обраного налаштування +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Показати список кораблів компанії. Ctrl+клац показує або приховує групи, протилежно до обраного налаштування +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Показує список повітряного транспорту компанії. Ctrl+клац показує або приховує групи, протилежно до обраного налаштування STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Збільшити STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Зменшити STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Будувати залізницю @@ -522,9 +538,9 @@ STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Буду STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Будувати трамвайну колію STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Будувати порти STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Будувати аеропорти -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Змінити ландшафт -STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Налаштувати звук/музику -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Показати останнє повідомлення. Налаштування повідомлень +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Покаже меню створення ландшафту, посадки дерев, створення позначки +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Налаштування звуків/музики +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Подивитись останнє повідомлення або новину, історію повідомлень чи видалити всі повідомлення STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Інформація про земельну ділянку, знімки екрану, про гру OpenTTD та інструменти для розробки STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Переключити панелі @@ -535,15 +551,15 @@ STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Ред STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Перенести початкову дату на 1 рік назад STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Перенести початкову дату на 1 рік вперед STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Натисніть, щоб ввести рік початку -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Показати карту, показати міста -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Створення ландшафту -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Створення міст -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Створення виробництва -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Будівництво доріг +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Показати мапу, додаткове вікно, список позначок, або перелік міст чи підприємств +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Відкрити меню створення ландшафту або нового світу +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Будування або створення міст +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Створення або будування виробництва +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Будівництво дорожньої інфраструктури STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Будівництво трамвайних колій -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Насадження дерев. Утримуйте Shift для показу витрат на висаджування +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Насадження дерев. Ctrl+клац+протягування для виділення діагональної ділянки. Утримуйте Shift для показу очікуваних витрат STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Встановити позначку -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Встановити об'єкт. Утримуйте Ctrl для вибору діагональної ділянки. Утримуйте Shift для показу витрат на розміщення +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Встановити об'єкт. Ctrl+клац+протягування для виділення діагональної ділянки. Утримуйте Shift для показу очікуваних витрат # Scenario editor file menu ###length 7 @@ -555,6 +571,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Вийти з STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Вихід + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Налаштування гри @@ -562,6 +579,7 @@ STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Налашту STR_SETTINGS_MENU_AI_SETTINGS :Налаштування ШІ STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :Налаштування ігрового скрипту STR_SETTINGS_MENU_NEWGRF_SETTINGS :Налаштування NewGRF +STR_SETTINGS_MENU_SANDBOX_OPTIONS :Налаштування пісочниці STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Налаштування прозорості STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Показувати назви міст STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Показувати назви станцій @@ -650,6 +668,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :Про гру ' STR_ABOUT_MENU_SPRITE_ALIGNER :Вирівнювання спрайтів STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Вкл./відкл. обмежуючі рамки STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Вкл./відкл. підсвічування застарілих блоків +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Увімкнути межі віджета ###length 31 STR_DAY_NUMBER_1ST :1 @@ -727,10 +746,13 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Граф STR_GRAPH_INCOME_CAPTION :{WHITE}Графік доходів STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Кількість перевезеного вантажу STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Рейтинг продуктивності компанії (найбільший рейтинг=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Вартість компанії +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Графік вартості компанії +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Останні 72 хвилини -STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Тарифи на доставку вантажів +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Тарифи доставки вантажів +STR_GRAPH_CARGO_PAYMENT_RATES_DAYS :{TINY_FONT}{BLACK}Днів у русі +STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLACK}Секунд у русі STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Плата за доставку 10 одиниць (або 10,000 літрів) вантажу на відстань 20 квадратів STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Включити всі STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Відключити усі @@ -748,6 +770,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Нати # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Рейтингова таблиця STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Інженер STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Регулювальник STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Диспетчер @@ -764,7 +787,7 @@ STR_PERFORMANCE_DETAIL_KEY :{BLACK}Дета STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% -STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Проглянути деталі рейтинга цієї компанії +STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Проглянути деталі рейтингу цієї компанії ###length 10 STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Транспорт: @@ -779,7 +802,11 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Кред STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Підсумок: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Кількість транспортних засобів, які були прибутковими минулого року (дорожній транспорт, потяги, кораблі, літаки). +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Кількість транспортних засобів, які були прибутковими минулого періоду (дорожній транспорт, потяги, кораблі, літаки). STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Кількість нещодавно обслуговуваних частин станцій. Кожна частина станції (залізнична станція, автобусна зупинка, аеропорт) враховується окремо, навіть якщо вони об'єднані в одну станцію +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Прибуток транспортного засобу з найменшим заробітком (враховується тільки транспорт старший за два роки) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Прибуток транспортного засобу з найменшим заробітком (враховується тільки транспорт старший за два періоди) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Найменший квартальний прибуток за останні 12 кварталів STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Найбільший квартальний прибуток за останні 12 кварталів STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Кількість одиниць вантажу, доставлених за останні 4 квартали @@ -912,7 +939,7 @@ STR_SMALLMAP_ENABLE_ALL :{BLACK}Пока STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Показати рельєф STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Не показувати жодного виду підприємств на карті STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Показати всі види підприємств на карті -STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Вкл./відкл. карту висот +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Увімкнути/вимкнути мапу висот STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Не показувати власність жодної компанії на карті STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Показати власність всіх компаній на карті STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Не показувати вантажі на карті @@ -967,7 +994,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} була закрита кредиторами і все майно продане! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Засновано нову компанію! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} починає будівництво біля {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} викуплено {STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :Компанію {BIG_FONT}{BLACK}{STRING} агресивно захоплено компанією {STRING} з нерозголошеними витратами! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Керівник) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} субсидував спорудження нового міста {TOWN}! @@ -1025,6 +1052,8 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Відт STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Відкрити вікно групи з центром на групах транспорту +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} більше не приймає: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} тепер приймає: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Субсидія більше не пропонується:{}{}Перевезення {STRING.r} з {STRING} до {STRING} STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Субсидію скасовано:{}{}Перевезення {STRING.r} з {STRING.r} до {STRING.r} @@ -1035,6 +1064,8 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Компанія {STRING} отримала субсидію!{}{}Перевезення {STRING.r} з {STRING} до {STRING} принесе втричі більше прибутків впродовж {UNITS_YEARS_OR_MINUTES}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Компанія {STRING} отримала субсидію!{}{}Перевезення {STRING.r} з {STRING} до {STRING} принесе вчетверо більше прибутків впродовж {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Дорожній хаос у місті {TOWN}!{}{}Програма реконструкції міських доріг, яку профінансувала компанія {STRING}, спричинила 6 місяців страждань для автомобілістів! +STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Дорожній хаос у місті {TOWN}!{}{}Програма реконструкції міських доріг, яку профінансувала компанія {STRING}, спричинила 6 хвилин страждань для автомобілістів! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Транспортна монополія! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}Влада міста {TOWN} підписала з компанією {STRING} договір про ексклюзивні транспортні права на 1 рік! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}Влада міста {TOWN} підписала з компанією {STRING} договір про ексклюзивні транспортні права на 12 хвилин! @@ -1055,23 +1086,20 @@ STR_GAME_OPTIONS_TAB_GRAPHICS :Графіка STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Виберіть налаштування графіки STR_GAME_OPTIONS_TAB_SOUND :Звук STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Виберіть налаштування звуку та музики +STR_GAME_OPTIONS_TAB_SOCIAL :Соціальні платформи +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Оберіть налаштування інтеграції соціальних мереж STR_GAME_OPTIONS_VOLUME :Гучність STR_GAME_OPTIONS_SFX_VOLUME :Звукові ефекти STR_GAME_OPTIONS_MUSIC_VOLUME :Музика -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Грошова одиниця STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Виберіть грошову одиницю STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Британський фунт STR_GAME_OPTIONS_CURRENCY_USD :Американський долар STR_GAME_OPTIONS_CURRENCY_EUR :Євро @@ -1093,7 +1121,7 @@ STR_GAME_OPTIONS_CURRENCY_NLG :Нідерла STR_GAME_OPTIONS_CURRENCY_NOK :Норвезька крона STR_GAME_OPTIONS_CURRENCY_PLN :Польський злотий STR_GAME_OPTIONS_CURRENCY_RON :Румунський лей -STR_GAME_OPTIONS_CURRENCY_RUR :Російський рубель +STR_GAME_OPTIONS_CURRENCY_RUR :Російський рубль STR_GAME_OPTIONS_CURRENCY_SIT :Словенський талер STR_GAME_OPTIONS_CURRENCY_SEK :Шведська крона STR_GAME_OPTIONS_CURRENCY_TRY :Турецька ліра @@ -1106,7 +1134,7 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Південн STR_GAME_OPTIONS_CURRENCY_CUSTOM :Власна... STR_GAME_OPTIONS_CURRENCY_GEL :Грузинські ларі STR_GAME_OPTIONS_CURRENCY_IRR :Іранський ріал -STR_GAME_OPTIONS_CURRENCY_RUB :Російський новий рубель +STR_GAME_OPTIONS_CURRENCY_RUB :Російський новий рубль STR_GAME_OPTIONS_CURRENCY_MXN :Мексиканське песо STR_GAME_OPTIONS_CURRENCY_NTD :Новий тайваньський долар STR_GAME_OPTIONS_CURRENCY_CNY :Китайські ренміні @@ -1115,13 +1143,14 @@ STR_GAME_OPTIONS_CURRENCY_INR :Індійсь STR_GAME_OPTIONS_CURRENCY_IDR :Індонезійська рупія STR_GAME_OPTIONS_CURRENCY_MYR :Малайзійський рингіт STR_GAME_OPTIONS_CURRENCY_LVL :Латвійські лати +STR_GAME_OPTIONS_CURRENCY_PTE :Португальське ескудо STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автозбереження -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Виберіть період автозбереження гри +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Виберіть інтервал автозбереження # Autosave dropdown ###length 5 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :вимкнено +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Вимкнено STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Кожні 10 хвилин STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Кожні 30 хвилин STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Кожні 60 хвилин @@ -1131,57 +1160,58 @@ STR_GAME_OPTIONS_LANGUAGE :{BLACK}Мова STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Виберіть мову інтерфейса користувача STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% виконано) -STR_GAME_OPTIONS_FULLSCREEN :{BLACK}На весь екран -STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Натисніть цю кнопку щоб грати на весь екран +STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Повноекранний режим +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Позначте цей прапорець для використання повноекранного режиму -STR_GAME_OPTIONS_RESOLUTION :{BLACK}Роздільна здатність -STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Виберіть роздільну здатність екрану +STR_GAME_OPTIONS_RESOLUTION :{BLACK}Роздільна здатність екрана +STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Виберіть, яку роздільну здатність екрана використовувати STR_GAME_OPTIONS_RESOLUTION_OTHER :інша STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM} -STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Прискорення апаратного забезпечення -STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Увімкнутий прапорець дозволить використання грою прискорення апаратного забезпечення. Налаштування запрацює тільки після перезапуску гри +STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Апаратне прискорення +STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Позначте цей прапорець для використання апаратного прискорення. Зміни застосуються тільки після перезапуску гри STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Налаштування запрацює тільки після перезапуску гри -STR_GAME_OPTIONS_VIDEO_VSYNC :Вертикальна синхронізація -STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Увімкнутий прапорець дозволить вертикальну синхронізацію екрану. Налаштування запрацює тільки після перезапуску гри. Працює тільки за увімкнутого прискорення апаратного забезпечення. +STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}Вертикальна синхронізація +STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Позначте цей прапорець для використання вертикальної синхронізації. Зміни застосуються тільки після перезапуску гри. Працює лише за увімкненого апаратного прискорення -STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Поточний драйвер: {STRING} +STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Використовуваний драйвер: {STRING} STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Розмір інтерфейсу -STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Перетягніть повзунок для встановлення розміру інтерфейсу. Тримайте Ctrl для закріплення -STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Автоматично визначений розмір -STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Увімкнутий прапорець дозволить автоматично визначити розмір інтерфейсу +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Потягніть повзунок для зміни розміру інтерфейсу. Ctrl+протягування для точнішого коригування +STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Визначати розмір автоматично +STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Позначте цей прапорець для того, щоби визначати розмір інтерфейсу автоматично -STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Межі шкали -STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :BLACK}Увімкнутий прапорець дозволить змінити розмір інтерфейсу +STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Масштабування рельєфних елементів +STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Позначте цей прапорець для того, щоби масштабувати рельєфні елементи інтерфейсу -STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Використовувати шрифт звичайної роздільності -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Натисніть цю кнопку для використання шрифтів незмінних розмірів +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Використовувати стандартний растровий шрифт +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Позначте цей прапорець для використання стандартних растрових шрифтів фіксованого розміру STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Згладжування шрифтів -STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Натисніть цю кнопку для згладження шрифтів змінних розмірів +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Позначте цей прапорець для того, щоби згладжувати шрифти змінних розмірів -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Автоматизований збір даних +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Брати участь в автоматизованому зборі даних +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Якщо увімкнено, OpenTTD передаватиме зібрані дані при виході з гри +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Про збір даних і приватність +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Відкриє переглядач з детальнішою інформацією про автоматичний збір даних +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Попередній перегляд збору даних +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Перегляд збору даних поточної гри STR_GAME_OPTIONS_GRAPHICS :{BLACK}Графіка -STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Показати швидкість оновлення -STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}Обрати швидкість оновлення екрану +STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Частота оновлення екрана +STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}Оберіть, яку частоту оновлення екрана використовувати STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Гц -STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Оновлення з частотою понад 60ГГц може зашкодити роботі гри. +STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Частота оновлення екрана вища за 75 Гц може вплинути на швидкодію STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базовий набір графіки -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Оберіть, яку основну графіку використовувати +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Оберіть, яку основну графіку використовувати (неможливо змінити у грі, тільки з головного меню) STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Додаткова інформація про базовий набір графіки STR_GAME_OPTIONS_BASE_SFX :{BLACK}Базовий набір звуків -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Оберіть базовий набір звуків для використання +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Оберіть базовий набір звуків для використання (неможливо змінити у грі, тільки з головного меню) STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Додаткова інформація про базовий набір звуків STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Базовий музичний набір @@ -1189,9 +1219,21 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Обер STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Допоміжна інформація про базовий музичний набір +STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(не встановлено додатків для інтеграції з соціальними платформами) + +STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Платформа: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Стан додатка: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Працює +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Не вдалося з'єднатися +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} не працює +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Вивантажено +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Подвоєння додатка +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}Версія не підтримується +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Неправильний підпис +STR_BASESET_STATUS :{STRING} {RED}(відсутніх або зіпсованих файлів: {NUM}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Не вдалося отримати список підтримуваних дозволів STR_ERROR_FULLSCREEN_FAILED :{WHITE}Повноекранний режим не працює @@ -1204,6 +1246,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Змен STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Збільшити кількість своєї валюти за 1 фунт (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Встановити обмінний курс своєї валюти до 1 фунта (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Роздільник: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Встановити роздільник для своєї валюти + STR_CURRENCY_PREFIX :{LTBLUE}Префікс: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Встановити префікс для своєї валюти STR_CURRENCY_SUFFIX :{LTBLUE}Суфікс: {ORANGE}{STRING} @@ -1284,10 +1329,10 @@ STR_TERRAIN_TYPE_CUSTOM :Власна в STR_TERRAIN_TYPE_CUSTOM_VALUE :Власна висота ({NUM}) ###length 4 -STR_CITY_APPROVAL_LENIENT :Поблажливо -STR_CITY_APPROVAL_TOLERANT :терпиме +STR_CITY_APPROVAL_LENIENT :поблажливо +STR_CITY_APPROVAL_TOLERANT :терпимо STR_CITY_APPROVAL_HOSTILE :вороже -STR_CITY_APPROVAL_PERMISSIVE :допустиме (не впливає на дії компанії) +STR_CITY_APPROVAL_PERMISSIVE :допустимо (не впливає на дії компанії) STR_WARNING_NO_SUITABLE_AI :{WHITE}Немає підходящих модулів ШІ...{}Ви можете завантажити різноманітні модулі ШІ через 'Додатковий контент' @@ -1352,19 +1397,22 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :ліворуч STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :по центру STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :праворуч +STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}секунд{P 0 и "" ""} STR_CONFIG_SETTING_INFINITE_MONEY :Нескінченні гроші: {STRING} +STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Дозволяє необмежені витрати і вимикає банкрутство компаній STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Максимальна сума позики: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Максимальна сума позики для компанії (без урахування інфляції) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Максимальна сума позики для компанії (без урахування інфляції). Якщо обрати "Ніяких позик", гроші будуть недоступні, окрім ігрових скриптів або налаштування "Безкінечні гроші" STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Ніяких позик STR_CONFIG_SETTING_INTEREST_RATE :Процентна ставка: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Процентна ставка за позиками; також контролює інфляцію, якщо вона увімкнена -STR_CONFIG_SETTING_RUNNING_COSTS :Експлуатаційні витрати: {STRING} -STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Встановіть вартість обслуговування та експлуатаційні витрати на транспорт та інфраструктуру +STR_CONFIG_SETTING_RUNNING_COSTS :Вартість експлуатації: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Встановіть вартість обслуговування та вартість експлуатації на транспорт та інфраструктуру STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Швидкість будівництва: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Обмеження кількості будівельних дій для ШІ @@ -1388,7 +1436,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Вартіст STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Встановити рівень витрат на будівництво та придбання STR_CONFIG_SETTING_RECESSIONS :Рецесії: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Якщо увімкнено, рецесії можуть відбуватися кожні декілька років. Під час рецессії обсяг виробництва на всіх підприємствах значно знижений (він повертається на попередній рівень, коли рецесія закінчується) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Якщо увімкнено, рецесії можуть відбуватися кожні кілька років. Під час рецессії обсяг виробництва на всіх підприємствах значно знижений (він повертається на попередній рівень, коли рецесія закінчується) STR_CONFIG_SETTING_TRAIN_REVERSING :Заборонити поїздам розвертатися на станціях: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Якщо увімкнено, поїзди не будуть розвертатися на некінцевих станціях, навіть якщо є коротший шлях до їх наступного пункту призначення, який вимагає розвороту @@ -1413,7 +1461,7 @@ STR_CONFIG_SETTING_CATCHMENT :Більш ре STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :При включенні розмір зони покриття станції залежить від її типу та розміру STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Підприємства з власними станціями обслуговують станції гравців: {STRING} -STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Якщо увімкнено - підприємства, що мають власні станції завантаження (наприклад, нафтові платформ), зможуть обслуговуватися також і збудованими поруч станціями гравців.{}При відключенні - підприємства будуть виконувати завантаження тільки через свої внутрішні станції, а ці станції будуть обслуговувати лише своє підприємство. +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Якщо увімкнено підприємства, що мають власні станції завантаження (наприклад, нафтові платформ), зможуть обслуговуватися також і збудованими поруч станціями гравців. При відключенні підприємства будуть виконувати завантаження тільки через свої внутрішні станції, а ці станції будуть обслуговувати лише своє підприємство. STR_CONFIG_SETTING_EXTRADYNAMITE :Дозволити видаляти більше міських будівель: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :При включенні видалення міських будівель та інфраструктури стає біль простішим @@ -1442,7 +1490,7 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Заборон STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :При включенні прямокутні перетини шляхів не будуть вважатися поворотами. Для повороту необходно прокладати шляхи під кутом 45°. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Станції можуть складатися з не суміжних частин: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Дозволяє об'єднання в одну станцію частин, що не примикають одна до одної. Щоб приєднати нову станцію до існуючої, необхідно використовувати Ctrl+клац при будівництві +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Дозволяє додавання до станції частин, що не примикають одна до одної. Для цього використовуйте Ctrl+клац при будівництві нових частин STR_CONFIG_SETTING_INFLATION :Інфляція: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Дозволяє інфляцію в економіці. При цьому витрати з часом зростають дещо швидше за прибутки @@ -1482,12 +1530,13 @@ STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :Показув ###length 2 STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :При включенні наприкінці кожного року виринає вікно фінансів для легшого огляду фінансового стану компанії. +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :При включенні наприкінці кожного періоду виринає вікно фінансів для легшого огляду фінансового стану компанії. -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Створювати накази з поміткою «без зупинки»: {STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Якщо в завданні транспортного засобу не вказана помітка «без зупинки», то воно зупиняєтся на всіх станціях на своєму шляху. Включення цієї опції призводить до того, що нові завдання будуть автоматично створюватися з поміткою «без зупинки» і транспортний засіб буде зупинятися лише на заданних станціях. Звичайно, при необхідності помітку можна зняти або встановити власноруч. +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Створювати завдання з поміткою «без зупинки»: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Якщо в завданні транспортного засобу не вказана помітка «без зупинки», то він зупиняєтся на всіх станціях на своєму шляху. Якщо увімкнути це налаштування, то нові завдання будуть автоматично створюватися з поміткою «без зупинки» і транспортний засіб буде зупинятися лише на вказаних станціях. При необхідності помітку можна зняти або встановити власноруч. -STR_CONFIG_SETTING_STOP_LOCATION :Створювати накази для поїздів з зупинкою {STRING} платформи -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Задайте, який кінець платформи для зупинки поїздів вказувати у нових завданнях.{}- на початку: початок платформи в напрямку руху;{}- посередині: середина платформи;{}- наприкінці: кінець платформи в напрямку руху. +STR_CONFIG_SETTING_STOP_LOCATION :Створювати завдання для поїздів з зупинкою {STRING} платформи +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Оберіть кінець платформи для зупинки потягів у нових завданнях. Опція "на початку" – початок платформи в напрямку руху; "посередині" – середина платформи; "наприкінці" – кінець платформи в напрямку руху. Окремі завдання для зупинки можна встановити клацнувши на текст завдання ###length 3 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :на початку STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :посередині @@ -1528,7 +1577,7 @@ STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Налашту STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Частота повітряних катастроф: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Налаштування частоти повітряних катастроф.{}* Великі літаки мають більший ризик катастрофив малих аеропортах +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Налаштування частоти повітряних катастроф.{}* Великі літаки мають більший ризик катастроф у малих аеропортах ###length 3 STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Немає STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Низька @@ -1537,8 +1586,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Нормаль STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Дозволити переїзди на дорогах або залізницях, якими володіють конкуренти: {STRING} STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Дозволяє будівництво переїздів на дорогах або залізницях, якими володіють конкуренти -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Дозволити встановлення зупинок на дорогах міста: {STRING} -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Дозволяє встановлення зупинок на дорогах, якими володіє місто. +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Дозволити встановлення проїзних зупинок на дорогах міста: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Дозволяє встановлення проїзних зупинок на дорогах, якими володіють міста STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Дозволити встановлення зупинок на дорогах конкурентів: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Дозволяє встановлення зупинок на дорогах, якими володіють конкуренти. STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Цю настройку не можливо змінити при наявності транспорту у грі @@ -1547,8 +1596,10 @@ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Витрати STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :При включенні інфраструктура потребує коштів для утримання. Витрати збільшуються не пропорційно з ростом розміру мережі, більше впливаючи на великі компанії ніж на малі STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Колір компанії: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Виберіть початковий колір для компанії +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Оберіть початковий колір для компанії +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Початковий другорядний колір для компанії: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Оберіть початковий другорядний колір для компанії, якщо використовується NewGRF, у якому він допускається STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аеропорти не застарівають: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :При включенні кожен аеропорт буде доступним для будівництва безстроково після його впровадження. @@ -1565,20 +1616,30 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :Так, для STR_CONFIG_SETTING_WARN_INCOME_LESS :Попереджувати про збиткові транспортні засоби: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Вмикає/вимикає повідомлення про транспортні засоби, що не принесли прибутку на протязі року. +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :При включенні виринають повідомлення про транспортні засоби, що не принесли прибутку впродовж року. +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :При включенні виринають повідомлення про транспортні засоби, що не принесли прибутку впродовж періоду + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Транспортні засоби не застарівають: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :При включенні будь-яка модель транспортного засобу буде доступна для придбання безстроково після її впровадження. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Вимір часу: {STRING} +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Оберіть вимір часу. Це налаштування неможливо змінити в грі.{}{}Календарний час, у якому рік складається з 12 місяців, а кожен місяць має 28-31 день, базовий в OpenTTD.{}{}Годинниковий час складається з однохвилинних зростань виробництва товарів і фінансових потоків, які відповідають 30-денному місяцю у календарному часі. Зростання об'єднані у 12-хвилинні періоди, які відповідають 1му року в календарному часі.{}{}У будь-якому варіанті використовуються базові дати появи транспорту, будиків та іншої інфраструктури. ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Календар +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Годинник STR_CONFIG_SETTING_MINUTES_PER_YEAR :Хвилин у році: {STRING} +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Оберіть кількість хвилин у календарному році. Базово 12 хвилин. Щоб зупинити зміни календаря, встановіть 0. Налаштування не вплине на симуляцію економіки у грі. Налаштування доступне тільки з годинниковим розкладом STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (час календаря зупинено) +STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Зміна виробництва вантажів у містах: {STRING} +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Змінити виробництво вантажів у містах на цей відсоток +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Змінити виробництво вантажів підприємствами: {STRING} +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Змінити виробництво вантажів підприємствами на цей відсоток STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Автозаміна зношених транспортних засобів: {STRING} @@ -1597,7 +1658,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Тривалі STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Тривалість відображення повідомлень про помилки (червоне вікно повідомлень). Деякі (критичні) повідомлення необхідно закривати власноруч. STR_CONFIG_SETTING_HOVER_DELAY :Відображати підказки: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Затримка перед відображенням підказок при наведенні курсором на елементи інтерфейса. Окрім того, відображення підказок можна призначити на праву кнопку миші, якщо це значення поставити на 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Затримка перед відображенням підказок при наведенні курсором на елементи інтерфейсу. Окрім того, відображення підказок можна призначити на праву кнопку миші, якщо це значення поставити на 0. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :При наведенні, через {COMMA} мілісекунд{P у и ""} ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :По правому клацу миші @@ -1609,8 +1670,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Товщина STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Товщина ліній на графіках. Тонкі лінії дають більш точне відображення, а товстіші - більш розбірливі. STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Показувати назву NewGRF у вікні придбання транспорту: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Додати рядок у вікні придбання транспорту, який показуватиме назву NewGRF обраного транспорту. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Показати вантажі, які може перевозити транспорт, у віконному списку{STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Додати рядок у вікні придбання транспорту, який показуватиме назву NewGRF обраного транспорту +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Показати у віконному списку вантажі, які може перевозити транспорт:{STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :При включенні придатний вантаж для транспортних засобів показано нижче у списку транспорту STR_CONFIG_SETTING_LANDSCAPE :Ландшафт: {STRING} @@ -1623,27 +1684,27 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :стандар STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TERRAIN_TYPE :Тип ландшафту: {STRING} -STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Тільки TerraGenesis) Горбистість ландшафту +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Оберіть висоту пагорбів і гір ландшафту STR_CONFIG_SETTING_INDUSTRY_DENSITY :Густота підприємств: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Встановіть кількість підприємств, що будуть створені і кількість підприємств, що існуватимуть впродовж гри STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Макс. відстань від краю карти до нафтопереробних заводів: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Обмеження того, наскільки далеко може бути побудований кордон нафтопереробних заводів та нафтових установок. На островних картах це гарантує, що вони знаходяться біля узбережжя. На картах більше 256 плиток це значення збільшується. +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Обмеження віддалення від меж мапи будівництва нафтопереробних заводів та нафтових установок. На острівних мапах це гарантує розташування біля узбережжя. На мапах понад 256 клітинок це значення збільшиться. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Рівень снігової шапки: {STRING} -STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Контроль висоти, вище якої лежить сніг в субарктичному ландшафті. Сніг впливає на генерування підприємств та на умови росту міст. Можливо змінити лише в редакторі сценаріїв, інакше вираховується за параметром "покриття снігом" +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Оберіть висоту, вище якої лежить сніг в субарктичному ландшафті. Сніг впливає на генерування підприємств та на умови росту міст. Можливо змінити лише в редакторі сценаріїв, інакше вираховується за параметром "покриття снігом" STR_CONFIG_SETTING_SNOW_COVERAGE :Покриття снігом: {STRING} -STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Контроль приблизної частки снігу в субарктичному ландшафті. Сніг впливає на створення підприємств та умови росту міст. Використовується лише при створенні мапи. Території біля моря завжди безсніжні +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Оберіть приблизну частку снігу в субарктичному ландшафті. Сніг впливає на створення підприємств та умови зростання міст. Використовується лише при створенні мапи. Моря і узбережжя завжди безсніжні STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_DESERT_COVERAGE :Покриття пустелею: {STRING} -STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Контроль приблизної частки пустель у тропічному ландшафті. Пустелі впливають на створення підприємств. Використовується лише при створенні мапи +STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Оберіть приблизну частку пустель у тропічному ландшафті. Пустелі впливають на створення підприємств та умови зростання міст. Використовується лише при створенні мапи STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Грубість ландшафту: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Тільки для TerraGenesis) Оберіть частоту пагорбів: Плавний пейзаж має менше пагорбів, вони менш круті. Грубий ландшафт має багато пагорбів, що можуть повторюватись один за одним +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Оберіть форму і кількість пагорбів. Плавний пейзаж має менше пагорбів, вони менш круті. Грубий ландшафт має багато малих пагорбів ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :дуже плавно STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :плавно @@ -1651,7 +1712,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :грубо STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :дуже грубо STR_CONFIG_SETTING_VARIETY :Розподіл різноманітності: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Тільки для TerraGenesis) Перевірка наявності на карті гір і рівнин. Оскільки це робить карту плоскішою, інші налаштування необхідно встановити гірськими +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Оберіть наявність на мапі гір і рівнин. Чим більша різноманітність, тим більша відмінність у висотах між гірськими і пласкими ділянками STR_CONFIG_SETTING_RIVER_AMOUNT :Кількість річок: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Виберіть кількість річок @@ -1670,7 +1731,8 @@ STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Виберіт STR_CONFIG_SETTING_ROAD_SIDE_LEFT :лівосторонній рух STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :правосторонній рух -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Поворот карти висот: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Поворот мапи висот: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Обрати напрям обертання мапи висот для припасування в ігровий світ ###length 2 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :проти годинникової стрілки STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :за годинниковою стрілкою @@ -1697,7 +1759,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :темно-зе STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :фіолетовий STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Схема кольорів вантажопотоків: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Встановіть схему кольорів для показу вантажних потоків. +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Встановіть схему кольорів для показу вантажних потоків ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Від зеленого до червоного (оригінальна) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Від зеленого до синього @@ -1705,7 +1767,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Від сіро STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Відтінки сірого STR_CONFIG_SETTING_SCROLLMODE :Переміщення вікна обзору: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Спосіб пересування ігрового поля +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Спосіб пересування ігрового поля. Налаштування "зафіксувавши курсор" не працює в усіх системах, наприклад веборієнтованих версіях, на сенсорних екранах, у Linux із Wayland ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Переміщувати ПКМ, зафіксувавши курсор STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Переміщувати карту ПКМ, зафіксувавши курсор @@ -1801,7 +1863,7 @@ STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Цоків STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Показувати час прибуття та відправлення у розкладах: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Відображати очікуваний час прибуття та відправлення у розкладі -STR_CONFIG_SETTING_QUICKGOTO :Прискорене створення наказів транспорту: {STRING} +STR_CONFIG_SETTING_QUICKGOTO :Прискорене створення завдань для транспорту: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :При відображенні списка завдань транспортного засобу автоматично натискається кнопка створення нових завдань STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Тип колії на початку нової/завантаженної гри: {STRING} @@ -1821,7 +1883,7 @@ STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Автомат STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Автоматично прибирати сигнали на шляху при будівництві колії. Увага: це може спричинити зіткнення потягів! STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Обмеження швидкості прискорення: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Обмеження швидкості гри при увімкнутому прискоренні. 0 = без обмежень (залежить від можливостей компʼютера). Значення понад 100% уповільнить гру. Верхня межа залежить від параметрів компʼютера і може змінитися у грі. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Обмеження швидкості гри при увімкнутому прискоренні. 0 = без обмежень (залежить від можливостей компʼютера). Значення понад 100% уповільнить гру. Верхня межа залежить від параметрів компʼютера і може змінюватися у грі STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% нормальної швидкості гри ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Без обмежень (залежить від можливостей компʼютера) @@ -1834,9 +1896,11 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Відтвор ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR :Кінець року: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Кінець періоду: {STRING} ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Грати звуковий ефект у кінці року при підбитті результатів річної діяльності компанії порівняно з попереднім роком +STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Грати звуковий ефект у кінці періоду при підбитті результатів періодної діяльності компанії порівняно з попереднім періодом STR_CONFIG_SETTING_SOUND_CONFIRM :Будівництво: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Відтворювати звуковий ефект при успішному будівництві споруд або інших діях @@ -1883,11 +1947,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Дозволя STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Максимально допустима кількість #opcodes: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Максимально допустима кількість розрахунків, які може виконати скрипт впродовж одного ходу STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Максимальне використання пам'яті скриптом: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Скільки пам'яті може зайняти один скрипт до примусового припинення. Це може знадобитися збільшити для великих карт. -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Який обсяг пам'яті може зайняти один скрипт до примусового припинення. Можливо розмір треба збільшити для великих мап. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MБ STR_CONFIG_SETTING_SERVINT_ISPERCENT :Інтервали техогляду вказано у відсотках: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Налаштування способу визначення необхідності проведення техогляду: через вказаний проміжок часу після попереднього техогляду чи коли поточна надійність транспортного засобу стане нижчою від максимальної його надійності на вказаний процент. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Коли увімкнуто, транспортний засіб намагається проводити техогляд якщо поточна надійність стане нижчою від максимальної надійності на вказаний процент.{}{}Наприклад, iякщо максимальна надійність 90%, а інтервал техогляду 20%, транспортний засіб намагатиметься виконати техогляд якщо поточна надійність сягне 72% STR_CONFIG_SETTING_SERVINT_TRAINS :Інтервал техогляду залізничного транспорту: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Налаштування інтервалу техогляду для нового залізничного транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі). @@ -1897,13 +1961,16 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Інтерва STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Налаштування інтервалу техогляду для нового повітряного транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі). STR_CONFIG_SETTING_SERVINT_SHIPS :Інтервал техогляду водного транспорту: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Налаштування інтервалу техогляду для нового водного транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі). -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P 0 "ень" "ні" "нів"}/% +###length 3 + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Відключено STR_CONFIG_SETTING_NOSERVICE :Не відправляти на техогляд, якщо відключені аварії: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Включення цієї опції дозволяє не проводити автоматичний техогляд у разі, якщо поломки транспорту вимкнено. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Зменшення швидкості завантаження потягів, які довші за станцію: {STRING} +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Якщо увімкнуто, потяги довші за станцію завантажуються значно повільніше, ніж потяги які вміщуються на станції. Налаштування не впливає на пошук шляху STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Враховувати обмеження швидкості вагонів: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :При включенні максимальна швидкість потяга враховує обмеження швидкості вагонів. @@ -1950,7 +2017,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Показат STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Новий транспорт: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Показати газету, коли стає доступним новий засіб пересування -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Зміни в списку грузів, що приймаються: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Зміни в списку вантажів, що приймаються: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Показати повідомлення, якщо станція змінює приймані типи вантажів STR_CONFIG_SETTING_NEWS_SUBSIDIES :Субсидії: {STRING} @@ -1968,13 +2035,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Починаю STR_CONFIG_SETTING_STARTING_YEAR :Початкова дата: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Рік закінчення: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Рік закінчення гри для підрахунку очок. У кінці року додають очки компанії і показують загальний результат, але гравці можуть грати далі.{}Якщо встановлено рік раніший початкового, загальний результат не зʼявиться. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Рік закінчення гри для підрахунку очок. У кінці обраного року додаються очки компанії і з'являється загальний результат, але гравці можуть грати далі.{}Якщо встановлено рік раніший від початкового, загальний результат ніколи не зʼявиться. STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Ніколи STR_CONFIG_SETTING_ECONOMY_TYPE :Тип економіки: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Плавна економіка здійснює часті зміни обсягів виробництва малими порціями. Заморожена економіка не допускає зміни обсягів виробництва і закриття підприємств. Це налаштування може не працювати, якщо використовується підприємства з NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Плавна економіка здійснює часті зміни обсягів виробництва малими порціями. Заморожена економіка не допускає зміни обсягів виробництва і закриття підприємств. Це налаштування може не працювати, якщо використовуються підприємства з NewGRF. ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Оригінальна STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Плавно @@ -1993,8 +2060,9 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Автомат STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Налаштування року впровадження світлофорів замість семафорів. До цього року будуть встановлюватись лише семафори. STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Сигнали, доступні при циклічному переборі: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Налаштування типу сигналів, що доступні при зміні типу за допомогою Ctrl+клац мишею +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Налаштування типу сигналів, що доступні при циклічному переборі в панелі будівництва сигналів за допомогою Ctrl+клац мишею ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Тільки поточна група STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :всі видимі STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Показувати типи сигналів: {STRING} @@ -2017,8 +2085,8 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Дозволя STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Міська влада може будувати переїзди: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Дозволяє містам самостійно будувати залізничні переїзди. -STR_CONFIG_SETTING_NOISE_LEVEL :Міська влада може контролювати рівень шуму аеропортів: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :При відключенні дозволяється будувати два аеропорти у кожному місті. При увімкненні кількість аеропортів залежить від допустимого рівня шуму, що в свою чергу залежить від кількості населення міста, розміру аеропорта та відстані +STR_CONFIG_SETTING_NOISE_LEVEL :Обмеження розміщення аеропортів залежно від рівня шуму: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :При увімкненні кількість аеропортів залежить від допустимого рівня шуму, що в свою чергу залежить від кількості населення міста, розміру аеропорта та відстані. При відключенні дозволяється будувати два аеропорти у кожному місті допоки ставлення місцевої влади "допустимо" STR_CONFIG_SETTING_TOWN_FOUNDING :Засновування нових міст під час гри: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Дозволяє заснування нових міст гравцями під час гри. @@ -2028,7 +2096,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Дозволе STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Дозволено (з вибором дорожньої сітки) STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Кількість вантажів та пасажирів у містах: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Скільки вантажів генерується будинками в містах відносно населення.{}Квадратична залежність: Вдвічі більше місто генерує вчетверо більше вантажів.{}Лінійна: Вдвічі більше місто генерує вдвічі більше вантажів. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Скільки вантажів створюється будинками в містах відносно населення.{}Квадратична залежність: Вдвічі більше місто створює вчетверо більше вантажів.{}Лінійна: Вдвічі більше місто створює вдвічі більше вантажів. ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Квадратична(оригінальна) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :лінійна залежність @@ -2069,7 +2137,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Найбільша використовувана роздільна здатність: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Обмеження максимальної роздільної здатності зображень. Не використовуватиметься наявна графіка високої роздільної здатності. Гра працюватиме злагодженіше при використанні кількох графічних файлів з різною роздільною здатністю. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Обмеження максимальної роздільної здатності зображень. Не використовуватиметься наявна графіка високої роздільної здатності. Гра працюватиме злагодженіше при використанні кількох графічних файлів з різною роздільною здатністю ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2092,16 +2160,19 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Жодного STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Множник розміру мегаполісів: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Середньостатистичне відношення початкового розміру мегаполісів порівняно зі звичайними містами. -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Час між перерозрахунками графа зв'язків. Кожен розрахунок обчислює однин компонент графа, тобто лише деякі компоненти оновляться після закінчення кожного проміжку часу, а не весь граф. Чим менше це значення, тим більше часу процесора буде витрачатися. Чим більше це значення, тим довше буде очікувати розподілення вантажів на нових маршрутах +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Оновлення обрахунку зв'язків, час {STRING} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Час між перерозрахунками графа зв'язків. Кожен розрахунок обчислює один компонент графа, тобто лише деякі компоненти оновляться після закінчення кожного проміжку часу, а не весь граф. Чим менше це значення, тим більше часу процесора буде витрачатися. Чим більше це значення, тим довше доведеться очікувати розподілення вантажів на нових маршрутах +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Час між перерахунками графа зв'язків: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Час між перерозрахунками компонента графа зв'язків. На початку перерозрахунку утворюється з'єднання, яке існує обраний час. Чим менше це значення, тим більша вірогідність, що з'єднання розірветься раніше очікуваного, після чого гра загальмує. Чим більше це значення, тим довше обраховуватиметься розподілення вантажів при зміні маршрутів STR_CONFIG_SETTING_DISTRIBUTION_PAX :Режим розподілу для пасажирів: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :В "симетричному" режимі від станції A до станції B відправлятиметься приблизно стільки ж пасажирів, як від B до A. В "асиметричному" режимі дозволяється відправляти довільну кількість пасажирів в обох напрямках. Ручний режим означає, що розподіл пасажирів не здійснюватиметься автоматично. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :В "симетричному" режимі від станції A до станції Б відправлятиметься приблизно стільки ж пасажирів, як від 0Ю до A. В "асиметричному" режимі дозволяється відправляти довільну кількість пасажирів в обох напрямках. Ручний режим означає, що розподіл пасажирів не здійснюватиметься автоматично STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Режим розподілу для пошти: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :В "симетричному" режимі від станції A до станції B надсилатиметься приблизно стільки ж пошти, як від B до A. В "асиметричному" режимі дозволяється надсилати довільну кількість пошти в обох напрямках. Ручний режим означає, що розподіл пошти не здійснюватиметься автоматично. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :В "симетричному" режимі від станції A до станції Б надсилатиметься приблизно стільки ж пошти, як від Б до A. В "асиметричному" режимі дозволяється надсилати довільну кількість пошти в обох напрямках. Ручний режим означає, що розподіл пошти не здійснюватиметься автоматично STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Режим розподілу для броньованого транспорту: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :БРОНЬОВАНИЙ клас вантажу містить: коштовності — в помірному ландшафті, діаманти — в субтропічному чи золото — в субарктичному. NewGRF може змінювати це. В "симетричному" режимі від станції A до станції B надсилатиметься приблизно стільки ж вантажів, як від B до A. В "асиметричному" режимі дозволяється надсилати довільну кількість вантажів в обох напрямках. "Ручний" режим означає, що розподіл цих вантажів не здійснюватиметься автоматично. Рекомендується встановити "асиметричний" або "ручний" режим, якщо гра відбувається в субарктичному ландшафті, тому що банки не надсилають золото назад до шахт. В помірному або субтропічному ландшафті можна також вибрати "симетричний" режим, оскільки банки будуть надсилають коштовності назад до оригінального банку у вигляді вантажу з якимись цінностями. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :БРОНЬОВАНИЙ клас вантажу: коштовності — в помірному ландшафті, діаманти — в субтропічному, золото — в субарктичному. NewGRFи можуть змінювати це налаштування. В "симетричному" режимі від станції A до станції Б надсилатиметься приблизно стільки ж вантажів, як від Б до A. В "асиметричному" режимі дозволяється надсилати довільну кількість вантажів в обох напрямках. "Ручний" режим означає, що розподіл цих вантажів не здійснюватиметься автоматично. Рекомендується встановити "асиметричний" або "ручний" режим, якщо гра відбувається в субарктичному або субтропічному ландшафтах, у яких банки тільки отримують золото. В помірному ландшафті можна також вибрати "симетричний" режим, оскільки банки будуть повертати коштовності до банку-відправника STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Режим розподілу для інших видів вантажу: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :«Асиметричний» означає можливість відправки довільної кількості вантажу в будь-якому напрямку. «Ручний» означає, неавтоматичний розподіл для цих вантажів. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :«Асиметричний» означає можливість відправки довільної кількості вантажу в будь-якому напрямку. «Ручний» означає, неавтоматичний розподіл для цих вантажів ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :ручний STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :асиметричний @@ -2111,12 +2182,12 @@ STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Точніст STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Чим більше значення буде встановлено, тим більше часу процесора буде витрачатися на розрахунок графа зв’язків. Якщо це буде тривати довго, ви можете зауважити гальмування. Якщо встановити тут мале значення, розподіл буде неточним і вантаж, можливо, надсилатиметься не в ті місця, куди ви очікуєте. STR_CONFIG_SETTING_DEMAND_DISTANCE :Сила впливу відстані на попит: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Якщо це значення встановити більшим за 0, відстань між відправною станцією A якогось вантажу та приймаючою станцією B впливатиме на кількість вантажу, який надсилатиметься від A до B. Чим більша відстань від A до B, тим менше вантажу надсилатиметься. Чим більшим буде це значення, тим менше вантажу буде надсилатися до дальніх станцій і тим більше — до ближніх. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Якщо це значення встановити більшим за 0, відстань між відправною станцією A якогось вантажу та станцією призначення Б впливатиме на кількість вантажу, який надсилатиметься від A до Б. Що більша відстань від A до Б, то менше вантажу надсилатиметься. Що більшим буде це значення, то менше вантажу буде надсилатися до дальніх станцій і більше — до ближніх STR_CONFIG_SETTING_DEMAND_SIZE :Кількість вантажу, що повертається у симетричному режимі: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Встановивши це на менше ніж 100% можна зробити симетричну доставку схожою на асиметричну. Менше вантажу буде примусово повертатися назад, якщо певна його кількість надсилається на станцію. При 0% - симетрична доставка поводить себе зовсім як асиметрична. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Встановивши це значення меншим ніж 100%, можна зробити симетричну доставку схожою на асиметричну. Менше вантажу буде примусово повертатися назад, якщо певна його кількість надсилається на станцію. При 0% симетрична доставка поводить себе зовсім як асиметрична. STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Рівень заповнення коротких маршрутів перед переходом до містких: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Часто між двома заданими станціями є більше, ніж один шлях. Cargodist заповнить спочатку найкоротший маршрут, потім другий після найкоротшого і т. д. Рівень заповнення визначається за допомогою оцінки місткості та запланованого використання. Якщо всі маршрути буде заповнено, а джерело вантажу не вичерпається, алгоритм почне переповнювати маршрути, починаючи з наймісткіших. Ця настройка дозволяє задати рівень заповнення в процентах, якого треба досягнути на першому маршруті перед тим, як перейти до заповнення наступного. Варто встановити цей рівень меншим за 100%, щоб уникнути переповнення станцій в разі переоцінки місткості маршруту. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Часто між двома заданими станціями є кілька шляхів. Cargodist заповнить спочатку найкоротший маршрут, потім другий після найкоротшого тощо. Рівень заповнення визначається оцінкою місткості та запланованого використання. Якщо всі маршрути буде заповнено, а джерело вантажу не вичерпається, алгоритм почне переповнювати маршрути, починаючи з наймісткіших. Налаштування дозволяє вказати рівень заповнення у відсотках, якого треба досягти на першому маршруті перед заповненням наступного. Встановлення рівня меншим за 100% дозводить уникнути переповнення станцій у випадку переоцінки місткості. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Одиниці швидкості (на суші): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Одиниці швидкості (на воді): {STRING} @@ -2124,6 +2195,9 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Показув STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Імперські (милі/год) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Метричні (км/год) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :СІ (м/с) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Ігрових одиниць (клітинок/день) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Ігрових одиниць (клітинок/секунду) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :вузли STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Одиниці потужності: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Показувати потужності в таких одиницях: @@ -2146,8 +2220,8 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Імперсь STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Метричні (л) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :СІ (м³) -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Одиниці тяглової сили: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Якщо тяглова сила відображається на інтерфейсі: показувати її в обраній одиниці виміру +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Одиниці тягового зусилля: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Якщо тягове зусилля відображається на інтерфейсі: показувати її в обраній одиниці виміру ###length 3 STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Імперські (фунт-сили) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Метричні (кгс) @@ -2173,29 +2247,23 @@ STR_CONFIG_SETTING_ACCOUNTING :Облік STR_CONFIG_SETTING_VEHICLES :Транспорт STR_CONFIG_SETTING_VEHICLES_PHYSICS :Фізика STR_CONFIG_SETTING_VEHICLES_ROUTING :Маршрути +STR_CONFIG_SETTING_VEHICLES_ORDERS :Завдання STR_CONFIG_SETTING_LIMITATIONS :Обмеження STR_CONFIG_SETTING_ACCIDENTS :Катастрофи STR_CONFIG_SETTING_GENWORLD :Створення світу STR_CONFIG_SETTING_ENVIRONMENT :Довкілля +STR_CONFIG_SETTING_ENVIRONMENT_TIME :Час STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Органи влади STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Міста STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Підприємства STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Розподіл вантажів +STR_CONFIG_SETTING_ENVIRONMENT_TREES :Дерева STR_CONFIG_SETTING_AI :Конкуренти STR_CONFIG_SETTING_AI_NPC :Віртуальні гравці STR_CONFIG_SETTING_NETWORK :Мережа -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Алгоритм пошуку шляху для поїздів: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Вибір алгоритма пошуку шляху для залізничного транспорту. -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Алгоритм пошуку шляху для автомобілів: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Вибір алгоритма пошуку шляху для дорожнього транспорту. -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Алгоритм пошуку шляху для кораблів: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Вибір алгоритма пошуку шляху для водного транспорту. STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Автоматично розвертатися біля сигналів: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Дозволяє поїздам розвертатися на сигналах, котрі не вдається проїхати впродовж довгого часу. -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(рекомендовано) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Змініть значення @@ -2230,12 +2298,13 @@ STR_INTRO_CAPTION :{WHITE}OpenTTD STR_INTRO_NEW_GAME :{BLACK}Нова гра STR_INTRO_LOAD_GAME :{BLACK}Завантажити гру STR_INTRO_PLAY_SCENARIO :{BLACK}Грати за сценарієм -STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Грати з картою висот +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Грати з мапою висот STR_INTRO_SCENARIO_EDITOR :{BLACK}Редактор сценаріїв STR_INTRO_MULTIPLAYER :{BLACK}Мережева гра STR_INTRO_GAME_OPTIONS :{BLACK}Налаштування гри STR_INTRO_HIGHSCORE :{BLACK}Таблиця рекордів +STR_INTRO_HELP :{BLACK}Допомога й довідка STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Налаштування STR_INTRO_NEWGRF_SETTINGS :{BLACK}Налаштування NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Додатковий контент @@ -2255,13 +2324,14 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Вибр STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Вибрати 'тропічний' ландшафт STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Вибрати 'іграшковий' ландшафт -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Показати налаштування гри -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Показати таблицю рекордів -STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Налаштування відображення -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Показати налаштування NewGRF +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Відкрити налаштування гри +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Відкрити таблицю рекордів +STR_INTRO_TOOLTIP_HELP :{BLACK}Отримати доступ до довідки й мережевих ресурсів +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Показати налаштування +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Відкрити налаштування NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Перевірити доступний для завантаження додатковий контент STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Показати налаштування ШІ -STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Показати налаштування ігрового скрипту +STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Відкрити налаштування ігрового скрипту STR_INTRO_TOOLTIP_QUIT :{BLACK}Вийти з OpenTTD STR_INTRO_BASESET :{BLACK}В обраному наборі базової графіки немає {NUM} спрайт{P а ів ів}. Будь ласка, оновіть набір графіки. @@ -2280,12 +2350,14 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ви д # Help window STR_HELP_WINDOW_CAPTION :Допомога й довідка +STR_HELP_WINDOW_WEBSITES :{BLACK}Вебсайти STR_HELP_WINDOW_DOCUMENTS :{BLACK}Документація STR_HELP_WINDOW_README :{BLACK}Інструкція STR_HELP_WINDOW_CHANGELOG :{BLACK}Зміни STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Відомі збої STR_HELP_WINDOW_LICENSE :{BLACK}Ліцензія STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD +STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Довідка / Вікі STR_HELP_WINDOW_BUGTRACKER :{BLACK}Повідомити про помилку STR_HELP_WINDOW_COMMUNITY :{BLACK}Спільнота @@ -2312,27 +2384,30 @@ STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Пока STR_LIVERY_SHIP_TOOLTIP :{BLACK}Показати фарбування кораблів STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Показати фарбування авіації STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Показати кольори груп поїздів +STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Показати кольори груп дорожнього транспорту STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Показати кольори груп кораблів STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Показати кольори груп повітряних апаратів STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Оберіть основний колір для обраної схеми. Ctrl+клац мишею встановить обраний колір для всіх схем STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Оберіть другорядний колір для обраної схеми. Ctrl+клац мишею встановить обраний колір для всіх схем STR_LIVERY_PANEL_TOOLTIP :{BLACK}Оберіть кольорову схему для зміни, чи декілька з Ctrl+клац мишею. Клацніть на прямокутнику, щоб ввімкнути/вимкнути використання схем STR_LIVERY_TRAIN_GROUP_EMPTY :Кольори груп поїздів відсутні +STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :Не налаштовано груп дорожнього транспорту STR_LIVERY_SHIP_GROUP_EMPTY :Групи корабілв не налаштовано +STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Не налаштовано груп повітряного транспорту ###length 23 -STR_LIVERY_DEFAULT :Стандартний колір -STR_LIVERY_STEAM :Паровоз -STR_LIVERY_DIESEL :Тепловоз -STR_LIVERY_ELECTRIC :Електровоз +STR_LIVERY_DEFAULT :Базовий колір +STR_LIVERY_STEAM :Паротяг +STR_LIVERY_DIESEL :Теплотяг +STR_LIVERY_ELECTRIC :Електротяг STR_LIVERY_MONORAIL :Монорейковий локомотив STR_LIVERY_MAGLEV :Магнітний локомотив -STR_LIVERY_DMU :Багатосекційний тепловоз -STR_LIVERY_EMU :Багатосекційний електровоз -STR_LIVERY_PASSENGER_WAGON_STEAM :Пасажирський вагон (паровоз) -STR_LIVERY_PASSENGER_WAGON_DIESEL :Пасажирський вагон (тепловоз) -STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пасажирський вагон (електровоз) -STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пасажирський вагон (монорейка) +STR_LIVERY_DMU :Багатосекційний теплотяг +STR_LIVERY_EMU :Багатосекційний електротяг +STR_LIVERY_PASSENGER_WAGON_STEAM :Пасажирський вагон (паротяговий) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Пасажирський вагон (теплотяговий) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пасажирський вагон (електротяговий) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пасажирський вагон (монорейковий) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пасажирський вагон (маглев) STR_LIVERY_FREIGHT_WAGON :Вантажний вагон STR_LIVERY_BUS :Автобус @@ -2426,6 +2501,7 @@ STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Дата STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Поточна дата STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}год {NUM}хв STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Тривалість гри +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Тривалість гри{}без паузи STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Мова, версія сервера, та інше. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Натисніть на гру із списку, щоб вибрати її @@ -2475,7 +2551,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Назв STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Встановити пароль STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Захистіть вашу гру паролем, якщо не бажаєте загального доступу -STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Видимість +STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Видимість: STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Чи бачитимуть інші твій сервер у загальному списку STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} клієнт{P "" а ів} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. клієнтів: @@ -2506,7 +2582,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Запи STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Роз'єднання STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Сервер захищено паролем. Введіть пароль -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Компанія захищена паролем. Введіть пароль # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Гравців у мережі @@ -2542,6 +2617,7 @@ STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Ство STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}Це ти STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Організатор гри STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} клієнт{P "" и ів} - {NUM}/{NUM} компан{P ія ії ій} +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}Кількість поточно з'єднаних клієнтів, кількість компаній і максимум компаній, дозволених адміністратором сервера # Matches ConnectionType ###length 5 @@ -2554,13 +2630,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}З ме STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Викинути STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Бан STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Видалити -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Розблокувати пароль STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Дія адміністратора STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Дійсно бажаєте викинути гравця '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Дійсно бажаєш заблокувати гравця '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Дійсно бажаєш видалити компанію '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Дійсно бажаєш скинути пароль компанії '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Використати мережеве реле? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Не вдалося з'єднатися з сервером '{STRING}'.{}Чи бажаєш використати мережеве реле '{STRING}'? @@ -2569,24 +2643,17 @@ STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Так, STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Так, більше не питати STR_NETWORK_ASK_SURVEY_CAPTION :Дозволити автоматизований збір даних? +STR_NETWORK_ASK_SURVEY_TEXT :Бажаєте долучитися до автоматичного збору даних?{}OpenTTD передаватиме деякі дані при виході з гри.{}Це можна змінити в розділі "Налаштування гри" будь-коли. +STR_NETWORK_ASK_SURVEY_PREVIEW :Попередній перегляд збору даних +STR_NETWORK_ASK_SURVEY_LINK :Про збір даних і приватність STR_NETWORK_ASK_SURVEY_NO :Ні STR_NETWORK_ASK_SURVEY_YES :Так STR_NETWORK_SPECTATORS :Спостерігачі -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не запам'ятовувати введений пароль -STR_COMPANY_PASSWORD_OK :{BLACK}Дати компанії новий пароль -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Пароль компанії -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Використовувати як стандартний -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Використовувати цей пароль для нових компаній - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Приєднатись STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Приєднатись і грати за цю компанію -STR_COMPANY_VIEW_PASSWORD :{BLACK}Пароль -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Пароль захищає вашу компанію від приєднання інших гравців -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Встановлення паролю # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Відправити @@ -2615,6 +2682,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Не в STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Не вказано назву сервера. Назва має вказуватись нагорі вікна багатокористувацької гри. STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Версія клієнта не збігається з версією сервера STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Пароль невірний +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Ви не в списку дозволених клієнтів STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Сервер переповнений STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Вас відключено від цього серверу STR_NETWORK_ERROR_KICKED :{WHITE}Вас відключено від гри @@ -2628,9 +2696,9 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Ви д STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Неприпустиме ім'я гравця STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Можлива втрата з'єднання -STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}На протязі {NUM} секунд{P и "" ""} не надійшло жодної інформації від сервера +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Впродовж {NUM} секунд{P и "" ""} не надійшло жодної інформації від сервера -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :фатальна помилка STR_NETWORK_ERROR_CLIENT_DESYNC :помилка синхронізації STR_NETWORK_ERROR_CLIENT_SAVEGAME :неможливо завантажити карту @@ -2642,6 +2710,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :отриман STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :невірна версія гри STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :таке ім'я вже є STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :пароль невірний +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :не у списку доступного STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :неправильний company-id в DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :відключено сервером від гри STR_NETWORK_ERROR_CLIENT_CHEATER :спроба грати нечесно @@ -2701,12 +2770,12 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Вибр STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Позначити весь вміст, що є оновленням існуючого, для завантаження STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Зняти позначки STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Не завантажувати нічого -STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Шукати на сторонніх веб-сайтах -STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Шукати додатки, недоступні на серверах OpenTTD на сторонніх веб-сайтах +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Шукати на сторонніх вебсайтах +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Шукати додатки, недоступні на серверах OpenTTD на сторонніх вебсайтах STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Ви виходите з OpenTTD! -STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Умови використання додатків з зовнішніх веб-сайтів можуть відрізнятися.{}Інструкції по встановленню даних додатків у OpenTTD шукайте на відповідних веб-сайтах.{}Продовжити? +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Умови використання додатків з зовнішніх вебсайтів можуть відрізнятися.{}Інструкції по встановленню даних додатків у OpenTTD шукайте на відповідних вебсайтах.{}Продовжити? STR_CONTENT_FILTER_TITLE :{BLACK}Фільтр за назвою: -STR_CONTENT_OPEN_URL :{BLACK}Відвідати вебсайт +STR_CONTENT_OPEN_URL :{BLACK}Вебсайт STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Відвітати вебсайт цього контенту STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Завантажити STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Почати завантаження обраного вмісту @@ -2739,7 +2808,7 @@ STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :Бібліотека ШІ STR_CONTENT_TYPE_SCENARIO :Сценарій -STR_CONTENT_TYPE_HEIGHTMAP :Карта висот +STR_CONTENT_TYPE_HEIGHTMAP :Мапа висот STR_CONTENT_TYPE_BASE_SOUNDS :Основні звуки STR_CONTENT_TYPE_BASE_MUSIC :Основна музика STR_CONTENT_TYPE_GAME_SCRIPT :Ігровий скрипт @@ -2809,8 +2878,8 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Не п STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Підсвічувати зону покриття станції STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Приймає: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Постачає: {GOLD}{CARGO_LIST} -STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK} Вартість експлуатації: {GOLD}{CURRENCY_SHORT}/рік -STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK} Вартість експлуатації: {GOLD}{CURRENCY_SHORT}/період +STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Вартість експлуатації: {GOLD}{CURRENCY_SHORT}/рік +STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Вартість експлуатації: {GOLD}{CURRENCY_SHORT}/період # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Об'єднати станцію @@ -2828,16 +2897,16 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Будівни STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Будівництво монорейкової залізниці STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Будівництво магнітної залізниці -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Будувати колію. Ctrl переключає побудову/знесення для будівництва колії. Утримуйте Shift для показу витрат на будівництво -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Будувати колію, використовуючи авторежим. Ctrl переключає побудову/знесення для будівництва колії. Утримуйте Shift для показу витрат на будівництво -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Будувати залізничне депо (для купівлі та обслуговування поїздів). Утримуйте Shift для показу витрат на будівництво -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Перетворити колію на точку маршруту. Ctrl дозволяє об'єднання точок маршруту. Утримуйте Shift для показу очікуваних витрат -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Будувати станцію. Ctrl дозволяє об'єднання станцій. Утримуйте Shift для показу витрат на будівництво -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Будувати залізничні сигнали. Ctrl переключає семафори/світлові сигнали{}Протяжка мишою будує сигнали вздовж прямої ділянки рейок. Ctrl будує сигнали до наступної розв'язки чи сигналу{}Ctrl+клац мишою вмикає показ вікна вибору сигналів. Утримуйте Shift для показу витрат на будівництво -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Будувати міст. Утримуйте Shift для показу витрат на будівництво -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Будувати тунель. Утримуйте Shift для показу витрат на будівництво -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Будувати/демонтувати колію, сигнали, точки маршруту і станції. Утримання Ctrl також демонтує колію з точок маршрутів і станцій -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Модернізувати колію. Утримуйте Shift для показу витрат на модернізацію +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Будування колії. Ctrl+клац для знесення колії. Утримуйте Shift для показу очікуваних витрат +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Будування колії в авторежимі. Ctrl+клац для знесення колії. Утримуйте Shift для показу очікуваних витрат +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Будувати залізничне депо (для купівлі та обслуговування потягів). Утримуйте Shift для показу витрат на будівництво +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Будування точки маршруту. Ctrl+клац для створення приєднаної точки маршруту. Утримуйте Shift для показу очікуваних витрат +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Будування залізничної станції. Ctrl+клац для приєднання додаткових станцій. Утримуйте Shift для показу очікуваних витрат +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Будувати колійні сигнали. Ctrl+клац переключає семафори/світлофори{}Ctrl+протяжка будує сигнали вздовж ділянки колії з обраним проміжком. Ctrl+клац+протяжка будує сигнали до наступної стрілки, станції чи сигналу. Утримуйте Shift для показу очікуваних витрат +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Будувати залізничний міст. Утримуйте Shift для показу витрат на будівництво +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Будування тунелю. Утримуйте Shift для показу витрат на будівництво +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Будування/демонтування колії, сигналів, точок маршрутів і станцій. Ctrl+клац демонтує колію з точок маршрутів і станцій +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Модернізація колії. Утримуйте Shift для показу очікуваних витрат STR_RAIL_NAME_RAILROAD :Звичайна колія STR_RAIL_NAME_ELRAIL :Електрифікована колія @@ -2850,7 +2919,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Вибі # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Точка маршруту -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Виберіть тип точки маршруту # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Вибір станції @@ -2863,12 +2931,15 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Вибе STR_STATION_BUILD_DRAG_DROP :{BLACK}Довільно STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Будувати станцію за методом "перетягнути й відпустити" -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Виберіть тип станції для відображення -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Виберіть тип станції для забудови + + + STR_STATION_CLASS_DFLT :Звичайна STR_STATION_CLASS_DFLT_STATION :Звичайна станція +STR_STATION_CLASS_DFLT_ROADSTOP :Звичайна зупинка STR_STATION_CLASS_WAYP :Пункт +STR_STATION_CLASS_WAYP_WAYPOINT :Звичайна точка маршруту # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Вибір сигналів @@ -2885,7 +2956,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Вихі STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Комбінований сигнал (електричний){}Комбінований сигнал працює як об'єднаний вхідний-вихідний сигнал. Це дозволяє будувати великі "дерева" пре-сигналів STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Розширений сигнал (електричний){}Розширений сигнал дозволяє більше ніж одному поїзду одночасно заходити до блоку сигналів, якщо поїзд може зарезервувати шлях до безпечної точки зупинки. Розширені сигнали дозволяють проїжджати їх з обох сторін STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Односторонній розширений сигнал (електричний){}Розширений сигнал дозволяє більше ніж одному поїзду одночасно заходити до блоку сигналів, якщо поїзд може зарезервувати шлях до безпечної точки зупинки. Односторонні розширені сигнали не дозволяють вїжджати з іншої сторони -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Заміна сигналів{}Коли обрано, клац на поточному сигналі замінить його на обраний тип і варіант сигналу, Ctrl+клац замінить поточний варіант. Утримуйте Shift для показу витрат на заміну +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Заміна сигналів{}Клац на поточному сигналі замінить його на обраний тип і варіант сигналу, Ctrl+клац змінить поточний варіант. Утримуйте Shift для показу очікуваних витрат STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Відстань між сигналами при перетаскуванні STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Зменшити відстань між сигналами STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Збільшити відстань між сигналами @@ -2911,25 +2982,25 @@ STR_BRIDGE_TUBULAR_SILICON :Трубчас # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Автомобільне будівництво STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Будівництво трамвайних колій -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Будувати дорогу. Ctrl переключає побудову/знесення для будівництва доріг. Утримуйте Shift для показу витрат -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Будувати трамвайну колію. Ctrl переключає побудову/знесення для будівництва трамвайної колії. Утримуйте Shift для показу витрат на будівництво -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Будувати дорогу в режимі Автобудування. Ctrl переключає побудову/знесення для будівництва доріг. Утримуйте Shift для показу витрат на будівництво -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Будувати трамвайну лінію в режимі Автобудування. Ctrl переключає побудову/знесення для будівництва трамвайної колії. Утримуйте Shift для показу витрат на будівництво -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Будувати автомобільне депо (для будівництва і обслуговування автомобілів). Утримуйте Shift для показу витрат на будівництво -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Будувати трамвайне депо (для будівництва та обслуговування трамваїв). Утримуйте Shift для показу витрат на будівництво -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Будувати автобусну зупинку. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Будувати пасажирську трамвайну станцію. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Будувати вантажний майданчик. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Побудувати товарну трамвайну станцію. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на побудову +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Будувати дорогу. Ctrl+клац для знесення доріг. Утримуйте Shift для показу тільки витрат +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Будувати трамвайну колію. Ctrl+клац для знесення трамвайної колії. Утримуйте Shift для показу витрат на будівництво +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Будувати дорогу в режимі Автобудування. Ctrl+клац для знесення доріг. Утримуйте Shift для показу тільки витрат +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Будувати трамвайну колію в режимі Автобудування. Ctrl+клац для знесення колій. Утримуйте Shift для показу тільки витрат +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Будувати гараж (для будівництва і обслуговування автомобілів). Утримуйте Shift для показу витрат на будівництво +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Будування трамвайного депо (для будівництва та обслуговування трамваїв). Утримуйте Shift для показу витрат на будівництво +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Будування автобусної зупинки. Ctrl+клац щоб обрати іншу зупинку для приєднання. Утримуйте Shift для показу витрат на будівництво +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Будування пасажирської трамвайної станції. Ctrl+клац щоб обрати іншу станцію для приєднання. Утримуйте Shift для показу витрат на будівництво +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Будувати вантажну станцію. Ctrl+клац щоб обрати іншу станцію для при'єднання. Утримуйте Shift для показу витрат на будівництво +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Побудувати вантажну трамвайну станцію. Ctrl+клац щоб обрати іншу зупинку для приєднання. Утримуйте Shift для показу тільки витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Вкл./відкл. односторонні дороги -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Будувати міст. Утримуйте Shift для показу витрат на придбання -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Побудувати трамвайний міст. Утримуйте Shift для показу витрат на придбання -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Будувати тунель. Утримуйте Shift для показу витрат на придбання -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Побудувати трамвайний тунель. Утримуйте Shift для показу витрат на придбання +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Будувати дорожній міст. Утримуйте Shift для показу тільки витрат на придбання +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Побудувати трамвайний міст. Утримуйте Shift для показу витрат на будівництво +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Будувати дорожній тунель. Утримуйте Shift для показу тільки витрат на придбання +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Будування трамвайного тунелю. Утримуйте Shift для показу витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Будувати/зруйнувати дорогу STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Будувати/демонтувати колію -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Модернізувати дорогу. Утримуйте Shift для показу витрат на модернізацію -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Convert/Перетворення / оновлення типу трамваю. Shift перемикає будівництво / показ кошторису витрат +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Переобладнання / оновлення дороги. Утримуйте Shift для показу очікуваних витрат +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Переобладнання / оновлення типу трамваю. Утримуйте Shift для показу очікуваних витрат STR_ROAD_NAME_ROAD :Дорога STR_ROAD_NAME_TRAM :Трамвай @@ -2944,7 +3015,7 @@ STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Вибе STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Орієнтація зупинки STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Виберіть орієнтацію зупинки STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Орієнтація станції -STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Виберіть орієнтацію вантажної станції +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Оберіть орієнтацію вантажної станції STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Орієнтація пасажирської трамвайної станції STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Виберіть орієнтацію пасажирської трамвайної станції STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Орієнтація вантажної трамвайної станції @@ -2953,14 +3024,14 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Вибе # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Судноплавне будівництво STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Водні шляхи -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Будувати канали. Утримуйте Shift для показу витрат на будівництво -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Будувати шлюз. Утримуйте Shift для показу витрат на будівництво -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Будувати корабельні доки (для будівництва та обслуговування кораблів). Утримуйте Shift для показу витрат на будівництво -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Будувати док. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Розмістити бакен, який можна використовувати як точку маршруту. Утримуйте Shift для показу витрат на розміщення -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Побудувати акведук. Утримуйте Shift для показу витрат на будівництво -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Позначити, де буде вода.{}Робити канал, поки не натиснений Ctrl на рівні моря, - тоді будуть затоплені околиці -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Прокласти річки. Ctrl для вибору діагональних ділянок +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Будування каналів. Утримуйте Shift для показу очікуваних витрат +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Будування шлюзів. Утримуйте Shift для показу очікуваних витрат +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Будування корабельних елінгів (для будівництва та обслуговування кораблів). Утримуйте Shift для показу орієнтовних витрат +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Будування доку. Ctrl+клац для приєднання додаткових доків. Утримуйте Shift для показу очікуваних витрат +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Розмістити бакен, який можна використовувати як точку маршруту. Утримуйте Shift для показу очікуваних витрат +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Будування акведука. Утримуйте Shift для показу очікуваних витрат +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Будувати канал. Ctrl+клац на рівні моря для затоплення морською водою +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Прокласти річки. Ctrl+клац для вибору діагональних ділянок # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Орієнтація елінга @@ -2971,7 +3042,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Порт # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Аеропорти -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Будувати аеропорт. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Будування аеропорту. Ctrl+клац для приєднання додаткових станцій. Утримуйте Shift для показу очікуваних витрат # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Вибір аеропорту @@ -2998,15 +3069,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Ріве # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Ландшафт -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Опустити край ділянки землі. Протягування мишею опускає вибраний край і вирівнює вибрану ділянку до його нової висоти. Утримуйте Ctrl для виділення клітинок по діагоналі, або Shift - для показу очікуваних витрат -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Підняти край ділянки землі. Протягування мишею піднімає вибраний край і вирівнює вибрану ділянку до його нової висоти. Утримуйте Ctrl для виділення клітинок по діагоналі, або Shift - для показу очікуваних витрат -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Вирівняти ділянку землі до висоти першого обраного краю. Утримуйте Ctrl для виділення клітинок по діагоналі, або Shift - для показу очікуваних витрат -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Купити ділянку для використання у майбутньому. Утримуйте Ctrl для виділення діагональної ділянки. Утримуйте Shift для показу вартості ділянки +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Опустити край ділянки землі. Клац+протягування опускає обраний край і вирівнює обрану ділянку до його нової висоти. Ctrl+клац+протягування для виділення діагональної ділянки. Утримуйте Shift для показу очікуваних витрат +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Підняти край ділянки землі. Протягування мишею піднімає вибраний край і вирівнює вибрану ділянку до його нової висоти. Ctrl+клац+протягування для виділення клітинок по діагоналі. Утримуйте Shift для показу очікуваних витрат +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Вирівнювання ділянки землі до висоти першого обраного краю. Ctrl+клац+протягування для виділення діагональної ділянки. Утримуйте Shift для показу очікуваних витрат +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Купити ділянку для використання у майбутньому. Ctrl+клац+протягування для виділення діагональної ділянки. Утримуйте Shift для показу очікуваних витрат # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Вибір об'єкта -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Виберіть об'єкт для побудови. Утримуйте Ctrl для вибору діагональної ділянки. Утримуйте Shift для показу витрат на будівництво -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Вибрати тип об'єкту для будівництва STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Попередній перегляд об'єкта STR_OBJECT_BUILD_SIZE :{BLACK}Розмір: {GOLD}{NUM} x {NUM} клітинок @@ -3017,7 +3086,7 @@ STR_OBJECT_CLASS_TRNS :Ретранс STR_PLANT_TREE_CAPTION :{WHITE}Дерева STR_PLANT_TREE_TOOLTIP :{BLACK}Оберіть тип дерева для посадки. Клітинки, які вже містять дерева, доповнюються новими деревами різного типу незалежно від обраного. STR_TREES_RANDOM_TYPE :{BLACK}Дерева випадкового типу -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Садити дерева випадкового типу. Утримуйте Shift для показу витрат на висаджування +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Саджати дерева випадкового типу. Ctrl+клац+протягування для виділення діагональної ділянки. Утримуйте Shift для показу очікуваних витрат STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Випадкові дерева STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Випадкове насадження дерев по всьому ландшафту STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Нормальна @@ -3030,7 +3099,7 @@ STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Садж # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Створити ландшафт STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Розміщення кам'яних ділянок -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Позначити територію пустелі.{}Натисніть і утримуйте CTRL, щоб скасувати +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Позначити територію пустелі.{}Ctrl+клац для видалення STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Збільшити область ділянки для підняття/опускання STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Зменшити область ділянки для підняття/опускання STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Створити випадкову ділянку @@ -3076,7 +3145,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Сітк STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Випадковий # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Нове підприємство +STR_FUND_INDUSTRY_CAPTION :{WHITE}Створити підприємство STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Виберіть необхідне підприємство STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Створити різні підприємства STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Випадково розташувати підприємства по карті @@ -3092,14 +3161,14 @@ STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Приб STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Ви дійсно бажаєте видалити всі підприємства? # Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ланцюг вантажних перевезень для {STRING} -STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Ланцюг вантажних перевезень для {STRING} +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ланцюг підприємств - {STRING} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Ланцюг вантажів - {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Виробники STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Споживачі STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Будинки STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Натисніть на підприємство аби побачити його постачальників та покупців STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Натисніть на вантаж аби побачити його постачальників та покупців -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Показати ланцюг +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Ланцюг підпримств STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Показати виробників та споживачів STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Приєднати до мінікарти STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Ви також можете вибирати виробництво на мінікарті @@ -3121,8 +3190,9 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Влас STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Власник залізниці: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Місцева влада: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Немає -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Координати: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Рік випуску: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Координати: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Координати клітинки: {LTBLUE}{NUM} ({HEX}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Рік випуску чи оновлення: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Клас станції: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип станції: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Клас аеропорта: {LTBLUE}{STRING} @@ -3239,11 +3309,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Швидкість гри STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Швидкість прорахунку гри: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Кількість ігрових циклів в секунду. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Кількість ігрових циклів за секунду. STR_FRAMERATE_RATE_BLITTER :{BLACK}Виведення на екран: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Кількість кадрів побудованих за секунду +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Кількість кадрів, створених за секунду STR_FRAMERATE_SPEED_FACTOR :{BLACK}Наявна швидкість гри: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK} Як швидко гра біжить в даний час, в порівнянні з очікуваною швидкістю при звичайній швидкості моделювання. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Швидкість перебігу гри в поточний момент, порівняно з очікуваною швидкістю при звичайному перебігу STR_FRAMERATE_CURRENT :{WHITE}Зараз STR_FRAMERATE_AVERAGE :{WHITE}Середнє STR_FRAMERATE_MEMORYUSE :{WHITE}Пам'ять @@ -3326,14 +3396,18 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Введ # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Створення світу STR_MAPGEN_MAPSIZE :{BLACK}Розмір карти: -STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Оберіть розмір карти в клітинках. Кількість доступних клітинок буде трохи меншою +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Оберіть розмір мапи в клітинках. Кількість доступних клітинок буде трохи меншою STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Міста: +STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :BLACK}Оберіть щільність міст або випадкову кількість STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Назви міст: STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Виберіть стиль назв міст STR_MAPGEN_DATE :{BLACK}Дата: +STR_MAPGEN_DATE_TOOLTIP :{BLACK}Обрати початкову дату STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Кількість виробництв: +STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :BLACK}Оберіть щільність виробництв або випадкову кількість STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Найвища гора: +STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Обрати найвищу гору відносно рівня моря, яку гра спробує створити. STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Збільшити на одиницю максимальну висоту найвищої гори на мапі STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Зменшити на одиницю максимальну висоту найвищої гори на мапі STR_MAPGEN_SNOW_COVERAGE :{BLACK}Покриття снігом: @@ -3351,10 +3425,11 @@ STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Ріки STR_MAPGEN_SMOOTHNESS :{BLACK}Гладкість: STR_MAPGEN_VARIETY :{BLACK}Розподіл різноманітності: STR_MAPGEN_GENERATE :{WHITE}Генерувати +STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Створити світ для гри в OpenTTD! STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}Налаштування NewGRF -STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Показати налаштування NewGRF +STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Показує налаштування NewGRF STR_MAPGEN_AI_SETTINGS :{BLACK}Налаштування ШІ -STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Показати усі налаштування +STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Показати налаштування ШІ STR_MAPGEN_GS_SETTINGS :{BLACK}Налаштування скрипту гри STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Показати налаштування ігрового скрипту @@ -3395,9 +3470,10 @@ STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}дові STR_MAPGEN_BORDER_MANUAL :{BLACK}вручну STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Поворот рельєфу -STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Назва рельєфу: -STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}Назва файлу мапи висот +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Назва мапи висот: +STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}Назва образу мапи висот STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Розмір: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}Розмір образу мапи висот. Найкращим буде розмір, однаковий з довжиною мапи в OpenTTD, тобто 256, 512, 1024, тощо. STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Висота обраної гори @@ -3412,6 +3488,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Рівн STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Генерувати рівнину STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Випадково STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Висота рівня моря +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Обрати висоту суходолу над рівнем моря STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Підняти рівень рівної землі на 1 STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Опустити рівень рівної землі на 1 @@ -3426,9 +3503,9 @@ STR_GENERATION_PROGRESS :{WHITE}{NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Створення світу STR_GENERATION_RIVER_GENERATION :{BLACK}Генерація річок -STR_GENERATION_TREE_GENERATION :{BLACK}Насадження дерев -STR_GENERATION_OBJECT_GENERATION :{BLACK}Генерація нерухомості STR_GENERATION_CLEARING_TILES :{BLACK}Розкидати каміння +STR_GENERATION_OBJECT_GENERATION :{BLACK}Генерація нерухомості +STR_GENERATION_TREE_GENERATION :{BLACK}Насадження дерев STR_GENERATION_SETTINGUP_GAME :{BLACK}Налаштування гри STR_GENERATION_PREPARING_TILELOOP :{BLACK}Виконуємо цикл STR_GENERATION_PREPARING_SCRIPT :{BLACK}Виконується скрипт @@ -3498,6 +3575,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Збер STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Зберегти шаблон для поточного обраного імені # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Змінити параметри базового набору графіки STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Змінити параметри NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Закрити STR_NEWGRF_PARAMETERS_RESET :{BLACK}Очистити @@ -3519,7 +3597,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Тип доро STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметр змінної NewGRF 60+x (шістнадцятковий) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Вирівнювання спрайту {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Наступний спрайт STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Йти до наступного нормального спрайту, пропускаючи будь-які псевдо/перемальовані/шрифтові спрайти і загортаючи навколо (wrap) починаючи з останнього спрайту закінчуючи першим STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Йти до спрайту @@ -3636,11 +3713,10 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Попе STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Введіть назву знака # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Міста STR_TOWN_DIRECTORY_NONE :{ORANGE}- немає - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Мегаполіс){BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Назви міст - натисніть на назву, щоб показати місто у центрі екрану. Ctrl+клац мишою відкриває нове вікно з видом на місто +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Назви міст - натисніть на назву, щоб показати місто у центрі екрану. Ctrl+клац мишею відкриває нове вікно з видом на місто STR_TOWN_POPULATION :{BLACK}Населення світу: {COMMA} # Town view window @@ -3648,6 +3724,7 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (місто) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Населення: {ORANGE}{COMMA}{BLACK} Будинки: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} минулого місяця: {ORANGE}{COMMA}{BLACK} макс: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} минулої хвилини: {ORANGE}{COMMA}{BLACK} найбільше: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Вантаж, потрібний для зростання міста: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} потрібно STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} потрібно взимку @@ -3701,7 +3778,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{Y STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Фінансувати будівництво нових офісів у місті.{}Тимчасово прискорить зростання міста.{}{POP_COLOUR}Вартість: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Придбати ексклюзивні транспортні права в місті на 12 місяців.{}Міська влада заборонить пасажирам і вантажам наповнювати станції конкурентів. Успішний підкуп конкурентом скасує цю угоду.{}{POP_COLOUR}Вартість: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Придбати ексклюзивні транспортні права в місті на 12 хвилин.{}Міська влада заборонить пасажирам і вантажам наповнювати станції конкурентів. Успішний підкуп конкурентом скасує цю угоду.{}{POP_COLOUR}Вартість: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Підкупити місцеву владу для збільшення вашого рейтингу, при викритті загрожує суворим покаранням.{}{POP_COLOUR}Вартість: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Підкуп місцевої влади для збільшення вашого рейтингу і скасування ексклюзивних транспортних прав конкурентів. При викритті загрожує суворим покаранням.{}{POP_COLOUR}Вартість: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Цілі {COMPANY} @@ -3715,7 +3792,7 @@ STR_GOALS_TEXT :{ORANGE}{STRING STR_GOALS_NONE :{ORANGE}- нема - STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Клац мишею на цілі (меті) відобразить по центру виробництва/місто/клітинку у головному вікні. Ctrl+клац мишею відкриє міні-вікно +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Клац мишею на цілі відобразить по центру головного вікна виробництво/місто/клітинку. Ctrl+клац мишею відкриє нове вікно з видом на підприємство/місто/клітинку # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Питання @@ -3751,7 +3828,7 @@ STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}Пер STR_SUBSIDIES_NONE :{ORANGE}- немає - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Призначені субсидії: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}Перевезення {STRING.r} з {STRING} до {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Натисніть на субсидії, щоб показати підприємство/місто у центрі екрану. Ctrl+клац мишою відкриває нове вікно з видом на підприємство/місто +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Натисніть на субсидії, щоб показати підприємство/місто у центрі екрану. Ctrl+клац мишею відкриває нове вікно з видом на підприємство/місто STR_SUBSIDIES_OFFERED_EXPIRY_DATE :до {DATE_SHORT} STR_SUBSIDIES_OFFERED_EXPIRY_TIME :впродовж {UNITS_MONTHS_OR_MINUTES} STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :до {DATE_SHORT} @@ -3763,7 +3840,7 @@ STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Світ STR_STORY_BOOK_SPECTATOR :Всесвітня історія STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Стор. {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Перейти до сторінки, вибраної в цьому списку. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Перейти до сторінки, вибраної в цьому випадному списку. STR_STORY_BOOK_PREV_PAGE :{BLACK}Попередня сторінка STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}На попередню сторінку STR_STORY_BOOK_NEXT_PAGE :{BLACK}Далі @@ -3771,8 +3848,8 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Наст STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Невірне посилання на завдання # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Назви станцій - натисніть на назву, щоб показати станцію в центрі екрану. Ctrl+клац мишою відкриває нове вікно з видом на станцію -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Утримуйте Ctrl для вибору декількох пунктів +STR_STATION_LIST_TOOLTIP :{BLACK}Назви станцій - натисніть на назву, щоб показати станцію в центрі екрану. Ctrl+клац мишею відкриває нове вікно з видом на станцію +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl+клац для вибору кількох пунктів STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} станці{P я ї й} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -3782,6 +3859,7 @@ STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Всі типи STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Кілька типів вантажів STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Жодного типу вантажів STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :тільки без рейтингу вантажів +STR_STATION_LIST_CARGO_FILTER_SELECT_ALL :Обрати усі без рейтингу STR_STATION_LIST_CARGO_FILTER_NO_RATING :жодного рейтингу вантажів STR_STATION_LIST_CARGO_FILTER_EXPAND :Показати ще... @@ -3799,6 +3877,8 @@ STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинг STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Показати рейтинг станції +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}Постачання впродовж місяця і місцевий рейтинг: +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}Постачання впродовж хвилини і місцевий рейтинг: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Групувати по @@ -3834,7 +3914,7 @@ STR_CARGO_RATING_VERY_GOOD :дуже доб STR_CARGO_RATING_EXCELLENT :відмінно STR_CARGO_RATING_OUTSTANDING :найкраще -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Показати станцію в центрі екрану. Ctrl+клац мишою відкриє нове вікно з видом на станцію +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Показувати станцію в центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на станцію STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Перейменувати станцію STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Показати всі поїзди, які заходять на цю станцію @@ -3849,9 +3929,9 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Забо # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Показати точку маршруту в центрі екрану. Ctrl+клац мишею відкриє нове вікно у місці розташування точки маршруту +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Показати точку маршруту в центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на точку маршруту STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Перейменувати точку маршруту -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Показати буй в центрі екрану. Ctrl+клац мишею відкриє нове вікно у місці розташування буя +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Показати буй в центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на розташування буя STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Перейменувати буй STR_EDIT_WAYPOINT_NAME :{WHITE}Перейменуйте точку маршруту @@ -3927,11 +4007,13 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Побу STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Показати Офіс STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Показати офіс компанії STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Перенести Офіс -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Перенесення Офісу в інше місце. Коштує 1% від вартості компанії. Утримуйте Shift для показу очікуваних витрат на перенесення +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Перенесення офісу в інше місце. Коштує 1% від вартості компанії. Утримуйте Shift для показу очікуваних витрат на перенесення STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Деталі STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Переглянути детальну інформацію про інфраструктуру STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Дати грошей STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Дати грошей цій компанії +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Агресивне захоплення +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Агресивно захопити компанію STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Нове обличчя STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Вибрати нове обличчя керівника @@ -3947,6 +4029,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Ім'я кер STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Введіть суму грошей, яку бажаєте передати STR_BUY_COMPANY_MESSAGE :{WHITE}Ми шукаємо нового власника нашої компанії.{}{}Чи бажаєте Ви купити {COMPANY} за {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Для агресивного захоплення компанії {COMPANY} необхідно прдбати усі активи, виплатити усі позики і сплатити дворічний прибуток.{}{}Приблизна вартість {CURRENCY_LONG}.{}{}Бажаєте продовжити агресивне захоплення? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Інфраструктура {COMPANY} @@ -3963,7 +4046,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/період # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Підприємства STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- немає - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% перевезено){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -3971,7 +4053,7 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} і {NUM} ще... -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Назви підприємств - клацніть мишею на назву, щоб показати підприємство у центрі екрану. Ctrl+клац мишею відкриває нове вікно з видом на підприємство +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Назви підприємств - клацніть мишею на назву, щоб показати підприємство у центрі екрану. Ctrl+клац мишею відкриє додаткове вікно з підприємством у центрі STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Приймається вантаж: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Виробництво: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Усі вантажі @@ -3980,6 +4062,7 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :Нема # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Вироблено за місяць: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Вироблено за минулу хвилину: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% перевезено) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Показати підприємство у центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на підприємство STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Обсяг виробництва: {YELLOW}{COMMA}% @@ -4018,15 +4101,16 @@ STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Доступн STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Редагувати список STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Дати завдання всьому транспорту зі списку STR_VEHICLE_LIST_REPLACE_VEHICLES :Оновлення -STR_VEHICLE_LIST_SEND_FOR_SERVICING :Відправити на техогляд +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Направити на техогляд +STR_VEHICLE_LIST_CREATE_GROUP :Створити групу STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Прибуток цього року: {CURRENCY_LONG} (торік: {CURRENCY_LONG}) STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Прибуток цього періо:ду: {CURRENCY_LONG} (минулого періоду: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Відправити до депо -STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Відправити в гараж -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Відправити до депо +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Направити до депо +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Направити в гараж +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Направити до депо STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Направити в ангар STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Натисніть для зупинки всіх авто, що у списку @@ -4055,7 +4139,7 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}Клац STR_GROUP_DELETE_TOOLTIP :{BLACK}Стерти вибрану групу STR_GROUP_RENAME_TOOLTIP :{BLACK}Перейменувати вибрану групу STR_GROUP_LIVERY_TOOLTIP :{BLACK}Змінити колір вибраної групи -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Клацніть мишею, щоб захистити групу від глобальної автозаміни. Ctrl+клац також діє на підгрупи. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Клацніть мишею, щоб захистити групу від глобальної автозаміни. Ctrl+клац також діє на підгрупи STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Видалити групу STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Ви впевнені, що хочете видалити цю групу та всі вкладені групи? @@ -4066,7 +4150,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Позбути STR_GROUP_RENAME_CAPTION :{BLACK}Перейменувати групу STR_GROUP_PROFIT_THIS_YEAR :Прибуток цього року: +STR_GROUP_PROFIT_THIS_PERIOD :Прибуток цього періоду: STR_GROUP_PROFIT_LAST_YEAR :Прибуток минулого року: +STR_GROUP_PROFIT_LAST_PERIOD :Прибуток минулого періоду: STR_GROUP_OCCUPANCY :Використання: STR_GROUP_OCCUPANCY_VALUE :{NUM}% @@ -4093,8 +4179,8 @@ STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Швид STR_PURCHASE_INFO_SPEED :{BLACK}Швидкість: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Швидкість в океані: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Швидкість в каналі/річці: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK} Вартість експлуатації: {GOLD}{CURRENCY_LONG}/рік -STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK} Вартість експлуатації: {GOLD}{CURRENCY_LONG}/період +STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}Вартість експлуатації: {GOLD}{CURRENCY_LONG}/рік +STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Вартість експлуатації: {GOLD}{CURRENCY_LONG}/період STR_PURCHASE_INFO_CAPACITY :{BLACK}Місткість: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(змінюється) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Рік випуску: {GOLD}{NUM}{BLACK} Вік: {GOLD}{COMMA} р{P ік оки оків} @@ -4111,7 +4197,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Всі типи STR_PURCHASE_INFO_NONE :Нема STR_PURCHASE_INFO_ENGINES_ONLY :Тільки локомотиви STR_PURCHASE_INFO_ALL_BUT :Всі, крім {CARGO_LIST} -STR_PURCHASE_INFO_MAX_TE :{BLACK}Максимальна тягова сила: {GOLD}{FORCE} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Максимальне тягове зусилля: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Дальність: {GOLD}{COMMA} клітинок STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Тип літака: {GOLD}{STRING} @@ -4121,10 +4207,10 @@ STR_CARGO_TYPE_FILTER_FREIGHT :Вантаж STR_CARGO_TYPE_FILTER_NONE :нема ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список поїздів. Клацніть на поїзд для інформації. Ctrl+клац мишею вимикає показ типу транспорту -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список автомобілів. Клацніть на авто для отримання інформації. Ctrl+клац мишею вимикає показ типу транспорту -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Список кораблів. Клацніть на корабель для отримання інформації. Ctrl+клац мишею вимикає показ типу транспорту -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Список літальних апаратів. Клацніть на літальному апараті для отримання інформації. Ctrl+клац мишею вимикає показ типу транспорту +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список потягів. Клацніть на потяг для інформації. Ctrl+клац мишею показує або приховує цей тип транспорту +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список дорожнього транспорту. Клацніть на трансопорт для отримання інформації. Ctrl+клац мишею показує або приховує цей тип транспорту +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Список кораблів. Клацніть на корабель для отримання інформації. Ctrl+клац сховає показ цього типу кораблів +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Список літальних апаратів. Клацніть на літальному апараті для отримання інформації. Ctrl+клац мишею сховає показ цього типу транспорту ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Купити @@ -4136,19 +4222,19 @@ STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Купи STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Купити і переобладнати авто STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Купити і переобладнати авто STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Купіть і переобладнайте корабель -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Купуйте та переобладнайте літаки +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Купуйте та переобладнайте повітряні апарати ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Купити вибраний поїзд. Утримуйте Shift для показу витрат на придбання -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Купити вибране авто. Утримуйте Shift для показу витрат на придбання -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Купити вибраний корабель. Утримуйте Shift для показу витрат на придбання -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Купити вибраний літак. Утримуйте Shift для показу витрат на придбання +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Купити обраний потяг. Утримуйте Shift для показу орієнтовних витрат +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Придбати обраний дорожній транспорт. Утримуйте Shift для показу орієнтовних витрат +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Купити обраний корабель. Утримуйте Shift для показу очікуваних витрат +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Придбати обраний літальний апарат. Утримуйте Shift для показу орієнтовних витрат ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Придбайте та переобладнайте виділений поїзд. Shift+клац показує орієнтовну вартість без покупки -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Придбайте та переобладнайте авто. Shift+клац показує орієнтовну вартість без покупки -STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Придбайте та переобладнайте виділене судно. Shift+клац показує орієнтовну вартість без покупки -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Придбайте та переобладнайте виділені літаки. Shift+клац показує орієнтовну вартість без покупки +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Придбайте та переобладнайте виділений потяг. Утримуйте Shift для показу орієнтовних витрат +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Придбати та переобладнати дорожній транспорт. Утримуйте Shift для показу орієнтовних витрат +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Придбати та переобладнати виділене судно. Утримуйте Shift, щоб побачити тільки орієнтовну вартість +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Придбайте та переобладнайте виділений повітряний апарат. Утримуйте Shift, щоб побачити тільки орієнтовну вартість ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Назва @@ -4198,7 +4284,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} т STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Поїзди - перетягніть транспорт (вагон) лівою кнопкою миші, щоб додати/вилучити з поїзда. Натисніть праву кнопку миші для інформації. Утримуйте Ctrl для застосування обох функцій до всього ланцюга +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Потяги - перетягніть транспорт (вагон) лівою кнопкою миші, щоб додати/вилучити з потяга. Натисніть праву кнопку миші для інформації. Ctrl+клац для застосування обох функцій до всього ланцюга STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Авто - натисніть на авто для інформації STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Кораблі - натисніть для інформації STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Літаки - натисніть на літак для інформації @@ -4240,16 +4326,16 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Клон STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Клонувати ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Купити копію поїзда, включно з усіма автомобілями. Натисніть на цю кнопку, а потім на поїзд в депо або ззовні. Ctrl+клац мишею дозволить поділитися спільними завданнями. Shift+клац мишею покаже орієнтовні витрати на придбання -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Купити копію авто. Натисніть на цю кнопку і потім на авто в депо або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Купити копію корабля. Натисніть на цю кнопку, і потім на корабель в депо або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Купити копію літака. Натисніть на цю кнопку і потім на літак в ангарі або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Купити копію потяга з усіма вагонами. Натисніть на цю кнопку, а потім на потяг в депо або ззовні. Ctrl+клац для копіювання спільного завдання. Утримуйте Shift для показу орієнтовних витрат +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Купити копію дорожнього транспорту. Натисніть на цю кнопку і потім на транспорт в гаражі або ззовні. Ctrl+клац для копіювання спільного завдання. Утримуйте Shift для показу орієнтовних витрат +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Купити копію корабля. Натисніть на цю кнопку, і потім на корабель в елінгу або ззовні. Ctrl+клац для копіювання спільного завдання. Утримуйте Shift для показу витрат на придбання +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Купити копію літального апарата. Натисніть на цю кнопку і потім на авіатранспорт в ангарі або ззовні. Ctrl+клац для копіювання спільного завдання. Утримуйте Shift для показу орієнтовних витрат ###length VEHICLE_TYPES STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Показати залізничне депо у центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на залізничне депо STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Показати гараж у центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на гараж STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Показати док у центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на док -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показати ангар в центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на ангар +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показати ангар у центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на ангар ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Отримати список усіх поїздів, що заходять до цього депо @@ -4292,7 +4378,7 @@ STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING} STR_ENGINE_PREVIEW_COST_WEIGHT :Ціна: {CURRENCY_LONG} Маса: {WEIGHT_SHORT} STR_ENGINE_PREVIEW_COST_MAX_SPEED :Ціна: {CURRENCY_LONG} Швидкість: {VELOCITY} STR_ENGINE_PREVIEW_SPEED_POWER :Швидкість: {VELOCITY} Потужність: {POWER} -STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Швидкість: {VELOCITY} Потужність: {POWER} Макс. тяга: {FORCE} +STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Швидкість: {VELOCITY} Потужність: {POWER} Максимальне тягове зусилля: {FORCE} STR_ENGINE_PREVIEW_TYPE :Тип літального апарата: {STRING} STR_ENGINE_PREVIEW_TYPE_RANGE :Тип літального апарата: {STRING} Дальність: {COMMA} клітин{P ка ки ок } STR_ENGINE_PREVIEW_RUNCOST_YEAR :Вартість експлуатації: {CURRENCY_LONG}/рік @@ -4320,8 +4406,8 @@ STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Вибе STR_REPLACE_VEHICLES_START :{BLACK}Почати оновлення STR_REPLACE_VEHICLES_NOW :Замінити усі ТС зараз STR_REPLACE_VEHICLES_WHEN_OLD :Замінювати лише застарілі ТС -STR_REPLACE_HELP_START_BUTTON :{BLACK}Натисніть для запуску оновлення потягів, що вибрані праворуч, на потяги, що вибрані праворуч -STR_REPLACE_NOT_REPLACING :{BLACK}Не можна оновити +STR_REPLACE_HELP_START_BUTTON :{BLACK}Натисніть для запуску оновлення потягів, що вибрані ліворуч, на потяги, що вибрані праворуч +STR_REPLACE_NOT_REPLACING :{BLACK}Поки що не оновлюється STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Не вибрано транспортного засобу STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} коли застаріє STR_REPLACE_VEHICLES_STOP :{BLACK}Зупинити оновлення @@ -4330,11 +4416,11 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Нати STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Переключення між вікнами заміни потягів та вагонів. STR_REPLACE_ENGINES :Локомотиви STR_REPLACE_WAGONS :Вагони -STR_REPLACE_ALL_RAILTYPE :Весь з/д транспорт +STR_REPLACE_ALL_RAILTYPE :Весь залізничний транспорт STR_REPLACE_ALL_ROADTYPE :Всі автомобілі ###length 2 -STR_REPLACE_HELP_RAILTYPE :{BLACK}Виберіть тип колії, для якого ви збираєтесь оновити потяги +STR_REPLACE_HELP_RAILTYPE :{BLACK}Виберіть тип колії, для якої ви збираєтесь оновити потяги STR_REPLACE_HELP_ROADTYPE :{BLACK}Виберіть тип дороги, на який хочете замінити двигуни ###next-name-looks-similar @@ -4355,27 +4441,27 @@ STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Ctrl STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Показати місце розташування потяга в центрі екрану. Подвійний клац для показу потяга в центрі екрану.Ctrl+клац мишею відкриє нове вікно у місці розташування потяга -STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Показати транспорт у вікні. Подвійний клац для показу транспорту в центрі екрану. Ctrl+клац мишою для руху за транспортом. -STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Показати місце розташування корабля в центрі екрану. Подвійний клац для показу корабля в центрі екрану.Ctrl+клац мишою відкриє нове вікно у місці розташування корабля -STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Показати авіатранспорт у вікні. Подвійний клац для показу авіатранспорту в центрі екрану. Ctrl+клац мишою для руху за авіатранспортом. +STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Показує потяг у центрі екрану. Подвійний клац для руху за потягом у головному вікні. Ctrl+клац мишею відкриє додаткове вікно з потягом у центрі +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Показати транспорт у головному вікні. Подвійний клац для руху за транспортом у головному вікні. Ctrl+клац мишею відкриє додаткове вікно з транспортом у центрі +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Показує корабель у головному вікні. Подвійний клац для руху за кораблем у головному вікні. Ctrl+клац мишею відкриє нове вікно з кораблем у центрі +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Показати авіатранспорт у центрі головного вікна. Подвійний клац для руху за авіатранспортом у головному вікні. Ctrl+клац мишою для показу авіатранспорту в додатковому вікні ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити поїзд у депо -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити авто в депо -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити корабель в депо -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити літак в ангар +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити потяг у депо. Ctrl+клац тільки для техогляду +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити авто в депо. Ctrl+клац тільки для техогляду +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити корабель в елінг. Ctrl+клац тільки для техогляду +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити літак в ангар. Ctrl+клац тільки для техогляду ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Купити копію поїзда з усіма вагонами. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Купити копію авто. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Купити копію корабля. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Купити копію літака. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Купити копію потяга з усіма вагонами. Ctrl+клац для копіювання спільного завдання. Утримуйте Shift для показу витрат на придбання +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Купити копію авто. Ctrl+клац для копіювання спільного завдання. Утримуйте Shift для показу орієнтовних витрат +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Купити копію корабля. Ctrl+клац для копіювання спільного завдання. Утримуйте Shift для показу витрат на придбання +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Купити копію літака. Ctrl+клац для копіювання спільного завдання. Утримуйте Shift для показу орієнтовних витрат STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Примусити проігнорувати сигнал! STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Розвернути поїзд STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Розвернути авто -STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Показати пункт призначення в центрі екрану. Ctrl+клац мишою відкриє нове вікно з видом на пункт призначення +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Показати пункт призначення в центрі екрану. Ctrl+клац мишею відкриє нове вікно з видом на пункт призначення ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Переобладнати поїзд для перевезення іншого виду вантажу @@ -4385,9 +4471,9 @@ STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Пере ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Показати маршрут поїзда. Ctrl+клац показує розклад поїзда -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Показати накази авто. Ctrl+клац показує розклад авто -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Показати накази корабля. Ctrl+клац показує розклад корабля -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Показати накази літака. Ctrl+клац показує розклад літака +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Показати завдання транспортного засобу. Ctrl+клац показує розклад ТЗ +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Показати завдання корабля. Ctrl+клац показує розклад корабля +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Показати завдання літака. Ctrl+клац показує розклад літака ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Показати детальну інформацію @@ -4404,24 +4490,26 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Пото # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Вантаження STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Відходить +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Чекає на розподілення за інтервалом STR_VEHICLE_STATUS_CRASHED :{RED}Аварія! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Зламався STR_VEHICLE_STATUS_STOPPED :{RED}Зупинено -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Зупиняється, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Зупиняється STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Не достатньо потужності STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Очікування вільного шляху STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Занадто далеко до наступного місця призначення -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Прямує до {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Без завдань, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Прямує до {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Прямує до {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд у {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Прямує до {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Без завдань +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Прямує до {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Прямує до {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Техогляд у {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Обслуговується та чекає на розподілення в {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Неможливо досягти {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Неможливо досягти {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Неможливо досягти {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Неможливо досягти {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Неможливо досягти {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Неможливо досягти {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Неможливо досягти {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Неможливо досягти {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4443,17 +4531,19 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Назв STR_VEHICLE_INFO_AGE :{COMMA} р{P ік оки оків} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} р{P ік оки оків} ({COMMA}) -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Вартість експлуатації: {LTBLUE}{CURRENCY_LONG}/рік -STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Вартість експлуатації: {LTBLUE}{CURRENCY_LONG}/період +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK}Вартість експлуатації: {LTBLUE}{CURRENCY_LONG}/рік +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Вік: {LTBLUE}{STRING}{BLACK}Вартість експлуатації: {LTBLUE}{CURRENCY_LONG}/період STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Тип: {LTBLUE}{STRING} STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Тип: {LTBLUE}{STRING} {BLACK}Дальність: {LTBLUE}{COMMA} клітин{P ка ки ок } STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Макс. тяга: {LTBLUE}{FORCE} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Максимальна швидкість: {LTBLUE}{VELOCITY} {BLACK}Максимальне тягове зусилля: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Дохід цього року: {LTBLUE}{CURRENCY_LONG} (торік: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Дохід цього року: {LTBLUE}{CURRENCY_LONG} (минулого року: {CURRENCY_LONG}) {BLACK}Найгірше: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Прибуток цього періоду: {LTBLUE}{CURRENCY_LONG} (минулого періоду: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Прибуток цього періоду: {LTBLUE}{CURRENCY_LONG} (минулого періоду: {CURRENCY_LONG}) {BLACK}Питома потужність: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Надійність: {LTBLUE}{COMMA}% {BLACK}Аварії після останнього техогляду: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Побудований: {LTBLUE}{NUM}{BLACK} Вартість: {LTBLUE}{CURRENCY_LONG} @@ -4465,14 +4555,21 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Міст STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Плата за трансфер: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}{NBSP}днів{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}{NBSP}хвилин{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}{NBSP}хвилин{P а и ""}{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Останній техогляд: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Від останнього техогляду минуло хвилин: {LTBLUE}{NUM} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Збільшити період обслуговування на 10 днів. Ctrl+клац збільшує період обслуговування на 5 днів +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Збільшити період обслуговування на 5 хвилин. Ctrl+клац збільшує період обслуговування на 1 хвилину +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Збільшити період обслуговування на 10 відсотків. Ctrl+клац збільшує період обслуговування на 5 відсотків +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Зменшити період обслуговування на 10 днів. Ctrl+клац зменшує період обслуговування на 5 днів +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Зменшити період обслуговування на 5 хвилин. Ctrl+клац зменшує період обслуговування на 1 хвилину +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Зменшити період обслуговування на 10 відсотків. Ctrl+клац зменшує період обслуговування на 5 відсотків STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Відлік інтервалу між техоглядами STR_VEHICLE_DETAILS_DEFAULT :Стандартно STR_VEHICLE_DETAILS_DAYS :Днів +STR_VEHICLE_DETAILS_MINUTES :Хвилин STR_VEHICLE_DETAILS_PERCENT :Проценти ###length VEHICLE_TYPES @@ -4511,7 +4608,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Нова STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}{}{BLACK}Прибуток від переобладнання: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Вартість переобладнання: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Прибуток від переобладнання: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Вибрати транспорт для переобладнання. Перетягування мишою дозволяє виділити декілька одиниць транспорту. Клац мишою на порожньому місці виділить усю одиницю транспорту. Ctrl+клац мишою виділить транспорт та ланцюжок перевезень за ним +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Обрати транспортні засоби для переобладнання. Клац+протягування виділить кілька одиниць транспорту. Клац мишею на порожньому місці виділить окрему одиницю транспорту. Ctrl+клац мишею виділить транспорт та ланцюжок за ним ###length VEHICLE_TYPES STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Виберіть вид вантажу для перевезення @@ -4532,16 +4629,16 @@ STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Пере STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Переобладнати літак для перевезення вибраного виду вантажу # Order view -STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Накази) +STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Завдання) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Розклад STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Переключитись на розклад -STR_ORDERS_LIST_TOOLTIP :{BLACK}Маршрутний лист - клацніть на завданні для його вибору. Ctrl+клац мишою показує станцію призначення +STR_ORDERS_LIST_TOOLTIP :{BLACK}Маршрутний лист - клацніть на завданні для його вибору. Ctrl+клац переміщує головний екран на пункт призначення STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} -STR_ORDERS_END_OF_ORDERS :- - Кінець наказів - - -STR_ORDERS_END_OF_SHARED_ORDERS :- - Кінець спільних наказів - - +STR_ORDERS_END_OF_ORDERS :- - Кінець завдань - - +STR_ORDERS_END_OF_SHARED_ORDERS :- - Кінець спільних завдань - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Без зупинки @@ -4575,14 +4672,17 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Доступн STR_ORDER_DROP_GO_ALWAYS_DEPOT :Завжди прямувати STR_ORDER_DROP_SERVICE_DEPOT :Прямувати при потребі в техогляді STR_ORDER_DROP_HALT_DEPOT :Прямувати і зупинитись +STR_ORDER_DROP_UNBUNCH :Розподілити по інтервалу # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Виберіть дію до виконання в цьому депо STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Виберіть дію до виконання в цьому гаражі +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Виберіть дію до виконання в цьому депо +STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Виберіть дію до виконання в цьому ангарі ###next-name-looks-similar -STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Дані транспорту для базування наказу +STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Дані транспорту для базування завдання # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 @@ -4610,20 +4710,20 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Знач STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Введіть значення для порівняння STR_ORDERS_SKIP_BUTTON :{BLACK}Пропуск -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Пропустити поточний наказ, і виконувати наступний. Ctrl+клац мишою переходить до вибраного наказу +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Пропустити поточне завдання, і виконати наступне. Ctrl+клац для переходу до обраного завдання STR_ORDERS_DELETE_BUTTON :{BLACK}Видалити STR_ORDERS_DELETE_TOOLTIP :{BLACK}Видалити виділене завдання -STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Видалити всі накази -STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Скасувати спільні накази -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Перестати використовути спільні накази. Ctrl+клац мишою видаляє всі накази для цього транспорту +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Видалити всі завдання +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Скасувати спільні завдання +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Припинити використання спільних завдань. Ctrl+клац видаляє всі завдання для цього транспорту STR_ORDERS_GO_TO_BUTTON :{BLACK}Прямувати STR_ORDER_GO_TO_NEAREST_DEPOT :Прямувати до найближчого депо STR_ORDER_GO_TO_NEAREST_HANGAR :Прямувати в найближчий ангар -STR_ORDER_CONDITIONAL :Зміна наказу з умовою -STR_ORDER_SHARE :Спільні накази -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Вставити новий наказ перед вибраним, або додати в кінець списку. Утримуйте Ctrl аби створити наказ як "повне завантаження будь-якого вантажу", для точок маршруту - "без зупинок", і для депо - "обслуговування". Пункт "Спільні накази" або утримування Ctrl дозволяє поділитися спільними наказами з виділеним транспортом. Клац мишою на транспорті копіює з нього накази +STR_ORDER_CONDITIONAL :Змінити завдання, за умови +STR_ORDER_SHARE :Спільні завдання +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Вставити нове завдання перед обраним або додати в кінець списку. Ctrl+клац на станції для завдання "повне завантаження будь-якого вантажу". Ctrl+клац на точці маршруту аби змінити налаштування "без зупинок" на протилежне. Ctrl+клац на гаражі для "автоматичного розподілення". Клац мишею на авто копіює його завдання. Ctrl+клац на авто створює спільні завдання. Завдання з гаражем вимикає автоматичний техогляд транспортного засобу STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Показати транспорт з таким самим маршрутом @@ -4649,6 +4749,7 @@ STR_ORDER_REFIT_ORDER :(Переобл STR_ORDER_REFIT_STOP_ORDER :(Переобладнати на {STRING} і зупинити) STR_ORDER_STOP_ORDER :(зупинити) +STR_ORDER_WAIT_TO_UNBUNCH :(чекати на розподілення за інтервалом) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Неможливо використати станцію){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4693,21 +4794,21 @@ STR_ORDER_STOP_LOCATION_FAR_END :[кінець] STR_ORDER_OUT_OF_RANGE :{RED} (Наступний пункт призначення поза межею досяжності) -STR_ORDER_CONDITIONAL_UNCONDITIONAL :Перейти до наказу {COMMA} -STR_ORDER_CONDITIONAL_NUM :Перейти до наказу {COMMA}, якщо {STRING} {STRING} {COMMA} -STR_ORDER_CONDITIONAL_TRUE_FALSE :Перейти до наказу {COMMA}, якщо {STRING} {STRING} +STR_ORDER_CONDITIONAL_UNCONDITIONAL :Перейти до завдання {COMMA} +STR_ORDER_CONDITIONAL_NUM :Перейти до завдання {COMMA}, якщо {STRING} {STRING} {COMMA} +STR_ORDER_CONDITIONAL_TRUE_FALSE :Перейти до завдання {COMMA}, якщо {STRING} {STRING} -STR_INVALID_ORDER :{RED} (Невірний наказ) +STR_INVALID_ORDER :{RED} (Неправильне завдання) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (розклад) STR_TIMETABLE_ORDER_VIEW :{BLACK}Завдання STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Переключитись до вікна завдань -STR_TIMETABLE_TOOLTIP :{BLACK}Розклад - клацніть мишою на наказ, щоб виділити його +STR_TIMETABLE_TOOLTIP :{BLACK}Розклад - клацніть мишею на завдання, щоб виділити його STR_TIMETABLE_NO_TRAVEL :Не прямувати -STR_TIMETABLE_NOT_TIMETABLEABLE :В дорозі (час руху враховано в наступному не автоматичному наказі) +STR_TIMETABLE_NOT_TIMETABLEABLE :В дорозі (час руху враховано в наступному не автоматичному завданні) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :В дорозі (час не вказано) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Прямувати (без розкладу) зі швидкістю, що не перевищує {2:VELOCITY} (час не вказано) STR_TIMETABLE_TRAVEL_FOR :В дорозі {STRING} @@ -4731,22 +4832,25 @@ STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Цей STR_TIMETABLE_STATUS_START_IN_SECONDS.r :{BLACK}Цей розклад почнеться після {COMMA} секунди STR_TIMETABLE_STATUS_START_IN_SECONDS.d :{BLACK}Цей розклад почнеться після {COMMA} секунд +STR_TIMETABLE_START :{BLACK}Початок розкладу +STR_TIMETABLE_START_TOOLTIP :{BLACK}Обрати початок розкладу. Ctrl+клац для рівного розподілу початку руху транспорту зі спільними завданнями. Якщо завдання включає в себе розклад, транспорт розподілиться по маршруту з його урахуванням +STR_TIMETABLE_START_SECONDS_QUERY :Секунд до початку розкладу STR_TIMETABLE_CHANGE_TIME :{BLACK}Змінити час -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Змінити час, впродовж якого має виконуватись наказ. Ctrl+клац змінить час в усіх завданнях +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Змінити час, впродовж якого має виконуватись завдання. Ctrl+клац змінить час в усіх завданнях STR_TIMETABLE_CLEAR_TIME :{BLACK}Скасувати час -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Скасувати час виконання виділеного наказу. Ctrl+клац видалить час в усіх завданнях +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Скасувати час виконання виділеного завдання. Ctrl+клац скасує обмеження часу в усіх завданнях STR_TIMETABLE_CHANGE_SPEED :{BLACK}Змінити обмеж. швидкості STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Змінити обмеження швидкості для виділеного пункту. Ctrl+клац змінить швидкість в усіх завданнях STR_TIMETABLE_CLEAR_SPEED :{BLACK}Скасувати обмеж. швидкості -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Скасувати обмеження швидкості для виділеного пункту. Ctrl+клац видалить швидкість в усіх завданнях +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Скасувати обмеження швидкості для виділеного завдання. Ctrl+клац скасує обмеження швидкості в усіх завданнях STR_TIMETABLE_RESET_LATENESS :{BLACK}Скасувати відхилення -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Скасувати лічильник відхилення від графіка, щоб транспорт встигнув. Ctrl+клац щоб скасувати лічильник для всіх транспортів. При цьому останній транспорт стане йти за графіком, а інщі опереджати графік. +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Скасувати лічильник відхилення від графіка, щоб транспорт встигав. Ctrl+клац, щоб скасувати лічильник для всієї групи транспорту. При цьому останній транспорт йтиме за графіком, а інші випереджатимуть графік. STR_TIMETABLE_AUTOFILL :{BLACK}Авторозрахунок STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Автоматично розрахувати розклад впродовж наступної поїздки. Ctrl+клац, щоб спробувати зберегти час очікування @@ -4755,6 +4859,9 @@ STR_TIMETABLE_EXPECTED :{BLACK}Очік STR_TIMETABLE_SCHEDULED :{BLACK}Призначено STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Перемкнути очікуване на заплановане +STR_TIMETABLE_ARRIVAL_DATE :В: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :В: {COLOUR}{DATE_TINY} +STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :В: {COLOUR}{COMMA} сек STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :П: {COLOUR}{COMMA} сек @@ -4783,9 +4890,9 @@ STR_AI_DEBUG_MATCH_CASE :{BLACK}Регі STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Перемкнути перевірку регістру при порівнянні рядків журналу АІ з сигнальним рядком STR_AI_DEBUG_CONTINUE :{BLACK}Продовжити STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Зняти з паузи і продовжити ШІ -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Відобразити результати зневадження цього ШІ +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Відобразити результати зневадження цього ШІ. Ctrl+клац мишею відкриє нове вікно з результатами STR_AI_GAME_SCRIPT :{BLACK}Ігровий скрипт -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Перевірити журнал ігрового скрипту +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Перевірити журнал ігрового скрипту. Ctrl+клац відкриє журнал у новому вікні STR_ERROR_AI_NO_AI_FOUND :Не знайдено підходящих модулів ШІ.{}Це модуль-заглушка, він нічого не робить.{}Ви можете завантажити різноманітні модулі ШІ через 'Додатковий контент' STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Один із запущених скриптів перестав працювати. Будь ласка, повідомте про це автора скрипту, разом зі знімком вікна зневадження ШІ / ігрового скрипту @@ -4795,7 +4902,7 @@ STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Вік STR_AI_CONFIG_CAPTION_AI :{WHITE}Налаштування ШІ STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}Налаштування ігрового скрипту STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Ігровий скрипт, який буде завантажено в наступній грі -STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}АІ, які будуть завантажені в наступній грі +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}ШІ, які будуть завантажені в наступній грі STR_AI_CONFIG_HUMAN_PLAYER :Гравець-людина STR_AI_CONFIG_RANDOM_AI :Випадковий ШІ STR_AI_CONFIG_NONE :(нема) @@ -4852,16 +4959,23 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN # Textfile window STR_TEXTFILE_JUMPLIST :{WHITE}Зміст +STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Швидко перейти до фрагменту в переглядуваному файлі з цього списку STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} +STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Крок назад в історії навігації +STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Крок вперед в історії навігації STR_TEXTFILE_WRAP_TEXT :{WHITE}Розмістити текст STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Розмістити текст у вікні без необхідності прокрутки STR_TEXTFILE_VIEW_README :{BLACK}Інструкція +STR_TEXTFILE_VIEW_README_TOOLTIP :Показати довідку вмісту STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Зміни +STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Показати зміни вмісту STR_TEXTFILE_VIEW_LICENCE :{BLACK}Ліцензія +STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Показати ліцензію вмісту ###length 5 STR_TEXTFILE_README_CAPTION :{WHITE}Документація до {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Зміни в {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Ліцензія до {STRING} {STRING} +STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Попередній перегляд збору даних STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE}документ OpenTTD '{STRING}' @@ -4893,9 +5007,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Приб STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Збереження...{}зачекайте, доки завершиться! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Помилка автозбереження STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Неможливо прочитати пристрій -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Помилка запису гри{}{STRING} +STR_ERROR_GAME_SAVE_FAILED : STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Неможливо стерти файл -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Помилка завантаження гри{}{STRING} +STR_ERROR_GAME_LOAD_FAILED : STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Внутрішня помилка: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл збереженої гри пошкоджений - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Файл збереженої гри зроблений більш новою версією @@ -4962,7 +5076,7 @@ STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Не д STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Влада міста {TOWN} проти цього STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Влада міста {TOWN} відмовляє у будівництві ще одного аеропорту. STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN}: місцева влада відмовляє у дозволі на аеропорт з міркувань шуму -STR_ERROR_BRIBE_FAILED :{WHITE}Хтось з місцевих сищиків дізнався про твою спробу дати хабар +STR_ERROR_BRIBE_FAILED :{WHITE}Місцевий слідчий дізнався про твою спробу дати хабар # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Неможливо підняти ділянку... @@ -4989,7 +5103,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Немо STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Неможливо збудувати Офіс... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Не можна створити місто +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Неможливо створити місто... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Неможливо перейменувати... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Тут не можна будувати місто... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Неможливо розширити місто... @@ -4998,7 +5112,7 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... на STR_ERROR_TOO_MANY_TOWNS :{WHITE}... забагато міст STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... на карті немає вільного місця STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Дорога ремонтується -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Не можна видалити це місто...{}Станція або депо, що відносяться до міста або знаходяться на землі у власності міста, не можуть бути видалені +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Не можна видалити це місто...{}Станція або депо, що належать місту або перебувають на землі у власності міста, не можуть бути видалені STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... немає придатного місця для статуї в центрі цього міста # Industry related errors @@ -5107,13 +5221,18 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Немо STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Неправильний тип депо # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... дозволяється не більше одного завдання на розподілення по інтервалу +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... неможливо використати завдання "повне завантаження", якщо транспорт має завдання на розподілення +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... неможливо задати завдання на розподілення, якщо транспорт має завдання з умовою на "повне завантаження" +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... неможливо використати стандартні завдання, якщо транспорт має завдання на розподілення +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... неможливо задати завдання на розподілення, якщо транспорт має завдання з додатковими умовами # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} дуже довгий після оновлення STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Правила автозаміни/оновлення не застосовувалися STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(бракує коштів) STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Новий транспорт не може перевозити {STRING} -STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Нове авто не може змінити наказ {NUM} +STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Новий транспорт не може переобладнатися згідно з завданням {NUM} # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Неможливе з'єднання колії @@ -5237,7 +5356,7 @@ STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Немо STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Неможливо зупинити літак... ###length VEHICLE_TYPES -STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Неможливо відправити поїзд в депо... +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Неможливо направити поїзд в депо... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Неможливо направити авто в депо... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Неможливо направити корабель в депо... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Неможливо направити літак до ангару... @@ -5272,6 +5391,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Змін STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Жоден вид транспорту ще не став доступним STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Починайте нову гру після {DATE_SHORT} або використовуйте NewGRF, в якому транспорт з’являється раніше + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Неможливо проїхати сигнал - небезпечно... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Неможливо розвернути поїзд... @@ -5282,14 +5402,14 @@ STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Немо STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Літак у польоті # Order related errors -STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Немає місця для наказів -STR_ERROR_TOO_MANY_ORDERS :{WHITE}Дуже багато наказів -STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Неможливо додати наказ... -STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Неможливо видалити наказ... -STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Неможливо змінити наказ... -STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Не можна перемістити цей наказ... -STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Не можна пропустити цей наказ... -STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Не можна перейти до цього наказу... +STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Немає місця для нових завдань +STR_ERROR_TOO_MANY_ORDERS :{WHITE}Занадто багато завдань +STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Неможливо додати завдання... +STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Неможливо видалити завдання... +STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Неможливо змінити завдання... +STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Неможливо перемістити це завдання... +STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Не можна пропустити це завдання... +STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Неможливо перейти до цього завдання... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... транспорт не може йти на всі станції STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... транспорт не може йти на цю станцію STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... транспорт, що має спільний з цим розклад, не може йти на цю станцію @@ -5297,7 +5417,7 @@ STR_ERROR_CAN_T_COPY_ORDER_VEHICLE_LIST :{WHITE}... не STR_ERROR_CAN_T_SHARE_ORDER_VEHICLE_LIST :WHITE}... не увесь транспорт має спільні завдання STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Неможливо розділити список завдань... -STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Неможливо скасувати спільні накази... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Неможливо скасувати спільні завдання... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Неможливо скопіювати список завдань... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... занадто далеко від попереднього пункту призначення STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... літак не може летіти так далеко @@ -5308,7 +5428,9 @@ STR_ERROR_NO_BUS_STATION :{WHITE}Нема STR_ERROR_NO_TRUCK_STATION :{WHITE}Немає вантажної станції STR_ERROR_NO_DOCK :{WHITE}Немає порту STR_ERROR_NO_AIRPORT :{WHITE}Немає аеропорту або геліпорту +STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Немає зупинок із сумісним типом дороги STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Немає зупинок із сумісним типом трамвайної колії +STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Відсутні зупинки для зчленованого транспорту.{}Зчленований транспорт потребує проїзної зупинки, не кінцевої STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Цей літак не може приземлятися у цьому геліпорті STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Цей гелікоптер не може приземлятися у цьому аеропорту STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Немає точки залізничного маршруту @@ -5319,6 +5441,7 @@ STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Не м STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Транспорт може чекати тільки на станціях STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Цей транспорт не зупиняється на цій станції. STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... розклад незавершений +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... розклад ще не почався # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... дуже багато позначень @@ -5502,33 +5625,33 @@ STR_SV_STNAME_FALLBACK :{STRING}, ст ##id 0x8000 ###length 116 # Vehicle names -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (паровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (паротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (теплотяг) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (паровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (паровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (паровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (паровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (тепловоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (електровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (електровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (електровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (електровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (паротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (паротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (паротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (паротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (теплотяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (електротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (електротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (електротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (електротяг) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Пасажирський вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Поштовий вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Вагон для вугілля @@ -5556,8 +5679,8 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Вагон дл STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Вагон для батарейок STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Вагон для газованої води STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Вагон для пластиліну -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (електровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (електровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (електротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (електротяг) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Пасажирський вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Поштовий вагон @@ -5586,10 +5709,10 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Вагон дл STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Вагон для батарейок STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Вагон для газованої води STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Вагон для пластиліну -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (електровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (електровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (електровоз) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (електровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (електротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (електротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (електротяг) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (електротяг) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Пасажирський вагон STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Поштовий вагон @@ -5801,6 +5924,7 @@ STR_UNKNOWN_STATION :невідом STR_DEFAULT_SIGN_NAME :Позначка STR_COMPANY_SOMEONE :дехто +STR_SAVEGAME_DURATION_REALTIME :{NUM}год {NUM}хв STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Спостерігач, {1:STRING} @@ -5834,6 +5958,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}тис. +STR_CURRENCY_SHORT_MEGA :{NBSP}млн +STR_CURRENCY_SHORT_GIGA :{NBSP}млрд +STR_CURRENCY_SHORT_TERA :{NBSP}трлн + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 33d2590293..8bd3904273 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -366,6 +366,7 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :مدیر بند STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :باہر نکلو + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :کھیل کے اختیارات @@ -823,7 +824,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}کرنس STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}کرنسی کی اکائی اختیار کریں -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :برطانوی پاونڈ STR_GAME_OPTIONS_CURRENCY_USD :امریکی ڈالر STR_GAME_OPTIONS_CURRENCY_EUR :یورو @@ -900,6 +901,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}بُنی + STR_ERROR_FULLSCREEN_FAILED :{WHITE}مُکمل اسکرین موڈ ناکام ہوگیا # Custom currency window @@ -910,6 +912,7 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}ایک STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}ایک پاونڈ (£) کے لئے اپنی کرنسی کی تعداد میں اضافہ کریں STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}ایک پاونڈ (£) کے لئے اپنی کرنسی کا exchange rate اختیار کریں + STR_CURRENCY_PREFIX :{LTBLUE}سابقہ: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}اپنی کرنسی کا سابقہ رکھیں STR_CURRENCY_SUFFIX :{LTBLUE}لاحقہ: {ORANGE}{STRING} @@ -1145,6 +1148,7 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :تمام گاڑ STR_CONFIG_SETTING_WARN_INCOME_LESS :گاڑی کو نقصان کی صورت میں انتباہ کیجئیے: {STRING} ###length 2 + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :گاڑیوں کی معیاد کبھی ختم نہ ہو: {STRING} ###length 2 @@ -1155,9 +1159,14 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :گاڑیوں ک STR_CONFIG_SETTING_AUTORENEW_VEHICLE :گاڑی پرانی ہونے کی صورت میں خودکار طریقے سے بدل دیں: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONTHS :گاڑی کی زیادہ سے زیادہ عمر {STRING} ہونے پر خودکار تجدید کریں۔ +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :متعلقہ عمر جب کسی گاڑی کو خودکار تجدید کے لیے سمجھا جانا چاہیے۔ ###length 2 +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} ماہ پہلے +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} ماہ بعد STR_CONFIG_SETTING_AUTORENEW_MONEY :خودکار تبدیلی کے لئے ضروری کم سے کم رقم کو خودکار طریقے سے بدل دیں: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :گاڑیوں کی خودکار تجدید کرنے پر غور کرنے سے پہلے کم سے کم رقم جو بینک میں رہنی چاہیے۔ ###setting-zero-is-special @@ -1328,7 +1337,12 @@ STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :اسکرپٹس STR_CONFIG_SETTING_SERVINT_ISPERCENT :مرمتی وقفے فیصد میں ہیں: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :ہوائی جہاز کے لیے طے شدہ مرمتی وقفہ: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :اگر گاڑی کے لیے کوئی واضح مرمتی وقفہ مقرر نہیں کیا گیا ہے تو نئے ہوائی جہاز کے لیے پہلے سے طے شدہ مرمتی وقفہ مقرر کریں +###length 3 + ###setting-zero-is-special +STR_CONFIG_SETTING_SERVINT_DISABLED :غیر فعال STR_CONFIG_SETTING_NOSERVICE :گاڑیوں کی خرابی غیر فعال ہونے کی صورت میں مرمت بھی غیر فعال کر دیں: {STRING} @@ -1467,13 +1481,7 @@ STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :صنعتیں STR_CONFIG_SETTING_AI :مد مقابل STR_CONFIG_SETTING_AI_NPC :کمپیوٹر کے کھلاڑی -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :ریل گاڑیوں کے لئے راستہ ڈھونڈنے والا: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :گاڑیوں کا راستہ تلاش کرنے والا: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :بحری جہازوں کا راستہ تلاش کرنے والا: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :اشاروں پر خودکار ریورس ہونا: {STRING} -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Recommended) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}سیٹنگ کی ولیو بدلیں @@ -1729,7 +1737,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}کمپن STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}رابطہ منقطع کریں STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}سرور محفوظ ہے۔ پاس ورڈ بتایہں -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}کمپنی محفوظ ہے۔ پاس ورڈ بتایہں # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}کلائینٹس کی فہرست @@ -1739,25 +1746,16 @@ STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}کلائ # Matches ConnectionType ###length 5 +STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :مٹا دو STR_NETWORK_SPECTATORS :ناظرین -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}بتایا گیا پاس ورڈ محفوظ نہ کریں -STR_COMPANY_PASSWORD_OK :{BLACK}کمپنی کا نیا پاس ورڈ رکھیں -STR_COMPANY_PASSWORD_CAPTION :{WHITE}کمپنی کا پاس ورڈ -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}پہلے سے مقرر شدہ کمپنی کا پاس ورڈ -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}کمپنی کے پاس ورڈ کو تمام نئی کمپنیوں کے لئے پہلے سے مقرر شدہ سمجھیں - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}شامل ہوں STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}اس کمپنی کے طور پر کھیل میں شامل ہوں -STR_COMPANY_VIEW_PASSWORD :{BLACK}پاس ورڈ -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}اپنی کمپنی کو پاس ورڈ سے محفوظ بنائیں تاکہ غیر متعلقہ کھلاڑی اس میں شامل نہ ہو سکیں -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}کمپنی کا پاس ورڈ رکھیں # Network chat STR_NETWORK_CHAT_SEND :{BLACK}بھیجیں @@ -1796,7 +1794,7 @@ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}آپ ک STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}ممکنہ طور پر کنکشن کا خاتمہ STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}آخری {NUM} سیکنڈ{P "" وں} سے سرور سے کوئی معلومات نہیں ملیں -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :عمومی خرابی STR_NETWORK_ERROR_CLIENT_DESYNC :desync خرابی STR_NETWORK_ERROR_CLIENT_SAVEGAME :نقشہ لوڈ نہیں ہوسکا @@ -1980,7 +1978,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}ریلو # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}گزرگاہ -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}گزرگاہ کی طرز منتخب کریں # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}ریلوے اسٹیشن منتخب کریں @@ -1993,8 +1990,9 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}ریلو STR_STATION_BUILD_DRAG_DROP :{BLACK}کھینچ کر رکھ دیں STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}کھینچ کر رکھ کر اسٹیشن تعمیر کریں -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}دکھانے کے لئے ریلوے اسٹیشن کی قسم کا انتخاب کریں -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}تعمیر کے لئے اسٹیشن کی طرز منتخب کریں + + + STR_STATION_CLASS_DFLT :طے شدہ اسٹیشن STR_STATION_CLASS_WAYP :گزرگاہیں @@ -2111,8 +2109,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}مستق # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}چیز کا انتخاب -STR_OBJECT_BUILD_TOOLTIP :{BLACK}تعمیرکرنے کے لئے چیز منتخب کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}تعمیر کرنے کے لئے چیز کی قسم کا انتخاب کریں STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}چیز کا جائزہ STR_OBJECT_BUILD_SIZE :{BLACK}سائز: {GOLD}{NUM} x {NUM} ٹائلیں @@ -2166,6 +2162,9 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{G=f}{BLACK}ک # Fund new industry window # Industry cargoes window +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}کارگو چین - {STRING} +STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}قبول کرنے والی صنعتیں۔ +STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}اس کے فروخت کنندہ اور گاہک کو دیکھنے کے لیے سامان پر کلک کریں۔ # Land area window @@ -2227,6 +2226,13 @@ STR_MAPGEN_TOWN_NAME_ITALIAN :اِٹالین STR_MAPGEN_TOWN_NAME_CATALAN :کاٹالن # Strings for map borders at game generation +STR_MAPGEN_BORDER_TYPE :{BLACK}نقشے کے کنارے: +STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}کھیل کی دنیا کے بارڈرز کا انتخاب کریں۔ +STR_MAPGEN_BORDER_FREEFORM :{BLACK}فری فارم +STR_MAPGEN_BORDER_WATER :{BLACK}پانی +STR_MAPGEN_BORDER_RANDOM :{BLACK}بے ترتیب +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}بے ترتیب +STR_MAPGEN_BORDER_MANUAL :{BLACK}دستی @@ -2263,7 +2269,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :طرزِ ریل # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE} صف بندھی کے sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK} اگلی sprite STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK} جایئے sprite تک STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK} جایئے sprite کی طرف۔ اگر sprite اصلی نھیں تو اگلی sprite کی طرف جائیے @@ -2314,7 +2319,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK} پچھ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK} اشارے کا نام درج کیجیئے # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE} قصبے STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) # Town view window @@ -2346,6 +2350,7 @@ STR_GOAL_QUESTION_CAPTION_ERROR :خرابی # Subsidies window # Story book window +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}غلط مقصد کا حوالہ # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} @@ -2450,7 +2455,13 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}گروپ ###length VEHICLE_TYPES STR_BUY_VEHICLE_AIRCRAFT_CAPTION :نیا طیارہ +STR_PURCHASE_INFO_CAPACITY :{BLACK}گنجائش: {GOLD}{CARGO_LONG} {STRING} +STR_PURCHASE_INFO_COST :{BLACK}لاگت: {GOLD}{CURRENCY_LONG} +STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}گنجائش: {GOLD}{CARGO_LONG}, {CARGO_LONG} +STR_PURCHASE_INFO_ALL_TYPES :تمام اقسام کا سامان +STR_PURCHASE_INFO_ALL_BUT :{CARGO_LIST} کے علاوہ سبھی STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}پہنچ: {GOLD}{COMMA} ٹائلیں +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}ہوائی جہاز کی قسم: {GOLD}{STRING} ###length 3 @@ -2880,6 +2891,7 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}مرمت + # Specific vehicle errors @@ -2908,6 +2920,9 @@ STR_TOWN_BUILDING_NAME_CHURCH_1 :چرچ ##id 0x4800 # industry names STR_INDUSTRY_NAME_POWER_STATION :بجلی گھر +STR_INDUSTRY_NAME_FARM :کھیت +STR_INDUSTRY_NAME_BANK :بینک +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :بینک ############ WARNING, using range 0x6000 for strings that are stored in the savegame ############ These strings may never get a new id, or savegames will break! @@ -2929,6 +2944,7 @@ STR_SV_STNAME_WAYPOINT :{STRING} STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :مینلی-موریل DMU (ڈیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :کوئلے کا ٹرک STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer @@ -3139,6 +3155,7 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 9797de87f4..f2fe188be1 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -308,11 +308,10 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Khi bậ STR_BUTTON_DEFAULT :{BLACK}Mặc định STR_BUTTON_CANCEL :{BLACK}Thôi STR_BUTTON_OK :{BLACK}Đồng ý -STR_WARNING_PASSWORD_SECURITY :{YELLOW}Chú ý: quản trị máy chủ có thể đọc mọi dòng chữ nhập ở đây. # On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . -STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . +STR_OSK_KEYBOARD_LAYOUT :`1234567890-= qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :¬!"£$%^&*()_+ QWERTYUIOP{{}}ASDFGHJKL:@~|ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Chiều dài: {NUM} @@ -438,6 +437,9 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Thoát khỏi t STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Thoát +STR_SCENEDIT_TOWN_MENU_BUILD_TOWN :Khởi tạo đô thị +STR_SCENEDIT_TOWN_MENU_PACE_HOUSE :Sắp xếp nhà + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Cấu hình trò chơi @@ -956,18 +958,14 @@ STR_GAME_OPTIONS_VOLUME :Âm lượng STR_GAME_OPTIONS_SFX_VOLUME :Hiệu ứng âm thanh STR_GAME_OPTIONS_MUSIC_VOLUME :Âm nhạc -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% -STR_GAME_OPTIONS_VOLUME_75 :75% -STR_GAME_OPTIONS_VOLUME_100 :100% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Đơn vị tiền tệ STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Lựa chọn đơn vị tiền tệ STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Bảng Anh STR_GAME_OPTIONS_CURRENCY_USD :Đô-la Mỹ STR_GAME_OPTIONS_CURRENCY_EUR :Euro @@ -1011,6 +1009,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Rupee Ấn Đ STR_GAME_OPTIONS_CURRENCY_IDR :Rupiah Indonesia STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysia STR_GAME_OPTIONS_CURRENCY_LVL :Lát-vi-a Lats +STR_GAME_OPTIONS_CURRENCY_PTE :Escudo Bồ Đào Nha STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Lưu tự động STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Lựa chọn khoảng thời gian tự động lưu @@ -1053,15 +1052,11 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :Tỷ lệ góc STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Đánh dấu vào ô này để điều chỉnh tỷ lệ góc xiên theo kích thước giao diện STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Sử dụng sprite phông truyền thống -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Tuỳ chọn này nếu bạn muốn sử dụng sprite phông cố định truyền thống. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Tuỳ chọn này nếu bạn muốn sử dụng sprite phông cố định truyền thống STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Phông chữ chống răng cưa STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Tuỳ chọn này để chống răng cưa phông chữ co dãn được -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Khảo sát tự động STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Tham gia khảo sát tự động @@ -1090,6 +1085,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Gói nh STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Chọn gói nhạc để sử dụng STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Thông tin thêm về gói nhạc chuẩn +STR_GAME_OPTIONS_ONLINE_CONTENT :Tải Nội Dung +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Kiểm tra những nội dung mới & cập nhật để tải về + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(không có plugins được cài đặt để tích hợp vào nền tảng xã hội) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) @@ -1117,6 +1115,9 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Giảm t STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Tăng tỉ giá tiền của bạn đối với 1 Pound (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Điều chỉnh tỉ giá tiền của bạn đối với 1 Pound (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Ký tự phân cách: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Thiết lập ký tự phân cách cho tiền tệ của bạn + STR_CURRENCY_PREFIX :{LTBLUE}Tiền tố: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Chỉnh tiếp đầu ngữ cho tiền tệ của bạn STR_CURRENCY_SUFFIX :{LTBLUE}Hậu tố: {ORANGE}{STRING} @@ -1271,10 +1272,10 @@ STR_CONFIG_SETTING_INFINITE_MONEY :Tiền vô hạ STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Cho phép chi tiêu không giới hạn và tắt bỏ việc phá sản của các công ty STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Khoảng vay khởi nghiệp tối đa: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Hạn mức tối đa một công ty có thể vay (không tính lạm phát) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Hạn mức vay khởi nghiệp tối đa một công ty có thể vay (không tính lạm phát). Nếu chọn "Không có khoản vay", tiền sẽ không có sẵn trừ khi được cung cấp bằng Game Script hoặc thiêt lập "Tiền vô hạn" STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Không có khoản vay {RED}Cần Game Script để cung cấp khoảng vốn ban đầu +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Không có khoản vay STR_CONFIG_SETTING_INTEREST_RATE :Lãi suất vay: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lãi xuất vay; ảnh hưởng tới cả lạm phát nếu bật tùy chọn đó @@ -1355,7 +1356,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Sự giảm t STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Sự giảm tốc cho ôtô tại một ô dốc. Giá trị càng cao thì càng khó leo dốc STR_CONFIG_SETTING_FORBID_90_DEG :Ngăn tàu hỏa chuyển hướng 90 độ: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Chuyển hướng 90 độ chỉ xảy ra khi một ray ngang nối với một ray dọc ở 2 ô liền kề, khiến cho tàu hỏa cua 90 độ khi đến ô rẽ thay vì 45 độ như bình thường. +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Chuyển hướng 90 độ chỉ xảy ra khi một ray ngang nối với một ray dọc ở 2 ô liền kề, khiến cho tàu hỏa cua 90 độ khi đến ô rẽ thay vì 45 độ như bình thường STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Cho phép gộp ga, bến, cảng không sát nhau: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Cho phép thêm đoạn vào ga mà không phải sửa cái hiện có. Phải bấm Ctrl+Click để thêm đoạn vào ga @@ -1467,7 +1468,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Màu chủ đ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Thay đổi màu sắc chủ đạo của công ty STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Màu phụ của công ty: {STRING} -STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Thay đổi màu sắc phụ khi bắt đầu công ty, nếu sử dụng NewGRF bật tính năng này +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Thay đổi màu sắc phụ khi bắt đầu công ty, nếu sử dụng NewGRF có bật tính năng này STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Sân bay không bao giờ hết hạn sử dụng: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Bật tùy chọn này cho phép tất cả các loại sân bay không bị lỗi thời @@ -1487,26 +1488,27 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Cảnh báo n STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Nếu bật, sẽ có thông báo nếu một phương tiện nào đó không có lãi trong một năm STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Nếu bật, sẽ có thông báo nếu một phương tiện nào đó không có lãi trong một kỳ + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Phương tiện không bao giờ hết hạn sử dụng: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Nếu bật, tất cả các model phương tiện sẽ không bị lỗi thời STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Giữ nhịp: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Lựa chọn đơn vị giữ nhịp thời gian trong trò chơi. Điều này không thể thay đổi sau đó.{}{}Dựa trên lịch là kiểu cổ điển của OpenTTD, với mỗi năm là 12 tháng, và mỗi tháng có 28-31 ngày.{}{}Theo kiểu nhịp đồng hồ, thì dịch chuyển xe cộ, sản lượng vận tải, và các chỉ số tài chính sẽ theo nhịp mỗi phút tăng lên, nó tương đương với 30 ngày trong tháng của kiểu lịch. Những nhịp này sẽ nhóm thành kỳ 12 phút, tương đương một năm của kiểu lịch.{}{}Ở cả 2 chế độ thì luôn áp dụng lịch cổ điển cho ngày giới thiệu xe mới, nhà và các hạ tầng khác. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Lựa chọn đơn vị giữ nhịp thời gian trong trò chơi. Điều này không thể thay đổi sau đó.{}{}Dựa trên lịch là kiểu cổ điển của OpenTTD, với mỗi năm là 12 tháng, và mỗi tháng có 28-31 ngày.{}{}Theo kiểu nhịp đồng hồ, thì dịch chuyển xe cộ, sản lượng vận tải, và các chỉ số tài chính sẽ theo nhịp mỗi phút tăng lên, nó tương đương với 30 ngày trong tháng của kiểu lịch. Những nhịp này sẽ nhóm thành kỳ 12 phút, tương đương một năm của kiểu lịch.{}{}Ở cả 2 chế độ thì luôn áp dụng lịch cổ điển cho ngày giới thiệu xe mới, nhà và các hạ tầng khác ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Lịch STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Đồng hồ tính giờ STR_CONFIG_SETTING_MINUTES_PER_YEAR :Số phút tính cho mỗi năm: {STRING} -STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Chọn số phút trong mỗi lịch năm. Mặc định là 12 phút/năm. Đặt bằng 0 để ngưng lịch thời gian. Tuỳ chọn này sẽ không ảnh hưởng đến việc giả lập kinh tế trong trò chơi, và nó chỉ sẵn có khi sử dụng đồng hồ giữ nhịp. +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Chọn số phút tương ứng với một năm trong trò chơi. Mặc định là 12 phút. Đặt bằng 0 để ngưng đọng thời gian. Tăng giá trị này có thể làm chậm việc ra mắt những mẫu phương tiện, nhà cửa, và những cơ sở hạ tầng khác. Giá trị này không làm ảnh hưởng tới tốc độ của phương tiện hoặc nền kinh tế trong trò chơi, ngoại trừ lạm phát. Thiết lập này chỉ được dùng khi sử dụng đồng hồ tính giờ STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (lịch thời gian ngưng đọng) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Co dãn sản lượng vận tải địa phương: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Co dãn sản lượng vận tải của các địa phương bởi tỉ lệ phần trăm này. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Co dãn sản lượng vận tải của các địa phương bởi tỉ lệ phần trăm này STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Dãn tỉ lệ vận chuyển sản lượng của nhà máy: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Dãn sản lượng vận chuyển của các nhà máy bằng tỉ lệ phần trăm này. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Dãn sản lượng vận chuyển của các nhà máy bằng tỉ lệ phần trăm này STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Tự thay mới phương tiện nếu hết hạn sử dụng: {STRING} @@ -1525,7 +1527,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Khoảng thời STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Khoảng thời gian hiện thị thông báo trong cửa sổ màu đỏ. Lưu ý rằng cửa sổ thông báo sẽ tự đóng khi sau khoảng thời gian này, hoặc là được đóng bằng tay STR_CONFIG_SETTING_HOVER_DELAY :Hiện chú thích: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Khoảng thời gian trễ mà hướng dẫn hiện lên khi di chuột tới đối tượng, có thể hiện hướng dẫn bằng bấm nút phải chuột khi giá trị này bằng 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Khoảng thời gian trễ mà hướng dẫn hiện lên khi di chuột tới đối tượng, có thể hiện hướng dẫn bằng bấm nút phải chuột khi giá trị này bằng 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Thời gian để con trỏ lên đối tượng {COMMA} mili giây ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Bấm phải chuột @@ -1537,8 +1539,8 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Độ đậm c STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Độ đậm của đường vẽ trên đồ thị. Một đường mảnh sẽ chính xác hơn, trong khi đó đường đậm sẽ dễ nhìn hơn và màu sắc dễ phân biệt hơn STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Hiển thị tên NewGRF trong cửa sổ xây phương tiện: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Thêm một dòng vào cửa sổ xây phương tiện, hiển thị phương tiện đến từ NewGRF nào. -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Liệt kê hàng hoá mà phương tiện có thể chuyên chở trong cửa sổ danh sách {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Thêm một dòng vào cửa sổ xây phương tiện, hiển thị phương tiện đến từ NewGRF nào +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Liệt kê hàng hoá mà phương tiện có thể chuyên chở trong cửa sổ danh sách: {STRING} STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Nếu được bật, những hàng hóa có thể vận chuyển của phương tiện sẽ được hiển thị phía trên chúng trong danh sách phương tiện STR_CONFIG_SETTING_LANDSCAPE :Nền đất: {STRING} @@ -1571,7 +1573,7 @@ STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Điều chỉnh STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Độ gồ ghề của địa chất: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Chọn hình dạng và số lượng đồi núi. Địa hình bằng phẳng có ít núi nhưng chúng sẽ rộng hơn, trong khi địa hình gồ ghề có nhiều núi với kích cỡ nhỏ. +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Chọn hình dạng và số lượng đồi núi. Địa hình bằng phẳng có ít núi nhưng chúng sẽ rộng hơn, trong khi địa hình gồ ghề có nhiều núi với kích cỡ nhỏ ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Rất Phẳng STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Phẳng @@ -1579,7 +1581,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Gồ Ghề STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Rất Gồ Ghề STR_CONFIG_SETTING_VARIETY :Phân bổ sự đa dạng: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :Điều chỉnh liệu rằng bản đồ gồm cả vùng núi cao và vùng đồng bằng. Độ đa dạng càng cao thì sự chênh lệch về độ cao giữa vùng núi và vùng đồng bằng càng nhiều. +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Điều chỉnh liệu rằng bản đồ gồm cả vùng núi cao và vùng đồng bằng. Độ đa dạng càng cao thì sự chênh lệch về độ cao giữa vùng núi và vùng đồng bằng càng nhiều STR_CONFIG_SETTING_RIVER_AMOUNT :Số lượng sông ngòi: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Chọn số lượng sông ngòi được khởi tạo @@ -1747,10 +1749,10 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Vẫn giữ cô STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Giữ cho công cụ xây dựng đối với cầu, hầm... vẫn mở sau khi dùng. STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Tự động loại bỏ đèn tín hiệu khi xây dựng đường ray: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Tự động loại bỏ đèn tín hiệu trên đường khi xây dựng đường ray. Lưu ý điều này có khả năng gây ra tai nạn tàu hỏa. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Tự động loại bỏ đèn tín hiệu trên đường khi xây dựng đường ray. Lưu ý điều này có khả năng gây ra tai nạn tàu hỏa STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Giới hạn tốc độ tua nhanh: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Giới hạn tốc độ của trò chơi khi dùng chế độ tua nhanh. 0 = không có giới hạn (dùng tốc độ nhanh nhất mà máy tính cho phép). Giá trị dưới 100% sẽ làm chậm trò chơi lại. Cận trên phụ thuộc vào cấu hình máy tính và tùy thuộc vào ván chơi. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Giới hạn tốc độ của trò chơi khi dùng chế độ tua nhanh. 0 = không có giới hạn (dùng tốc độ nhanh nhất mà máy tính cho phép). Giá trị dưới 100% sẽ làm chậm trò chơi lại. Cận trên phụ thuộc vào cấu hình máy tính và tùy thuộc vào ván chơi STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% tốc độ bình thường của trò chơi ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Không giới hạn (theo tốc độ của máy tính cho phép) @@ -1814,11 +1816,11 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Cho phép ngư STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#mã lệnh trước kịch bản tạm ngưng: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Số lượng tối đa các tính toán mà một kịch bản AI được phép chạy mỗi lần STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Bộ nhớ sử dụng tối đa mỗi kích bản: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Số lượng bộ nhớ tối đa mà kịch bản có thể tiêu thụ trước khi nó bị từ chối hoạt động. Số lượng này có thể phải tăng lên nếu bản đồ lớn hơn. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Số lượng bộ nhớ tối đa mà kịch bản có thể tiêu thụ trước khi nó bị từ chối hoạt động. Số lượng này có thể phải tăng lên nếu bản đồ lớn hơn STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tần suất bảo trì theo đơn vị phần trăm: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Khi được bật, việc bảo trì phương tiện sẽ được thực thực hiện khi độ tin cậy của phương tiện giảm xuống so với độ tin cậy tối đa.{}{}Ví dụ, nếu độ tin cậy tối đa của phương tiện là 90% và tần suất bảo trì là 20%, phương tiện sẽ được bảo trì khi độ tin cậy giảm xuống 72%. +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Khi được bật, việc bảo trì phương tiện sẽ được thực thực hiện khi độ tin cậy của phương tiện giảm xuống so với độ tin cậy tối đa.{}{}Ví dụ, nếu độ tin cậy tối đa của phương tiện là 90% và tần suất bảo trì là 20%, phương tiện sẽ được bảo trì khi độ tin cậy giảm xuống 72% STR_CONFIG_SETTING_SERVINT_TRAINS :Tần suất bảo trì mặc định đối với tàu hỏa: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các tàu hỏa, nếu phương tiện không có riêng thời gian bảo trì này @@ -1828,7 +1830,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Tần suất b STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các máy bay, nếu phương tiện không có riêng thời gian bảo trì này STR_CONFIG_SETTING_SERVINT_SHIPS :Tần suất bảo trì mặc định đối với tàu thủy: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các tàu thủy, nếu phương tiện không có riêng thời gian bảo trì này -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}ngày/phút/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Ngày +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Phút +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :tắt @@ -1836,7 +1842,7 @@ STR_CONFIG_SETTING_NOSERVICE :Tắt bảo tr STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Nếu bật, phương tiện sẽ không cần bảo trì nếu chúng không thể bị hỏng STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Tốc độ nạp hàng bị suy giảm cho tàu hoả dài hơn độ dài của ga tàu: {STRING} -STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Khi bật, đoàn tàu quá dài sẽ nạp hàng chậm hơn một đoàn tàu dài vừa với độ dài ga tàu. Tuỳ chọn. này không ảnh hưởng tới việc tìm đường. +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Khi bật, đoàn tàu quá dài sẽ nạp hàng chậm hơn một đoàn tàu dài vừa với độ dài ga tàu. Tuỳ chọn. này không ảnh hưởng tới việc tìm đường STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Bật giới hạn tốc độ toa tàu: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Nếu bật, sử dụng giới hạn tốc độ của toa xe để hạn chế tốc độ của cả đoàn tàu @@ -1901,13 +1907,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Năm mà các b STR_CONFIG_SETTING_STARTING_YEAR :Năm bắt đầu: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Năm kết thúc để tính điểm: {STRING} -STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Năm mà ván chơi sẽ kết thúc và tính điểm. Khi năm đó kết thúc, điểm số của công ty sẽ được lưu lại và hiển thị bảng điểm chơi cao nhất, sau đó người chơi vẫn có thể tiếp tục ván chơi.{} Nếu năm được đặt nhỏ hơn năm bắt đầu, bảng điểm chơi cao nhất sẽ không bao giờ được hiển thị. +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Năm mà ván chơi sẽ kết thúc và tính điểm. Khi năm đó kết thúc, điểm số của công ty sẽ được lưu lại và hiển thị bảng điểm chơi cao nhất, sau đó người chơi vẫn có thể tiếp tục ván chơi.{} Nếu năm được đặt nhỏ hơn năm bắt đầu, bảng điểm chơi cao nhất sẽ không bao giờ được hiển thị STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Không bao giờ STR_CONFIG_SETTING_ECONOMY_TYPE :Nền kinh tế: {STRING} -STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Nền kinh tế vận hành trơn tru sẽ có nhiều thay đổi về mặt sản xuất, ở từng bước nhỏ. Nền kinh tế đóng băng sẽ không có thay đổi về mặt sản xuất và nhà máy sẽ không đóng cửa. Thiết lập này có thể không có tác dụng nếu các loại hình công nghiệp được cung cấp bởi NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Nền kinh tế vận hành trơn tru sẽ có nhiều thay đổi về mặt sản xuất, ở từng bước nhỏ. Nền kinh tế đóng băng sẽ không có thay đổi về mặt sản xuất và nhà máy sẽ không đóng cửa. Thiết lập này có thể không có tác dụng nếu các loại hình công nghiệp được cung cấp bởi NewGRF ###length 3 STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Nguyên gốc STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Vận hành trơn tru @@ -1962,7 +1968,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :cho phép STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :cho phép, tùy chọn bố trí đô thị STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Nhu cầu vận chuyển hàng đô thị: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Lượng hàng hoá cần vận chuyển ở trong đô thị, tỉ lệ với tổng dân số của độ thị.{}Tăng tỉ lệ bình phương: một đô thị to gấp 2 sẽ tăng 4 lần số hành khách.{}Tăng tỉ lệ thuận: một đô thị tăng gấp 2 sẽ tăng gấp 2 lần số hành khách. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Lượng hàng hoá cần vận chuyển ở trong đô thị, tỉ lệ với tổng dân số của độ thị.{}Tăng tỉ lệ bình phương: một đô thị to gấp 2 sẽ tăng 4 lần số hành khách.{}Tăng tỉ lệ thuận: một đô thị tăng gấp 2 sẽ tăng gấp 2 lần số hành khách ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Tỉ lệ bình phương (nguyên bản) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Tuyến tính @@ -2003,7 +2009,7 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Độ phân giải sprite lớn nhất sẽ dùng: {STRING} -STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Giới hạn độ phân giải tối đa sử dụng cho sprite. Giới hạn độ phân giải của sprite sẽ ngưng việc sử dụng các gói đồ họa phân giải cao ngay cả khi đã cài. Điều này có thể giúp cho đồ họa của trò chơi được đồng nhất khi sử dụng lẫn lộn các GRF có và không có phân giải cao. +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Giới hạn độ phân giải tối đa sử dụng cho sprite. Giới hạn độ phân giải của sprite sẽ ngưng việc sử dụng các gói đồ họa phân giải cao ngay cả khi đã cài. Điều này có thể giúp cho đồ họa của trò chơi được đồng nhất khi sử dụng lẫn lộn các GRF có và không có phân giải cao ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x @@ -2027,33 +2033,33 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Hệ số quy m STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Kích thước trung bình của thành phố tỉ lệ với đô thị lúc bắt đầu trò chơi STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Cập nhật biểu đồ phân phối mỗi {STRING} -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Thời gian giữa các lần tính toán lại tiếp theo của biểu đồ liên kết. Mỗi lần tính toán lại sẽ tính toán các kế hoạch cho một thành phần của biểu đồ. Điều đó có nghĩa là giá trị X cho cài đặt này không có nghĩa là toàn bộ biểu đồ sẽ được cập nhật X giây một lần. Chỉ một số thành phần sẽ làm như vậy. Bạn đặt nó càng ngắn thì càng cần nhiều thời gian CPU để tính toán nó. Bạn đặt càng lâu thì càng mất nhiều thời gian cho đến khi việc phân phối hàng hóa bắt đầu trên các tuyến đường mới. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Thời gian giữa các lần tính toán lại tiếp theo của biểu đồ liên kết. Mỗi lần tính toán lại sẽ tính toán các kế hoạch cho một thành phần của biểu đồ. Điều đó có nghĩa là giá trị X cho cài đặt này không có nghĩa là toàn bộ biểu đồ sẽ được cập nhật X giây một lần. Chỉ một số thành phần sẽ làm như vậy. Bạn đặt nó càng ngắn thì càng cần nhiều thời gian CPU để tính toán nó. Bạn đặt càng lâu thì càng mất nhiều thời gian cho đến khi việc phân phối hàng hóa bắt đầu trên các tuyến đường mới STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Mất {STRING} để tính toán lại biểu đồ phân phối -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Thời gian tiêu tốn cho mỗi lần tính toán lại một thành phần biểu đồ liên kết. Khi bắt đầu tính toán lại, một luồng sẽ được sinh ra và chạy trong số giây được thiết lập. Bạn đặt thông số này càng ngắn thì càng có nhiều khả luồng được tạo chưa hoàn thành công việc của nó. Sau đó, trò chơi dừng lại cho đến khi nó ("lag"). Bạn đặt càng lâu thì biểu đồ phân phối càng mất nhiều thời gian để cập nhật khi các tuyến thay đổi. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Thời gian tiêu tốn cho mỗi lần tính toán lại một thành phần biểu đồ liên kết. Khi bắt đầu tính toán lại, một luồng sẽ được sinh ra và chạy trong số giây được thiết lập. Bạn đặt thông số này càng ngắn thì càng có nhiều khả luồng được tạo chưa hoàn thành công việc của nó. Sau đó, trò chơi dừng lại cho đến khi nó ("lag"). Bạn đặt càng lâu thì biểu đồ phân phối càng mất nhiều thời gian để cập nhật khi các tuyến thay đổi STR_CONFIG_SETTING_DISTRIBUTION_PAX :Chế độ phân phối đối với hành khách: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Đối xứng" có nghĩa là số lượng hành khách đi từ nhà ga A đến nhà ga B và từ B đến A sẽ tương đương nhau . "Không đối xứng" có nghĩa là số lượng hành khách tùy ý có thể đi theo một trong hai hướng. "Thủ công" có nghĩa là hành khách sẽ không được phân phối tự động. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Đối xứng" có nghĩa là số lượng hành khách đi từ nhà ga A đến nhà ga B và từ B đến A sẽ tương đương nhau . "Không đối xứng" có nghĩa là số lượng hành khách tùy ý có thể đi theo một trong hai hướng. "Thủ công" có nghĩa là hành khách sẽ không được phân phối tự động STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Chế độ phân phối đối với thư tín: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Đối xứng" có nghĩa là cùng một lượng thư sẽ được gửi từ trạm A đến trạm B cũng như từ B đến A. "Không đối xứng" có nghĩa là lượng thư tùy ý có thể được gửi theo một trong hai hướng. "Thủ công" có nghĩa là thư sẽ không được phân phối tự động. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Đối xứng" có nghĩa là cùng một lượng thư sẽ được gửi từ trạm A đến trạm B cũng như từ B đến A. "Không đối xứng" có nghĩa là lượng thư tùy ý có thể được gửi theo một trong hai hướng. "Thủ công" có nghĩa là thư sẽ không được phân phối tự động STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Chế độ phân phối đối với hàng hóa đóng két: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Loại hàng hóa "ARMORED" chứa các vật có giá trị ở vùng ôn đới, kim cương ở vùng cận nhiệt đới hoặc vàng ở vùng khí hậu cận Bắc Cực. NewGRF có thể thay đổi điều đó. "Đối xứng" có nghĩa là cùng một lượng hàng hóa đó sẽ được gửi từ nhà ga A đến nhà ga B cũng như từ B đến A. "Không đối xứng" có nghĩa là lượng hàng hóa đó có thể được gửi tùy ý theo một trong hai hướng. "Thủ công" có nghĩa là sẽ không có hoạt động phân phối tự động nào đối với hàng hóa đó. Bạn nên đặt chế độ này thành bất đối xứng hoặc thủ công khi chơi ở vùng cận Bắc cực hoặc cận nhiệt đới, vì các ngân hàng chỉ nhận hàng ở những vùng khí hậu này. Đối với ôn hòa, bạn cũng có thể chọn đối xứng vì các ngân hàng sẽ gửi các vật có giá trị trở lại ngân hàng gốc. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Loại hàng hóa "ARMORED" chứa các vật có giá trị ở vùng ôn đới, kim cương ở vùng cận nhiệt đới hoặc vàng ở vùng khí hậu cận Bắc Cực. NewGRF có thể thay đổi điều đó. "Đối xứng" có nghĩa là cùng một lượng hàng hóa đó sẽ được gửi từ nhà ga A đến nhà ga B cũng như từ B đến A. "Không đối xứng" có nghĩa là lượng hàng hóa đó có thể được gửi tùy ý theo một trong hai hướng. "Thủ công" có nghĩa là sẽ không có hoạt động phân phối tự động nào đối với hàng hóa đó. Bạn nên đặt chế độ này thành bất đối xứng hoặc thủ công khi chơi ở vùng cận Bắc cực hoặc cận nhiệt đới, vì các ngân hàng chỉ nhận hàng ở những vùng khí hậu này. Đối với ôn hòa, bạn cũng có thể chọn đối xứng vì các ngân hàng sẽ gửi các vật có giá trị trở lại ngân hàng gốc STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Chế độ phân phối đối với các loại hàng hóa mặc định: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Không đối xứng" có nghĩa là số lượng hàng hóa tùy ý có thể được gửi theo một trong hai hướng. "Thủ công" có nghĩa là những loại hàng hóa đó sẽ không được phân phối tự động. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Không đối xứng" có nghĩa là số lượng hàng hóa tùy ý có thể được gửi theo một trong hai hướng. "Thủ công" có nghĩa là những loại hàng hóa đó sẽ không được phân phối tự động ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :bằng tay STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :bất đối xứng STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :đối xứng STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Độ chính xác phân phối: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mức chính xác tính toán đồ thị, nếu giá trị càng cao càng tốn CPU và trò chơi có thể chậm phản ứng, tuy nhiên giá trị thấp sẽ khiến việc phân phối sẽ giảm sự chính xác và bạn sẽ thấy sự khác biệt là hàng hóa không gửi đến chỗ cần đến. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mức chính xác tính toán đồ thị, nếu giá trị càng cao càng tốn CPU và trò chơi có thể chậm phản ứng, tuy nhiên giá trị thấp sẽ khiến việc phân phối sẽ giảm sự chính xác và bạn sẽ thấy sự khác biệt là hàng hóa không gửi đến chỗ cần đến STR_CONFIG_SETTING_DEMAND_DISTANCE :Ảnh hưởng bởi khoảng cách đến nhu cầu gửi: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Nếu bạn đặt giá trị này lớn hơn 0, thì khoảng chênh lượng hàng hóa gửi từ ga A đến B sẽ ảnh hưởng bởi khoảng cách, giá trị càng cao thì càng ít hàng gửi đến ga xa và nhiều hàng gửi đến ga gần và ngược lại. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Nếu bạn đặt giá trị này lớn hơn 0, thì khoảng chênh lượng hàng hóa gửi từ ga A đến B sẽ ảnh hưởng bởi khoảng cách, giá trị càng cao thì càng ít hàng gửi đến ga xa và nhiều hàng gửi đến ga gần và ngược lại STR_CONFIG_SETTING_DEMAND_SIZE :Khối lượng hàng hóa trả về đối với chế độ đối xứng: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Thiết lập giá trị này ít hơn 100% sẽ khiến vận tải hai chiều đối xứng sẽ giống như bất đối xứng. Sẽ có ít hàng hóa hơn chuyển ngược lại nếu như số lượng hàng chuyển tới vượt ngưỡng nào đó. Nếu đặt là 0% thì là bất đối xứng hoàn toàn. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Thiết lập giá trị này ít hơn 100% sẽ khiến vận tải hai chiều đối xứng sẽ giống như bất đối xứng. Sẽ có ít hàng hóa hơn chuyển ngược lại nếu như số lượng hàng chuyển tới vượt ngưỡng nào đó. Nếu đặt là 0% thì là bất đối xứng hoàn toàn STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Tỉ lệ bảo hòa (hết tải) của đường tắt trước khi chuyển sang đường khác dài hơn: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Thường sẽ có nhiều con đường giữa 2 ga/bến. Việc vận tải hàng hóa sẽ chọn con đường ngắn nhất trước cho đến khi hết tải. Sau đó chọn con đường ngắn thứ 2, 3... cho đến khi hết tải. Việc hết tải được tính toán bằng khối lượng vận chuyển thực tế so với dự tính. Khi hết tải tất cả các con đường, nếu vẫn còn hàng hóa cần chuyển, thì nó có thể gây quá tải. Dầu vậy thuật toán này không phải lúc nào cũng chính xác trong việc tính toán năng lực vận tải. Thiết lập này cho phép bạn tinh chỉnh tỉ lệ mà một con đường sẽ hết tải trước khi chọn con đường kế tiếp. Nhỏ hơn 100% sẽ giúp tránh việc một ga bến quá đông đúc và bù trừ việc tính toán sai lệch này. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Thường sẽ có nhiều con đường giữa 2 ga/bến. Việc vận tải hàng hóa sẽ chọn con đường ngắn nhất trước cho đến khi hết tải. Sau đó chọn con đường ngắn thứ 2, 3... cho đến khi hết tải. Việc hết tải được tính toán bằng khối lượng vận chuyển thực tế so với dự tính. Khi hết tải tất cả các con đường, nếu vẫn còn hàng hóa cần chuyển, thì nó có thể gây quá tải. Dầu vậy thuật toán này không phải lúc nào cũng chính xác trong việc tính toán năng lực vận tải. Thiết lập này cho phép bạn tinh chỉnh tỉ lệ mà một con đường sẽ hết tải trước khi chọn con đường kế tiếp. Nhỏ hơn 100% sẽ giúp tránh việc một ga bến quá đông đúc và bù trừ việc tính toán sai lệch này STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Đơn vị tốc độ (đất liền): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Đơn vị tốc độ (hàng hải): {STRING} @@ -2128,17 +2134,8 @@ STR_CONFIG_SETTING_AI :Đối Thủ STR_CONFIG_SETTING_AI_NPC :Nhân vật máy STR_CONFIG_SETTING_NETWORK :Kết nối -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Cơ chế tìm đường cho tàu hoả: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Cơ chế tìm đường cho tàu hỏa -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Cơ chế tìm đường cho xe ôtô: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Cơ chế tìm đường cho xe ôtô -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Cơ chế tìm đường cho tàu thủy: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Cơ chế tìm đường dùng cho tàu thủy STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Tự động đổi chiều chạy tại đèn hiệu: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Cho phép xe lửa vòng lại nơi đèn báo, khi nó chờ quá lâu -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Nên dùng) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Thay đổi giá trị @@ -2219,7 +2216,7 @@ STR_QUIT_YES :{BLACK}Đồng STR_QUIT_NO :{BLACK}Không đồng ý # Abandon game -STR_ABANDON_GAME_CAPTION :{WHITE}Bỏ Màn Chơi +STR_ABANDON_GAME_CAPTION :{WHITE}Loại bỏ Game STR_ABANDON_GAME_QUERY :{YELLOW}Bạn có chắc chắn muốn bỏ màn chơi này không? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Bạn có chắc bạn muốn bỏ màn chơi kịch bản này? @@ -2457,7 +2454,6 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Tải th STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Ngắt kết nối STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server yêu cầu xác thực. Nhập mật khẩu -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Công ty yêu cầu xác thực. Nhập mật khẩu # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Người chơi trực tuyến @@ -2484,6 +2480,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Tên người c STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Các tác vụ quản lý thực hiện cho client này STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Các tác vụ quản lý thực hiện cho công ty này STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Gia nhập công ty này +STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP :{BLACK}Cho phép máy khách này gia nhập công ty của bạn STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Gửi tin nhắn tới người chơi này STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Gửi tin nhắn tới tất cả người chơi trong công ty này STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Gửi tin nhắn tới tất cả người xem @@ -2506,13 +2503,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Thông q STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Đá ra STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Cấm STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Xoá -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Mật khẩu công ty STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Tác vụ quản lý STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Bạn có muốn đá người chơi '{STRING}' ra? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Bạn có muốn cấm người chơi '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Bạn có muốn xoá công ty '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Bạn có muốn đặt lại mật khẩu cho công ty '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :{WHITE}Sử dụng chuyển tiếp? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Không thể kết nối giữa bạn tới máy chủ {STRING}.{}Bạn có muốn chuyển tiếp kết nối của bạn thông qua '{STRING}'? @@ -2529,19 +2524,9 @@ STR_NETWORK_ASK_SURVEY_YES :Có STR_NETWORK_SPECTATORS :Người xem -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Không được ghi mật khẩu đã nhập -STR_COMPANY_PASSWORD_OK :{BLACK}Nhập mật khẩu mới cho công ty -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Mật khẩu công ty -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Mật khẩu công ty mặc định -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Dùng mật khẩu công ty này là mật khẩu mặc định cho các công ty mới - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Vào STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Vào và làm chủ công ty này -STR_COMPANY_VIEW_PASSWORD :{BLACK}Mật khẩu -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Công ty đòi hỏi xác thực mật khẩu sẽ ngăn không cho người khác gia nhập, điều khiển -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Đặt mật khẩu công ty # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Gửi @@ -2570,6 +2555,7 @@ STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Bạn ch STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Bạn chưa đặt tên server. Bạn có thể đặt tên này tại phía trên của cửa sổ Chơi trên mạng STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Phiên bản của máy trạm không hợp với phiên bản máy server STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Sai mật khẩu +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Bạn không có trong danh sách máy khách được cho phép STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Server bị đầy STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Bạn bị từ chối ở server này STR_NETWORK_ERROR_KICKED :{WHITE}Bạn bị đá khỏi ván chơi @@ -2585,7 +2571,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Tên ng STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Kết nối có thể đã bị mất STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Trong khoảng{NUM} giây gần đây, không có dữ liệu nào được nhận từ máy chủ -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :lỗi chung STR_NETWORK_ERROR_CLIENT_DESYNC :lỗi mất đồng bộ STR_NETWORK_ERROR_CLIENT_SAVEGAME :không nạp được bản đồ @@ -2597,6 +2583,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :nhận được STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :sai phiên bản STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :tên đã dùng rồi STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :sai mật khẩu +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :không có trong danh sách cho phép STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :sai công ty trong DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :bí đá bởi server STR_NETWORK_ERROR_CLIENT_CHEATER :đã cố sử dụng cheat @@ -2802,7 +2789,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Chọn h # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Điểm mốc -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Chọn kiểu điểm mốc # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Chọn Ga Tàu Hỏa @@ -2815,8 +2801,11 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Độ d STR_STATION_BUILD_DRAG_DROP :{BLACK}Kéo & thả STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Xây dựng ga bằng các kéo & thả -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Chọn loại ga để hiển thị -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Chọn loại ga để xây dựng +STR_PICKER_MODE_ALL :Tất cả +STR_PICKER_MODE_SAVED :Đã lưu + + + STR_STATION_CLASS_DFLT :Mặc định STR_STATION_CLASS_DFLT_STATION :Trạm mặc định @@ -2959,8 +2948,6 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Mua đ # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Trình Chọn Đối Tượng -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Chọn đối tượng để xây. Ctrl + Click + kéo để chọn khu vực theo đường chéo. Shift để xem chi phí dự tính -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Chọn lớp đối tượng để xây dựng STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Xem trước đối tượng STR_OBJECT_BUILD_SIZE :{BLACK}Kích thước: {GOLD}{NUM} x {NUM} ô @@ -2977,9 +2964,9 @@ STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Trồng STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Bình thường STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Trồng cây bằng cách kéo giữ chuột trên khoảnh đất STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Lùm cây -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Trồng các bụi rừng nhỏ bằng cách kéo giữ chuột trên khoảnh đất. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Trồng các bụi rừng nhỏ bằng cách kéo giữ chuột trên khoảnh đất STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Rừng -STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Trồng rừng lớn bằng cách kéo giữ chuột trên khoảnh đất. +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Trồng rừng lớn bằng cách kéo giữ chuột trên khoảnh đất # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}San Lấp Đất @@ -3075,7 +3062,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Chủ đ STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Chủ đường ray: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Thuộc về địa phương: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Không -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Toạ độ: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Toạ độ: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Chỉ mục của ô: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Xây/tân trang ngày: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Loại ga,bến: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Kiểu ga,bến: {LTBLUE}{STRING} @@ -3195,7 +3183,7 @@ STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Tốc độ khung giả lập game: {STRING} STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Số nhịp đếm giả lập trong mỗi giây STR_FRAMERATE_RATE_BLITTER :{BLACK}Tốc độ khung hình: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Số khu hình vẽ lại mỗi giây. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Số khung hình vẽ lại mỗi giây STR_FRAMERATE_SPEED_FACTOR :{BLACK}Chỉ số vận tốc game hiện tại: {DECIMAL}x STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Tốc độ chạy game hiện tại, so với tốc độ bình thường STR_FRAMERATE_CURRENT :{WHITE}Hiện tại @@ -3386,10 +3374,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Bạn c STR_GENERATION_PROGRESS :{WHITE}{NUM}% hoàn thành STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Tạo màn +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Khởi tạo cảnh quan STR_GENERATION_RIVER_GENERATION :{BLACK}Khởi tạo sông suối -STR_GENERATION_TREE_GENERATION :{BLACK}Trồng cây -STR_GENERATION_OBJECT_GENERATION :{BLACK}Sinh đối tượng cứng STR_GENERATION_CLEARING_TILES :{BLACK}Sinh đá và sự gồ ghề +STR_GENERATION_TOWN_GENERATION :{BLACK}Khởi tạo thị trấn +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Khởi tạo nhà máy +STR_GENERATION_OBJECT_GENERATION :{BLACK}Sinh đối tượng cứng +STR_GENERATION_TREE_GENERATION :{BLACK}Trồng cây STR_GENERATION_SETTINGUP_GAME :{BLACK}Thiết lập ván chơi STR_GENERATION_PREPARING_TILELOOP :{BLACK}Đang chạy sinh tile STR_GENERATION_PREPARING_SCRIPT :{BLACK}Đang chạy tập lệnh @@ -3481,7 +3472,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Loại đườn STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Biến số NewGRF là 60+x (dạng hexa) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Điều chỉnh sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Căn chỉnh hình sprite: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Căn chỉnh hình sprite: Hành động 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Căn chỉnh hình sprite: Hành động 0x5, loại {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite tiếp STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Chuyển tới sprite bình thường kế tiếp, bỏ qua các loại sprite và căn theo điểm kết thúc STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Đi tới sprite @@ -3490,6 +3483,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite t STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Xử lý sprite bình thường ở trước, bỏ qua các loại pseudo/recolour/font sprite căn theo điểm bắt đầu STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Theo những thông tin của sprite đã chọn. Thì việc căn chỉnh khi vẽ đối với sprite này sẽ bị bỏ qua STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Di chuyển sprite xung quanh, thay đổi X và Y offsets. Ctrl+Click để di chuyển sprite tám đơn vị một lúc +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Toạ độ về trung tâm @@ -3560,7 +3554,7 @@ STR_NEWGRF_BROKEN :{WHITE}Hoạt STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Trạng thái đầu kéo '{1:ENGINE}' được thay đổi khi không ở trong xưởng sửa chữa. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Nó cắt ngắn độ dài của đoàn tàu '{1:ENGINE}' nếu không ở trong xưởng. STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Sức chứa của phương tiện bị thay đổi '{1:ENGINE}' khi không ở trong xưởng hoặc vì cải biến -STR_BROKEN_VEHICLE_LENGTH :{WHITE}Đoàn tàu '{VEHICLE}' của '{COMPANY}' có độ dài không hợp lệ. Có thể gây sự cố với NewGRFs. Ván chơi có thể mất đồng bộ hoặc bị treo +STR_BROKEN_VEHICLE_LENGTH :{WHITE}Đoàn tàu '{VEHICLE}' của '{COMPANY}' có độ dài không hợp lệ. Sự cố có thể có căn nguyên từ NewGRFs. Ván chơi có thể mất đồng bộ hoặc bị treo STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' không hợp lệ. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Danh mục hàng hoá/cải biến được cho '{1:ENGINE}' khác với danh mục mua được sau khi đã có. Việc này khiến cho việc tự thay thế hay là tự cải biến không chính xác. @@ -3598,7 +3592,6 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Biển h STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Nhập tên của biển hiệu # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Đô Thị STR_TOWN_DIRECTORY_NONE :{ORANGE}- Không Có - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (đô thị){BLACK} ({COMMA}) @@ -3932,7 +3925,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENC STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/chu kỳ # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Nhà máy STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Không Có - STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% đã vận chuyển){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} @@ -4021,12 +4013,12 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Máy bay chưa STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Nhóm - chọn nhóm để hiển thị các phương tiện thuộc nhóm. Kéo thả nhóm để sắp xếp lại danh sách. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Nhóm - chọn nhóm để hiển thị các phương tiện thuộc nhóm. Kéo thả nhóm để sắp xếp lại danh sách STR_GROUP_CREATE_TOOLTIP :{BLACK}Ấn vào để tạo nhóm STR_GROUP_DELETE_TOOLTIP :{BLACK}Xoá nhóm đã chọn STR_GROUP_RENAME_TOOLTIP :{BLACK}Đổi tên nhóm STR_GROUP_LIVERY_TOOLTIP :{BLACK}Thay đổi phục trang cho nhóm được chọn -STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Không để nhóm này tự thay thế (thiết lập chung) khi hết hạn. Ctrl+Click để áp dụng lên nhóm con. +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Không để nhóm này tự thay thế (thiết lập chung) khi hết hạn. Ctrl+Click để áp dụng lên nhóm con STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Xóa Nhóm STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Bạn có chắc chắn muốn xóa nhóm này và tất cả con của nó? @@ -4442,7 +4434,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Sức ch STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Cước trung chuyển: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Tần suất bảo trì: {LTBLUE}{COMMA}{NBSP}ngày{BLACK} {STRING} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Tần suất phục vụ: {LTBLUE}{COMMA}{NBSP}phút{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Tần suất phục vụ: {LTBLUE}{COMMA}{NBSP}phút{BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Tần suất bảo trì: {LTBLUE}{COMMA}%{BLACK} {STRING} STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Lần bảo trì gần nhất: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Lần bảo trì gần nhất: {LTBLUE}{NUM} phút trước @@ -4636,7 +4628,7 @@ STR_ORDER_REFIT_ORDER :(Cải biến t STR_ORDER_REFIT_STOP_ORDER :(Cải biến thành {STRING} và dừng) STR_ORDER_STOP_ORDER :(Dừng) -STR_ORDER_WAIT_TO_UNBUNCH :(chờ để gỡ gộp) +STR_ORDER_WAIT_TO_UNBUNCH :(Chờ để gỡ gộp) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Không thể sử dụng trạm){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4840,8 +4832,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script STR_AI_SETTINGS_CLOSE :{BLACK}Đóng STR_AI_SETTINGS_RESET :{BLACK}Thiết Lập Lại STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] -STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -4894,9 +4884,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Thu nh STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Đang lưu vào đĩa,{}hãy chờ cho đến khi hoàn thành! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Tự lưu gặp lỗi STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Không đọc được đĩa -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lưu ván chơi có lỗi{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lưu game thất bại... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Không thể xoá file -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nạp ván chơi thất bại{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Khởi động game thất bại... STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Lỗi kỹ thuật: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bản lưu ván chơi bị hỏng - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Bản lưu ván chơi dành cho phiên bản mới hơn @@ -4990,7 +4980,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Không m STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Không thể xây trụ sở công ty... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Không thể xây thêm đô thị +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Không thể xây thêm đô thị... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Không thể đổi tên đô thị... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Không thấy thị trấn ở đây... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Không thể mở rộng thành phố... @@ -5001,6 +4991,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... khô STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Xây dựng cầu đường đang tiến hành STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Không thể xoá đo thị này...{}Có một ga, bến hoặc xưởng thuộc đô thị hoặc là 1 ô đất của đô thị không thể xoá được. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... không có nơi nào hợp lý để dựng tượng đài ở trung tâm đô thị này +STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Không thể xây dựng nhà... # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... quá nhiều nhà máy @@ -5278,6 +5269,11 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Thay đ STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Chưa có phương tiện nào có sẵn STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Bắt đầu một màn chơi mới sau {DATE_SHORT} hoặc sử dụng một NewGRF cung cấp sớm phương tiện +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Không có sẵn loại đường có thể xây dựng được trong thị trấn +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Thay đổi cấu hình NewGRF của bạn +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Hiện tại chưa có các loại đường thị trấn +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Hãy bắt đầu trò chơi mới sau {DATE_SHORT} hoặc sử dụng NewGRF khác có hỗ trợ xây dựng sớm các loại đường đô thị + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Không thể để tàu hoả qua tín hiệu đèn khi nguy hiểm... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Không thể đổi hướng đoàn tàu... @@ -5807,6 +5803,11 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}tr +STR_CURRENCY_SHORT_GIGA :{NBSP}tỷ +STR_CURRENCY_SHORT_TERA :{NBSP}ktỷ + STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} @@ -5823,6 +5824,7 @@ STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING1 :{STRING} STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 7dc73ca2e1..96fde4f2bb 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -187,10 +187,13 @@ STR_COLOUR_ORANGE :Oren STR_COLOUR_BROWN :Brown STR_COLOUR_GREY :Llwyd STR_COLOUR_WHITE :Gwyn +STR_COLOUR_RANDOM :Ar hap ###length 17 STR_COLOUR_SECONDARY_DARK_BLUE :Glas Tywyll STR_COLOUR_SECONDARY_PALE_GREEN :Gwyrdd Golau +STR_COLOUR_SECONDARY_SECONDARY_PINK :Pinc +STR_COLOUR_SECONDARY_YELLOW :Melyn STR_COLOUR_SECONDARY_RED :Coch STR_COLOUR_SECONDARY_LIGHT_BLUE :Glas Golau STR_COLOUR_SECONDARY_GREEN :Gwyrdd @@ -202,6 +205,7 @@ STR_COLOUR_SECONDARY_PURPLE :Porffor STR_COLOUR_SECONDARY_ORANGE :Oren STR_COLOUR_SECONDARY_BROWN :Brown STR_COLOUR_SECONDARY_GREY :Llwyd +STR_COLOUR_SECONDARY_WHITE :Gwyn STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Fel y Lliw Cynradd @@ -209,16 +213,23 @@ STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Fel y Lliw Cynr STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP}mph STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}km/h STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}m/s +STR_UNITS_VELOCITY_GAMEUNITS_DAY :{DECIMAL}{NBSP}teil/diwrnod +STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}teil/eiliad +STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}not STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}hp STR_UNITS_POWER_METRIC :{DECIMAL}{NBSP}hp STR_UNITS_POWER_SI :{DECIMAL}{NBSP}kW +STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}hp/t STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}hp/t STR_UNITS_POWER_IMPERIAL_TO_WEIGHT_SI :{DECIMAL}{NBSP}hp/Mg +STR_UNITS_POWER_METRIC_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}hp/t +STR_UNITS_POWER_METRIC_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}hp/t STR_UNITS_POWER_METRIC_TO_WEIGHT_SI :{DECIMAL}{NBSP}hp/Mg STR_UNITS_POWER_SI_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}kW/t STR_UNITS_POWER_SI_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}kW/t +STR_UNITS_POWER_SI_TO_WEIGHT_SI :{DECIMAL}{NBSP}W/kg STR_UNITS_WEIGHT_SHORT_IMPERIAL :{DECIMAL}{NBSP}t STR_UNITS_WEIGHT_SHORT_METRIC :{DECIMAL}{NBSP}t @@ -245,8 +256,15 @@ STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP} STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m # Time units used in string control characters +STR_UNITS_DAYS :{COMMA}{NBSP}diwrnod{P "" ""} +STR_UNITS_SECONDS :{COMMA}{NBSP}eiliad{P "" ""} +STR_UNITS_TICKS :{COMMA}{NBSP}tic{P "" ""} +STR_UNITS_MONTHS :{NUM}{NBSP}mis{P "" ""} +STR_UNITS_MINUTES :{NUM}{NBSP}munud{P "" ""} +STR_UNITS_YEARS :{NUM}{NBSP}blwyddyn{P "" ""} +STR_UNITS_PERIODS :{NUM}{NBSP}cyfnod{P "" ""} # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Hidlydd: @@ -258,6 +276,8 @@ STR_TOOLTIP_SORT_ORDER :{BLACK}Dewiswch STR_TOOLTIP_SORT_CRITERIA :{BLACK}Dewiswch drefn trefnu STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Dewis criteria hidlydd STR_BUTTON_SORT_BY :{BLACK}Trefnu yn ôl +STR_BUTTON_CATCHMENT :{BLACK}Gorchudd +STR_TOOLTIP_CATCHMENT :Toglu dangos y map dylanwad STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Cau ffenestr STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Teitl ffenestr - llusgwch hwn i symud ffenestr @@ -269,7 +289,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Cliciwch STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toglu maint ffenestri mawr/bach STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bar sgrolio - sgrolio'r rhestr i fyny neu i lawr STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bar sgrolio - sgrolio'r rhestr i'r chwith neu i'r dde -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Dymchwel adeiladau ayb. ar sgwâr o dir. Mae Ctrl yn dewis ardal deiagonal. Mae Shift yn toglo adeiladu/dangos amcangyfrif cost +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Dymchwel adeiladau ayyb. ar sgwâr o dir. Mae Ctrl, clicio a llusgo yn dewis yr ardal yn ddeiagonal. Mae Shift yn dangos amcangyfrif cost yn unig # Show engines button ###length VEHICLE_TYPES @@ -310,7 +330,9 @@ STR_SORT_BY_TYPE :Math STR_SORT_BY_TRANSPORTED :Wedi'i gludo STR_SORT_BY_NUMBER :Rhif STR_SORT_BY_PROFIT_LAST_YEAR :Elw llynedd +STR_SORT_BY_PROFIT_LAST_PERIOD :Elw'r cyfnod diwethaf STR_SORT_BY_PROFIT_THIS_YEAR :Elw eleni +STR_SORT_BY_PROFIT_THIS_PERIOD :Elw y cyfnod yma STR_SORT_BY_AGE :Oed STR_SORT_BY_RELIABILITY :Dibynadwyedd STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Cyfanswm Gallu Cludo fesul y math o lwyth @@ -336,47 +358,56 @@ STR_SORT_BY_CARGO_CAPACITY :Gallu cludo llw STR_SORT_BY_RANGE :Maes teithio STR_SORT_BY_POPULATION :Poblogaeth STR_SORT_BY_RATING :Gradd +STR_SORT_BY_NUM_VEHICLES :Nifer cerbydau STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Cyfanswm elw llynedd +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Cyfanswm elw y cyfnod diwethaf +STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Cyfanswm elw eleni +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Cyfanswm elw y cyfnod yma STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Elw cyfartalog y llynedd STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Elw cyfartalog y cyfnod diwethaf STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Elw cyfartalog eleni STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Elw cyfartalog y cyfnod yma # Group by options for vehicle list +STR_GROUP_BY_NONE :Dim +STR_GROUP_BY_SHARED_ORDERS :Gorchmynion sydd wedi'u rhannu # Order button in shared orders vehicle list +STR_GOTO_ORDER_VIEW :{BLACK}Gorchmynion +STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Agor y ffenest gorchmynion # Tooltips for the main toolbar ###length 31 STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Oedi'r gêm STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Cyflymu'r gêm -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Dewisiadau -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Cadw'r gêm, gwaredu a'r gêm, gadael -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Dangos map -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Dangos cyfeiriadur trefi -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Dangos Cymorthdaliadau -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Dangos rhestr o orsafoedd y cwmni -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Dangos gwybodaeth cyllid y cwmni -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Dangos gwybodaeth gyffredinol y cwmni -STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Dangos llyfr hanes -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Dangos rhestr amcanion -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Dangos graffiau -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Dangos tabl cynghrair cwmnïau -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Ariannu adeiladu diwydiant newydd -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Dangos rhestr o drenau'r cwmni. Mae Ctrl+Clic yn toglo agor y rhestr grŵp/cerbyd -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Dangos rhestr o gerbydau ffordd y cwmni. Mae Ctrl+Clic yn toglo agor y rhestr grŵp/cerbyd -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :4. {BLACK}Dangos rhestr o longau'r cwmni. Mae Ctrl+Clic yn toglo agor y rhestr grŵp/cerbyd -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Dangos rhestr o awyrennau'r cwmni. Mae Ctrl+Clic yn toglo agor y rhestr grŵp/cerbyd -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Agosáu'r olygfa -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Pellhau'r olygfa -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Adeiladu tan-adeiledd rheilffordd -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Adeiladu Ffordd -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Adeiladu Doc Llongau +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Dewisiadau a gosodiadau +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Cadw neu waredu a'r gêm, gadael y rhaglen +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Agor map, porth golwg newydd, llif cargo neu rhestr arwyddion +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Agor cyfeiriadur trefi neu sefydlu tref +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Agor rhestr cymorthdaliadau +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Agor rhestr o orsafoedd y cwmni +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Agor gwybodaeth cyllid y cwmni +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Agor gwybodaeth cyffredinol y cwmni +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Agor llyfr hanes +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Agor rhestr amcanion +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Agor graffiau cwmni a chyfraddau tâl llwythi +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Agor tabl cynghrair cwmnïau +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Agor cyfeiriadur diwydiant, cadwyn diwydiant, neu ariannu adeiladu diwydiant newydd +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Agor rhestr o drenau'r cwmni. Ctrl+Clic i ddangos neu guddio cerbydau'r grŵp, yn groes i'r gosodiad a ddewiswyd +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Agor rhestr o gerbydau ffordd y cwmni. Ctrl+Clic i ddangos neu guddio cerbydau'r grŵp, yn groes i'r gosodiad a ddewiswyd +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Agor rhestr o longau'r cwmni. Ctrl+Clic i ddangos neu guddio cerbydau'r grŵp, yn groes i'r gosodiad a ddewiswyd +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Agor rhestr o awyrennau'r cwmni. Ctrl+Clic i ddangos neu guddio cerbydau'r grŵp, yn groes i'r gosodiad a ddewiswyd +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Agosáu +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Pellhau +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Adeiladu tanadeiledd rheilffordd +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Adeiladu tanadeiledd ffordd +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Adeiladu tanadeiledd tramffordd +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Adeiladu tanadeiledd dŵr STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Adeiladu meysydd awyr -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Agor y bar offer tirweddu er mwyn codi neu ostwng tir, plannu coed ayb. -STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Dangos y ffenestr Sain/Cerddoriaeth -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Dangos Neges/Adroddiad newyddion ddiwethaf, Dangos Dewisiadau Negeseuon -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Gwybodaeth ardal tir, dadnamu sgriptiau, lluniau sgrin, amdan OpenTTD +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Agor y dewislen tirweddu, dewislen coed, neu osod arwydd +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Agor y ffenestr sain/cerddoriaeth +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Agor y neges/adroddiad newyddion ddiwethaf, hanes negeseuon neu ddileu pob neges +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Agor gwybodaeth ardal tir, dewislen ciplun, credydau OpenTTD, neu offer datblygu STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Amnewid bariau offer # Extra tooltips for the scenario editor toolbar @@ -386,14 +417,15 @@ STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Golygyd STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Symud y dyddiad cychwyn yn ôl 1 blwyddyn STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Symud y dyddiad cychwyn ymlaen 2 flynedd STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Cliciwch i fewnbynnu'r flwyddyn dechreuol -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Dangos map, cyfeiriadur trefi -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Cynhyrchu tirwedd -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Cynhyrchu trefi -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Cynhyrchu Diwydiannau -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Cynhyrchu Ffyrdd -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plannu coed. Mae Shift yn toglo adeiladu/amcangyfrif y gost +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Agor map, porth golwg ychwanegol, rhestr arwyddion neu cyfeiriadur diwydiant +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Agor y ddewislen tirweddu neu gynhyrchu byd newydd +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Adeiladu neu gynhyrchu trefi +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Adeiladu neu gynhyrchu diwydiannau +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Adeiladu tanadeiledd ffordd +STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Adeiladu tanadeiledd tramffordd +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plannu coed. Ctrl+Clic+Llusgo i ddewis yr ardal yn ddeiagonal. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Gosod arwydd -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Gosod. Mae Shift yn toglo adeiladu/dangos amcangyfrif o'r gost +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Gosod. Ctrl+Clic+Llusgo i ddewis yr ardal yn ddeiagonal. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig # Scenario editor file menu ###length 7 @@ -405,12 +437,15 @@ STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Gwaredu a'r gol STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Gadael + # Settings menu ###length 16 STR_SETTINGS_MENU_GAME_OPTIONS :Dewisiadau Gêm STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Gosodiadau +STR_SETTINGS_MENU_AI_SETTINGS :Gosodiadau AI STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :Gosodiadau sgript gêm STR_SETTINGS_MENU_NEWGRF_SETTINGS :Gosodiadau NewGRF +STR_SETTINGS_MENU_SANDBOX_OPTIONS :Dewisiadau bocs tywod STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Dewisiadau tryloywder STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Dangos enwau trefi STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Dangos enwau gorsafoedd @@ -431,7 +466,7 @@ STR_FILE_MENU_EXIT :Gadael # Map menu STR_MAP_MENU_MAP_OF_WORLD :Map o'r Byd STR_MAP_MENU_EXTRA_VIEWPORT :Ffenestr Olygfa Newydd -STR_MAP_MENU_LINGRAPH_LEGEND :Allwedd Llif Cargo +STR_MAP_MENU_LINGRAPH_LEGEND :Allwedd llif cargo STR_MAP_MENU_SIGN_LIST :Rhestr Arwyddion # Town menu @@ -446,12 +481,12 @@ STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Graff Elw Gweit STR_GRAPH_MENU_INCOME_GRAPH :Graff Incwm STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Graff Llwythi a Ddanfonwyd STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Graff Hanes Perfformiad -STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graff Gwerth Cwmni +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graff gwerth cwmni STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Cyfraddau Tâl Llwythi # Company league menu STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabl Cynghrair Cwmnïau -STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Graddfa Fanwl Perfformiad +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Graddio Perfformiad Manwl STR_GRAPH_MENU_HIGHSCORE :Tabl sgôr uchaf # Industry menu @@ -486,6 +521,7 @@ STR_TOOLBAR_SOUND_MUSIC :Sain/cerddoriae # Message menu STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Neges/Adroddiad newyddion ddiwethaf STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Hanes negeseuon +STR_NEWS_MENU_DELETE_ALL_MESSAGES :Dileu pob neges # About menu STR_ABOUT_MENU_LAND_BLOCK_INFO :Gwybodaeth ardal tir @@ -573,10 +609,13 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Graff El STR_GRAPH_INCOME_CAPTION :{WHITE}Graff Incwm STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Llwythi wedi'u cludo (mewn unedau) STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Graddfeydd Perfformiad Cwmni (gradd uchaf=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Gwerth Cwmnïau +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Graff Gwerth Cwmni +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Y 72 munud diwethaf -STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Graddfeydd Tâl Llwythi +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Cyfraddau Tâl Llwythi +STR_GRAPH_CARGO_PAYMENT_RATES_DAYS :{TINY_FONT}{BLACK}Diwrnodau cludo +STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLACK}Eiliadau cludo STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Tâl am gludo llwyth o 10 uned (neu 10,000 litr) pellter o 20 sgwâr STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Galluogi popeth STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Analluogi popeth @@ -594,6 +633,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Cliciwch # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tablau Cynghrair Cwmnïau STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Peiriannydd STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Rheolwr Traffig STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Cydlynydd Cludiant @@ -605,7 +645,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Llywydd STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Teicŵn # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}Graddio perfformiad manwl +STR_PERFORMANCE_DETAIL :{WHITE}Graddio Perfformiad Manwl STR_PERFORMANCE_DETAIL_KEY :{BLACK}Allwedd STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) @@ -625,7 +665,11 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Benthyci STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Cyfanswm: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Nifer y cerbydau a gynhyrchodd elw y llynedd. Mae hyn yn cynnwys cerbydau ffordd, trenau, llongau ac awyrennau +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Nifer y cerbydau a gynhyrchodd elw y cyfnod diwethaf. Mae hyn yn cynnwys cerbydau ffordd, trenau, llongau ac awyrennau STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Nifer y gorsafoedd gyda gwasanaeth diweddar. Mae gorsafoedd trenau, gorsafoedd bysiau a meysydd awyr yn cael eu cyfrif yn anibynnol hyd yn oed os ydynt wedi'u cysylltu i'r un gorsaf +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Elw'r cerbyd gyda'r incwm lleiaf (dim ond gan ystyried cerbydau sy'n hŷn na deuflwydd) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Elw'r cerbyd gyda'r incwm lleiaf (dim ond gan ystyried cerbydau sy'n hŷn na dwy gyfnod) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Cyfanswm yr arian a enillwyd yn y chwarter gyda'r elw isaf o'r 12 chwarter ddiwethaf STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Cyfanswm yr arian a enillwyd yn y chwarter gyda'r elw uchaf o'r 12 chwarter ddiwethaf STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Cyfanswm yr unedau llwyth a gludwyd yn y 4 chwarter diwethaf @@ -668,16 +712,19 @@ STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toglu cy STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Dangos y ffenestr dewis traciau cerddoriaeth # Playlist window +STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Rhaglen Cerddoriaeth - '{STRING}' STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Indecs Traciau STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Rhaglen - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Clirio STR_PLAYLIST_CHANGE_SET :{BLACK}Newid set STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Clirio'r rhaglen gyfredol (Cyfaddas 1 neu Cyfaddas 2) +STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Newid y dewis cerddoriaeth at set arall a osodwyd STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Cliciwch i ychwanegu trac cerddoriaeth i'r rhaglen gyfredol (Cyfaddas 1 Neu Cyfaddas 2 yn unig) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Cliciwch i dynnu trac cerddoriaeth o'r rhaglen gyfredol (Cyfaddas 1 Neu Cyfaddas 2 yn unig) # Highscore window +STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Cwmnïau gorau STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Rheolwr Busnes STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entrepreneur @@ -726,7 +773,7 @@ STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Llwybrau Cludiant STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Coedwig STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Gorsaf Reilffordd -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Man Llwytho Lorïau +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Gorsaf Lorïau STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Gorsaf Fysiau STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Maes Awyr/Hofrenfa STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Doc @@ -755,7 +802,7 @@ STR_SMALLMAP_ENABLE_ALL :{BLACK}Galluogi STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Dangos uchder STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Peidio â dangos unrhyw ddiwydiant ar y map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Dangos pob diwydiant ar y map -STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toglo dangos y map uchder +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toglu dangos y map uchder STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Peidio â dangos unrhyw eiddo cwmni ar y map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Dangos eiddo pob cwmni ar y map STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Peidio â dangos cargo ar y map @@ -765,10 +812,12 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Dangos p STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Dangos y neges neu'r adroddiad newyddion ddiwethaf... STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * WEDI'I OEDI * * +STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * WEDI'I OEDI (yn aros am ddiweddariad graff gyswllt) * * STR_STATUSBAR_AUTOSAVE :{RED}AWTOGADW STR_STATUSBAR_SAVING_GAME :{RED}* * CADW GÊM * * STR_STATUSBAR_SPECTATOR :{WHITE}(gwyliwr) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(arian di-derfyn) # News message history STR_MESSAGE_HISTORY :{WHITE}Hanes Negeseuon @@ -808,10 +857,11 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}Mae {STRING} wedi cael ei gau gan ei gredydwyr a''u hasedau wedi'u gwerthu! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Cwmni cludiant newydd wedi'i lansio! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}Mae {STRING} wedi cychwyn adeiladu ger {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Mae {STRING} wedi cael ei brynu gan {STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Mae {STRING} wedi cael ei brynu gan {STRING} am swm anhysbys! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Manager) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Mae {STRING} wedi noddi sefydlu tref newydd {TOWN}! +STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Mae tref newydd o'r enw {TOWN} wedi ei hadeiladu! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING} newydd wrthi'n cael ei adeiladu wrth {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}{STRING} newydd wrthi'n cael ei phlannu wrth {TOWN}! @@ -863,7 +913,10 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLAC STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Mae {STRING} newydd yn awr ar gael! - {ENGINE} +STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Agor y ffenest grŵp wedi'i ffocysu ar grŵp y cerbyd +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}Nid yw {STATION} bellach yn derbyn: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}Mae {STATION} nawr yn derbyn: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Cynnig cymhorthdal ar ben:{}{}Ni fydd cludo {STRING} o {STRING} i {STRING} yn derbyn cymhorthdal bellach STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Cymhorthdal wedi'i dynnu'n ôl:{}{}Ni fydd gwasanaeth {STRING} o {STRING} i {STRING} yn derbyn cymhorthdal bellach @@ -874,7 +927,11 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Cymhorthdal wedi ei ddyfarnu i {STRING}!{}{}Bydd y gwasanaeth {STRING} o {STRING} i {STRING} yn talu teirgwaith yn fwy am {UNITS_YEARS_OR_MINUTES}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Cymhorthdal wedi ei ddyfarnu i {STRING}!{}{}Bydd y gwasanaeth {STRING} o {STRING} i {STRING} yn talu pedair gwaith yn fwy am {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Anhrefn traffig yn {TOWN}!{}{}Cynllun ailadeiladu ffyrdd a ariannwyd gan {STRING} yn dod a 6 mis o ddioddef i fodurwyr! +STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Anhrefn traffig yn {TOWN}!{}{}Cynllun ailadeiladu ffyrdd a ariannwyd gan {STRING} yn dod a 6 munud o ddioddef i fodurwyr! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopoli cludiant! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}Mae awdurdod lleol {TOWN} wedi arwyddo contract gyda {STRING} am 12 mis o hawliau cludiant cyfyngol! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}Mae awdurdod lleol {TOWN} wedi arwyddo contract gyda {STRING} am 12 munud o hawliau cludiant cyfyngol! # Extra view window STR_EXTRA_VIEWPORT_TITLE :{WHITE}Ffenestr Olygfa{COMMA} @@ -896,17 +953,17 @@ STR_GAME_OPTIONS_TAB_SOCIAL :Cymdeithasol STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Dewis gosodiadau integreiddio cymdeithasol STR_GAME_OPTIONS_VOLUME :Lefel Sain +STR_GAME_OPTIONS_SFX_VOLUME :Effeithiau sŵn +STR_GAME_OPTIONS_MUSIC_VOLUME :Cerddoriaeth -STR_GAME_OPTIONS_VOLUME_0 :0% -STR_GAME_OPTIONS_VOLUME_25 :25% -STR_GAME_OPTIONS_VOLUME_50 :50% +STR_GAME_OPTIONS_VOLUME_MARK :{NUM}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Uned Arian STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Dewis unedau arian STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) -###length 43 +###length 44 STR_GAME_OPTIONS_CURRENCY_GBP :Punnoedd Prydeinig STR_GAME_OPTIONS_CURRENCY_USD :Doler America STR_GAME_OPTIONS_CURRENCY_EUR :Ewro @@ -950,6 +1007,7 @@ STR_GAME_OPTIONS_CURRENCY_INR :Rwpi India STR_GAME_OPTIONS_CURRENCY_IDR :Rupiah Indonesia STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysia STR_GAME_OPTIONS_CURRENCY_LVL :Lats Latfia +STR_GAME_OPTIONS_CURRENCY_PTE :Esgwdo Portiwgeaidd STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Awtogadw STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Dewiswch pa mor aml y dylid awtogadw gemau @@ -964,6 +1022,7 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Bob 120 munud STR_GAME_OPTIONS_LANGUAGE :{BLACK}Iaith STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Dewiswch yr iaith rhyngwyneb i'w defnyddio +STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% wedi'i gwblhau) STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Sgrin Llawn STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marciwch y blwch hwn i chwarae Open TTD gyda Sgrin Llawn @@ -974,26 +1033,36 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :arall STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM} STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Cyflymu caledwedd +STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Bydd ticio'r blwch yma yn caniatáu i OpenTTD geisio defnyddio cyflymiad caledwedd. Bydd newid i'r gosodiad ond yn digwydd wedi ailddechrau'r gêm STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Bydd y gosodiad ond yn cymryd effaith ar ôl ailddechrau'r gêm +STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync +STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Bydd ticio'r blwch yma yn defnyddio cydamseriad fertigol wrth lunio'r sgrin. Bydd newid i'r gosodiad ond yn digwydd wedi ailddechrau'r gêm +STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Gyriant presennol: {STRING} +STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Maint rhyngwyneb +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Llusgwch y llithrwr i osod maint y rhyngwyneb. Daliwhc Ctrl i ganiatáu addasiad parhaol STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Awto-ganfod maint STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marciwch y blwch hwn i ganfod maint y rhyngwyneb yn awtomatig +STR_GAME_OPTIONS_GUI_SCALE_BEVELS :Helaethu befelau +STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marciwch y blwch hwn i helaethu befelau yn ôl maint y rhyngwyneb STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Defnyddio wynebfath corlun traddodiadol -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marciwch y blwch hwn os oes well gennych ddefnyddio y wynebfath corlun un-maint traddodiadol. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Marciwch y blwch hwn os oes well gennych ddefnyddio y wynebfath corlun un-maint traddodiadol STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Gwynebfathau dadamgenu STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Marciwch y blwch hwn i ddadamgennu ffontiau y gellir eu hailfeintio -STR_GAME_OPTIONS_GUI_SCALE_1X :1x -STR_GAME_OPTIONS_GUI_SCALE_2X :2x -STR_GAME_OPTIONS_GUI_SCALE_3X :3x -STR_GAME_OPTIONS_GUI_SCALE_4X :4x -STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_GUI_SCALE_MARK :{DECIMAL}x +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Arolwg awtomatig +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Cymryd rhan mewn arolwg awtomatig +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Pan y galluogir, bydd OpenTTD yn darlledu arolwg pan yn gadael gêm +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Am yr arolwg a phreifatrwydd +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Mae hwn yn agor porwr gyda mwy o wybodaeth am yr arolwg awtomatig STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Rhagolwg o ganlyniad yr arolwg +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Dangos canlyniadau arolwg y gêm sy'n rhedeg STR_GAME_OPTIONS_GRAPHICS :{BLACK}Graffeg @@ -1003,22 +1072,33 @@ STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Gall amleddau uwch na 60Hz amharu perfformiad STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set raffeg sylfaenol -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Dewiswch y set raffeg sylfaenol i'w defnyddio +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Dewiswch y set raffeg sylfaenol i'w defnyddio (ni ellir ei newid o fewn gêm, dim ond o'r brif ddewislen) STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Gwybodaeth ychwanegol am y set graffeg sylfaenol STR_GAME_OPTIONS_BASE_SFX :{BLACK}Set sain sylfaenol -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Dewisiwch y set sain sylfaenol i'w ddefnyddio +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Dewiswch y set sain sylfaenol i'w ddefnyddio (ni ellir ei newid o fewn gêm, dim ond o'r brif ddewislen) STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Gwybodaeth bellach am y set sain sylfaenol STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Set cerddoriaeth sylfaenol STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Dewisiwch y set cerddoriaeth sylfaenol i'w ddefnyddio STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Gwybodaeth bellach am y set gerddoriaeth sylfaenol + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(dim ategolion integreiddio gyda llwyfannau cymdeithasol wedi'u gosod) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Llwyfan: STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Stâd ategolyn: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Yn rhedeg +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Methwyd sefydlu +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} ddim yn rhedeg +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Dadlwythwyd +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Ategolyn dyblyg +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}Fersiwn anghydnaws +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Llofnod annilys +STR_BASESET_STATUS :{STRING} {RED}({NUM} ffeil{P "" ""} coll/llygredig) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Methu nôl rhestr o cydraniadau cydnaws STR_ERROR_FULLSCREEN_FAILED :{WHITE}Methodd y modd sgrin llawn @@ -1031,10 +1111,13 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Llehad y STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Amlhau yr swm o eich arian cyfred am un Punt (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}newid y raddfa gyfnewid o eich arian cyfred i un Punt (£) +STR_CURRENCY_SEPARATOR :{LTBLUE}Gwahanydd: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Dewis y gwahanydd ar gyfer eich arian + STR_CURRENCY_PREFIX :{LTBLUE}Rhagddodiad: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Dewis y rhagddodiad ar gyfer eich arian STR_CURRENCY_SUFFIX :{LTBLUE}Olddodiad: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Dewis yr ôl-lddodiad ar gyfer eich arian +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Dewis yr ôl-ddodiad ar gyfer eich arian STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Newid i'r Ewro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Newid i'r Ewro: {ORANGE}byth @@ -1107,8 +1190,11 @@ STR_TERRAIN_TYPE_FLAT :Gwastad STR_TERRAIN_TYPE_HILLY :Bryniog STR_TERRAIN_TYPE_MOUNTAINOUS :Mynyddig STR_TERRAIN_TYPE_ALPINIST :Mynyddwr +STR_TERRAIN_TYPE_CUSTOM :Uchder addasedig +STR_TERRAIN_TYPE_CUSTOM_VALUE :Uchder addasedig ({NUM}) ###length 4 +STR_CITY_APPROVAL_LENIENT :Hyblyg STR_CITY_APPROVAL_TOLERANT :Hapus STR_CITY_APPROVAL_HOSTILE :Gwrthwynebus STR_CITY_APPROVAL_PERMISSIVE :Bodlon (dim effaith ar weithredoedd cwmni) @@ -1120,7 +1206,9 @@ STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Gosodiad STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Hidlydd: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Ehangu oll STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Cywasgu oll +STR_CONFIG_SETTING_RESET_ALL :{BLACK}Ailosod pob gwerth STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(dim esboniad ar gael) +STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR} STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Gwerth rhagosodedig: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Math o osodiad: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Gosodiad gwestai (ni gedwir yn y ffeiliau cadw; yn effeithio ar pob gêm) @@ -1128,6 +1216,8 @@ STR_CONFIG_SETTING_TYPE_GAME_MENU :Gosodiad gêm ( STR_CONFIG_SETTING_TYPE_GAME_INGAME :Gosodiad gêm (cedwir yn y ffeil gadw; yn effeithio ar y gêm bresennol yn unig) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Gosodiad cwmni (cedwir yn y ffeiliau cadw; yn effeithio ar gemau newydd yn unig) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Gosodiad cwmni (cedwir yn y ffeil gadw; yn effeithio ar y cwmni presennol yn unig) +STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_CAPTION :{WHITE}Rhybudd! +STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_TEXT :{WHITE}Bydd y weithred yma'n ailosod pob gosodiad gêm i'w gwerthoedd rhagosodedig.{}Ydych chi'n siwr eich bod am barhau? STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categori: STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Math: @@ -1172,13 +1262,16 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Chwith STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Canol STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :De +STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}eiliad{P 0 "" ""} STR_CONFIG_SETTING_INFINITE_MONEY :Arian di-derfyn: {STRING} STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Caniatáu gwario di-derfyn ac analluogi methdaledd cwmnïau STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Benthyciad agoriadol uchafsymol: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Y swm uchaf y gall cwmni fenthyca (heb ustyried chwyddiant) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Y swm uchaf y gall cwmni fenthyca (heb ystyried chwyddiant). Os y gosodir ar "dim benthyciad", ni fydd arian ar gael oni bai y caiff ei roi gan Sgript Gêm neu'r gosodiad "Arian di-derfyn" +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Dim benthyciad STR_CONFIG_SETTING_INTEREST_RATE :Cyfradd chwyddiant: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Cyfradd chwyddiant y benthyciad; hefyd chwyddiant yr economi os y galluogir @@ -1208,7 +1301,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costau adeiladu STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Gosod lefel costau prynnu ac adeiladu STR_CONFIG_SETTING_RECESSIONS :Dirwasgiadau: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Os y galluogir, gall dirwasgiadau ddigwydd ambell flwyddyn. Yn ystod dirwasgiad bydd lefelau gweithgynhyrchu'n is o lawer (gan ddychwelyd at y lefel gwreiddiol wedi diwedd y dirwasgiad) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Os y galluogir, gall dirwasgiadau ddigwydd yn ysbeidiol. Yn ystod dirwasgiad bydd lefelau gweithgynhyrchu'n is o lawer (gan ddychwelyd at y lefel gwreiddiol wedi diwedd y dirwasgiad) STR_CONFIG_SETTING_TRAIN_REVERSING :Rhwystro trenau rhag gwrthdroi mewn gorsafoedd: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Os y galluogir, ni fydd trenau yn gwrthdroi mewn gorsafoedd nad ydynt yn derfynfeydd, hyd yn oed os oes llwybr byrach i'w cyrchfan drwy wrthdroi @@ -1232,6 +1325,8 @@ STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Caniatáu tirff STR_CONFIG_SETTING_CATCHMENT :Caniatáu ardaloedd dalgylch mwy realistig eu maint: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Defnyddio dalgylchoedd o feintiau gwahanol ar gyfer gwahanol fathau o orsafoedd a meysydd awyr +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Gall gorsafoedd cwmni wasanaethu diwydiannau gyda gorsafoedd niwtral ynghlwm: {STRING} +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Pan y galluogir, bydd diwydiannau gyda gorsafoedd ynghlwm (fel Rigiau Olew) yn gallu caen eu gwasanaethu gan orsafoedd cwmni sydd gerllaw. Pan analluogir, dim ond yn y gorsafoedd ynghlwm y gellir gwasanaethu'r diwydiannau yma. Ni fydd gorsafoedd gerllaw yn gallu eu gweini, ac ni fydd y gorsaf ynghlwm yn gweini unrhyw beth ond y diwydiant yna STR_CONFIG_SETTING_EXTRADYNAMITE :Caniatáu chwalu mwy o ffyrdd, pontydd ayb. sy'n berthyn i drefi: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Hwyluso chwalu tanadeiledd ac adeiladau sy'n eiddo i drefi @@ -1257,10 +1352,10 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Serthrwydd llet STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Serthrwydd teil llethr ar gyfer cerbyd ffordd. Mae gwerthoedd uwch yn ei gwneud yn anoddach i ddringo allt STR_CONFIG_SETTING_FORBID_90_DEG :Rhwystro trenau a llongau rhag troi 90 gradd: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Tro 90 gradd yw pan fo trac llorweddol yn cael ei ddilyn yn syth gan drac fertigol at y teil cyfagos, gan wneud i'r trên droi 90 gradd wrth groesi ochr y teil yn hytrach na'r 45 gradd sydd i'w gael gyda chyfuniadau trac eraill. Mae hyn hefyd yn effeithio ar gylch troi llongau +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Tro 90 gradd yw pan fo trac llorweddol yn cael ei ddilyn yn syth gan drac fertigol at y teil cyfagos, gan wneud i'r trên droi 90 gradd wrth groesi ochr y teil yn hytrach na'r 45 gradd sydd i'w gael gyda chyfuniadau trac eraill STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Caniatáu cyfuno gorsafoedd nad ydynt yn union gyfochrog: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Caniatáu ychwanegu rhannau at orsaf heb gyffwrdd yn uniongyrchol a'r rhai sydd eisioes yn bodoli. +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Caniatáu ychwanegu rhannau at orsaf heb gyffwrdd yn uniongyrchol a'r rhai sydd eisoes yn bodoli, trwy Ctrl+Clicio wrth osod y darnau newydd STR_CONFIG_SETTING_INFLATION :Chwyddiant: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Galluogi chwyddiant yn yr economi, lle y bydd costau'n codi ychydig yn gyflymach na thaliadau @@ -1306,7 +1401,7 @@ STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Gorchmynion new STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Fel rheol, bydd cerbyd yn aros wrth pob gorsaf yr aiff drwyddo. Bydd y gosodiad yma yn peri i'r cerbyd yrru'n syth drwy pob gorsaf ar ei ffordd at ei gyrchfan olaf heb aros. Sylwer fod y gosodiad yma'n diffinio rhagosodiad ar gyfer gorchmynion newydd. Gellir newid gorchmynion penodol at unrhyw ddull a fynnir STR_CONFIG_SETTING_STOP_LOCATION :Gorchmynion trenau newydd yn nodi aros ar y {STRING} o'r platfform fel rhagosodiad -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Y man lle y daw trên at aros wrth blatfform fel rheol. Mae'r 'ochr agos' yn cyfeirio at y pen lle mae'r trên yn myned, 'canol' at ganol y platfform, ac 'ochr bell' yn bell o'r mynedfa. Sylwer fod y gosodiad yma'n diffinio rhagosodiad ar gyfer gorchmynion newydd. Gellir newid gorchmynion penodol at unrhyw ddull a fynnir +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Y man lle y daw trên at aros wrth blatfform fel rheol. Mae'r 'ochr agos' yn cyfeirio at y pen lle mae'r trên yn myned, 'canol' at ganol y platfform, ac 'ochr bell' yn bell o'r fynedfa. Sylwer fod y gosodiad yma'n diffinio rhagosodiad ar gyfer gorchmynion newydd. Gellir gosod lleoliad aros gorchmynion penodol trwy glicio ar destun y gorchymyn ###length 3 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :ochr agos STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :canol @@ -1323,6 +1418,7 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Pob ffenestr ol STR_CONFIG_SETTING_BRIBE :Caniatáu llwgrwobrwyo'r awdurdod lleol: {STRING} ###length 2 STR_CONFIG_SETTING_BRIBE_HELPTEXT :Caniatáu i gwmnïau geisio llwgrwobrwyo'r awdurdod lleol. Os bydd arolygydd yn sylwi ar yr ymgais ni gaiff y cwmni weithredu yn y dref am chwe mis +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Caniatáu i gwmnïau ceisio llwgrwobrwyo'r awdurdod lleol. Os bydd arolygydd yn sylwi ar yr ymgais ni gaiff y cwmni weithredu yn y dref am chwe munud STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Caniatáu prynu hawliau cludo cyfyngol: {STRING} ###length 2 @@ -1352,6 +1448,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Dim STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Llai STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Arferol +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Caniatáu croesfannau gyda ffyrdd neu gledrau sy'n berchen i gystadleuwyr: {STRING} +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Caniatáu adeiladu croesfannau ar ffyrdd neu gledrau sydd yn berchen i gystadleuwyr STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Caniatáu arosfannau gyrru-trwodd ar ffyrdd sy'n eiddo i drefi: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Caniatáu adeiladu arosfannau gyrru-trwodd ar ffyrdd sy'n eiddo i drefi @@ -1362,8 +1460,11 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Nid yw'n STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Cynnal a chadw tanadeiledd: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Pan fo wedi'i alluogi, mae tanadeiledd yn creu costau cynnal a chadw. Mae'r cost yn codi'n gyflymach na'i gyfradd gyda thŵf y rhwydwaith, gan effeithio'n fwy ar gwmniau mawr na rhai bychan +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Lliw dechreuol y cwmni: {STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Dewiswch liw dechreuol am y cwmni +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Ail liw dechreuol y cwmni: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Dewiswch ail liw dechreuol ar gyfer y cwmni, os yn defnyddio NewGRF sy'n ei alluogi STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Maes awyr ddim yn dibennu: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Mae galluogi'r dewis yma'n peri i bob math o faes awyr aros ar gael am byth wedi ei gyflwyniad gyntaf @@ -1381,21 +1482,30 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :O bob cerbyd STR_CONFIG_SETTING_WARN_INCOME_LESS :Rhybuddio os yw cerbyd yn gwneud colled: {STRING} ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Pan fo wedi'i alluogi, fe yrrir neges newyddion pan fo cerbyd heb wneud elw yn ystod blwyddyn calendr +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Pan fo wedi'i alluogi, fe yrrir neges newyddion pan fo cerbyd heb wneud elw yn ystod cyfnod + STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Nid yw cerbydau'n darfod: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Pan fo wedi'i alluogi, bydd bob math o gerbyd yn aros ar gael am byth wedi eu cyflwyniad gyntaf +STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Cadw amser: {STRING} +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Dewis unedau cadw amser y gêm. Ni ellir newid hyn yn ddiweddarach.{}{}Dull calendr yw'r profiad clasurol OpenTTD, gyda blwyddyn yn cynnwys 12 mis o 28-31 diwrnod.{}{}Yn y dull cloc wal, mae cynhyrchiant cargo a materion ariannol yn cael eu cyfrifo fesul munud, sef tua'r un amser a mis 30 diwrnod yn y modd calendr. Mae'r rhain yn cael eu grwpio i gyfnodau 12 munud, sydd gyfystyr â blwyddyn yn y modd calendr..{}{}Yn y naill modd neu'r llall, mae wastad calendr traddodiadol, sydd yn cael ei ddefnyddio ar gyfer dyddiadau cyflwyno cerbydau, tai a thanadeiledd arall ###length 2 +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Calendr +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Cloc wal STR_CONFIG_SETTING_MINUTES_PER_YEAR :Munudau i bob blwyddyn: {STRING} +STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Dewis y nifer o funudau mewn blwyddyn calendr. Y rhagosodiad yw 12 munud. Gosodwch at 0 i rwystro'r flwyddyn calendr rhag newid. Nid yw'r gosodiad yma'n effeithio ar efelychiad economaidd y gêm, ac mae ond ar gael pan yn defnyddio amseru cloc wal +STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (amser calendr wedi'i rewi) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Helaethu cynhyrchiant cargo trefi: {STRING} -STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Helaethu cynhyrchiant cargo trefi gyda'r canran yma. +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Helaethu cynhyrchiant cargo trefi gyda'r canran yma STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Helaethu cynhyrchiant cargo diwydiannau: {STRING} -STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Helaethu cynhyrchiant cargo diwydiannau gyda'r canran yma. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Helaethu cynhyrchiant cargo diwydiannau gyda'r canran yma +STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Awtoadnewyddu cerbyd pan aiff yn hen: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Pan fo wedi'i alluogi, bydd cerbyd sy'n agos at ddiwedd ei oes yn cael ei ddisodli'n ddiofyn pan y caiff yr amodau adnewyddu eu cyflawni @@ -1413,7 +1523,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Ystod neges gwa STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Amser i ddangos negeseuon gwall mewn ffenestr coch. Sylwer ni gaiff rhai negeseuon gwall (difrifol) eu cau'n ddiofyn STR_CONFIG_SETTING_HOVER_DELAY :Dangos cynghorion: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Oediad cyn y dangosir cynghorion wrth ddal y cyrchydd dros rhyw elfen rhyngwyneb. Fel arall rhwymir cynghorion at botwm dde'r llygoden pan fo'r gwerth yma'n 0. +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Oediad cyn y dangosir cynghorion wrth ddal y cyrchydd dros rhyw elfen rhyngwyneb. Fel arall rhwymir cynghorion at botwm dde'r llygoden pan fo'r gwerth yma'n 0 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Oedi am {COMMA} milfed o eiliad ###setting-zero-is-special STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :De glicio @@ -1424,6 +1534,10 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Dangos poblogae STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Trwch llinellau graff: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Lled y linell mewn graffiau. Bydd llinell fain yn fwy manwl, tra y bydd llinell trwchus yn haws i'w weld gyda lliwiau'n fwy amlwg +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Dangos enw'r NewGRF yn y ffenest adeiladu cerbyd: {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Ychwanegu llinell i'r ffenestr adeiladu cerbyd, gan ddangos pa NewGRF mae'r cerbyd a ddewisir yn dod o +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Dangos y llwythi y gall cerbydau eu cario yn y ffenestri rhestr: {STRING} +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Os y galluogir, bydd llwyth cludadwy'r cerbyd yn dangos uwch ei ben yn y rhestrau cerbyd STR_CONFIG_SETTING_LANDSCAPE :Tirwedd: {STRING} STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Mae tirweddau'n diffinio senario sylfaenol gydag amryw fathau o gargo ac anghenion twf trefi. Mae NewGRF a Sgriptiau Gêm yn cynnig rheolaeth mannach, fodd bynnag @@ -1435,23 +1549,27 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Gwreiddiol STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TERRAIN_TYPE :Math tirwedd: {STRING} -STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis yn unig) Llyfnder y tirwedd +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Dewis uchder bryniau a mynyddoedd y tirwedd STR_CONFIG_SETTING_INDUSTRY_DENSITY :Dwysedd diwydiant: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Gosod faint o ddiwydiannau y dylid eu creu a pha lefel caiff eu cynnal drwy'r gêm STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Pellter uchafsymol o'r ochr ar gyfer Purfeydd olew: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Codir purfeydd olew ger ymylon y map yn unig, h.y. ar yr arfordir mewn mapiau ynys +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Cyfyngiad pa mor bell o ymyl y map y gellid adeiladu purfeydd a rigiau olew. Ar mapiau ynys mae hyn yn sicrhau eu bod ger y môr. Ar mapiau sy'n fwy na 256 teil, bydd y gwerth yma'n cael ei helaethu i fyny STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Uchder Llinell Eira: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Rheoli'r uchder y mae eira'n ymddangos mewn tirwedd is-arctig. Mae eira hefyd yn effeithio ar gynhyrchu diwydiannau a gofynion twf trefi. Dim ond yn y Golygydd Senario y gellir ei newid, neu fel arall caiff ei gyfrifo trwy "gorchudd eira" STR_CONFIG_SETTING_SNOW_COVERAGE :Gorchuddiad eira: {STRING} +STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Dewis faint o eira ar gyfer y tirwedd is-arctig. Mae eira'n effeithio ar gynhyrchu diwydiannau a gofynion twf trefi. Dim ond yn cael ei ddefnyddio wrth greu map. Nid yw teiliau lefel môr ac arfordir byth o dan eira STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}% +STR_CONFIG_SETTING_DESERT_COVERAGE :Gorchudd anialwch: {STRING} +STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Dewis faint o anialwch ar gyfer y tirwedd trofannol. Mae anialwch hefyd yn effeithio ar gynhyrchu diwydiant ac anghenion tyfiant trefi. Dim ond yn cael ei ddefnyddio wrth greu map +STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}% STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Garwder y tirwedd: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis yn unig) Dewis amlder bryniau: Mae gan tirwedd llyfn nifer isel o fryniau bylchedig. Mae gan dirwedd garw llawer o fryniau, a all edrych yn undonog +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Dewis siâp a nifer bryniau: Mae gan tirwedd llyfn nifer isel o fryniau llydan, tra fod gan dirwedd garw llawer o fryniau bychan ###length 4 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Llyfn Iawn STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Llyfn @@ -1459,7 +1577,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Garw STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Garw Iawn STR_CONFIG_SETTING_VARIETY :Dosraniad amrywiaeth: {STRING} -STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis yn unig) Rheoli a yw'r map yn cynnwys ardaloedd mynyddig a gwastad. Gan fod hyn yn gwneud y map yn fwy gwastad, dylid addasu gosodiadau eraill at mynyddig +STR_CONFIG_SETTING_VARIETY_HELPTEXT :Rheoli a yw'r map yn cynnwys ardaloedd mynyddig a gwastad. Y mwyaf o amrywiaeth, y mwy o wahaniaeth uchder rhwng ardaloedd mynyddig a gwastad STR_CONFIG_SETTING_RIVER_AMOUNT :Nifer afonydd: {STRING} STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Dewis sawl afon i'w creu @@ -1479,6 +1597,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Gyrru ar y chwi STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Gyrru ar y dde STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Tro Map Uchder: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Dewis pa ffordd mae'r darlun map uchder yn cael ei gylchdroi i ffitio byd y gêm ###length 2 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Gwrthglocwedd STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clocwedd @@ -1505,14 +1624,20 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Gwyrdd tywyll STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fioled STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Gorliw llif cargo: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Gosod y cynllun lliw a ddefnyddir ar gyfer y gwedd llif cargo ###length 4 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Gwyrdd i goch (gwreiddiol) STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Gwyrdd at las STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Llwyd i goch STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Llwydliw +STR_CONFIG_SETTING_SCROLLMODE :Ymddygiad sgrolio'r prif ffenestr: {STRING} STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Ymddygiad tra'n sgrolio'r map. Nid yw'r opsiynau "lleoliad llygoden wedi'i gloi" yn gweithio ar bob system, fel fersiynau gwe, sgrin-gyffwrdd, Linux gyda Wayland, ac eraill ###length 4 +STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Symud porth golwg gyda botwm dde'r llygoden, lleoliad llygoden wedi'i gloi +STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Symud map gyda botwm dde'r llygoden, lleoliad y llygoden wedi'i gloi +STR_CONFIG_SETTING_SCROLLMODE_RMB :Symud map gyda botwm dde'r llygoden +STR_CONFIG_SETTING_SCROLLMODE_LMB :Symud map gyda botwm dde'r llygoden STR_CONFIG_SETTING_SMOOTH_SCROLLING :Sgrolio prif ffenestr llyfn: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Rheoli syt y mae'r prif olygfa'n sgrolio at leoliad penodol pan yn clicio ar y map bychan neu yn rhoi gorchymyn i sgrolio at wrthrych penodol @@ -1549,8 +1674,10 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Clic sengl (pan STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Clic sengl (ar unwaith) STR_CONFIG_SETTING_USE_RELAY_SERVICE :Defnyddio gwasanaeth relai: {STRING} +STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT :Os yw creu cysylltiad at y gweinydd yn methu, gellid defnyddio gwasanaeth relái i greu cysylltiad. Mae "byth" yn gwahardd hyn, "gofyn" yn gofyn gyntaf, tra fo "caniatáu" yn ei ganiatáu heb ofyn ###length 3 STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER :Byth +STR_CONFIG_SETTING_USE_RELAY_SERVICE_ASK :Gofyn STR_CONFIG_SETTING_USE_RELAY_SERVICE_ALLOW :Caniatáu STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Efelychu de-glicio: {STRING} @@ -1591,7 +1718,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Galluogi defnyd STR_CONFIG_SETTING_LOADING_INDICATORS :Dangos llwytho: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Dewis a fydd dangosyddion llwytho'n cael eu dangos uwch cerbydau sy'n llwytho neu dadlwytho +STR_CONFIG_SETTING_TIMETABLE_MODE :Unedau amser ar gyfer amserlenni: {STRING} +STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Dewis yr unedau amser a ddefnyddir ar gyfer amserlenni cerbydau ###length 3 +STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Diwrnodau +STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Eiliadau +STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Ticiau STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Dangos cyrraedd a gadael mewn amserlenni: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Dangos amseroedd cyrraedd a gadael rhagdybiedig mewn amserlenni @@ -1613,9 +1745,13 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Cadw'r offer ad STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Cadw'r offer adeiladu pontydd, twneli, a.y.y.b. ar agor wedi eu defnydd STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Tynnu signalau'n ddiofyn wrth adeiladu rheilffordd: {STRING} -STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Tynnu signalau'n ddiofyn wrth adeiladu rheilffordd os ydynt ar y ffordd. Sylwch y gall hyn arwain at ddamwain rheilffordd posibl. +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Tynnu signalau'n ddiofyn wrth adeiladu rheilffordd os ydynt ar y ffordd. Sylwch y gall hyn arwain at ddamwain rheilffordd posibl +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Cyfyngiad cyflymu'r gêm: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Cyfyngu pa mor gyflym mae'r gêm yn mynd pan yn cyflymu'r gêm. Mae 0 yn golygu dim cyfyngiad (pa mor gyflym y gall eich cyfrifiadur fynd). Mae gwerthoedd o dan 100% yn arafu'r gêm i lawr. Mae'r terfyn uchaf yn dibynnu ar briodweddau'ch cyfrifiadur a gall amrywio yn ôl y gêm +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% cyflymder gêm arferol ###setting-zero-is-special +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Dim terfyn (mor gyflym ag y gall eich cyfrifiadur fynd) STR_CONFIG_SETTING_SOUND_TICKER :Stribyn newyddion: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Chwarae sŵn ar gyfer crynodiadau newyddion @@ -1625,9 +1761,11 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Chwarae sŵn ar ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR :Diwedd y flwyddyn: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Diwedd cyfnod: {STRING} ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Chwarae sŵn ar ddiwedd blwyddyn i adlewyrchu perfformiad y cwmni am y flwyddyn o'i gymharu a'r llynedd +STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Chwarae sŵn ar ddiwedd cyfnod gan crynhoi perfformiad y cwmni yn ystod y cyfnod o gymharu efo'r cyfnod blaenorol STR_CONFIG_SETTING_SOUND_CONFIRM :Adeiladu: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Chwarae sŵn wrth adeiladu'n lwyddiannus neu ar weithredoedd eraill @@ -1673,9 +1811,12 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Caniatáu i chw STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Nifer y gweithredoedd cyn diarddel sgriptiau: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Uchafswm y nifer o gamau cyfrifo y gall sgript ei gymeryd mewn un tro +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Defnydd cof uchaf i bob sgript: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Faint o gof y gall sgript unigol ei ddefnyddio cyn y gaiff ei ddiffodd yn orfodol. Gall fod angen cynyddu hyn ar gyfer mapiau mawr +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Dangos y cyfnod rhwng gwasanaethau mewn canrannau: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Pan y galluogir, bydd cerbydau'n ceisio gwasanaeth pan fo'u dibynadwyedd yn disgyn canran penodol o'u dibynadwyedd uchafsymol.{}{}Er enghraifft, os yw dibynadwyedd uchafsymol cerbyd yn 90% a'r ystod gwasanaeth yn 20%, bydd y cerbyg yn ceisio gwasanaeth pan mae'r dibynadwyedd yn cyrraedd 72%.Dewis os y bydd gwasanaethu cerbydau'n digwydd yn ôl yr amser ers y gwasanaeth olaf, neu wrth i'w dibynadwyedd ddisgyn islaw ganran penodol o'r dibynadwyedd uchafsymol +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Pan y galluogir, bydd cerbydau'n ceisio gwasanaeth pan fo'u dibynadwyedd yn disgyn canran penodol o'u dibynadwyedd uchafsymol.{}{}Er enghraifft, os yw dibynadwyedd uchafsymol cerbyd yn 90% a'r ystod gwasanaeth yn 20%, bydd y cerbyg yn ceisio gwasanaeth pan mae'r dibynadwyedd yn cyrraedd 72% STR_CONFIG_SETTING_SERVINT_TRAINS :Ystod gwasanaethu rhagosodedig ar gyfer trenau: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Gosod yr ystod gwasanaethu rhagosodedig ar gyfer cerbydau rheilffordd newydd, os na ddynodir ystod gwasanaethu penodol ar gyfer y cerbyd @@ -1685,13 +1826,19 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Ystod gwasanaet STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Gosod yr ystod gwasanaethu rhagosodedig ar gyfer awyrennau newydd, os na ddynodir ystod gwasanaethu penodol ar gyfer y cerbyd STR_CONFIG_SETTING_SERVINT_SHIPS :Ystod gwasanaethu rhagosodedig ar gyfer llongau: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Gosod yr ystod gwasanaethu rhagosodedig ar gyfer llongau newydd, os na ddynodir ystod gwasanaethu penodol ar gyfer y cerbyd -STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}diwrnod/% +###length 3 +STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Diwrnod{P 0 "" ""} +STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Munud{P 0 "" ""} +STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}% + ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :Analluogwyd STR_CONFIG_SETTING_NOSERVICE :Analluogi gwasanaethau pan fydd torri i lawr wedi ei osod i Ddim: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Pan y galluogir, ni wasanaethir cerbydau os na allent dorri i lawr +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Cosb cyflymder llwytho ar gyfer trenau sy'n hirach na'r orsaf: {STRING} +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Pan y galluogir, bydd trenau sy'n rhy hir i'r orsaf yn llwytho'r arafach na thrên sydd yn ffitio'r orsaf. Nid yw'r gosodiad yma'n effeithio ar lwybro STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Galluogi terfynau cyflymder wagenni: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Pan y galluogir, fe ddefnyddir terfynnau cyflymder pob cerbyd mewn trên pan yn cyfrifo ei gyflymder uchafsymol @@ -1708,6 +1855,8 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Dangos papur ne STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Damweiniau / trychinebau: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Dangos papur newydd pan fo damweiniau neu drychinebau'n digwydd +STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER :Damweiniau cerbydau'r cystadleuaeth: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER_HELPTEXT :Dangos papur newydd am ddamweiniau cerbydau cystadleuwyr STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Gwybodaeth Cwmnïau: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Dangos papur newydd pan fo cwmni newydd yn dechrau, neu pan fo cwmnïau ar fin taro'r wal @@ -1754,10 +1903,17 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Y blwyddyn y ca STR_CONFIG_SETTING_STARTING_YEAR :Blwyddyn dechreuol: {STRING} STR_CONFIG_SETTING_ENDING_YEAR :Sgorio diwedd blwyddyn: {STRING} +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Y flwyddyn y bydd y gêm yn gorffen ar gyfer dibenion sgorio. Ar ddiwedd y flwyddyn yma, bydd sgôr y cwmni'n cael ei gofnodi a bydd y sgôr uchaf yn cael ei arddangos, ond gall y chwaraewyr barhau i chwarae wedi hynny.{}Os yr hyn cyn y blwyddyn dechrau, ni fydd y sgrin sgôr uchaf byth yn cael ei arddangos STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special +STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Byth +STR_CONFIG_SETTING_ECONOMY_TYPE :Math economi: {STRING} +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Mae economi llyfn yn gwneud newidiadau cynhyrchiant yn fwy aml, ac mewn camau llai. Mae economi rhewiedig yn atal newidiadau cynhyrchiant a chau diwydiannau. Efallai ni fydd effaith gan y gosodiadau yma os yw mathau diwydiant yn cael eu darparu gan NewGRF ###length 3 +STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Gwreiddiol +STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Llyfn +STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Rhewiedig STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Canran elw y cymal i'w dalu mewn systemau trosglwyddo: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Y canran o elw a ddyfarnir i'r cymalau rhyngol mewn systemau trosglwyddo, gan rhoi fwy o reolaeth dros yr elw @@ -1774,11 +1930,13 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Gosod y flwyddy STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Cylchu trwy mathau signal: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Dewis pa fathau o signalau i gylchu drwyddynt pan yn Ctrl+clicio ar signal gyda'r offer signal ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Grŵp presennol yn unig STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Pob math gweledol STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Dangos mathau signal: {STRING} STR_CONFIG_SETTING_SIGNAL_GUI_MODE_HELPTEXT :Dewis pa fathau o signal sy'n cael eu dangos yn y bar offer signal ###length 2 +STR_CONFIG_SETTING_SIGNAL_GUI_MODE_PATH :Signalau llwybr yn unig STR_CONFIG_SETTING_SIGNAL_GUI_MODE_ALL_CYCLE_PATH :Pob signal STR_CONFIG_SETTING_TOWN_LAYOUT :Cynllun ffyrdd ar gyfer trefi newydd: {STRING} @@ -1795,8 +1953,8 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Caniatáu i dre STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Caniatáu i drefi adeiladau croesfannau rheilffordd: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Galluogwch y gosodiad yma i ganiatáu i drefi adeiladu croesfannau rheilffordd -STR_CONFIG_SETTING_NOISE_LEVEL :Caniatáu i drefi reoli lefel swn meysydd awyrenau: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Os analluogir y gosodiad yma, gellir cael dau faes awyr ymhob tref. Os y galluogir, fe gyfyngir y nifer o feysydd awyr gan y lefel sŵn mae'r dref am dderbyn, sydd yn dibynnu ar y boblogaeth a maint a phellter y maes awyr +STR_CONFIG_SETTING_NOISE_LEVEL :Cyfyngu gosod meysydd awyr yn ôl lefel sŵn: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Caniatáu i drefi rhwystro adeiladu meysydd awyr yn ôl eu lefel sŵn derbyniol, sydd yn seiliedig ar boblogaeth y dref a maint a phellter y maes awyr. Os yw'r gosodiad yma wedi'i analluogi, bydd trefi ond yn caniatáu dau faes awyr os nad yw agwedd yr awdurdod lleol yn "Bodlon" STR_CONFIG_SETTING_TOWN_FOUNDING :Sefydlu trefi mewn gêm: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Mae galluogi'r gosodiad yma'n caniatáu i chwaraewyr sefydlu trefi newydd yn y gêm @@ -1806,7 +1964,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Caniatáu STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Caniatáu, cynllun tref addasiedig STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Cynhyrchiant cargo tref: {STRING} -STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Faint o gargo sy'n cael ei greu gan dai mewn trefi, o gymharu efo poblogaeth cyfansymiol y dref.{}Tyfiant cwadratig: Mae tref dwywaith y main yn creu pedair gwaith gymaint o deithwyr.{}Tyfiant llinol: Mae tref dwywaith y main yn creu dwywaith gymaint o deithwyr. +STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Faint o gargo sy'n cael ei greu gan dai mewn trefi, o gymharu efo poblogaeth cyfansymiol y dref.{}Tyfiant cwadratig: Mae tref dwywaith y main yn creu pedair gwaith gymaint o deithwyr.{}Tyfiant llinol: Mae tref dwywaith y main yn creu dwywaith gymaint o deithwyr ###length 2 STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Cwadratig (gwreiddiol) STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Llinol @@ -1814,6 +1972,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Llinol STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Gosod coed mewn gêm: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Rheoli ymddangosiad coed ar hap yn ystod y gêm. Gall hyn effeithio ar ddiwydiannau sy'n ddibynnol ar dyfiant coed, megis melinau coed ###length 4 +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Tyfu, ond peidio ymledu {RED}(yn torri'r felin goed) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Tyfu ond dim ond ymledu mewn coedwigoedd lâw +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Tyfu ac ymledu ymhobman +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Peidio tyfu, peidio ymledu {RED}(yn torri'r felin goed) STR_CONFIG_SETTING_TOOLBAR_POS :Safle'r prif far offer: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Lleoliad llorweddol y brif bar offer ar frig y sgrin @@ -1842,8 +2004,11 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Cydraniad uchaf o gorluniau i'w defnyddio: {STRING} +STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Cyfyngu y cyfraniad uchaf a ddefnyddir ar gyfer corluniau. Bydd cyfyngu cydraniad corluniau yn osgoi defnyddio graffigau cydraniad uchel hyn yn oed pan font ar gael. Gall hyn helpu cadw ymddangosiad y gêm yn gyson pan yn defnyddio cymysgedd o ffeiliau GRF gyda a heb graffigau cydraniad uchel ###length 3 STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN :4x +STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_NORMAL :1x STR_CONFIG_SETTING_TOWN_GROWTH :Cyflymder twf tref: {STRING} @@ -1863,31 +2028,34 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Dim STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Lluosydd cychwynol maint dinas: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Maint cymhedrol dinasoedd o gymharu â threfi arferol ar ddechrau'r gêm -STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Cymryd {STRING}{NBSP}eiliad ar gyfer ailgyfrifo'r graff dosraniad +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Diweddaru'r graff dosraniad bob {STRING} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Amser rhwng ailgyfrifiadau o'r graff cyswllt. Mae bob ailgyfrifiad yn cyfrifo'r cynlluniau ar gyfer un cydran o'r graff. Mae hyn yn golygu nad yw gwerth o X yn golygu y bydd y graff gyfan yn cael ei ddiweddaru bob X eiliad, dim ond rhyw gydran ohono. Po fyrraf y gwerth y mwyaf o amser prosesydd y bydd ei angen i'w gyfrifo. Yr hiraf y gwerth y mwyaf yr amser cyn y bydd dosbarthiad cargo yn dechrau ar lwybrau newydd +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Cymryd {STRING} eiliad ar gyfer ailgyfrifo'r graff dosraniad +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Amser a gymerir ar gyfer ailgyfrifo pob cydran o graff cyswllt. Pan fo ailgyfrifiad yn cael ei ddechrau, bydd edefyn yn cael ei ddechrau sy'n cael rhedeg am y nifer yma o eiliadau. Y byrraf yr amser y mwyaf tebygol na fydd yr edefyn wedi gorffen erbyn hyn. Yna bydd y gêm yn aros tan y bydd ("lag"). Yr hiraf yr amser y hiraf y bydd yn cymryd i ddiweddaru dosraniad pan fydd llwybrau'n newid STR_CONFIG_SETTING_DISTRIBUTION_PAX :Dull dosrannu ar gyfer teithwyr: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Mae "cymesur" yn golygu y bydd tua'r un faint o deithwyr yn mynd o orsaf A i orsaf B ac yr aiff o B i A. Mae "anghymesur" yn golygu y gall niferoedd mympwyol fynd yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer teithwyr. +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Mae "cymesur" yn golygu y bydd tua'r un faint o deithwyr yn mynd o orsaf A i orsaf B ac yr aiff o B i A. Mae "anghymesur" yn golygu y gall niferoedd mympwyol fynd yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer teithwyr STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Dull dosrannu ar gyfer post: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Mae "cymesur" yn golygu y bydd tua'r un faint o bost yn cael ei yrru o orsaf A i orsaf B ac y gyrrir o B i A. Mae "anghymesur" yn golygu y gall llwythi mympwyol eu gyrru yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer post. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Mae "cymesur" yn golygu y bydd tua'r un faint o bost yn cael ei yrru o orsaf A i orsaf B ac y gyrrir o B i A. Mae "anghymesur" yn golygu y gall llwythi mympwyol eu gyrru yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer post STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Dull dosrannu ar gyfer llwythi ARFOG: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Mae llwythi ARFOG yn cynnwys trysorau mewn ardaloedd tymherus, diemwntau yn y trofannau, neu aur yn yr is-arctig. Gall NewGRFau newid hyn, Mae "cymesur" yn golygu y bydd tua'r un faint o lwythi'n cael eu gyrru o orsaf A i orsaf B ac y gyrrir o B i A. Mae "anghymesur" yn golygu y gall llwythi mympwyol eu gyrru yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer y llwythi yma. Fe argymhellir eich bod yn dewis anghymesur neu â llaw pan yn chwarae mewn ardal is-arctig, gan na fydd banciau'n gyrru aur yn ôl i gloddfeydd aur. Ar gyfer ardaloedd tymherus neu trofannol gallwch hefyd ddewis cymesur gan y bydd banciau'n gyrru trysorau'n ôl i rai banciau tardd. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Mae llwythi ARFOG yn cynnwys trysorau mewn ardaloedd tymherus, diemwntau yn y trofannau, neu aur yn yr is-arctig. Gall NewGRFau newid hyn, Mae "cymesur" yn golygu y bydd tua'r un faint o lwythi'n cael eu gyrru o orsaf A i orsaf B ac y gyrrir o B i A. Mae "anghymesur" yn golygu y gall llwythi mympwyol eu gyrru yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer y llwythi yma. Fe argymhellir eich bod yn dewis anghymesur neu â llaw pan yn chwarae mewn ardal is-arctig, gan na fydd banciau'n gyrru aur yn ôl i gloddfeydd aur. Ar gyfer ardaloedd tymherus neu trofannol gallwch hefyd ddewis cymesur gan y bydd banciau'n gyrru trysorau'n ôl i rai banciau tardd STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Dull dosrannu ar gyfer llwythi eraill: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Mae "anghymesur" yn golygu y gall llwythi mympwyol eu gyrru yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer y llwythi hyn. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Mae "anghymesur" yn golygu y gall llwythi mympwyol eu gyrru yn y naill cyfeiriad neu'r llall. Mae "â llaw" yn golygu ni fydd dosrannu diofyn yn digwydd ar gyfer y llwythi hyn ###length 3 STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :â llaw STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :anghymesur STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :cymesur STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Manylder dosrannu: {STRING} -STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mae'r gosodiad yma'n pennu faint o amser prosesydd y bydd cyfrifo'r graff cyswllt yn ei gymeryd. Os yw'n cymryd gormod o amser efallai bydd peth oedi ar y gêm. Os ydych yn gosod gwerth isel, fodd bynnag, ni fyddy dosraniad yn fanwl gywir, a gallwch nodi nad yw llwythi'n cael ei yrru i'r mannau y bydddech y disgwyl. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mae'r gosodiad yma'n pennu faint o amser prosesydd y bydd cyfrifo'r graff cyswllt yn ei gymeryd. Os yw'n cymryd gormod o amser efallai bydd peth oedi ar y gêm. Os ydych yn gosod gwerth isel, fodd bynnag, ni fydd y dosraniad yn fanwl gywir, a gallwch nodi nad yw llwythi'n cael ei yrru i'r mannau y byddech y disgwyl STR_CONFIG_SETTING_DEMAND_DISTANCE :Effaith pellter ar y galw am lwythi: {STRING} -STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Os ydych yn gosod at werth yn uwch na 0, bydd y pellter rhwng gorsaf tardd rhyw gargo a cyrchfan posibl B yn dylanwadu ar faint o llwythi a yrrir o A i B. Y pellaf y mae B o A, y lleiaf o gargo a yrrir. Gyda gosodiad uwch, bydd llai o gargo yn cael ei yrru i orsafoedd pell a mwy'n cael ei yrru at orsafoedd agos. +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Os ydych yn gosod at werth yn uwch na 0, bydd y pellter rhwng gorsaf tardd rhyw gargo a cyrchfan posibl B yn dylanwadu ar faint o llwythi a yrrir o A i B. Y pellaf y mae B o A, y lleiaf o gargo a yrrir. Gyda gosodiad uwch, bydd llai o gargo yn cael ei yrru i orsafoedd pell a mwy'n cael ei yrru at orsafoedd agos STR_CONFIG_SETTING_DEMAND_SIZE :Cyfanswm y llwythi'n dychwelyd ar gyfer modd cymesur: {STRING} -STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Bydd gosod hwn at llai na 100% yn gwneud y dosraniad cymesur yn fwy fel yr un anghymesur. Caiff llai o llwythi eu gyrru'n ôl yn orfodol os y bydd peth penodol yn cael ei yrru i orsaf. Gyda gosodiad o 0% bydd y dosraniad cymesur yn ymddwyn fel yr un anghymesur. +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Bydd gosod hwn at llai na 100% yn gwneud y dosraniad cymesur yn fwy fel yr un anghymesur. Caiff llai o llwythi eu gyrru'n ôl yn orfodol os y bydd peth penodol yn cael ei yrru i orsaf. Gyda gosodiad o 0% bydd y dosraniad cymesur yn ymddwyn fel yr un anghymesur STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Llenwi llwybrau byr cyn troi at rhai uwch eu cynhwysedd: {STRING} -STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Yn aml mae mwy nag un llwybr rhwng dwy orsaf. Bydd Cargodist yn llenwi'r llwybr byrraf yn gyntaf, yna'n symyd at yr ail fyrraf nes ei fod yn llawn, ayyb. Fe ystyrir llwybr yn llawn yn ôl amcangyfrif o gynhwysedd y llwybr a'r defnydd a gynllunwyd. Gyda fod pob llwybr wedi ei lenwi, os oes galw o hyd, bydd yn gorlwytho pob llwybr, gan ffafrio'r rhai gyda chynhwysedd uchel. Ni fydd yr algorithm yn amcangyfrif y cynhwysedd yn fanwl gywir. Mae'r gosodiad yma'n eich galluogi i nodi pa mor llawn y dylai llwybr byrrach fod (fel canran) cyn dewis y llwybr nesaf. Gosodwch at llai na 100% i osgoi tagfeydd mewn gorsafoedd oherwydd goramcangyfrif cynhwysedd. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Yn aml mae mwy nag un llwybr rhwng dwy orsaf. Bydd Cargodist yn llenwi'r llwybr byrraf yn gyntaf, yna'n symyd at yr ail fyrraf nes ei fod yn llawn, ayyb. Fe ystyrir llwybr yn llawn yn ôl amcangyfrif o gynhwysedd y llwybr a'r defnydd a gynllunwyd. Gyda fod pob llwybr wedi ei lenwi, os oes galw o hyd, bydd yn gorlwytho pob llwybr, gan ffafrio'r rhai gyda chynhwysedd uchel. Ni fydd yr algorithm yn amcangyfrif y cynhwysedd yn fanwl gywir. Mae'r gosodiad yma'n eich galluogi i nodi pa mor llawn y dylai llwybr byrrach fod (fel canran) cyn dewis y llwybr nesaf. Gosodwch at llai na 100% i osgoi tagfeydd mewn gorsafoedd oherwydd goramcangyfrif cynhwysedd STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unedau cyflymder (tir): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Unedau cyflymder (môr): {STRING} @@ -1947,28 +2115,23 @@ STR_CONFIG_SETTING_ACCOUNTING :Cyfrifo STR_CONFIG_SETTING_VEHICLES :Cerbydau STR_CONFIG_SETTING_VEHICLES_PHYSICS :Ffiseg STR_CONFIG_SETTING_VEHICLES_ROUTING :Llwybro +STR_CONFIG_SETTING_VEHICLES_ORDERS :Gorchmynion STR_CONFIG_SETTING_LIMITATIONS :Cyfyngiadau STR_CONFIG_SETTING_ACCIDENTS :Trychinebau a Damweiniau STR_CONFIG_SETTING_GENWORLD :Cread byd STR_CONFIG_SETTING_ENVIRONMENT :Amgylchedd +STR_CONFIG_SETTING_ENVIRONMENT_TIME :Amser STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Awdurdodau STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Trefi STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Diwydiannau STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Dosraniad cargo +STR_CONFIG_SETTING_ENVIRONMENT_TREES :Coed STR_CONFIG_SETTING_AI :Cystadleuwyr STR_CONFIG_SETTING_AI_NPC :Chwaraewyr Cyfrifiadurol +STR_CONFIG_SETTING_NETWORK :Rhwydwaith -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Llwybrwr ar gyfer trenau: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Llwybrwr i'w ddefnyddio ar gyfer trenau -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Llwybrwr ar gyfer cerbydau ffordd: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Llwybrwr i'w ddefnyddio ar gyfer cerbydau ffordd -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Llwybrwr ar gyfer llongau: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Llwybrwr i'w ddefnyddio ar gyfer llongau STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Troi'n ôl yn awtomatig wrth signalau: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Caniatáu i drenau gwrthdroi wrth signal, os ydynt wedi aros yno am beth amser -###length 2 -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF -STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Argymellir) STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Newid gwerth gosodiad @@ -1994,6 +2157,8 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Methwyd # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Gwall gyda'r gosodiadau fideo... +STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... dim caledwedd graffeg cydnaws wedi ei ddarganfod. Analluogwyd cyflymu caledwedd +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... gyriant caledwedd graffig wedi chwalu'r gêm. Cyflymu caledwedd wedi;i analluogi # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2027,13 +2192,13 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Dewis ti STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Dewis tirwedd trofannol STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Dewis tirwedd teganau -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Dangos dewisiadau'r gêm -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Dangos y tabl sgôr uchaf +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Agor dewisiadau'r gêm +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Agor y tabl sgôr uchaf STR_INTRO_TOOLTIP_HELP :{BLACK}Cael mynediad at ddogfenyddiaeth ac adnoddau ar-lein STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Agor gosodiadau -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Dangos gosodiadau NewGRF +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Agor gosodiadau NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Gwirio am gynnwys newydd neu wedi'i ddiweddaru i'w lwytho i lawr -STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Agor Gosodiadau AI +STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Agor gosodiadau AI STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Agor gosodiadau sgript gêm STR_INTRO_TOOLTIP_QUIT :{BLACK}Gadael 'OpenTTD' @@ -2065,7 +2230,7 @@ STR_HELP_WINDOW_BUGTRACKER :{BLACK}Adrodd N STR_HELP_WINDOW_COMMUNITY :{BLACK}Cymuned # Cheat window -STR_CHEATS :{WHITE}Twyllo +STR_CHEATS :{WHITE}Dewisiadau Bocs Tywod STR_CHEAT_MONEY :{LTBLUE}Cynyddu arian {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Chwarae fel cwmni: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Tarw Dur Hud (chwalu diwydiannau, gwrthrychau nad oes modd eu chwalu): {ORANGE}{STRING} @@ -2076,6 +2241,7 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Golygu u STR_CHEAT_CHANGE_DATE :{LTBLUE}Newid dyddiad: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Newid y flwyddyn bresennol STR_CHEAT_SETUP_PROD :{LTBLUE}Galluogi newid graddfeydd cynhyrchu: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Gosod graddfeydd gorsafoedd ar 100%: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Cynllun Lliw @@ -2085,16 +2251,20 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Dangos c STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Dangos cynllun lliw cerbydau ffordd STR_LIVERY_SHIP_TOOLTIP :{BLACK}Dangos cynllun lliw llongau STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Dangos cynllun lliw awyrennau +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Dangos lliwiau grwpiau trenau STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Dangos lliw grwpiau cerbydau ffordd STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Dangos lliw grwpiau llongau -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Dewiswch brif lliw y cynllun sydd wedi'i ddewis. Bydd Ctrl+Clic yn gosod y lliw yma ar gyfer pob cynllun -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Dewiswch ail liw y cynllun sydd wedi'i ddewis. Bydd Ctrl+Clic yn gosod y lliw yma ar gyfer pob cynllun +STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Dangos lliwiau grwpiau awyrennau +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Dewis brif lliw y cynllun sydd wedi'i ddewis. Ctrl+Clic i osod y lliw yma ar gyfer pob cynllun +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Dewiswch ail liw y cynllun sydd wedi'i ddewis. Ctrl+Clic i osod y lliw yma ar gyfer pob cynllun STR_LIVERY_PANEL_TOOLTIP :{BLACK}Dewiswch gynllun lliw i'w newid, neu nifer o gynlluniau lliw trwy glicio ar CTRL+clic. Cliciwch ar y bocs i doglu defnydd y cynllun +STR_LIVERY_TRAIN_GROUP_EMPTY :Nid oes grwpiau trên wedi eu creu STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :Nid oes grwpiau cerbyd ffordd wedi eu gosod STR_LIVERY_SHIP_GROUP_EMPTY :Nid oes grwpiau llong wedi eu gosod +STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Nid oes grwpiau awyrennau wedi eu creu ###length 23 -STR_LIVERY_DEFAULT :Lifrau cyffredin +STR_LIVERY_DEFAULT :Lifrau rhagosodiad STR_LIVERY_STEAM :Injan Stêm STR_LIVERY_DIESEL :Injan Ddiesel STR_LIVERY_ELECTRIC :Injan Drydan @@ -2178,6 +2348,9 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Newid te # Matches ServerGameType ###length 3 +STR_NETWORK_SERVER_VISIBILITY_LOCAL :Lleol +STR_NETWORK_SERVER_VISIBILITY_PUBLIC :Cyhoeddus +STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY :Gwahoddiad yn unig # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Amlchwaraewr @@ -2194,6 +2367,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Maint ma STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Maint map y gêm{}Cliciwch i drefnu'n ôl ardal STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dyddiadau STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Dyddiad cyfredol +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}awr {NUM}mun +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Amser chwarae +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Amser chwarae pan{}nad oed y gêm wedi'i oedi STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Iaith, fersiwn gweinydd, ayb. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Cliciwch gêm o'r rhestr i'w ddewis @@ -2209,10 +2385,13 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Cyfeiri STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Cod gwahoddiad: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Dyddiad cychwyn: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Dyddiad presennol: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Amser chwarae: {WHITE}{NUM}awr {NUM}mun +STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Sgript Gêm: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Wedi'i Ddiogelu gan Gyfrinair! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}GWEINYDD ALL-LEIN STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}GWEINYDD LLAWN STR_NETWORK_SERVER_LIST_SERVER_BANNED :{SILVER}MAE'R GWEINYDD WEDI'CH RHWYSTRO CHI +STR_NETWORK_SERVER_LIST_SERVER_TOO_OLD :{SILVER}GWEINYDD YN RHY HEN STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}FERSIWN ANGHYDNAWS STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF ANGHYDNAWS @@ -2220,14 +2399,17 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Ymuno â STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Adnewyddu'r gweinydd STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Adnewyddu'r wybodaeth am y gweinydd +STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Chwilio'r wê STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Chwilio'r wê am weinyddion cyhoeddus +STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Chwilio rhwydwaith lleol STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Chwilio'r rhwydwaith lleol am weinyddion STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Ychwanegu gweinydd -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Ychwanegu gweinydd i'r rhestr a gaiff ei wirio bob tro am gemau sy'n rhedeg +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Ychwanegu gweinydd i'r rhestr. Gall fod yn gyfeiriad gweinydd neu god gwahoddiad STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Dechrau gweinydd STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Dechrau eich gweinydd eich hun STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Rhowch eich enw +STR_NETWORK_SERVER_LIST_ENTER_SERVER_ADDRESS :{BLACK}Rhowch gyfeiriad gweinydd neu god gwahoddiad # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Dechrau gêm newydd amlchwaraewr @@ -2237,6 +2419,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Bydd y g STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Gosod cyfrinair STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Diogelwch eich gêm â chyfrinair os nad ydych am i fynediad ato fod yn gyhoeddus +STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Gwelededd: +STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}A yw pobl eraill yn gallu gweld eich gweinydd yn y rhestr gyhoeddus STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} gwestai STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Uchafswm nifer gwesteion: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Dewiswch uchafswm y gwesteion. Does dim rhaid llanw pob slot @@ -2266,25 +2450,42 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Estyn gw STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Datgysylltu STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Mae'r gweinydd wedi'i ddiogelu. Rhowch y cyfrinair. -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Mae'r cwmni wedi'i ddiogelu. rhowch y cyfrinair. # Network company list added strings -STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Rhestr Cleientiaid +STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Chwaraewyr ar-lein +STR_NETWORK_COMPANY_LIST_SPECTATE :Gwylio # Network client list +STR_NETWORK_CLIENT_LIST_CAPTION :{WHITE}Chwaraewyr Ar-lein STR_NETWORK_CLIENT_LIST_SERVER :{BLACK}Gweinydd STR_NETWORK_CLIENT_LIST_SERVER_NAME :{BLACK}Enw +STR_NETWORK_CLIENT_LIST_SERVER_NAME_TOOLTIP :{BLACK}Enw'r gweinydd rydych yn chwarae arno +STR_NETWORK_CLIENT_LIST_SERVER_NAME_EDIT_TOOLTIP :{BLACK}Newid enw eich gweinydd +STR_NETWORK_CLIENT_LIST_SERVER_NAME_QUERY_CAPTION :Enw'r gweinydd +STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY :{BLACK}Gwelededd +STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY_TOOLTIP :{BLACK}A yw pobl eraill yn gallu gweld eich gweinydd yn y rhestr gyhoeddus +STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE :{BLACK}God gwahoddiad STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE_TOOLTIP :{BLACK}Cod gwahoddiad i bobl eraill ymuno a'r gweinydd yma STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE :{BLACK}Math cysylltiad STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP :{BLACK}A yw eich gweinydd y gallu cael ei gyrraedd gan eraill (a sut) +STR_NETWORK_CLIENT_LIST_PLAYER :{BLACK}Chwaraewr STR_NETWORK_CLIENT_LIST_PLAYER_NAME :{BLACK}Enw +STR_NETWORK_CLIENT_LIST_PLAYER_NAME_TOOLTIP :{BLACK}Eich enw chwaraewr +STR_NETWORK_CLIENT_LIST_PLAYER_NAME_EDIT_TOOLTIP :{BLACK}Newid eich enw chwaraewr STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Eich enw chwaraewr -STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Gweithredoedd gweinyddol i'w perfformio ar gyfer y cleient yma +STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Gweithredoedd gweinyddol i'w perfformio ar gyfer y gwestai yma STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Gweithredoedd gweinyddol i'r gwneud ar gyfer y cwmni yma STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Ymuno a'r cwmni yma STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Gyrru neges i'r chwaraewr yma STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP :{BLACK}Gyrru neges i bob chwaraewr yn y cwmni yma STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP :{BLACK}Anfon neges i bob gwyliwr +STR_NETWORK_CLIENT_LIST_SPECTATORS :Gwylwyr +STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(Cwmni newydd) +STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Creu cwmni newydd ac ymuno â hi +STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}Dyma chi +STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Dyma gweinydd y gêm +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} gwestai{P "" ""} - {NUM}/{NUM} cwmni{P "" ""} +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}Nifer y gwesteion sydd wedi eu cysylltu, nifer y cwmnïau ac uchafswm nifer y cwmnïau a ganiateir gan y gweinydd # Matches ConnectionType ###length 5 @@ -2297,13 +2498,11 @@ STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TURN :{BLACK}Trwy rel STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK :Cicio STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN :Rhwystro STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET :Dileu -STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK :Cyfrinair datgloi STR_NETWORK_CLIENT_LIST_ASK_CAPTION :{WHITE}Gweithred gweinydd STR_NETWORK_CLIENT_LIST_ASK_CLIENT_KICK :{YELLOW}Ydych chi'n siŵr eich bod am gicio'r chwaraewr '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_CLIENT_BAN :{YELLOW}Ydych chi'n siwr eich bod chi eisiau rhwystro'r chwaraewr '{STRING}'? STR_NETWORK_CLIENT_LIST_ASK_COMPANY_RESET :{YELLOW}Ydych chi'n siŵr eich bod am ddileu'r cwmni '{COMPANY}'? -STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK :{YELLOW}Ydych chi'n siwr eich bod am ailosod cyfrinair y cwmni '{COMPANY}'? STR_NETWORK_ASK_RELAY_CAPTION :Defnyddi relai? STR_NETWORK_ASK_RELAY_TEXT :{YELLOW}Methwyd creu cysylltiad rhyngoch chi a'r gweinydd '{STRING}'.{}A hoffech osod relai ar gyfer y sesiwn yma trwy '{STRING}'? @@ -2311,22 +2510,18 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Na STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Ia, y tro yma STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Ia, paid a gofyn eto +STR_NETWORK_ASK_SURVEY_CAPTION :Cymryd rhan mewn arolwg awtomatig? +STR_NETWORK_ASK_SURVEY_TEXT :A hoffech gymryd rhan yn yr arolwg awtomatig?{}Bydd OpenTTD yn darlledu arolwg pan yn gadael y gêm.{}Gallwch newid y gosodiad unrhyw bryd o dan "Dewisiadau Gêm". +STR_NETWORK_ASK_SURVEY_PREVIEW :Rhagolwg o'r gwybodaeth arolwg +STR_NETWORK_ASK_SURVEY_LINK :Am yr arolwg a phreifatrwydd +STR_NETWORK_ASK_SURVEY_NO :Na +STR_NETWORK_ASK_SURVEY_YES :Ia STR_NETWORK_SPECTATORS :Gwylwyr -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Peidio cadw'r cyfrinair a roddwyd -STR_COMPANY_PASSWORD_OK :{BLACK}Rhoi'r cyfrinair newydd i'r cwmni -STR_COMPANY_PASSWORD_CAPTION :{WHITE}Cyfrinair cwmni -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Cyfrinair rhagosodedig cwmni -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Defnyddio'r cyfrinair cwmni yma fel y rhagosodiad ar gyfer cwmnïau - # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Ymuno STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Ymuno a chwarae fel y cwmni yma -STR_COMPANY_VIEW_PASSWORD :{BLACK}Cyfrinair -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Diogelwch eich cwmni gyda cyfrinair er mwyn rhwystro rhai heb awdurdod rhag ymuno -STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Gosod cyfrinair cwmni # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Anfon @@ -2339,22 +2534,27 @@ STR_NETWORK_CHAT_TO_COMPANY :[Tîm] i {STRIN STR_NETWORK_CHAT_CLIENT :[Preifat] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Preifat] To {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Pawb] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_EXTERNAL :[{3:STRING}] {0:STRING}: {WHITE}{1:STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}teipiwch destun ar gyfer sgwrs rwydwaith # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Ni ddaethpwyd o hyd i ddyfeisiau rhwydwaith, neu ni chafodd y gêm ei chrynhoi gyda ENABLE_NETWORK -STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Ni atebodd y gweinydd y cais +STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Ni atebodd y gweinydd y cais neu cafodd ei wrthod STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Doedd dim modd cysylltu oherwydd nid oedd y NewGRF yn cyfateb STR_NETWORK_ERROR_DESYNC :{WHITE}Methodd y cydamseru rhwng y rhwydwaith a'r gêm STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Collwyd cysylltiad rhwydwaith y gêm STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Doedd dim modd llwytho'r gêm a gadwyd STR_NETWORK_ERROR_SERVER_START :{WHITE}Methwyd a chychwyn y gweinydd STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Caewyd y cyswllt oherwydd gwall protocol +STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}Nid yw eich enw chwaraewr wedi ei osod. Gall yr enw gael ei osod ar frig y ffenestr Amlchwaraewr +STR_NETWORK_ERROR_BAD_SERVER_NAME :{WHITE}Nid yw eich enw gweinyd wedi ei osod. Gall yr enw gael ei osod ar frig y ffenestr Amlchwaraewr STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Nid y fersiwn y gwestai yn cyfateb i fersiwn y gweinydd STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Cyfrinair anghywir +STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST :{WHITE}Nid ydych ar y rhestr o westai sydd wedi'u caniatáu STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Mae'r gweinydd yn llawn STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Rydych chi wedi'ch gwahardd o'r gweinydd hwn STR_NETWORK_ERROR_KICKED :{WHITE}Cafoch chi eich cicio o'r gêm +STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Rheswm: {STRING} STR_NETWORK_ERROR_CHEATER :{WHITE}Ni chaniateir twyllo ar y gweinydd hwn STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Roeddech yn gyrru gormod o orchmynion i'r gweinydd STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Fe gymeroch ormod o amser i fewnbynnu'r cyfrinair @@ -2366,7 +2566,7 @@ STR_NETWORK_ERROR_INVALID_CLIENT_NAME :{WHITE}Nid yw e STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Colled cysylltiad o bosib STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Am y {NUM} eiliad diwethaf nid oes data wedi cyrraedd o'r gweinydd -###length 21 +###length 22 STR_NETWORK_ERROR_CLIENT_GENERAL :gwall cyffredinol STR_NETWORK_ERROR_CLIENT_DESYNC :gwall dadgydamseru STR_NETWORK_ERROR_CLIENT_SAVEGAME :methwyd llwytho'r map @@ -2378,6 +2578,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :wedi derbyn pac STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :fersiwn anghywir STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :enw eisoes mewn defnydd STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :cyfrinair anghywir +STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST :ddim ar restr caniatáu STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :id-cwmni anghywir yn DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :wedi cael cic gan y gweinydd STR_NETWORK_ERROR_CLIENT_CHEATER :yn ceisio twyllo @@ -2387,6 +2588,7 @@ STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :ni dderbyniwyd STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :goramseriad cyffredinol STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :goramseru wrth lawrlwytho'r map STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :goramseru wrth brosesu'r map +STR_NETWORK_ERROR_CLIENT_INVALID_CLIENT_NAME :enw gwestai annilys # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} @@ -2397,6 +2599,7 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Gêm wedi'i oed STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Gêm wedi'i oedi o hyd ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Gêm wedi'i oedi o hyd ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Gêm wedi'i oedi o hyd ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Gêm wedi'i oedi o hyd ({STRING}, {STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Gêm yn rhedeg eto ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nifer chwaraewyr STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :cysylltu gwesteion @@ -2406,17 +2609,21 @@ STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :yn aros am ddiw STR_NETWORK_MESSAGE_CLIENT_LEAVING :wrthi'n gadael STR_NETWORK_MESSAGE_CLIENT_JOINED :*** Mae {STRING} wedi ymuno â'r gêm -STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** Mae {STRING} wedi ymuno a'r gêm (Gwestai #{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** Mae {STRING} wedi ymuno â chwmni #{2:NUM} +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** Mae {0:STRING} wedi ymuno a'r gêm (Gwestai #{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** Mae {0:STRING} wedi ymuno â chwmni #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** Mae {STRING} wedi ymuno â'r gwylwyr -STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** Mae {STRING} wedi dechrau cwmni newydd (#{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_LEFT :*** Mae {STRING} wedi gadael y gêm ({2:STRING}) -STR_NETWORK_MESSAGE_NAME_CHANGE :*** Mae {STRING} wedi newid ei (h)enw i {STRING} +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** Mae {0:STRING} wedi dechrau cwmni newydd (#{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** Mae {0:STRING} wedi gadael y gêm ({2:STRING}) +STR_NETWORK_MESSAGE_NAME_CHANGE :*** Mae {STRING} wedi newid eu henw i {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** Rhoddodd {0:STRING} {2:CURRENCY_LONG} i {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Fe gaewyd y sesiwn gan y gweinydd STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Mae'r gweinydd yn ailgychwyn...{}Arhoswch... STR_NETWORK_MESSAGE_KICKED :*** Mae {STRING} wedi cael cic gan y gweinydd. Rheswm: ({STRING}) +STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}Methwyd cofrestru'r gweinydd +STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}Mae gweinydd arall gyda'r un cod gwahoddiad wedi cofrestru ei un. Yn newid at math gêm "lleol". +STR_NETWORK_ERROR_COORDINATOR_ISOLATED :{WHITE}Nid yw eich gweinydd yn caniatáu cysylltiadau o bell +STR_NETWORK_ERROR_COORDINATOR_ISOLATED_DETAIL :{WHITE}Ni fydd chwaraewyr eraill yn gallu cysylltu a'ch gweinydd # Content downloading window STR_CONTENT_TITLE :{WHITE}Llawrlwytho cynnwys @@ -2436,7 +2643,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Nid yw c STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Rydych yn gadael OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Mae'r termau ac amodau ar gyfer llawrlwytho cynnwys o wefannau allanolyn amrywio.{}Bydd yn rhaid i chi gyfeirio at y gwefannau allanol ar gyfer cyfarwyddiadau a sut i lwytho'r cynnwys yn OpenTTD.{}A ydych am barhau? STR_CONTENT_FILTER_TITLE :{BLACK}Hidlydd enw/tag: -STR_CONTENT_OPEN_URL :{BLACK}Gwefan +STR_CONTENT_OPEN_URL :{BLACK}Mynd i'r wefan STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Llwytho'r gwefan ar gyfer y cynnwys yma STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Llwytho i lawr STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Dechrau lwytho'r cynnwys a ddewiswyd i lawr @@ -2484,7 +2691,7 @@ STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Methwyd â chysylltu i'r gweinydd cynnwys... -STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Methodd y llwytho i lawr... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Methwyd llawrlwytho... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... dim modd ysgrifennu'r ffeil STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Doedd dim modd datgywasgu'r ffeil @@ -2493,6 +2700,9 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Mae Open STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ia, llawrlwytho'r graffigau STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Na, gadael OpenTTD +STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Methwyd lawrlwytho +STR_MISSING_GRAPHICS_ERROR :{BLACK}Methwyd lawrlwytho graffigau.{}Llawrlwythwch graffigau â llaw. +STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Gadael OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Dewisiadau Tryloywder @@ -2504,6 +2714,7 @@ STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Toglu tr STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Toglu tryloywder ar gyfer pontydd. Ctrl+Clic i gloi STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Toglu tryloywder ar gyfer adeiledau fel goleudai ac antenau. Ctrl+Clic i gloi STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toglu tryloywder ar gyfer gwifrau. Ctrl+Clic i gloi +STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Toglu tryloywder ar gyfer testun llwytho a cost/incwm. Mae Ctrl+Clic yn cloi STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gosod gwrthrychau'n anweledig yn hytrach nac yn dryloyw # Linkgraph legend window @@ -2519,6 +2730,10 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}gorlwythiedig # Linkgraph tooltip +STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}{CARGO_LONG} i'w gludo bob mis o {STATION} i {STATION} ({COMMA}% o'r gallu cludo){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG} i'w gludo bob munud o {STATION} i {STATION} ({COMMA}% o'r gallu cludo){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} i'w gludo'n ôl ({COMMA}% o'r gallu cludo) +STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Amser teithio cyfartalog: {UNITS_DAYS_OR_SECONDS} # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Amlygu ardal ddylanwad @@ -2528,6 +2743,8 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Peidio a STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Amlygu'r ardal fydd yn cael ei ddylanwadu STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Derbyn: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Deunydd crai yn weddill: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Cost cynnal: {GOLD}{CURRENCY_SHORT}/blwyddyn +STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Cost cynnal: {GOLD}{CURRENCY_SHORT}/cyfnod # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Uno gorsaf @@ -2548,13 +2765,13 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Adeiladu Maglef STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Adeiladu trac rheilffordd. Mae Ctrl+Clic yn toglo clirio'r rheilffordd. Mae Shift yn dangos amcangyfrif o'r gost yn unig STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Adeiladu trac gan defnyddio'r modd Awtoreilffordd. Mae Ctrl+Clic yn clirio rheilffordd. Mae Shift yn dangos amcangyfrif o'r gost yn unig STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Adeiladu depo trenau (ar gyfer adeiladu a rhoi gwasanaeth i drenau). Mae Shift yn dangos amcangyfrif o'r gost yn unig -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Newid rheilffordd yn bwynt llwybro. Mae Ctrl yn galluogi uno pwyntiau llwybro, tra fod Shift yn toglo adeiladu/dangos amcangyfrif o'r gost +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Newid rheilffordd yn bwynt llwybro. Ctrl+Clic i ddewis pwynt llwybro i'w uno. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Adeiladu gorsaf reilffordd. Mae Ctrl+Clic yn dewis gorsaf arall i uno. Mae Shift yn dangos amcangyfrif o'r gost yn unig STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Adeiladu signalau rheilffordd. Mae Ctrl+Clic yn adeiladu signalau arddull amgen{}Mae Clic+Llusgo'n llenwi'r trac a ddewisir gyda signalau gyda'r bylchau a ddewiswyd. Mae Ctrl+Clic+Llusgo yn llenwi signalau hyd y gyffordd, gorsaf neu signal nesaf. Mae Shift yn dangos amcangyfrif o'r gost yn unig STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Adeiladu pont reilffordd. Mae Shift dangos amcangyfrif o'r gost yn unig STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Adeiladu twnnel rheilffordd. Mae Shift yn dangos amcangyfrif o'r gost yn unig -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Toglu adeiladu/tynnu ar gyfer traciau, signalau, a pwyntiau llwybro. Wrth ddal Ctrl, caiff cledrau pwyntiau llwybro a gorsafoedd eu tynnu hefyd -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Trosi/Diweddaru math y rheilffordd. Mae Shift yn toglo adeiladu/amcangyfrif y gost +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Toglu adeiladu/tynnu ar gyfer traciau, signalau, a pwyntiau llwybro. Ctrl+Clic i dynnu pwyntiau llwybro a gorsafoedd hefyd +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Trosi/Diweddaru math y rheilffordd. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_RAIL_NAME_RAILROAD :Rheilffordd STR_RAIL_NAME_ELRAIL :rheilffordd drydan @@ -2567,7 +2784,6 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Dewiswch # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Pwynt Llwybro -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Dewis math o bwynt llwybro # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Dewiswch Orsaf Reilffordd @@ -2580,16 +2796,19 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Dewiswch STR_STATION_BUILD_DRAG_DROP :{BLACK}Llusgo a Gollwng STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Adeiladu gorsaf gan ddefnyddio llusgo a gollwng -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Dewiswch y dosbarth o orsaf i'w dangos -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Dewiswch y math o orsaf i'w hadeiladu -STR_STATION_CLASS_DFLT :Gorsaf Ddiofyn + + + +STR_STATION_CLASS_DFLT :Rhagosodiad STR_STATION_CLASS_DFLT_STATION :Gorsaf rhagosodedig +STR_STATION_CLASS_DFLT_ROADSTOP :Gorsaf ffordd rhagosodedig STR_STATION_CLASS_WAYP :Pwyntiau llwybro STR_STATION_CLASS_WAYP_WAYPOINT :Pwynt llwybro rhagosodedig # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Dewis Signal +STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Toglu dangos mathau signal uwch STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Signal Bloc (semaffor){}Dyma'r math mwyaf sylfaenol o signal, sy'n caniatáu un trên yn unig ymhob bloc ar unrhyw adeg STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Signal Mynediad (semaffor){}Gwyrdd cyhyd y bod un neu fwy o signalau gadael yn wyrdd yn yr ardal nesaf o drac. Dangosir coch fel arall STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Signal Gadael (semaffor){}Yn ymddwyn fel signal bloc, ond yn angenrheidiol ar gyfer gweithredu'r lliw cywir ar signalau mynediad a chyfun @@ -2602,7 +2821,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Signal G STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Signal Cyfun (trydan){}Mae'r signal cyfun yn gweithredu fel signal mynediad ac fel signal gadael. Mae hyn yn eich galluogi i adeiladu "coed" o ragsignalau STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Signal Llwybr (trydan){}Mae signal llwybr yn caniatáu i fwy nag un trên symud i mewn i floc signal ar yr un pryd, os oes modd i'r trên gofrestru llwybr clir at fan aros diogel. Gellir pasio signalau llwybro cyffredin o'r ochr gefn STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Signal Llwybr Unffordd (trydan){}Mae signal llwybr yn caniatáu i fwy nag un trên symud i mewn i floc signal ar yr un pryd, os oes modd i'r trên gofrestru llwybr clir at fan aros diogel. Ni ellir pasio signalau llwybro unffordd o'r ochr gefn -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Trosi Signal{}Pan fydd wedi'i ddewis, bydd clicio ar signal sy'n bodoli yn ei drosi i'r math ac amrywiad a ddewiswyd, Mae Shift+Clic yn dangos amcangyfrif o'r gost +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Trosi Signal{}Clicio ar signal sy'n bodoli i'w drosi i'r math ac amrywiad a ddewiswyd, Mae Shift+Clic yn dangos amcangyfrif o'r gost trosi STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dwysedd llusgo signalau STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Cynyddu dwysedd llusgo signalau STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Cynyddu amlder y signalau wrth lusgo @@ -2611,6 +2830,9 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Cynyddu STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Dewiswch Bont Rheilffordd STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Dewiswch Bont Ffordd STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Dewis pont - cliciwch ar y eich dewis i'w hadeiladu +STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING} +STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY} +STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG} STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_BRIDGE_NAME_SUSPENSION_STEEL :Crog, Dur STR_BRIDGE_NAME_GIRDER_STEEL :Hytrawst, Dur @@ -2626,20 +2848,20 @@ STR_BRIDGE_TUBULAR_SILICON :Tiwbaidd, Silic STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Adeiladu Ffyrdd STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Adeiladu Tramffordd STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Adeiladu darn o ffordd. Mae Ctrl+Clic yn toglo clirio'r ffordd. Mae Shift yn dangos amcangyfrif o'r gost yn unig -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Adeiladu darn tramffordd. Mae Ctrl yn toglo adeiladu/codi tramffordd, tra fo Shift yn toglo adeiladu/dangos amcangyfrif o'r gost +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Adeiladu darn tramffordd. Ctrl+Clicio i godi darn tramffordd. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Adeiladu darnau ffordd gan ddefnyddio'r modd Awtoffordd. Mae Ctrl yn toglo adeiladu/clirio ffordd, tra fo Shift yn toglo adeiladu/dangos amcangyfrif o'r gost yn unig STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Adeiladu darn tramffordd gan ddefnyddio'r modd Awtoffordd. Mae Ctrl yn clirio tramffordd. Pwyswch Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Adeiladu depo cerbydau ffordd (ar gyfer adeiladu a gwasanaethu cerbydau ffordd). Mae Shift yn dangos amcangyfrif o'r gost yn unig -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Adeiladu garej cerbyd tram (ar gyfer adeiladu a gwasanaethu cerbydau tram). Mae Shift yn toglo adeiladu/dangos amcangyfrif o'r gost +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Adeiladu depo cerbyd tram (ar gyfer prynu a gwasanaethu cerbydau ). Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Adeiladu gorsaf fysiau. Mae Ctrl+Clic yn dewis gorsaf arall i uno. Mae Shift yn dangos amcangyfrif o'r gost yn unig STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Adeiladu gorsaf tramiau teithwyr. Mae Ctrl+Clic yn dewis gorsaf arall i uno. Mae Shift yn dangos amcangyfrif o'r gost un unig STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Adeiladu bae llwytho lorïau. Mae Ctrl+Clic yn dewis gorsaf arall i uno. Mae Shift yn dangos amcangyfrif o'r gost yn unig STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Adeiladu gorsaf tramiau nwyddau. Mae Ctrl+Clic yn dewis gorsaf arall i uno. Mae Shift i ddangos amcangyfrif o'r gost yn unig STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Gweithredu/dadweithredu ffyrdd un-ffordd STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Adeiladu pont ffordd. Mae Shift yn dangos amcangyfrif o'r gost yn unig -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Adeiladu pont tramffordd. Mae Shift yn toglo adeiladu/amcangyfrif y gost +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Adeiladu pont tramffordd. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Adeiladu twnnel ffordd. Mae Shift yn dangos amcangyfrif o'r gost yn unig -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Adeiladu twnel tramffordd. Mae Shift yn toglo adeiladu/amcangyfrif y gost +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Adeiladu twnel tramffordd. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}toglu adeiladu/clirio ar gyfer adeiladu ffyrdd STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Toglu adeiladu/dileu ar gyfer adeiladu tramffordd STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Trosi/Uwchraddio'r math o ffordd. Pwyswch Shift hefyd i ddangos amcangyfrif o'r gost yn unig @@ -2667,14 +2889,14 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Dewiswch # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Adeiladu Camlesi STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Camlesi -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Adeiladu camlesi. Mae Shift yn toglo adeiladu/dangos amcangyfrif o'r gost -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Adeiladu lociau. Mae Shift yn toglo adeiladu/amcangyfrif y gost -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Adeiladu depo llongau (ar gyfer adeiladu a gwasanaethu llongau). Mae Shift yn toglo adeiladu/dangos amcangyfrif o'r gost -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Adeiladu doc llongau. Mae Ctrl yn galluogi uno gorsafoedd, tra fo Shift yn toglo adeiladu/dangos amcangyfrif o'r gost -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Gosod bwï a ellir ei ddefnyddio fel pwynt llwybro. Mae Shift yn toglo adeiladu/amcangyfrif y gost -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Adeiladu traphont. Mae Shift yn toglo adeiladu/amcangyfrif y gost -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Pennu ardal dŵr.{}Creu camlas, oni bai fod Ctrl yn cael ei ddal i lawr ar lefel y môr, pan fydd yn boddi'r ardal o'i gwmpas -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Creu afonydd +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Adeiladu camlesi. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Adeiladu lociau. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Adeiladu depo llongau (ar gyfer adeiladu a gwasanaethu llongau). Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Adeiladu doc llongau. Ctrl+Clic i ddewis gorsaf arall i ymuno. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Gosod bwï a ellir ei ddefnyddio fel pwynt llwybro. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Adeiladu traphont. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Adeiladu camlas. Ctrl+Clic ar lefel y môr i'w foddi efo dŵr môr yn hytrach na chreu camlas +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Creu afonydd. Ctrl+Clic i ddewis yn ddeiagonal # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Cyfeiriad Depo Llong @@ -2712,15 +2934,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Swn a gy # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Tirweddu -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Gostwng cornel o dir. Mae llusgo'n gostwng y gornel gyntaf a ddewisir ac yna'n lefelu'r ardal a ddewisir i uchder newydd y gornel. Mae Ctrl yn dewis ardal yn ddeiagonal, tra fo Shift yn toglo adeiladu/dangos amcangyfrif o'r gost -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Codi cornel o dir. Mae llusgo'n codi'r gornel gyntaf a ddewisir ac yna'n lefelu'r ardal a ddewisir i uchder newydd y gornel. Mae Ctrl yn dewis ardal yn ddeiagonal, tra fo Shift yn toglo adeiladu/dangos amcangyfrif o'r gost -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Gwastatáu ardal o dir i uchder y gornel gyntaf a ddewisir. Mae Ctrl yn dewis ardal yn ddeiagonal, tra fo Shift yn toglo adeiladu/dangos amcangyfrif o'r gost -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Prynu tir ar gyfer defnydd yn y dyfodol. Mae Ctrl yn dewis ardal yn ddeiagonal, tra fo Shift yn toglo adeiladu/amcangyfrif y gost +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Gostwng cornel o dir. Ctrl+Llusgo i ostwng y gornel gyntaf a ddewisir ac yna'n lefelu'r ardal a ddewisir i uchder newydd y gornel. Ctrl+Clic+Llusgo i ddewis ardal yn ddeiagonal. Hefyd Shift i ddangos amcangyfrif o'r gost yn unig +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Codi cornel o dir. Ctrl+Llusgo i godi'r gornel gyntaf a ddewisir ac yna'n lefelu'r ardal a ddewisir i uchder newydd y gornel. Ctrl+Clic+Llusgo i ddewis ardal yn ddeiagonal. Hefyd Shift i ddangos amcangyfrif o'r gost yn unig +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Gwastatáu ardal o dir i uchder y gornel gyntaf a ddewisir. Ctrl+Clic+Llusgo i ddewis ardal yn ddeiagonal. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Prynu tir ar gyfer defnydd yn y dyfodol. Ctrl+Clic+Llusgo i ddewis ardal yn ddeiagonal. Hefyd Shift i ddangos amcangyfrif o'r gost yn unig # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Dewis Gwrthrych -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Dewisiwch wrthrych i'w hadeiladu. Mae Shift yn toglo adeiladu/dangor amcangyfrif o'r gost -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Dewisiwch dosbarth y gwrthrych i'w hadeiladu STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Rhagolwg o'r gwrthrych STR_OBJECT_BUILD_SIZE :{BLACK}Maint: {GOLD}{NUM} x {NUM} teil @@ -2731,20 +2951,20 @@ STR_OBJECT_CLASS_TRNS :Tyrrau Darlledu STR_PLANT_TREE_CAPTION :{WHITE}Coed STR_PLANT_TREE_TOOLTIP :{BLACK}Dewiswch y math o goeden i'w phlannu. Os oes coeden yno'n barod, bydd hyn yn plannu mwy o goed o fath ar hap STR_TREES_RANDOM_TYPE :{BLACK}Coed o fath ar hap -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Gosod coed o fath ar hap. Mae Shift yn toglo adeiladu/dangos amcangyfrif cost +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Gosod coed o fath ar hap. Ctrl+Clic+Llusgo i ddewis yr ardal yn ddeiagonal. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Coed ar hap STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plannu coed ar hap ar draws y tirwedd STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Arferol -STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plannu coed unigol trwy lusgo ar draws y tirwedd. +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plannu coed unigol trwy lusgo ar draws y tirwedd STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Coedlwyn -STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plannu coedwigoedd bach trwy lusgo ar draws y tirwedd. +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plannu coedwigoedd bach trwy lusgo ar draws y tirwedd STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Coedwig STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plannu coedwigoedd mawr trwy lusgo ar draws y tirwedd # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Cynhyrchu Tirwedd STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Gosod ardaloedd creigiog ar y tirwedd -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Pennu ardal anialwch.{}Dal CTRL i gael gwared ohono +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Pennu ardal anialwch.{}Ctrl+Clic i dynnu'r ardal anialwch STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Cynyddu'r arwynebedd tir i'w godi neu ostwng STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Lleihau'r arwynebedd tir i'w godi neu ostwng STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Cynhyrchu Tir ar Hap @@ -2758,11 +2978,13 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ydych ch # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Cynhyrchu Trefi STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Tref Newydd -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Sefydlu tref newydd. Mae Shift+Clic yn dangos amcangyfrif o'r gost +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Sefydlu tref newydd. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Tref ar hap STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Sefydlu tref mewn safle ar hap STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Llawer o drefi ar hap STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Gorchuddio'r map gyda threfi wedi'i lleoli ar hap +STR_FOUND_TOWN_EXPAND_ALL_TOWNS :{BLACK}Ehangu pob tref +STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}Gwneud i bob tref dyfu ychydig STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Enw tref: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Rhowch enw'r dref @@ -2788,7 +3010,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Grid 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Ar hap # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Ariannu diwydiant newydd +STR_FUND_INDUSTRY_CAPTION :{WHITE}Ariannu Diwydiant STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Dewiswch ddiwydiant o'r rhestr STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Creu diwydiannau ar hap STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Gorchuddio'r map gyda diwydiannau wedi'i lleoli ar hap @@ -2798,17 +3020,20 @@ STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Côst: { STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Mwynchwilio STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Adeiladu STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Ariannu +STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Dileu pob diwydiant +STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Dileu pob diwydiant sydd ar y map ar hyn o bryd +STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Dileu pob diwydiant STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Ydych chi'n siŵr eich bod eisiau dileu pob diwydiant? # Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Cadwyn ddiwydiant ar gyfer diwydiant {STRING} -STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Cadwyn ddiwydiant ar gyfer llwythi {STRING} +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Cadwyn Diwydiant - {STRING} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Cadwyn llwythi - {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Diwydiannau'n creu STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Diwydiannau'n derbyn STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Tai STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Cliciwch ar ddiwydiant i weld ei gyflenwyr a chwsmeriaid STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Cliciwch ar math llwyth i weld ei gyflenwyr a'i chwsmeriaid -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Dangos cadwyn +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Cadwyn Diwydiant STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Dangos diwydiannau sy'n cyflenwi a derbyn llwythi STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Cyfuno a'r map bychan STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Dewis y diwydiannau a ddangosir ar y map bychan hefyd @@ -2819,6 +3044,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Dewis y # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Gwybodath Ardal Tir +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Canoli brif olygfa ar leoliad y teil. Mae Ctrl+Clic yn agor ffenestr olygfa newydd ar leoliad y teil STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cost i'w glirio: {LTBLUE}Amherthnasol STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cost i'w glirio: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Elw o'i glirio: {LTBLUE}{CURRENCY_LONG} @@ -2829,7 +3055,8 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Perchenn STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Perchennog rheilffordd: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Awdurdod Lleol: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Dim -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Cyfeirnodau: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Cyfeirnodau: {LTBLUE}{NUM} x {NUM} x {NUM} +STR_LAND_AREA_INFORMATION_LANDINFO_INDEX :{BLACK}Indecs teil: {LTBLUE}{NUM} ({HEX}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Adeiladwyd/adnewyddwyd: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Dosbarth gorsaf: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Math gorsaf: {LTBLUE}{STRING} @@ -2841,8 +3068,10 @@ STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Llwythi STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Math rheilffordd: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}Math lôn: {LTBLUE}{STRING} +STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}Math tram: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Terfyn cyflymder rheilffordd: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Terfyn cyflymder ffordd: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Terfyn cyflymder tram: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Creigiau @@ -2894,7 +3123,7 @@ STR_LAI_TREE_NAME_CACTUS_PLANTS :Planhigion Cact STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Gorsaf reilffordd STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Awyrendy STR_LAI_STATION_DESCRIPTION_AIRPORT :Maes awyr -STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Ardal llwytho lorïau +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Gorsaf lorïau STR_LAI_STATION_DESCRIPTION_BUS_STATION :Gorsaf fysiau STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Doc llongau STR_LAI_STATION_DESCRIPTION_BUOY :Bwï @@ -2945,11 +3174,11 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Cyfradd Fframiau STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Cyfradd efelychu: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Nifer y ticiau gêm a efelychir bob eiliad. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Nifer y ticiau gêm a efelychir bob eiliad STR_FRAMERATE_RATE_BLITTER :{BLACK}Cyfradd fframiau graffeg: {STRING} -STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Nifer o fframiau fideo a lunir bob eiliad. +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Nifer o fframiau fideo a lunir bob eiliad STR_FRAMERATE_SPEED_FACTOR :{BLACK}Ffactor cyflymder gêm presennol: {DECIMAL}x -STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Pa mor gyflym mae'r gêm yn rhedeg, o gymharu a'r cyflymder i'w ddisgwyl ar gyfradd efelychu arferol. +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Pa mor gyflym mae'r gêm yn rhedeg, o gymharu a'r cyflymder i'w ddisgwyl ar gyfradd efelychu arferol STR_FRAMERATE_CURRENT :{WHITE}Presennol STR_FRAMERATE_AVERAGE :{WHITE}Cymedr STR_FRAMERATE_MEMORYUSE :{WHITE}Cof @@ -3024,6 +3253,7 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: STR_SAVELOAD_FILTER_TITLE :{BLACK}Hidlydd: STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Trosysgrifennu Ffeil STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Ydych chi'n siwr eich bod chi eisiau trosysgrifennu'r ffeil bresennol? +STR_SAVELOAD_DIRECTORY :{STRING} (Cyfeiriadur) STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Plygell rhiant) STR_SAVELOAD_OSKTITLE :{BLACK}Rhowch enw ar gyfer y gêm a gadwyd @@ -3034,24 +3264,39 @@ STR_MAPGEN_MAPSIZE :{BLACK}Maint Ma STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Dewis maint y map mewn teiliau. Bydd y nifer o deiliau sydd ara gael ychydig yn llai STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nifer trefi: +STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Dewis dwysedd y trefi, neu rif addasedig STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Enwau Trefi STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Dewis arddull yr enwau trefi STR_MAPGEN_DATE :{BLACK}Dyddiad: +STR_MAPGEN_DATE_TOOLTIP :{BLACK}Dewis dyddiad dechrau STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nifer diwydiannau: +STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :BLACK}Dewis dwysedd y diwydiannau, neu rif addasedig +STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Copa uchaf: +STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Dewis y copa uchaf y bydd y gêm yn ceisio ei greu, mesurwyd o lefel y môr +STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Cynyddu uchder uchafsymol y copa uchaf ar y map o un +STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Lleihau uchder uchafsymol y copa uchaf ar y map o un STR_MAPGEN_SNOW_COVERAGE :Gorchuddiad eira: +STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Cynyddu gorchudd eira o 10 y cant +STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Lleihau gorchudd eira o 10 y cant +STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_DESERT_COVERAGE :{BLACK}Gorchudd anialwch: STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Cynyddu gorchudd anialwch o 10 y cant STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Lleihau gorchudd anialwch o 10 y cant STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Math Tirwedd: STR_MAPGEN_SEA_LEVEL :{BLACK}Lefel y Môr: +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Dewis lefel y môr STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Afonydd: STR_MAPGEN_SMOOTHNESS :{BLACK}Llyfnder: STR_MAPGEN_VARIETY :{BLACK}Dosbarthiad amrywiaeth: STR_MAPGEN_GENERATE :{WHITE}Cynhyrchu +STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Creu'r byd a dechrau OpenTTD! STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}Gosodiadau NewGRF -STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Dangos gosodiadau NewGRF +STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Agor gosodiadau NewGRF +STR_MAPGEN_AI_SETTINGS :{BLACK}Gosodiadau AI +STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Agor gosodiadau AI STR_MAPGEN_GS_SETTINGS :{BLACK}Gosodiadau sgript gêm +STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Agor gosodiadau sgript gêm ###length 21 STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Saesneg (Gwreiddiol) @@ -3078,6 +3323,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Catalanaidd # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Ymylon mapiau: +STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Dewis ffiniau byd y gêm STR_MAPGEN_NORTHWEST :{BLACK}Gog. Orllewin STR_MAPGEN_NORTHEAST :{BLACK}Gog. Ddwyrain STR_MAPGEN_SOUTHEAST :{BLACK}De Ddwyrain @@ -3090,9 +3336,13 @@ STR_MAPGEN_BORDER_MANUAL :{BLACK}Â Llaw STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Cylchdro Map Uchder: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Enw'r Map Uchder +STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}Enw'r ffeil llun map uchder STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Maint: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}Maint y llun ffynhonnell map uchder. Ar gyfer y canlyniadau gorau, dylai pob ymyl gyd-fynd â hyd ymyl map sydd ar gael yn OpenTTD, fel 256, 512, 1024 ayyb. STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} +STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Uchder brig a ddymunir +STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Copa uchaf STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Gorchuddiad eira (mewn %) STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Gorchudd anialwch (mewn %) STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Newid y flwyddyn gychwyn @@ -3103,6 +3353,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Tir Gwas STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Cynhyrchu Tir Gwastad STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Tir ar hap STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}uchder tir gwastad: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Dewis uchder y tir uwchben lefel y môr STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Symud uchder tir gwastad un yn uwch STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Symud uchder tir gwastad un yn is @@ -3116,10 +3367,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Ydych c STR_GENERATION_PROGRESS :{WHITE}{NUM}% cyflawn STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Cynhyrchu byd +STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Creu tirwedd STR_GENERATION_RIVER_GENERATION :{BLACK}Cynhyrchu afonydd -STR_GENERATION_TREE_GENERATION :{BLACK}Cynhyrchu coed -STR_GENERATION_OBJECT_GENERATION :{BLACK}Cynhyrchu gwrthrych STR_GENERATION_CLEARING_TILES :{BLACK}Cynhyrchu ardaloedd creigiog a chnapiog +STR_GENERATION_TOWN_GENERATION :{BLACK}Creu trefi +STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Creu diwydiant +STR_GENERATION_OBJECT_GENERATION :{BLACK}Cynhyrchu gwrthrych +STR_GENERATION_TREE_GENERATION :{BLACK}Cynhyrchu coed STR_GENERATION_SETTINGUP_GAME :{BLACK}Gosod gêm yn ei le STR_GENERATION_PREPARING_TILELOOP :{BLACK}Rhedeg dolen teiliau STR_GENERATION_PREPARING_SCRIPT :{BLACK}Rhedeg sgript @@ -3131,7 +3385,7 @@ STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Gwybodae STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Ffeiliau NewGRF gweithredol STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Ffeiliau NewGRF anweithredol STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Dewis rhagosodiad: -STR_NEWGRF_FILTER_TITLE :{ORANGE}Llinyn hidlo: +STR_NEWGRF_FILTER_TITLE :{ORANGE}Hidlydd: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Llwytho'r rhagosodiad a ddewiswyd STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Cadw rhagosodiad STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Cadw'r rhestr gyfredol fel rhagosodiad @@ -3171,6 +3425,7 @@ STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :Rhagosodiad (D) STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Gwaddol (W) STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :Gwaddol (W) / 32 did y picsel STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Paramedrau: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER_NONE :Dim STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Dim gwybodaeth newydd ar gael STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Ni ddarganfuwyd ffeil sy'n cyfateb @@ -3188,6 +3443,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Cadw STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Cadw'r rhagosodiad i'r enw a ddewiswyd # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Newid paramedrau graffeg sylfaenol STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Newid paramedrau NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Cau STR_NEWGRF_PARAMETERS_RESET :{BLACK}Ailosod @@ -3204,11 +3460,14 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Arolygu' STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} yn {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Gwrthrych STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Math rheilffordd +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Math ffordd STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramedr newidyn NewGRF 60+x (hecsaddigidol) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alinio corlun {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Alinio corlun: ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Alinio corlun: Gweithred 0xA, {COMMA} ({STRING}:{NUM}) +STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Alinio corlun: Gweithred 0x5, math {HEX}, {COMMA} ({STRING}:{NUM}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Corlun nesaf STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Mynd i'r corlun cyffredin nesaf, gan hepgor unrhyw gorluniau ailliwio/ffont/llidgorluniau, ac amlapio o'r corlun olaf i'r gyntaf STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mynd i gorlun @@ -3217,9 +3476,13 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Corlun b STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Mynd i'r corlun cyffredin blaenorol, gan hepgor unrhyw gorluniau ailliwio/ffont/llidgorluniau, ac amlapio o'r corlun cyntaf i'r olaf STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Cynrychioliad o'r corlun a ddewiswyd. Fe anwybyddir yr aliniad wrth lunio'r corlun STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Symud y corlun, gan newid yr atredau X ac Y. Mae Ctrl+Clic yn symud y corlun wyth uned ar y tro +STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM} ###length 2 +STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Canoli dodiad +STR_SPRITE_ALIGNER_CENTRE_SPRITE :{BLACK}Canol corlun +STR_SPRITE_ALIGNER_CROSSHAIR :{BLACK}Croes STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Ailosod perthyniad STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Ailosod y dodiadau perthynol @@ -3236,16 +3499,17 @@ STR_NEWGRF_ERROR_MSG_WARNING :{RED}Rhybudd: { STR_NEWGRF_ERROR_MSG_ERROR :{RED}Gwall: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Angheuol: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Mae'r NewGRF "{STRING}" wedi dychwelyd gwall angheuol:{}{STRING} +STR_NEWGRF_ERROR_POPUP :{WHITE}Mae'r NewGRF "{STRING}" wedi dychwelyd gwall:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :Ni fydd {1:STRING} yn gweithio gyda'r fersiwn o TTDPatch yr adroddir gan OpenTTD -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Mae {1:STRING} ar gyfer y fersiwn {STRING} o TTD -STR_NEWGRF_ERROR_UNSET_SWITCH :Mae {1:STRING} wedi ei gynllunio i gael ei ddefnyddio gyda {STRING} -STR_NEWGRF_ERROR_INVALID_PARAMETER :Paramedr Annilys ar gyfer {1:STRING}: paramedr {STRING} ({NUM}) -STR_NEWGRF_ERROR_LOAD_BEFORE :Rhaid i {1:STRING} fod wedi ei lwytho cyn {STRING} -STR_NEWGRF_ERROR_LOAD_AFTER :Rhaid i {1:STRING} fod wedi ei lwytho ar ôl {STRING} -STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :Mae {1:STRING} angen OpenTTD fersiwn {STRING} neu'n well +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Mae {1:STRING} ar gyfer y fersiwn {2:STRING} o TTD +STR_NEWGRF_ERROR_UNSET_SWITCH :Mae {1:STRING} wedi ei gynllunio i gael ei ddefnyddio gyda {2:STRING} +STR_NEWGRF_ERROR_INVALID_PARAMETER :Paramedr Annilys ar gyfer {1:STRING}: paramedr {2:STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :Rhaid i {1:STRING} fod wedi ei lwytho cyn {2:STRING} +STR_NEWGRF_ERROR_LOAD_AFTER :Rhaid i {1:STRING} fod wedi ei lwytho ar ôl {2:STRING} +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :Mae {1:STRING} angen OpenTTD fersiwn {2:STRING} neu'n well STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :y ffeil GRF y gynllunio i gyfieithu STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Mae gormod o NewGRFau wedi'u llwytho -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Gallai llwytho {1:STRING} fel NewGRF statig gyda {STRING} achosi dadsyncroneiddio +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Gallai llwytho {1:STRING} fel NewGRF statig gyda {2:STRING} achosi dadsyncroneiddio STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Corlun annisgwyliedig (corlun {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Priodwedd Gweithred 0 anhysbys {4:HEX} (corlun {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Ceisio defnyddio ID annilys (corlun {3:NUM}) @@ -3321,16 +3585,18 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Mynd i'r STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Rhowch enw ar gyfer yr arwydd # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}Trefi STR_TOWN_DIRECTORY_NONE :{ORANGE}- Dim - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Enwau trefi - cliciwch ar enw tref i ganoli'r brif olygfa ar y dref. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y dref +STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Dinas){BLACK} ({COMMA}) +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Enwau trefi - cliciwch ar enw tref i ganoli'r brif olygfa ar y dref. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y dref STR_TOWN_POPULATION :{BLACK}Poblogaeth y Byd: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Dinas) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Poblogaeth: {ORANGE}{COMMA}{BLACK} Tai: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} mis diwethaf: {ORANGE}{COMMA}{BLACK} mwyaf: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}{CARGO_LIST} munud olaf: {ORANGE}{COMMA}{BLACK} mwyaf: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Nwyddau angenrheidiol ar gyfer tyfiant y dref: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Angen {ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ei angen yn y gaeaf @@ -3341,8 +3607,8 @@ STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Tref yn STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Tref yn tyfu bob {ORANGE}{UNITS_DAYS_OR_SECONDS} (wedi ei ariannu) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}{RED}Nid{BLACK} yw'r tref yn tyfu STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Uchafswm swn mewn trefi: {ORANGE}{COMMA}{BLACK} uchafswm: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Canoli'r prif olygfa ar y dref. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y dref -STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Awdurdod lleol +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Canoli'r prif olygfa ar y dref. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y dref +STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Awdurdod Lleol STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Dangos gwybodaeth am yr awdurdod lleol STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}newid enw'r dref @@ -3355,6 +3621,8 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Ailenwi Tref # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Awdurdod lleol {TOWN} +STR_LOCAL_AUTHORITY_ZONE :{BLACK}Parth +STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Dangos parth o fewn ffiniau awdurdod lleol STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Graddfeydd cwmnïau lleol: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY}{COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Gweithredoedd posib: @@ -3374,11 +3642,15 @@ STR_LOCAL_AUTHORITY_ACTION_BRIBE :Llwgrwobrwyo aw ###next-name-looks-similar STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Dechrau ymgyrch hysbyseb bach yn yr ardal, er mwyn denu mwy o deithwyr a llwythi i'ch gorsafoedd.{}Mae'n rhoi hwb dros-dro i sgôr gorsafoedd mewn radiws bach o amgylch canol y dref{}{POP_COLOUR}Cost: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Dechrau ymgyrch hysbyseb gymhedrol yn yr ardal, er mwyn denu mwy o deithwyr a llwythi i'ch gorsafoedd.{}Mae'n rhoi hwb dros-dro i sgôr gorsafoedd mewn radiw gymhedrol o amgylch canol y dref{}{POP_COLOUR}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Dechrau ymgyrch hysbyseb gymhedrol yn yr ardal, er mwyn denu mwy o deithwyr a llwythi i'ch gorsafoedd.{}Mae'n rhoi hwb dros-dro i sgôr gorsafoedd mewn radiws gymhedrol o amgylch canol y dref{}{POP_COLOUR}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Dechrau ymgyrch hysbyseb fawr yn yr ardal, er mwyn denu mwy o deithwyr a llwythi i'ch gorsafoedd.{}Mae'n rhoi hwb dros-dro i sgôr gorsafoedd mewn radiws mawr o amgylch canol y dref{}{POP_COLOUR}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Ariannu ail-adeiladu'r rhwydwaith ffordd drefol.{}Bydd yn achosi tarfu sylweddol i drafnidiaeth ffordd am hyd at 6 mis.{}{POP_COLOUR}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MINUTES :{PUSH_COLOUR}{YELLOW}Ariannu ail-adeiladu'r rhwydwaith ffordd drefol.{}Bydd yn achosi tarfu sylweddol i drafnidiaeth ffordd am hyd at 6 munud.{}{POP_COLOUR}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW} Adeiladu cerflun er clod eich cwmni.{}Mae'n rhoi heb parhaol i sgôr gorsagoeddyn y dref yma.{}{POP_COLOUR}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW} Ariannu adeiladu adeiladau masnachol newydd yn y dref.{}Mae'n rhoi heb dros-dro i tyfiant tref yn y dref yma.{}{POP_COLOUR}Côst: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Llwgrwobrwyo'r awdurdod lleol i wella'ch gradd, ond byddwch mewn perygl o dderbyn côsb sylweddol os cewch chi'ch dal.{}{POP_COLOUR}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Prynu hawliau cludiant cyfyngol mewn tref am 12 mis.{}Nid fydd awdurdodau'r dref yn caniatáu i deithwyr a chargo ddefnyddio gorsafoedd eich cystadleuwyr. Bydd llwgrwobr llwyddiannus yn diddymu'r gontract yma.{}{POP_COLOUR}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Prynu hawliau cludiant cyfyngol mewn tref am 12 munud.{}Nid fydd awdurdodau'r dref yn caniatáu i deithwyr a chargo ddefnyddio gorsafoedd eich cystadleuwyr. Bydd llwgrwobr llwyddiannus yn diddymu'r gontract yma.{}{POP_COLOUR}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Llwgrwobrwyo'r awdurdod lleol i wella'ch gradd a gorffen cyfnod hawliau cyfyngol cystadleuwr, gyda'r perygl o dderbyn cosb sylweddol os y cewch eich dal.{}{POP_COLOUR}Cost: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Amcanion {COMPANY} @@ -3428,7 +3700,7 @@ STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_NONE :{ORANGE}- Dim - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Gwasanaethau sydd eisoes yn derbyn cymhorthdal: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} o {STRING} i {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliciwch ar y gwasanaeth i ganoli'r olygfa ar y diwydiant/tref. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y diwydiant/tref +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliciwch ar y gwasanaeth i ganoli'r olygfa ar y diwydiant/tref. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y diwydiant/tref STR_SUBSIDIES_OFFERED_EXPIRY_DATE :erbyn {DATE_SHORT} STR_SUBSIDIES_OFFERED_EXPIRY_TIME :o fewn {UNITS_MONTHS_OR_MINUTES} STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :tan {DATE_SHORT} @@ -3437,9 +3709,10 @@ STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_O # Story book window STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Llyfr Hanes STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Llyfr Hanes Bydol +STR_STORY_BOOK_SPECTATOR :Llyfr Hanes Bydol STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Tudalen {NUM} -STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Neidio i dudalen benodol dwy ei ddewis o'r cwymplen yma. +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Neidio i dudalen benodol dwy ei ddewis o'r cwymplen yma STR_STORY_BOOK_PREV_PAGE :{BLACK}Blaenorol STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Mynd i'r dudalen blaenorol STR_STORY_BOOK_NEXT_PAGE :{BLACK}Nesaf @@ -3447,14 +3720,20 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Mynd i'r STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Cyfeiriad amcan annilys # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Enwau gorsafoedd - cliciwch ar enw i ganoli'r brif olygfa ar yr orsaf. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad yr orsaf -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Daliwch CTRL i ddewis mwy nag un eitem +STR_STATION_LIST_TOOLTIP :{BLACK}Enwau gorsafoedd - cliciwch ar enw i ganoli'r brif olygfa ar yr orsaf. Ctrl+Clic i agor ffenest golwg newydd ar leoliad yr orsaf +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl+Clic i ddewis mwy nag un eitem STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Gorsaf STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Dim - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Dewis pob cyfleuster STR_STATION_LIST_CARGO_FILTER_ALL_AND_NO_RATING :Bob math cargo a dim graddfa +STR_STATION_LIST_CARGO_FILTER_MULTIPLE :Mathau cargo lluosog +STR_STATION_LIST_CARGO_FILTER_NO_CARGO_TYPES :Dim mathau cargo +STR_STATION_LIST_CARGO_FILTER_ONLY_NO_RATING :Dim ond dim safon cargo +STR_STATION_LIST_CARGO_FILTER_SELECT_ALL :Dewis pob a dim gradd +STR_STATION_LIST_CARGO_FILTER_NO_RATING :Dim safon cargo +STR_STATION_LIST_CARGO_FILTER_EXPAND :Dangos mwy... # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} @@ -3507,7 +3786,7 @@ STR_CARGO_RATING_VERY_GOOD :Da Iawn STR_CARGO_RATING_EXCELLENT :Gwych STR_CARGO_RATING_OUTSTANDING :Rhagorol -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad yr orsaf. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad yr orsaf +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad yr orsaf. Ctrl+Clic i agor ffenest golwg newydd ar leoliad yr orsaf STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Newid enw'r orsaf STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Dangos pob trên sydd â'r orsaf hon yn eu hamserlen @@ -3522,9 +3801,9 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Rhwystro # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad y pwynt llwybro. Mae Ctrl+Clic yn agor ffenest olygfa newydd ar leoliad y pwynt llwybro +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad y pwynt llwybro. Ctrl+Clic i agor ffenest olygfa newydd ar leoliad y pwynt llwybro STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Newid enw pwynt llwybro -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad y bwï. Mae Ctrl+Clic yn agor ffenestr olygfa newydd ar leoliad y bwï +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad y bwï. Ctrl+Clic i agor ffenestr olygfa newydd ar leoliad y bwï STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Newid enw bwï STR_EDIT_WAYPOINT_NAME :{WHITE}Golygu enw pwynt llwybro @@ -3532,8 +3811,11 @@ STR_EDIT_WAYPOINT_NAME :{WHITE}Golygu e # Finances window STR_FINANCES_CAPTION :{WHITE}Cyllid {COMPANY}{BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_YEAR_CAPTION :{WHITE}Blwyddyn +STR_FINANCES_PERIOD_CAPTION :{WHITE}Cyfnod ###length 3 +STR_FINANCES_REVENUE_TITLE :{WHITE}Refeniw STR_FINANCES_OPERATING_EXPENSES_TITLE :{WHITE}Costau Gweithredol STR_FINANCES_CAPITAL_EXPENSES_TITLE :{WHITE}Costau Cyfalaf @@ -3547,22 +3829,28 @@ STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Awyrennau STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Llongau STR_FINANCES_SECTION_INFRASTRUCTURE :{GOLD}Tanadeiledd STR_FINANCES_SECTION_TRAIN_REVENUE :{GOLD}Trenau +STR_FINANCES_SECTION_ROAD_VEHICLE_REVENUE :{GOLD}Cerbydau Ffordd STR_FINANCES_SECTION_AIRCRAFT_REVENUE :{GOLD}Awyrennau +STR_FINANCES_SECTION_SHIP_REVENUE :{GOLD}Llongau STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Llog y Benthyciad STR_FINANCES_SECTION_OTHER :{GOLD}Arall +STR_FINANCES_TOTAL_CAPTION :{WHITE}Cyfanswm STR_FINANCES_NEGATIVE_INCOME :-{CURRENCY_LONG} +STR_FINANCES_ZERO_INCOME :{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :+{CURRENCY_LONG} +STR_FINANCES_PROFIT :{WHITE}Elw STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balans Banc +STR_FINANCES_OWN_FUNDS_TITLE :{WHITE}Arian Personol STR_FINANCES_LOAN_TITLE :{WHITE}Benthyciad STR_FINANCES_INTEREST_RATE :{WHITE}Llog y Benthyciad: {BLACK}{NUM}% STR_FINANCES_MAX_LOAN :{WHITE}Uchafswm Benthyciad: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BANK_BALANCE :{WHITE}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Benthyg {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Cynyddu maint y benthyciad. Mae Ctrl+Clic yn benthyca gymait ag y sydd bosib +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Cynyddu maint y benthyciad. Ctrl+Clic i fenthyca gymaint ag y sydd bosib STR_FINANCES_REPAY_BUTTON :{BLACK}Ad-dalu {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Ad-dalu rhan o'r benthyciad. Mae Ctrl+Clic yn ad-dalu gymaint ag y sydd bosib +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Ad-dalu rhan o'r benthyciad. Ctrl+Clic i ad-dalu gymaint ag y sydd bosib STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Tanadeiledd # Company view @@ -3591,7 +3879,7 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Adeiladu STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Gweld pencadlys cwmni STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Gweld pencadlys y cwmni STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Ail-leoli pencadlys cwmni -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Ailadeiladu pencadlys cwmni mewn man arall am 1% o werth y cwmni. Mae Shift+Clic yn dangos amcangyfrif o'r gost heb adleoli +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Ailadeiladu pencadlys cwmni mewn man arall am 1% o werth y cwmni. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Manylion STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Gweld cyfansymau tanadeiledd manwl STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Rhoi arian @@ -3610,6 +3898,7 @@ STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Newid en STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Enw Cwmni STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Enw Rheolwr +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Rhowch faint o arian yr ydych am ei roi STR_BUY_COMPANY_MESSAGE :{WHITE}Rydyn ni'n chwilio am rywun i gymryd ein cwmni ni drosodd.{}{}Hoffech chi brynu {COMPANY} am {CURRENCY_LONG}? STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Mewn trosfeddiant gelyniaethus o {COMPANY} byddwch yn prynu pob ased, talu i ffwrdd pob benthyciad, a thalu deuflwydd o elw.{}{}Amcangyfrif o'r cyfanswm yw {CURRENCY_LONG}.{}{}A ydych am barhau efo'r trosfeddiant gelyniaethus? @@ -3619,30 +3908,41 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Tanadeil STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Darnau rheilffordd: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signalau STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Darnau ffordd: +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Darnau tram: STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Teiliau dŵr: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Camlesi STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Gorsafoedd: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Teiliau gorsaf STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Meysydd Awyr +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR :{WHITE}{CURRENCY_LONG}/blwyddyn +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/cyfnod # Industry directory -STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Diwydiannau STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Dim - +STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% wedi'i gludo){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} +STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} a {NUM} mwy... -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Enwau diwydiannau - cliciwch ar enw i ganoli'r sgrin ar ddiwydiant. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y diwydiant +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Enwau diwydiannau - cliciwch ar enw i ganoli'r sgrin ar ddiwydiant. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y diwydiant STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Llwythi a dderbynir: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Cargo a gynhyrchir: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Pob math o lwyth +STR_INDUSTRY_DIRECTORY_FILTER_NONE :Dim # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Cynnyrch mis diwethaf: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Cynnyrch y munud olaf: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% wedi'i gludo) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Canoli'r brif olygfa ar y diwydiant. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y diwydiant +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Canoli'r brif olygfa ar y diwydiant. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y diwydiant STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Lefel cynhyrchu: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Mae'r diwydiant wedi datgan ei fod ar fin cau! STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Angen: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Yn cynhyrchu: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Angen: STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{0:STRING}{BLACK}{3:STRING} @@ -3673,16 +3973,17 @@ STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Awyrennau sydd STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Golygu'r rhestr STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Anfon y cyfarwyddiadau at bob cerbyd yn y rhestr STR_VEHICLE_LIST_REPLACE_VEHICLES :Cyfnewid Cerbydau -STR_VEHICLE_LIST_SEND_FOR_SERVICING :Gyrru i dderbyn Gwasanaeth +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Gyrru i dderbyn gwasanaeth STR_VEHICLE_LIST_CREATE_GROUP :Creu grŵp STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Elw eleni: {CURRENCY_LONG} (llynedd: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Elw y cyfnod yma: {CURRENCY_LONG} (cyfnod diwethaf: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Gyrru i Ddepo -STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Gyrru i Ddepo -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Gyrru i Ddepo -STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Gyrru i Awyrendy +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Gyrru i ddepo +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Gyrru i ddepo +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Gyrru i ddepo +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Gyrru at awyrendy STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Clicio i stopio pob cerbyd yn y rhestr STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Clicio i gychwyn pob cerbyd yn y rhestr @@ -3703,11 +4004,13 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Cerbydau ffordd STR_GROUP_DEFAULT_SHIPS :Llongau heb eu grwpio STR_GROUP_DEFAULT_AIRCRAFTS :Awyrenau heb eu grwpio +STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) -STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grŵp - cliciwch ar grŵp i restru pob cerbyd yn y grŵp hwn. Gallwch glico a llusgo grwpiau i drefnu'r hierarchaeth. +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grŵp - cliciwch ar grŵp i restru pob cerbyd yn y grŵp hwn. Gallwch glicio a llusgo grwpiau i drefnu'r hierarchaeth STR_GROUP_CREATE_TOOLTIP :{BLACK}Cliciwch i greu grŵp STR_GROUP_DELETE_TOOLTIP :{BLACK}Dileu'r grŵp a ddewiswyd STR_GROUP_RENAME_TOOLTIP :{BLACK}Ailenwi'r grŵp a ddewiswyd +STR_GROUP_LIVERY_TOOLTIP :{BLACK}Newid lifrau'r grŵp a ddewiswyd STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Cliciwch i amddiffyn y grŵp rhag awtoddisodli bydol. Mae Ctrl+clic hefyd yn amddiffyn is-grwpiau STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Dileu Grŵp @@ -3719,7 +4022,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Dileu pob cerby STR_GROUP_RENAME_CAPTION :{BLACK}Ailenwi grŵp STR_GROUP_PROFIT_THIS_YEAR :Elw eleni: +STR_GROUP_PROFIT_THIS_PERIOD :Elw y cyfnod yma: STR_GROUP_PROFIT_LAST_YEAR :Elw llynedd: +STR_GROUP_PROFIT_LAST_PERIOD :Elw y cyfnod diwethaf: STR_GROUP_OCCUPANCY :Defnydd presennol: STR_GROUP_OCCUPANCY_VALUE :{NUM}% @@ -3731,6 +4036,7 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Cerbydau Monore STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Cerbydau Maglef Newydd STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Cerbydau Ffordd Newydd +STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Cerbydau Tram Newydd # Vehicle availability ###length VEHICLE_TYPES @@ -3761,6 +4067,7 @@ STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Wageni P STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Modd ei ailffitio i: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Pob math o lwyth STR_PURCHASE_INFO_NONE :Dim +STR_PURCHASE_INFO_ENGINES_ONLY :Injans yn unig STR_PURCHASE_INFO_ALL_BUT :Popeth ond{CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Grym Tynnu Uchaf: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Pellter cyrhaeddiad: {GOLD}{COMMA} teil @@ -3768,13 +4075,14 @@ STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Math awy ###length 3 STR_CARGO_TYPE_FILTER_ALL :Pob math o lwyth +STR_CARGO_TYPE_FILTER_FREIGHT :Llwythi STR_CARGO_TYPE_FILTER_NONE :Dim ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Rhestr dewis trenau. Cliciwch ar gerbyd am wybodaeth. Mae Ctrl+Clicio'n toglu cuddio'r math cerbyd -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Rhestr dewis cerbydau ffordd. Cliciwch ar gerbyd am wybodaeth. Mae Ctrl+Clicio'n toglu cuddio'r math cerbyd -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Rhestr ddewis llongau. Cliciwch ar long am wybodaeth. Mae Ctrl+Clicio'n toglu cuddio'r math llong -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Rhestr ddewis awyrennau. Cliciwch ar awyren am wybodaeth. Mae Ctrl+Clicio'n toglu cuddio'r math awyren +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Rhestr dewis cerbydau trên. Cliciwch ar gerbyd am wybodaeth. Ctrl+Clic i ddangos/cuddio'r math yma o gerbyd +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Rhestr dewis cerbydau ffordd. Cliciwch ar gerbyd am wybodaeth. Ctrl+Clic i ddangos/cuddio'r math yma o gerbyd +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Rhestr ddewis llongau. Cliciwch ar long am wybodaeth. Ctrl+Clicio i ddangos/cuddio'r math llong yma +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Rhestr ddewis awyrennau. Cliciwch ar awyren am wybodaeth. Ctrl+Clicio i ddangos/cuddio'r math yma o awyren ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Prynu Cerbyd @@ -3789,12 +4097,16 @@ STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Prynu ac STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Prynu ac Ailffitio Awyrennau ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r cerbyd trên sydd wedi'i amlygu. Mae Shift+Clic yn dangos amcangyfrif o'r gost -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r cerbyd ffordd sydd wedi'i amlygu. Mae Shift+Clic yn dangos amcangyfrif o'r gost -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r llong sydd wedi'i hamlygu. Mae Shift+Clic yn dfangos amcangyfrif o'r gost -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r awyren sydd wedi'i hamlygu. Mae Shift+Clic yn dangos amcangyfrif o'r gost +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r cerbyd trên sydd wedi'i amlygu. Mae pwyso Shift hefyd yn dangos amcangyfrif o'r gost yn unig +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r cerbyd ffordd sydd wedi'i amlygu. Mae pwyso Shift hefyd yn ddangos amcangyfrif o'r gost yn unig +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r llong sydd wedi'i hamlygu. Mae pwyso Shift hefyd yn dangos amcangyfrif o'r gost yn unig +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r awyren sydd wedi'i hamlygu. Hefyd pwyso Shift i ddangos amcangyfrif o'r gost yn unig ###length VEHICLE_TYPES +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Prynu ac ail-ffitio'r cerbyd trên sydd wedi'i amlygu. Mae pwyso Shift hefyd yn dangos amcangyfrif o'r gost yn unig +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Prynu ac ail-ffitio'r cerbyd ffordd sydd wedi'i amlygu. Mae pwyso Shift hefyd yn dangos amcangyfrif o'r gost yn unig +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Prynu ac ail-ffitio'r llong sydd wedi'i amlygu. Mae pwyso Shift hefyd yn dangos amcangyfrif o'r gost yn unig +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Prynu ac ail-ffitio'r awyren sydd wedi'i amlygu. Mae pwyso Shift hefyd yn dangos amcangyfrif o'r gost yn unig ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Ailenwi @@ -3844,7 +4156,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} ce STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trenau - cliciwch ar y trên am wybodaeth, llusgwch gerbyd i'w ychwanegu neu i'w dynnu o'r trên. Daliwch Ctrl i symyd pob cerbyd y tu ôl hefyd +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trenau - llusgwch gerbyd efo'r botwm chwith i'w ychwanegu neu i'w dynnu o drên, de-gliciwch am wybodaeth. Ctrl+Clic i wneud hyn ar gyfer y gerbydres sy'n dilyn STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Cerbydau - cliciwch ar gerbyd am wybodaeth STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Llongau - cliciwch ar long am wybodaeth STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Awyrennau - cliciwch ar awyren am wybodaeth @@ -3886,16 +4198,16 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Dyblygu STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Dyblygu Awyren ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Bydd hyn yn prynu copi o'r trên gan gynnwys pob cerbyd. Cliciwch ar y botwm hwn ac yna ar drên sydd tu fewn neu tu allan i'r depo. Bydd Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Bydd hyn yn adeiladu copi o gerbyd ffordd. Cliciwch ar y botwm hwn ac yna ar gerbyd sydd tu fewn neu tu allan i'r depo. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost heb brynnu -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Bydd hyn yn adeiladu copi o long. Cliciwch ar y botwm hwn ac yna ar long sydd tu fewn neu tu allan i'r depo. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Bydd hyn yn adeiladu copi o awyren. Cliciwch ar y botwm hwn ac yna ar awyren sydd tu fewn neu tu allan i'r awyrendy. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Prynu copi o'r trên gan gynnwys pob cerbyd. Cliciwch ar y botwm hwn ac yna ar drên tu fewn neu tu allan i ddepo. Ctrl+Clic i rannu'r gorchmynion. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Prynu copi o gerbyd ffordd. Cliciwch ar y botwm hwn ac yna ar gerbyd sydd tu fewn neu tu allan i ddepo. Ctrl+Clic i rannu gorchmynion. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Prynu copi o long. Cliciwch ar y botwm hwn ac yna ar long sydd tu fewn neu tu allan i ddepo. Ctrl+Clic i rannu gorchmynion. Hefyd Shift i ddangos amcangyfrif o'r gost yn unig +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Prynu copi o awyren. Cliciwch ar y botwm hwn ac yna ar awyren sydd tu fewn neu tu allan i awyrendy. Ctrl+Clic i rannu gorchmynion. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Canoli'r prif olygfa ar leoliad y depo trên. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y depo -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad y depo cerbyd ffordd. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y depo -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad depo'r llong. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y depo -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Canoli'r prif olygfa ar leoliad yr awyrendy. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad yr awyrendy +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Canoli'r prif olygfa ar leoliad y depo trên. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y depo +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad y depo cerbyd ffordd. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y depo +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad depo'r llong. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y depo +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Canoli'r prif olygfa ar leoliad yr awyrendy. Ctrl+Clic i agor ffenest golwg newydd ar leoliad yr awyrendy ###length VEHICLE_TYPES STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Dangos rhestr o bob trên gyda'r depo presennol yn eu gorchmynion @@ -3940,6 +4252,7 @@ STR_ENGINE_PREVIEW_COST_MAX_SPEED :Cost: {CURRENCY STR_ENGINE_PREVIEW_SPEED_POWER :Cyflymder: {VELOCITY} Pŵer: {POWER} STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Cyflymder: {VELOCITY} Pŵer: {POWER} Grym Tynnu Uchaf: {FORCE} STR_ENGINE_PREVIEW_TYPE :Math awyren: {STRING} +STR_ENGINE_PREVIEW_TYPE_RANGE :Math awyren: {STRING} Pellter hedfan: {COMMA} teil STR_ENGINE_PREVIEW_RUNCOST_YEAR :Cost Rhedeg: {CURRENCY_LONG}/blwyddyn STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Cost Rhedeg: {CURRENCY_LONG}/cyfnod STR_ENGINE_PREVIEW_CAPACITY :Cynhwysedd: {CARGO_LONG} @@ -3976,9 +4289,11 @@ STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Newid rh STR_REPLACE_ENGINES :Injanau STR_REPLACE_WAGONS :Wagenni STR_REPLACE_ALL_RAILTYPE :Pob cerbyd rheilffordd +STR_REPLACE_ALL_ROADTYPE :Pob cerbyd ffordd ###length 2 STR_REPLACE_HELP_RAILTYPE :{BLACK}Dewiswch y math o reilffordd yr hoffech chi ddisodli injans ar ei gyfer +STR_REPLACE_HELP_ROADTYPE :{BLACK}Dewiswch y math o ffordd yr hoffech ddisodli injans ar ei gyfer ###next-name-looks-similar STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dangoswch pa injan (os unrhyw) y mae'r injan ar y chwith yn cael ei disodli gyda @@ -3988,30 +4303,37 @@ STR_REPLACE_MONORAIL_VEHICLES :Cerbydau Monore STR_REPLACE_MAGLEV_VEHICLES :Cerbydau Maglef STR_REPLACE_ROAD_VEHICLES :Cerbydau Ffordd +STR_REPLACE_TRAM_VEHICLES :Cerbydau Tramffordd STR_REPLACE_REMOVE_WAGON :{BLACK}Tynnu wagenni: ({STRING}): {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Gwneud i awtoddisodli gadw hyd y trên yr un peth drwy dynnu wagenni (gan ddechrau yn y blaen), os byddai newid yr injan yn gwneud y trên yn hirach +STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Ctrl+Clic i weithredu ar is-grwpiau hefyd # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} ###length VEHICLE_TYPES +STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad trên. Clic dwbl i ddilyn y trên yn y brif olygfa. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y trên +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad cerbyd. Clic dwbl i ddilyn y cerbyd yn y brif olygfa. Ctrl+Clic i agor ffenest golwg newydd ar leoliad y cerbyd +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad llong. Clic dwbl i ddilyn y llong yn y brif olygfa Ctrl+Clic i agor ffenest golwg newydd ar leoliad y llong +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Canoli'r brif olygfa ar leoliad awyren. Clic dwbl i ddilyn yr awyren yn y brif olygfa. Ctrl+Clic i agor ffenest golwg newydd ar leoliad yr awyren ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Anfon trên i'r depo. Bydd CTRL+clic yn rhoi gwasanaeth iddo'n unig -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Anfon cerbyd i'r depo. Bydd CTRL+clic yn rhoi gwasanaeth iddo'n unig -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Gyrru'r llong i ddepo. Bydd CTRL+clic yn rhoi gwasanaeth iddo'n unig -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Anfon awyren to awyrendy. Bydd CTRL+click yn rhoi gwasanaeth iddo'n unig +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Anfon trên i'r depo. Ctrl+Clic i roi gwasanaeth yn unig +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Anfon cerbyd i'r depo. Ctrl+Clic i roi gwasanaeth yn unig +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Gyrru'r llong i ddepo. Ctrl+Clic i roi gwasanaeth yn unig +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Anfon awyren at awyrendy. Ctrl+Clic i roi gwasanaeth yn unig ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Bydd hyn yn adeiladu copi o'r trên gan gynnwys pob un o'i gerbydau. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Bydd hyn yn adeiladu copi o'r cerbyd ffordd. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Bydd hyn yn adeiladu copi o'r llong. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Bydd hyn yn adeiladu copi o'r awyren. Mae Ctrl+Clic yn rhannu'r gorchmynion, tra fo Shift+Clic yn dangos amcangyfrif o'r gost +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Prynu copi o'r trên gan gynnwys pob un o'i gerbydau. Ctrl+Clic i rannu'r gorchmynion. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Prynu copi o'r cerbyd ffordd. Ctrl+Clic i rannu'r gorchmynion. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Prynu copi o'r llong. Ctrl+Clic i rannu'r gorchmynion. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Prynu copi o'r awyren. Ctrl+Clic i rannu'r gorchmynion. Pwyso Shift hefyd i ddangos amcangyfrif o'r gost yn unig STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Gorfodi trên i barhau heb fod signal yn ei glirio STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Gwrthdroi cyfeiriad trên STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Gorfodi cerbyd i droi rownd +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Canoli'r brif olygfa ar gyrchfan y gorchymyn. Ctrl+Clic i agor ffenestr olygfa newydd ar gyrchfan y gorchymyn ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Ailffitio trên i gario llwyth o fath gwahanol @@ -4032,28 +4354,34 @@ STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Dangos m STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Dangos manylion awyren ###length VEHICLE_TYPES +STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Gweithred presennol trên - clicio i stopio/cychwyn trên +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Gweithred presennol cerbyd - clicio i stopio/cychwyn cerbyd +STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Gweithred presennol llong - clicio i stopio/cychwyn llong +STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Gweithred presennol awyren - clicio i stopio/cychwyn awyren # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Llwytho / Dadlwytho STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Gadael +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Yn aros i ddad-glystru STR_VEHICLE_STATUS_CRASHED :{RED}Wedi crashio! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Torri lawr STR_VEHICLE_STATUS_STOPPED :{RED}Wedi stopio -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Yn dod at aros, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} - Yn dod at aros STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Dim Pŵer STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Aros am lwybr clir STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Rhy bell i'r cyrchfan nesaf -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Mynd tua {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Dim gorchmynion, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Mynd tua {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Mynd tua {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Mynd am wasanaeth yn {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Mynd tua {0:STATION} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Dim gorchmynion +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Mynd tua {0:WAYPOINT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Mynd tua {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Gwasanwethu yn {0:DEPOT} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Dad-glystru a gwasanaethu yn {0:DEPOT} -STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Methu cyrraedd {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Methu cyrraedd {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}Methu cyrraedd {DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}Methu cyrraedd {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Methu cyrraedd {0:STATION} +STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Methu cyrraedd {0:WAYPOINT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Methu cyrraedd {0:DEPOT} +STR_VEHICLE_STATUS_CANNOT_REACH_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Methu cyrraedd {0:DEPOT} # Vehicle stopped/started animations ###length 2 @@ -4075,7 +4403,8 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Enwi awy STR_VEHICLE_INFO_AGE :{COMMA} blwyddyn ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} blwyddyn ({COMMA}) -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Oed: {LTBLUE}{STRING}{BLACK} Cost Rhedeg: {LTBLUE}{CURRENCY_LONG}/bl +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Oed: {LTBLUE}{STRING}{BLACK} Cost Rhedeg: {LTBLUE}{CURRENCY_LONG}/blwyddyn +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Oed: {LTBLUE}{STRING}{BLACK} Cost Rhedeg: {LTBLUE}{CURRENCY_LONG}/cyfnod STR_VEHICLE_INFO_MAX_SPEED :{BLACK}cyflymder uchaf: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Cyflym. uchaf: {LTBLUE}{VELOCITY} {BLACK}Math awyren: {LTBLUE}{STRING} @@ -4085,24 +4414,34 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Pwys: {L STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Elw eleni: {LTBLUE}{CURRENCY_LONG} (llynedd: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Elw eleni: {LTBLUE}{CURRENCY_LONG} (Elw llynedd : {CURRENCY_LONG}) {BLACK}Perfformiad isafsymol: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :Elw y cyfnod yma: {LTBLUE}{CURRENCY_LONG} (cyfnod diwethaf: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Elw'r cyfnod yma: {LTBLUE}{CURRENCY_LONG} (cyfnod diwethaf: {CURRENCY_LONG}) {BLACK}Perfformiad isaf:: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Dibynadwyedd: {LTBLUE}{COMMA}% {BLACK}Toriadau ers gwasanaeth olaf: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Codi: {LTBLUE}{NUM}{BLACK} Pris: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Cynhwysedd: {LTBLUE}Dim{STRING} -STR_VEHICLE_INFO_CAPACITY :{BLACK}Cynhwysedd: {LTBLUE}{CARGO_LONG}{3:STRING} -STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Cynhwysedd: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY :{BLACK}Cynhwysedd: {LTBLUE}{0:CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Cynhwysedd: {LTBLUE}{0:CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Cynhwysedd: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Credydau Trosglwyddo: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Bwlch rhwng gwasanaeth: {LTBLUE}{COMMA}{NBSP}diwrnod{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Ysbaid gwasanaethu: {LTBLUE}{COMMA}{NBSP}munud(P "" ""){BLACK} {STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Bwlch rhwng gwasanaethu: {LTBLUE}{COMMA}%{BLACK} {STRING} +STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Gwasanaeth diwethaf: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Gwasanaeth diwethaf: {LTBLUE}{NUM} munud{P "" ""} yn ôl +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Cynyddu'r ysbaid gwasanaeth o 10 diwrnod. Mae Ctrl+Clic yn cynyddu'r ysbaid o 5 diwrnod +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Cynyddu'r ysbaid gwasanaeth o 5 munud. Mae Ctrl+Clic yn cynyddu'r ysbaid o 1 funud +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Cynyddu'r ysbaid gwasanaeth o 10 y cant. Mae Ctrl+Clic yn cynyddu'r ysbaid o 5 y cant STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Lleihau ysbaid gwasanaeth o 10 diwrnod. Mae Ctrl+Clic yn lleihau'r ysbaid gwasanaeth o 5 diwrnod STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Lleihau ysbaid gwasanaeth o 5 munud. Mae Ctrl+Clic yn lleihau'r ysbaid gwasanaeth o 1 munud STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Lleihau ysbaid gwasanaeth o 10 y cant. Mae Ctrl+Clic yn lleihau'r ysbaid gwasanaeth o 5 y cant STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Newid dull ystod gwasanaethu STR_VEHICLE_DETAILS_DEFAULT :Rhagosodedig +STR_VEHICLE_DETAILS_DAYS :Diwrnod +STR_VEHICLE_DETAILS_MINUTES :Munudau STR_VEHICLE_DETAILS_PERCENT :Canran ###length VEHICLE_TYPES @@ -4116,8 +4455,8 @@ STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Gwerth: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Cyfanswm cynhwysedd cludo'r trên hwn: -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Gwag STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} o {STATION} @@ -4141,7 +4480,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}bellach STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Cynhwysedd newydd: {GOLD}{CARGO_LONG}{}{BLACK}Incwm drwy ailffitio: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Cynhwysedd newydd: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cost ailffitio: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Cynhwysedd newydd: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Incwm drwy ailffitio: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Dewisiwch y cerbydau i ailffitio. Mae llusgo'r llygoden yn galluogi dewis sawl cerbyd. Mae clicio ar wagle'n dewis y cerbydres gyfan. Mae Ctrl+Clic yn dewis cerbyd a phob un ar ei hôl +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Dewisiwch y cerbydau i ailffitio. Clic+Llusgo i ddewis sawl cerbyd. Clicio ar wagle i ddewis y cerbyd gyfan. Ctrl+Clic i ddewis cerbyd a'r cerbydres sy'n dilyn ###length VEHICLE_TYPES STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Dewiswch fath o lwyth i'r trên ei gario @@ -4166,7 +4505,7 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Amserlen STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Newid i'r golwg amserlen -STR_ORDERS_LIST_TOOLTIP :{BLACK}Rhestr orchmynion - cliciwch orchymyn i'w amlygu. Mae Ctrl+Clic yn sgrolio i gyrchfan yr orchymyn +STR_ORDERS_LIST_TOOLTIP :{BLACK}Rhestr gorchmynion - cliciwch orchymyn i'w amlygu. Ctrl+Clic i sgrolio i gyrchfan y gorchymyn STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} @@ -4205,9 +4544,14 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Llwythi ar gael STR_ORDER_DROP_GO_ALWAYS_DEPOT :Mynd bob tro STR_ORDER_DROP_SERVICE_DEPOT :Gwasanaethu os oes angen STR_ORDER_DROP_HALT_DEPOT :Stopio +STR_ORDER_DROP_UNBUNCH :Dad-glystru # Depot action tooltips, one per vehicle type ###length VEHICLE_TYPES +STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Dewis y weithred i'w gymryd yn y depo yma +STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Dewis y weithred i'w gymryd yn y depo yma +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Dewis y weithred i'w gymryd yn y depo yma +STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Dewis y weithred i'w gymryd yn yr awyrendy yma ###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Data cerbyd i seilio'r naid arno @@ -4228,9 +4572,9 @@ STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Sut i gy STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :yn hafal i STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ddim yn hafal i STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :yn llai na -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :yn llai na neu'n fwy na +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :yn llai na neu'n hafal i STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :yn fwy na -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :yn fwy neu'n llai na +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :yn fwy neu'n hafal i STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :yn wir STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :yn anghywir @@ -4238,20 +4582,20 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK} Y gwert STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Rhowch y gwerth i'w gymharu'n ei erbyn STR_ORDERS_SKIP_BUTTON :{BLACK}Hepgor -STR_ORDERS_SKIP_TOOLTIP :{BLACK}hepgor y gorchymyn cyfredol, a chychwyn y nesaf +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Hepgor y gorchymyn cyfredol, a chychwyn y nesaf. Ctrl+Clicio i hepgor at y gorchymyn a ddewisir STR_ORDERS_DELETE_BUTTON :{BLACK}Dileu STR_ORDERS_DELETE_TOOLTIP :{BLACK}Dileu y gorchymyn sydd wedi'i amlygu STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Dileu pob gorchymyn STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Peidio â rhannu -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Peidio â rhannu rhestr gorchmynion. Mae Ctrl+Clic hefyd yn dileu holl orchmynion y cerbyd hwn +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Peidio â rhannu rhestr gorchmynion. Ctrl+Clic i ddileu holl orchmynion y cerbyd hwn hefyd STR_ORDERS_GO_TO_BUTTON :{BLACK}Mynd i STR_ORDER_GO_TO_NEAREST_DEPOT :Mynd i'r depo agosaf STR_ORDER_GO_TO_NEAREST_HANGAR :Mynd i'r awyrendy agosaf STR_ORDER_CONDITIONAL :Naid gorchymyn amodol STR_ORDER_SHARE :Rhannu gorchmynion -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Mewnosod gorchymyn newydd cyn yr orchymyn a amlygwyd, neu greu ar ddiwedd y rhestr. Mae Ctrl yn gwneud gorchymynion orsaf yn rhai 'llwyth llawn unrhyw nwyddau', gorchymynion pwyntiau llwybro 'heb aros' a gorchmynion depot 'gwasanaethu'. Mae 'Rhannu gorchmynion' neu Ctrl yn galluogi i'r cerbyd yma rannu gorchmynion gyda'r cerbyd a ddewisir. Mae clicio ar gerbyd yn copïo gorchmynion o'r cerbyd hwnnw. Mae gorchymyn depo'n analluogi gwasanaethu diofyn ar gyfer y cerbyd +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Mewnosod gorchymyn newydd cyn yr orchymyn a amlygwyd, neu greu ar ddiwedd y rhestr. Ctrl+Clic ar orsaf ar gyfer 'llwyth llawn unrhyw nwyddau', ar bwynt llwybro i wyrdroi'r gosodiad 'heb aros', neu ar ddepot ar gyfer 'dad-glystru'. Clicio ar gerbyd arall i gopïo ei orchmynion neu Ctrl+Clic i rannu gorchmynion. Mae gorchymyn depo'n analluogi gwasanaethu diofyn y cerbyd STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Dangos pob cerbydau sy'n rhannu'r amserlen hon @@ -4277,6 +4621,7 @@ STR_ORDER_REFIT_ORDER :(Ailffitio i {S STR_ORDER_REFIT_STOP_ORDER :(Ailfitio i {STRING} a stopio) STR_ORDER_STOP_ORDER :(Stopio) +STR_ORDER_WAIT_TO_UNBUNCH :(aros i ddad-glystru) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Methu defnyddio gorsaf){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4354,33 +4699,40 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Mae'r ce STR_TIMETABLE_STATUS_LATE :{BLACK}Mae'r cerbyd hwn yn rhedeg {STRING} yn hwyr ar hyn o bryd STR_TIMETABLE_STATUS_EARLY :{BLACK}Mae'r cerbyd hwn yn rhedeg {STRING} yn gynnar ar hyn o bryd STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Nid yw'r amserlen yma wedi dechrau +STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Bydd yr amserlen yma'n dechrau am {STRING} +STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Bydd yr amserlen yma'n dechrau mewn {COMMA} eiliad +STR_TIMETABLE_START :{BLACK}Dechrau Amserlen +STR_TIMETABLE_START_TOOLTIP :{BLACK}Dewis pryd fydd yr amserlen yn dechrau. Ctrl+Clic i ddosbarthu dechrau pob cerbyd yn ôl eu trefn perthynol, os yw'r gorchymyn wedi ei amserlennu'n llwyr +STR_TIMETABLE_START_SECONDS_QUERY :Eiliadau nes i'r amserlen ddechrau STR_TIMETABLE_CHANGE_TIME :{BLACK}Newid Amser -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Newid faint o amser y dylai'r gorchymyn a amlygwyd ei gymryd +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Newid faint o amser y dylai'r gorchymyn a amlygwyd ei gymryd. Ctrl+Clic i osod yr amser ar gyfer pob gorchymyn STR_TIMETABLE_CLEAR_TIME :{BLACK}Clirio Amser -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Clirio faint o amser y dylai'r gorchymyn a amlygwyd ei gymryd. +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Clirio'r amser ar gyfer y gorchymyn a amlygwyd. Ctrl+Clic i glirio'r amser ar gyfer pob gorchymyn STR_TIMETABLE_CHANGE_SPEED :{BLACK}Newid Terfyn Cyflymder -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Newid cyflymder teithio uchafsymol y gorchymyn a amlygwyd +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Newid cyflymder teithio uchafsymol y gorchymyn a amlygwyd. Ctrl+Clic i osod y cyflymder ar gyfer bob gorchymyn STR_TIMETABLE_CLEAR_SPEED :{BLACK}Clirio Terfyn Cyflymder -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Clirio cyflymder teithio uchafsymol y gorchymyn a amlygwyd +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Clirio cyflymder teithio uchafsymol y gorchymyn a amlygwyd. Ctrl+Clic i glirio'r cyflymder ar gyfer bob gorchymyn STR_TIMETABLE_RESET_LATENESS :{BLACK}Ailosod Mesurydd Hwyrni -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Ailosod y mesurydd hwyrni, fel y bydd y cerbyd ar amser +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Ailosod y mesurydd hwyrni, fel y bydd y cerbyd ar amser. Ctrl+Clic i ailosod y grŵp cyfan fel yn bydd y cerbyd hwyraf ar amser a'r gweddill yn gynnar STR_TIMETABLE_AUTOFILL :{BLACK}Awtolenwi -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Llenwch yr amserlen yn awtomatig gyda gwerthoedd o'r daith nesaf (Ctrl+Clic er mwyn ceisio cadw amserau aros) +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Llenwi yr amserlen yn awtomatig gyda gwerthoedd o'r daith nesaf. Ctrl+Clic i geisio cadw amserau aros STR_TIMETABLE_EXPECTED :{BLACK}Disgwylir STR_TIMETABLE_SCHEDULED :{BLACK}Amserlenwyd STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Newid rhwng yr amser a ddisgwylir a'r amserlen STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY} STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} eiliad +STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} eiliad # Date window (for timetable) @@ -4408,9 +4760,9 @@ STR_AI_DEBUG_MATCH_CASE :{BLACK}Cydweddu STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Toglo cydweddu priflythrennu tra'n cymharu negeseuon log AI gyda'r llinyn torri STR_AI_DEBUG_CONTINUE :{BLACK}Parhau STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Dadoedi a rhedeg yr AI -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Gweld allbwn dadnamu'r AI yma +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Gweld allbwn dadnamu'r AI yma. Ctrl+Clic i'w agor mewn ffenest newydd STR_AI_GAME_SCRIPT :{BLACK}Game Script -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Gwirio'r log Game Script +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Gwirio'r log sgript gêm. Mae Ctrl+Clic yn ei agor mewn ffenest newydd STR_ERROR_AI_NO_AI_FOUND :Ni ganfuwyd AI addas i lwytho.{}AI ffug yw hwn na wnai unrhyw beth.{}Gallwch lawrlwytho sawl AI drwy'r system 'Cynnwys Arlein' STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Mae sgript a oedd yn rhedeg wedi chwalu. A fyddwch cystad ag adrodd am hyn i awdur yr sgript ynghyd â sgrin-gipiad o'r Ffenestr Ddadnamu AI/Sgript Gêm @@ -4459,11 +4811,17 @@ STR_AI_LIST_CANCEL :{BLACK}Canslo STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Peidio newid y sgript STR_SCREENSHOT_CAPTION :{WHITE}Creu ciplun +STR_SCREENSHOT_SCREENSHOT :{BLACK}Ciplun arferol +STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Ciplun wedi'i fwyhau'n llawn +STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Ciplun mwyhad rhagosodedig STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Ciplun map cyfan +STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Ciplun map uchder +STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Ciplun map bychan # Script Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Paramedrau STR_AI_SETTINGS_CAPTION_AI :AI +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Sgript Gêm STR_AI_SETTINGS_CLOSE :{BLACK}Cau STR_AI_SETTINGS_RESET :{BLACK}Ailosod STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} @@ -4519,9 +4877,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Amcangyf STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Mae'r gêm wrthi'n cael ei chadw,{}Arhoswch nes y bydd y broses wedi'i chwblhau! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Methodd yr Awtogadw STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Methu darllen y gyriant -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Methwyd â Chadw Gêm{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Methwyd â chadw gêm... STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Methu Dileu Ffeil -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Methwyd â Llwytho Gêm{}{STRING} +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Methwyd â llwytho gêm.. STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Gwall mewnol: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Mae'r gêm a gadwyd wedi torri - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Mae'r gêm a gadwyd wedi ei chadw mewn fersiwn ddiweddarach @@ -4556,6 +4914,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Dim ond STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Ciplun anferth STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Bydd gan y ciplun faint o {COMMA} x {COMMA} pcsel. Gall cymeryd peth amser i greu'r ciplun. A ydych am barhau? +STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Map uchder wedi ei gadw'n llwyddiannus fel '{STRING}'. Copa uchaf yw {NUM} STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Cadwyd y ciplun yn llwyddiannus fel '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Methodd y ciplun! @@ -4614,7 +4973,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Methu pr STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Methu adeiladu pencadlys cwmni... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Methu adeiladu unrhyw drefi +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Methu adeiladu unrhyw drefi... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Methu ailenwi tref... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Methu adeiladu tref yma... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Methu ehangu'r dref... @@ -4631,6 +4990,7 @@ STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... gorm STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Doedd dim modd cynhyrchu diwydiannau... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Ni ellir adeiladu {STRING} yma... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Does dim modd adeiladu diwydiant o'r math hwn yma... +STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}Methu mwynchwilio'r diwydiant... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... rhy agos i ddiwydiant arall STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... rhaid adeiladu tref yn gyntaf STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... un yn unig a ganiateir ym mhob tref @@ -4645,6 +5005,8 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... dim STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... gellir ei adeiladu uwchben yr eirlin yn unig STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... gellir ei adeiladu islaw i'r eirlin yn unig +STR_ERROR_PROSPECTING_WAS_UNLUCKY :{WHITE}Yn anlwcus, methodd y mwyngloddio ; triwch eto +STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}Nid oedd mannau addas ar gyfer mwynchwilio'r diwydiant yma STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nid oedd manau addas ar gyfer diwydiannau '{STRING}' STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Newidwch y paramedrau cynhyrchu map er mwyn cael map gwell @@ -4729,12 +5091,18 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Methu do STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :math depo anghywir # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... gellid ond cael un gorchymyn dad-glystru +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... methu defnyddio gorchmynion llwyth llawn pan fo cerbyd hefo gorchymyn dad-glystru +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... methu dad-glystru cerbyd hefo gorchymyn llwyth llawn +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... methu defnyddio gorchmynion amodol pan fo cerbyd hefo gorchymyn dad-glystru +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... methu dad-glystru cerbyd hefo gorchymyn amodol # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Aeth gormod o amser heibio i allu adnewyddu {VEHICLE} STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ni weithredwyd unrhyw reolau awtogyfnewid/adnewyddu STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(terfyn arian) STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Nid yw'r cerbyd newydd yn gallu cario {STRING} +STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Ni all cerbyd newydd ailffitio yn ngorchymyn {NUM} # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Cyfuniad trac amhosib @@ -4743,6 +5111,7 @@ STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Dim trac STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Rhaid tynnu'r trac rheilffordd yn gyntaf STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Mae'r ffordd yn ffordd un-ffordd, neu wedi'i blocio STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Ni chaniateir croesfannau ar y cledrau yma +STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Ni chaniateir croesfannau ar gyfer y math yma o ffordd STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Methu adeiladu signalau yma... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Methu adeiladu trac rheilffordd yma... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Methu tynnu trac rheilffordd oddi yma... @@ -4762,8 +5131,10 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Methu cl STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Methu dileu tramffordd oddi yma... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... nid oes ffordd yno STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... nid oes tramffordd yno +STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Methu trosi'r math ffordd yma... STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Methu trosi'r math tram yma... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Dim lôn addas +STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Dim tramffordd addas # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Methu adeiladu camlesi yma... @@ -4810,6 +5181,7 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Gwrthryc STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... pencadlys cwmni yn y ffordd STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Does dim modd prynu'r darn yma o dir... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... rydych chi eisoes yn berchen arno! +STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}... terfyn adeiladu gwrthrychau wedi'i gyrraedd # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Methu creu grŵp @@ -4850,14 +5222,14 @@ STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Methu en ###length VEHICLE_TYPES STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Methu cychwyn/stopio trên... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Methu aros/dechrau'r cerbyd ffordd... -STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}methu cychwyn/stopio llong... +STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}methu stopio/cychwyn llong... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Methu stopio/cychwyn awyren... ###length VEHICLE_TYPES STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Methu gyrru trên i depo... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Methu gyrru cerbyd i'r depo... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Methu gyrru llong i ddepo... -STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Methu gyrru awyren i awyrendy... +STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Methu gyrru awyren at awyrendy... ###length VEHICLE_TYPES STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Methu prynnu cerbyd rheilffordd... @@ -4882,12 +5254,18 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Methu ne STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... cerbyd wedi ei ddinistrio +STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}... nid yw bob cerbyd yn unfath STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ni fydd cerbydau ar gael o gwbl STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Newid eich ffurfweddiad NewGRF STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Dim cerbydau ar gael eto STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Dechreuwch gêm newydd wedi {DATE_SHORT} neu defnyddiwch NewGRF sy'n darparu cerbydau cynnar +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Dim mathau lôn a adeiledir gan drefi ar gael +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Newid eich ffurfweddiad NewGRF +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Dim mathau lôn a adeiledir gan drefi ar gael eto +STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Dechreuwch gêm newydd wedi {DATE_SHORT} neu defnyddiwch NewGRF sy'n darparu mathau lôn a adeiledir gan drefi yn gynnar + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Does dim modd gwneud i drên basio signal pan fo perygl... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Methu gwrthdroi'r trên... @@ -4909,6 +5287,7 @@ STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Does dim STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... ni all y cerbyd fynd i bob gorsaf STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... ni all y cerbyd fynd i'r orsaf honno STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... ni all cerbyd sy'n rhannu'r gorchymyn hwn fynd i'r orsaf honno +STR_ERROR_CAN_T_COPY_ORDER_VEHICLE_LIST :{WHITE}... nid oes gan bob cerbyd yn un gorchmynion STR_ERROR_CAN_T_SHARE_ORDER_VEHICLE_LIST :{WHITE}... nid yw bob cerbyd yn rhannu gorchmynion STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Does dim modd rhannu'r rhestr gorchmynion... @@ -4918,16 +5297,25 @@ STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... rhy STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... nid yw o fewn cyrraedd yr awyren # Extra messages which go on the third line of errors, explaining why orders failed +STR_ERROR_NO_RAIL_STATION :{WHITE}Nid oes gorsaf rheilffordd +STR_ERROR_NO_BUS_STATION :{WHITE}Nid oes gorsaf fysiau STR_ERROR_NO_TRUCK_STATION :{WHITE}Nid oes gorsaf lorïau +STR_ERROR_NO_DOCK :{WHITE}Nid oes doc +STR_ERROR_NO_AIRPORT :{WHITE}Nid oes maes awyr/hofrenfa STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Nid oes gorsafoedd gyda math ffordd cydnaws STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Nid oes gorsafoedd gyda math tram cydnaws +STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Nid oes arosfannau addas ar gyfer cerbydau cymalog.{}Mae cerbydau ffordd cymalog angen arosfan gyrru-trwodd, nid arosfan trol'n ôl STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Nid yw'r awyren yma'n gallu glanio yn yr hofrenfa yma STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Nid yw'r hofrennydd yma'n gallu glanio yn y maes awyr yma +STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Nid oes pwynt llwybro rheilffordd +STR_ERROR_NO_BUOY :{WHITE}Nid oes bwi # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Methu amserlennu cerbyd... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Dim ond mewn gorsafoedd y gall cerbydau aros STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Nid yw'r cerbyd hwn yn galw yn yr orsaf hon +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... amserlen anghhyflawn +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... amserlen heb ddechrau eto # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... gormod o arwyddion @@ -5034,10 +5422,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :Cloddfa Siwgr ##id 0x6000 STR_SV_EMPTY : STR_SV_UNNAMED :Dienw -STR_SV_TRAIN_NAME :Trên {COMMA} -STR_SV_ROAD_VEHICLE_NAME :Cerbyd Ffordd {COMMA} -STR_SV_SHIP_NAME :Llong {COMMA} -STR_SV_AIRCRAFT_NAME :Awyren {COMMA} +STR_SV_TRAIN_NAME :Trên #{COMMA} +STR_SV_ROAD_VEHICLE_NAME :Cerbyd Ffordd #{COMMA} +STR_SV_SHIP_NAME :Llong #{COMMA} +STR_SV_AIRCRAFT_NAME :Awyren #{COMMA} ###length 27 STR_SV_STNAME :{STRING} @@ -5346,6 +5734,7 @@ STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZERO STR_FORMAT_COMPANY_NUM :(Cwmni {COMMA}) STR_FORMAT_GROUP_NAME :Grŵp {COMMA} +STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} ###length 2 @@ -5372,6 +5761,7 @@ STR_UNKNOWN_STATION :gorsaf anhysbys STR_DEFAULT_SIGN_NAME :Arwydd STR_COMPANY_SOMEONE :rhywun +STR_SAVEGAME_DURATION_REALTIME :{NUM}awr {NUM}mun STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Gwyliwr, {1:STRING} @@ -5405,7 +5795,13 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}m +STR_CURRENCY_SHORT_GIGA :{NBSP}bn +STR_CURRENCY_SHORT_TERA :{NBSP}tn + STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} @@ -5418,6 +5814,9 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} +STR_JUST_STRING4 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/language.h b/src/language.h index 8068bdb328..c67df2bda1 100644 --- a/src/language.h +++ b/src/language.h @@ -38,8 +38,8 @@ struct LanguagePackHeader { /** Decimal separator */ char digit_decimal_separator[8]; uint16_t missing; ///< number of missing strings. - byte plural_form; ///< plural form index - byte text_dir; ///< default direction of the text + uint8_t plural_form; ///< plural form index + uint8_t text_dir; ///< default direction of the text /** * Windows language ID: * Windows cannot and will not convert isocodes to something it can use to @@ -52,7 +52,7 @@ struct LanguagePackHeader { uint8_t newgrflangid; ///< newgrf language id uint8_t num_genders; ///< the number of genders of this language uint8_t num_cases; ///< the number of cases of this language - byte pad[3]; ///< pad header to be a multiple of 4 + uint8_t pad[3]; ///< pad header to be a multiple of 4 char genders[MAX_NUM_GENDERS][CASE_GENDER_LEN]; ///< the genders used by this translation char cases[MAX_NUM_CASES][CASE_GENDER_LEN]; ///< the cases used by this translation @@ -108,6 +108,6 @@ extern std::unique_ptr _current_collator; #endif /* WITH_ICU_I18N */ bool ReadLanguagePack(const LanguageMetadata *lang); -const LanguageMetadata *GetLanguage(byte newgrflangid); +const LanguageMetadata *GetLanguage(uint8_t newgrflangid); #endif /* LANGUAGE_H */ diff --git a/src/league_base.h b/src/league_base.h index b43db4ac1f..1799b92cf3 100644 --- a/src/league_base.h +++ b/src/league_base.h @@ -20,7 +20,7 @@ bool IsValidLink(Link link); typedef Pool LeagueTableElementPool; extern LeagueTableElementPool _league_table_element_pool; -typedef Pool LeagueTablePool; +typedef Pool LeagueTablePool; extern LeagueTablePool _league_table_pool; diff --git a/src/league_gui.cpp b/src/league_gui.cpp index 696d0fe14c..fb62d49375 100644 --- a/src/league_gui.cpp +++ b/src/league_gui.cpp @@ -9,7 +9,6 @@ #include "stdafx.h" #include "league_gui.h" - #include "company_base.h" #include "company_gui.h" #include "gui.h" @@ -22,7 +21,9 @@ #include "town.h" #include "viewport_func.h" #include "window_gui.h" + #include "widgets/league_widget.h" + #include "table/strings.h" #include "table/sprites.h" @@ -69,12 +70,12 @@ private: if (!this->companies.NeedRebuild()) return; this->companies.clear(); + this->companies.reserve(Company::GetNumItems()); for (const Company *c : Company::Iterate()) { this->companies.push_back(c); } - this->companies.shrink_to_fit(); this->companies.RebuildDone(); } @@ -85,7 +86,7 @@ private: } public: - PerformanceLeagueWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + PerformanceLeagueWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->InitNested(window_number); this->companies.ForceRebuild(); @@ -128,7 +129,7 @@ public: } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_PLT_BACKGROUND) return; @@ -140,11 +141,11 @@ public: this->ordinal_width += WidgetDimensions::scaled.hsep_wide; // Keep some extra spacing uint widest_width = 0; - uint widest_title = 0; - for (uint i = 0; i < lengthof(_performance_titles); i++) { - uint width = GetStringBoundingBox(_performance_titles[i]).width; + StringID widest_title = STR_NULL; + for (auto title : _performance_titles) { + uint width = GetStringBoundingBox(title).width; if (width > widest_width) { - widest_title = i; + widest_title = title; widest_width = width; } } @@ -155,14 +156,14 @@ public: for (const Company *c : Company::Iterate()) { SetDParam(0, c->index); SetDParam(1, c->index); - SetDParam(2, _performance_titles[widest_title]); + SetDParam(2, widest_title); widest_width = std::max(widest_width, GetStringBoundingBox(STR_COMPANY_LEAGUE_COMPANY_NAME).width); } this->text_width = widest_width + WidgetDimensions::scaled.hsep_indent * 3; // Keep some extra spacing - size->width = WidgetDimensions::scaled.framerect.Horizontal() + this->ordinal_width + this->icon.width + this->text_width + WidgetDimensions::scaled.hsep_wide; - size->height = this->line_height * MAX_COMPANIES + WidgetDimensions::scaled.framerect.Vertical(); + size.width = WidgetDimensions::scaled.framerect.Horizontal() + this->ordinal_width + this->icon.width + this->text_width + WidgetDimensions::scaled.hsep_wide; + size.height = this->line_height * MAX_COMPANIES + WidgetDimensions::scaled.framerect.Vertical(); } void OnGameTick() override @@ -199,16 +200,16 @@ static constexpr NWidgetPart _nested_performance_league_widgets[] = { EndContainer(), }; -static WindowDesc _performance_league_desc(__FILE__, __LINE__, +static WindowDesc _performance_league_desc( WDP_AUTO, "performance_league", 0, 0, WC_COMPANY_LEAGUE, WC_NONE, 0, - std::begin(_nested_performance_league_widgets), std::end(_nested_performance_league_widgets) + _nested_performance_league_widgets ); void ShowPerformanceLeagueTable() { - AllocateWindowDescFront(&_performance_league_desc, 0); + AllocateWindowDescFront(_performance_league_desc, 0); } static void HandleLinkClick(Link link) @@ -292,12 +293,12 @@ private: for (uint i = 0; i != elements.size(); i++) { auto *lte = elements[i]; if (i > 0 && elements[i - 1]->rating != lte->rating) rank = i; - this->rows.emplace_back(std::make_pair(rank, lte)); + this->rows.emplace_back(rank, lte); } } public: - ScriptLeagueWindow(WindowDesc *desc, LeagueTableID table) : Window(desc) + ScriptLeagueWindow(WindowDesc &desc, LeagueTableID table) : Window(desc) { this->table = table; this->BuildTable(); @@ -358,7 +359,7 @@ public: } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_SLT_BACKGROUND) return; @@ -384,18 +385,18 @@ public: if (!show_icon_column) this->icon_size.width = 0; else this->icon_size.width += WidgetDimensions::scaled.hsep_wide; - size->width = this->rank_width + this->icon_size.width + this->text_width + this->score_width + WidgetDimensions::scaled.framerect.Horizontal() + WidgetDimensions::scaled.hsep_wide * 2; - size->height = this->line_height * std::max(3u, (unsigned)this->rows.size()) + WidgetDimensions::scaled.framerect.Vertical(); + size.width = this->rank_width + this->icon_size.width + this->text_width + this->score_width + WidgetDimensions::scaled.framerect.Horizontal() + WidgetDimensions::scaled.hsep_wide * 2; + size.height = this->line_height * std::max(3u, (unsigned)this->rows.size()) + WidgetDimensions::scaled.framerect.Vertical(); if (!lt->header.empty()) { SetDParamStr(0, lt->header); - this->header_height = GetStringHeight(STR_JUST_RAW_STRING, size->width - WidgetDimensions::scaled.framerect.Horizontal()) + WidgetDimensions::scaled.vsep_wide; - size->height += header_height; + this->header_height = GetStringHeight(STR_JUST_RAW_STRING, size.width - WidgetDimensions::scaled.framerect.Horizontal()) + WidgetDimensions::scaled.vsep_wide; + size.height += header_height; } else this->header_height = 0; if (!lt->footer.empty()) { SetDParamStr(0, lt->footer); - size->height += GetStringHeight(STR_JUST_RAW_STRING, size->width - WidgetDimensions::scaled.framerect.Horizontal()) + WidgetDimensions::scaled.vsep_wide; + size.height += GetStringHeight(STR_JUST_RAW_STRING, size.width - WidgetDimensions::scaled.framerect.Horizontal()) + WidgetDimensions::scaled.vsep_wide; } } @@ -434,17 +435,17 @@ static constexpr NWidgetPart _nested_script_league_widgets[] = { EndContainer(), }; -static WindowDesc _script_league_desc(__FILE__, __LINE__, +static WindowDesc _script_league_desc( WDP_AUTO, "script_league", 0, 0, WC_COMPANY_LEAGUE, WC_NONE, 0, - std::begin(_nested_script_league_widgets), std::end(_nested_script_league_widgets) + _nested_script_league_widgets ); void ShowScriptLeagueTable(LeagueTableID table) { if (!LeagueTable::IsValidID(table)) return; - AllocateWindowDescFront(&_script_league_desc, table); + AllocateWindowDescFront(_script_league_desc, table); } void ShowFirstLeagueTable() diff --git a/src/league_type.h b/src/league_type.h index 335edd78b3..8954d66e5f 100644 --- a/src/league_type.h +++ b/src/league_type.h @@ -11,7 +11,7 @@ #define LEAGUE_TYPE_H /** Types of the possible link targets. */ -enum LinkType : byte { +enum LinkType : uint8_t { LT_NONE = 0, ///< No link LT_TILE = 1, ///< Link a tile LT_INDUSTRY = 2, ///< Link an industry diff --git a/src/linkgraph/demands.cpp b/src/linkgraph/demands.cpp index b164f46ae6..851d82f82a 100644 --- a/src/linkgraph/demands.cpp +++ b/src/linkgraph/demands.cpp @@ -2,6 +2,7 @@ #include "../stdafx.h" #include "demands.h" +#include "../core/math_func.hpp" #include #include "../safeguards.h" @@ -207,23 +208,26 @@ void DemandCalculator::CalcDemand(LinkGraphJob &job, Tscaler scaler) int32_t supply = scaler.EffectiveSupply(job[from_id], job[to_id]); assert(supply > 0); - /* Scale the distance by mod_dist around max_distance */ - int32_t distance = this->max_distance - (this->max_distance - - (int32_t)DistanceMaxPlusManhattan(job[from_id].base.xy, job[to_id].base.xy)) * - this->mod_dist / 100; + constexpr int32_t divisor_scale = 16; + + int32_t scaled_distance = this->base_distance; + if (this->mod_dist > 0) { + const int32_t distance = DistanceMaxPlusManhattan(job[from_id].base.xy, job[to_id].base.xy); + /* Scale distance around base_distance by (mod_dist * (100 / 1024)). + * mod_dist may be > 1024, so clamp result to be non-negative */ + scaled_distance = std::max(0, this->base_distance + (((distance - this->base_distance) * this->mod_dist) / 1024)); + } /* Scale the accuracy by distance around accuracy / 2 */ - int32_t divisor = this->accuracy * (this->mod_dist - 50) / 100 + - this->accuracy * distance / this->max_distance + 1; - - assert(divisor > 0); + const int32_t divisor = divisor_scale + ((this->accuracy * scaled_distance * divisor_scale) / (this->base_distance * 2)); + assert(divisor >= divisor_scale); uint demand_forw = 0; - if (divisor <= supply) { + if (divisor <= (supply * divisor_scale)) { /* At first only distribute demand if * effective supply / accuracy divisor >= 1 * Others are too small or too far away to be considered. */ - demand_forw = supply / divisor; + demand_forw = (supply * divisor_scale) / divisor; } else if (++chance > this->accuracy * num_demands * num_supplies) { /* After some trying, if there is still supply left, distribute * demand also to other nodes. */ @@ -256,7 +260,7 @@ void DemandCalculator::CalcDemand(LinkGraphJob &job, Tscaler scaler) * @param job Job to calculate the demands for. */ DemandCalculator::DemandCalculator(LinkGraphJob &job) : - max_distance(DistanceMaxPlusManhattan(TileXY(0,0), TileXY(Map::MaxX(), Map::MaxY()))) + base_distance(IntSqrt(DistanceMaxPlusManhattan(TileXY(0,0), TileXY(Map::MaxX(), Map::MaxY())))) { const LinkGraphSettings &settings = job.Settings(); CargoID cargo = job.Cargo(); @@ -264,9 +268,15 @@ DemandCalculator::DemandCalculator(LinkGraphJob &job) : this->accuracy = settings.accuracy; this->mod_dist = settings.demand_distance; if (this->mod_dist > 100) { - /* Increase effect of mod_dist > 100 */ + /* Increase effect of mod_dist > 100. + * Quadratic: + * 100 --> 100 + * 150 --> 308 + * 200 --> 933 + * 255 --> 2102 + */ int over100 = this->mod_dist - 100; - this->mod_dist = 100 + over100 * over100; + this->mod_dist = 100 + ((over100 * over100) / 12); } switch (settings.GetDistributionType(cargo)) { diff --git a/src/linkgraph/demands.h b/src/linkgraph/demands.h index 7de853a674..52dd5cb097 100644 --- a/src/linkgraph/demands.h +++ b/src/linkgraph/demands.h @@ -14,9 +14,9 @@ public: DemandCalculator(LinkGraphJob &job); private: - int32_t max_distance; ///< Maximum distance possible on the map. - int32_t mod_dist; ///< Distance modifier, determines how much demands decrease with distance. - int32_t accuracy; ///< Accuracy of the calculation. + int32_t base_distance; ///< Base distance for scaling purposes. + int32_t mod_dist; ///< Distance modifier, determines how much demands decrease with distance. + int32_t accuracy; ///< Accuracy of the calculation. template void CalcDemand(LinkGraphJob &job, Tscaler scaler); diff --git a/src/linkgraph/linkgraph_gui.cpp b/src/linkgraph/linkgraph_gui.cpp index a1dfa0c8a8..02f2718e3c 100644 --- a/src/linkgraph/linkgraph_gui.cpp +++ b/src/linkgraph/linkgraph_gui.cpp @@ -113,7 +113,7 @@ void LinkGraphOverlay::RebuildCache() } } if (this->IsPointVisible(pta, &dpi)) { - this->cached_stations.push_back(std::make_pair(from, supply)); + this->cached_stations.emplace_back(from, supply); } } } @@ -312,7 +312,7 @@ void LinkGraphOverlay::DrawContent(Point pta, Point ptb, const LinkProperties &c GfxDrawLine(pta.x, pta.y + offset_y, ptb.x, ptb.y + offset_y, colour, width, dash); } - GfxDrawLine(pta.x, pta.y, ptb.x, ptb.y, _colour_gradient[COLOUR_GREY][1], width); + GfxDrawLine(pta.x, pta.y, ptb.x, ptb.y, GetColourGradient(COLOUR_GREY, SHADE_DARKEST), width); } /** @@ -331,9 +331,9 @@ void LinkGraphOverlay::DrawStationDots(const DrawPixelInfo *dpi) const uint r = width * 2 + width * 2 * std::min(200U, i.second) / 200; LinkGraphOverlay::DrawVertex(pt.x, pt.y, r, - _colour_gradient[st->owner != OWNER_NONE ? - Company::Get(st->owner)->colour : COLOUR_GREY][5], - _colour_gradient[COLOUR_GREY][1]); + GetColourGradient(st->owner != OWNER_NONE ? + Company::Get(st->owner)->colour : COLOUR_GREY, SHADE_LIGHT), + GetColourGradient(COLOUR_GREY, SHADE_DARKEST)); } } @@ -341,7 +341,7 @@ void LinkGraphOverlay::DrawStationDots(const DrawPixelInfo *dpi) const * Draw a square symbolizing a producer of cargo. * @param x X coordinate of the middle of the vertex. * @param y Y coordinate of the middle of the vertex. - * @param size Y and y extend of the vertex. + * @param size x and y extent of the vertex. * @param colour Colour with which the vertex will be filled. * @param border_colour Colour for the border of the vertex. */ @@ -350,15 +350,10 @@ void LinkGraphOverlay::DrawStationDots(const DrawPixelInfo *dpi) const size--; int w1 = size / 2; int w2 = size / 2 + size % 2; + int borderwidth = ScaleGUITrad(1); + GfxFillRect(x - w1 - borderwidth, y - w1 - borderwidth, x + w2 + borderwidth, y + w2 + borderwidth, border_colour); GfxFillRect(x - w1, y - w1, x + w2, y + w2, colour); - - w1++; - w2++; - GfxDrawLine(x - w1, y - w1, x + w2, y - w1, border_colour); - GfxDrawLine(x - w1, y + w2, x + w2, y + w2, border_colour); - GfxDrawLine(x - w1, y - w1, x - w1, y + w2, border_colour); - GfxDrawLine(x + w2, y - w1, x + w2, y + w2, border_colour); } bool LinkGraphOverlay::ShowTooltip(Point pt, TooltipCloseCondition close_cond) @@ -541,11 +536,11 @@ static constexpr NWidgetPart _nested_linkgraph_legend_widgets[] = { static_assert(WID_LGL_SATURATION_LAST - WID_LGL_SATURATION_FIRST == lengthof(LinkGraphOverlay::LINK_COLOURS[0]) - 1); -static WindowDesc _linkgraph_legend_desc(__FILE__, __LINE__, +static WindowDesc _linkgraph_legend_desc( WDP_AUTO, "toolbar_linkgraph", 0, 0, WC_LINKGRAPH_LEGEND, WC_NONE, 0, - std::begin(_nested_linkgraph_legend_widgets), std::end(_nested_linkgraph_legend_widgets) + _nested_linkgraph_legend_widgets ); /** @@ -553,10 +548,10 @@ static WindowDesc _linkgraph_legend_desc(__FILE__, __LINE__, */ void ShowLinkGraphLegend() { - AllocateWindowDescFront(&_linkgraph_legend_desc, 0); + AllocateWindowDescFront(_linkgraph_legend_desc, 0); } -LinkGraphLegendWindow::LinkGraphLegendWindow(WindowDesc *desc, int window_number) : Window(desc) +LinkGraphLegendWindow::LinkGraphLegendWindow(WindowDesc &desc, int window_number) : Window(desc) { this->num_cargo = _sorted_cargo_specs.size(); @@ -584,7 +579,7 @@ void LinkGraphLegendWindow::SetOverlay(std::shared_ptr overlay } } -void LinkGraphLegendWindow::UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) +void LinkGraphLegendWindow::UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) { if (IsInsideMM(widget, WID_LGL_SATURATION_FIRST, WID_LGL_SATURATION_LAST + 1)) { StringID str = STR_NULL; @@ -599,7 +594,7 @@ void LinkGraphLegendWindow::UpdateWidgetSize(WidgetID widget, Dimension *size, [ Dimension dim = GetStringBoundingBox(str, FS_SMALL); dim.width += padding.width; dim.height += padding.height; - *size = maxdim(*size, dim); + size = maxdim(size, dim); } } if (IsInsideMM(widget, WID_LGL_CARGO_FIRST, WID_LGL_CARGO_LAST + 1)) { @@ -607,7 +602,7 @@ void LinkGraphLegendWindow::UpdateWidgetSize(WidgetID widget, Dimension *size, [ Dimension dim = GetStringBoundingBox(cargo->abbrev, FS_SMALL); dim.width += padding.width; dim.height += padding.height; - *size = maxdim(*size, dim); + size = maxdim(size, dim); } } diff --git a/src/linkgraph/linkgraph_gui.h b/src/linkgraph/linkgraph_gui.h index e86a38b84b..ce7219fe43 100644 --- a/src/linkgraph/linkgraph_gui.h +++ b/src/linkgraph/linkgraph_gui.h @@ -105,10 +105,10 @@ void ShowLinkGraphLegend(); */ struct LinkGraphLegendWindow : Window { public: - LinkGraphLegendWindow(WindowDesc *desc, int window_number); + LinkGraphLegendWindow(WindowDesc &desc, int window_number); void SetOverlay(std::shared_ptr overlay); - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override; + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override; void DrawWidget(const Rect &r, WidgetID widget) const override; bool OnTooltip([[maybe_unused]] Point pt, WidgetID widget, TooltipCloseCondition close_cond) override; void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override; diff --git a/src/linkgraph/linkgraph_type.h b/src/linkgraph/linkgraph_type.h index 1627767ed4..946f2cd930 100644 --- a/src/linkgraph/linkgraph_type.h +++ b/src/linkgraph/linkgraph_type.h @@ -19,7 +19,7 @@ static const LinkGraphJobID INVALID_LINK_GRAPH_JOB = UINT16_MAX; typedef uint16_t NodeID; static const NodeID INVALID_NODE = UINT16_MAX; -enum DistributionType : byte { +enum DistributionType : uint8_t { DT_BEGIN = 0, DT_MIN = 0, DT_MANUAL = 0, ///< Manual distribution. No link graph calculations are run. diff --git a/src/linkgraph/linkgraphschedule.cpp b/src/linkgraph/linkgraphschedule.cpp index aef287c439..d03300ad98 100644 --- a/src/linkgraph/linkgraphschedule.cpp +++ b/src/linkgraph/linkgraphschedule.cpp @@ -86,9 +86,9 @@ void LinkGraphSchedule::JoinNext() */ /* static */ void LinkGraphSchedule::Run(LinkGraphJob *job) { - for (uint i = 0; i < lengthof(instance.handlers); ++i) { + for (const auto &handler : instance.handlers) { if (job->IsJobAborted()) return; - instance.handlers[i]->Run(*job); + handler->Run(*job); } /* @@ -157,8 +157,8 @@ LinkGraphSchedule::LinkGraphSchedule() LinkGraphSchedule::~LinkGraphSchedule() { this->Clear(); - for (uint i = 0; i < lengthof(this->handlers); ++i) { - delete this->handlers[i]; + for (const auto &handler : this->handlers) { + delete handler; } } diff --git a/src/linkgraph/refresh.cpp b/src/linkgraph/refresh.cpp index 8cb6c81ec3..205f51ac11 100644 --- a/src/linkgraph/refresh.cpp +++ b/src/linkgraph/refresh.cpp @@ -102,7 +102,7 @@ bool LinkRefresher::HandleRefit(CargoID refit_cargo) /* Back up the vehicle's cargo type */ CargoID temp_cid = v->cargo_type; - byte temp_subtype = v->cargo_subtype; + uint8_t temp_subtype = v->cargo_subtype; v->cargo_type = this->cargo; v->cargo_subtype = GetBestFittingSubType(v, v, this->cargo); diff --git a/src/livery.h b/src/livery.h index 302d40e404..d9371fb9ba 100644 --- a/src/livery.h +++ b/src/livery.h @@ -13,12 +13,12 @@ #include "company_type.h" #include "gfx_type.h" -static const byte LIT_NONE = 0; ///< Don't show the liveries at all -static const byte LIT_COMPANY = 1; ///< Show the liveries of your own company -static const byte LIT_ALL = 2; ///< Show the liveries of all companies +static const uint8_t LIT_NONE = 0; ///< Don't show the liveries at all +static const uint8_t LIT_COMPANY = 1; ///< Show the liveries of your own company +static const uint8_t LIT_ALL = 2; ///< Show the liveries of all companies /** List of different livery schemes. */ -enum LiveryScheme : byte { +enum LiveryScheme : uint8_t { LS_BEGIN = 0, LS_DEFAULT = 0, @@ -60,7 +60,7 @@ enum LiveryScheme : byte { DECLARE_POSTFIX_INCREMENT(LiveryScheme) /** List of different livery classes, used only by the livery GUI. */ -enum LiveryClass : byte { +enum LiveryClass : uint8_t { LC_OTHER, LC_RAIL, LC_ROAD, @@ -76,7 +76,7 @@ DECLARE_ENUM_AS_ADDABLE(LiveryClass) /** Information about a particular livery. */ struct Livery { - byte in_use; ///< Bit 0 set if this livery should override the default livery first colour, Bit 1 for the second colour. + uint8_t in_use; ///< Bit 0 set if this livery should override the default livery first colour, Bit 1 for the second colour. Colours colour1; ///< First colour, for all vehicles. Colours colour2; ///< Second colour, for vehicles with 2CC support. }; diff --git a/src/main_gui.cpp b/src/main_gui.cpp index aaac9a11eb..469c15c488 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -112,7 +112,6 @@ bool DoZoomInOutWindow(ZoomStateChange how, Window *w) w->viewport->scrollpos_y += vp->virtual_height >> 1; w->viewport->dest_scrollpos_x = w->viewport->scrollpos_x; w->viewport->dest_scrollpos_y = w->viewport->scrollpos_y; - w->viewport->follow_vehicle = INVALID_VEHICLE; break; case ZOOM_OUT: if (vp->zoom >= _settings_client.gui.zoom_max) return false; @@ -125,7 +124,6 @@ bool DoZoomInOutWindow(ZoomStateChange how, Window *w) vp->virtual_width <<= 1; vp->virtual_height <<= 1; - w->viewport->follow_vehicle = INVALID_VEHICLE; break; } if (vp != nullptr) { // the vp can be null when how == ZOOM_NONE @@ -211,7 +209,7 @@ enum { struct MainWindow : Window { - MainWindow(WindowDesc *desc) : Window(desc) + MainWindow(WindowDesc &desc) : Window(desc) { this->InitNested(0); CLRBITS(this->flags, WF_WHITE_BORDER); @@ -256,18 +254,18 @@ struct MainWindow : Window { this->DrawWidgets(); if (_game_mode == GM_MENU) { - static const SpriteID title_sprites[] = {SPR_OTTD_O, SPR_OTTD_P, SPR_OTTD_E, SPR_OTTD_N, SPR_OTTD_T, SPR_OTTD_T, SPR_OTTD_D}; + static const std::initializer_list title_sprites = {SPR_OTTD_O, SPR_OTTD_P, SPR_OTTD_E, SPR_OTTD_N, SPR_OTTD_T, SPR_OTTD_T, SPR_OTTD_D}; uint letter_spacing = ScaleGUITrad(10); - int name_width = (lengthof(title_sprites) - 1) * letter_spacing; + int name_width = static_cast(std::size(title_sprites) - 1) * letter_spacing; - for (uint i = 0; i < lengthof(title_sprites); i++) { - name_width += GetSpriteSize(title_sprites[i]).width; + for (const SpriteID &sprite : title_sprites) { + name_width += GetSpriteSize(sprite).width; } int off_x = (this->width - name_width) / 2; - for (uint i = 0; i < lengthof(title_sprites); i++) { - DrawSprite(title_sprites[i], PAL_NONE, off_x, ScaleGUITrad(50)); - off_x += GetSpriteSize(title_sprites[i]).width + letter_spacing; + for (const SpriteID &sprite : title_sprites) { + DrawSprite(sprite, PAL_NONE, off_x, ScaleGUITrad(50)); + off_x += GetSpriteSize(sprite).width + letter_spacing; } } } @@ -335,7 +333,7 @@ struct MainWindow : Window case GHK_REFRESH_SCREEN: MarkWholeScreenDirty(); break; case GHK_CRASH: // Crash the game - *(volatile byte *)nullptr = 0; + *(volatile uint8_t *)nullptr = 0; break; case GHK_MONEY: // Gimme money @@ -434,8 +432,15 @@ struct MainWindow : Window void OnMouseWheel(int wheel) override { - if (_settings_client.gui.scrollwheel_scrolling != 2) { - ZoomInOrOutToCursorWindow(wheel < 0, this); + if (_settings_client.gui.scrollwheel_scrolling != SWS_OFF) { + bool in = wheel < 0; + + /* When following, only change zoom - otherwise zoom to the cursor. */ + if (this->viewport->follow_vehicle != INVALID_VEHICLE) { + DoZoomInOutWindow(in ? ZOOM_IN : ZOOM_OUT, this); + } else { + ZoomInOrOutToCursorWindow(in, this); + } } } @@ -513,11 +518,11 @@ struct MainWindow : Window }}; }; -static WindowDesc _main_window_desc(__FILE__, __LINE__, +static WindowDesc _main_window_desc( WDP_MANUAL, nullptr, 0, 0, WC_MAIN_WINDOW, WC_NONE, WDF_NO_CLOSE, - std::begin(_nested_main_window_widgets), std::end(_nested_main_window_widgets), + _nested_main_window_widgets, &MainWindow::hotkeys ); @@ -540,14 +545,15 @@ void ShowSelectGameWindow(); */ void SetupColoursAndInitialWindow() { - for (uint i = 0; i != 16; i++) { - const byte *b = GetNonSprite(GENERAL_SPRITE_COLOUR(i), SpriteType::Recolour); - - assert(b); - memcpy(_colour_gradient[i], b + 0xC6, sizeof(_colour_gradient[i])); + for (Colours i = COLOUR_BEGIN; i != COLOUR_END; i++) { + const uint8_t *b = GetNonSprite(GENERAL_SPRITE_COLOUR(i), SpriteType::Recolour) + 1; + assert(b != nullptr); + for (ColourShade j = SHADE_BEGIN; j < SHADE_END; j++) { + SetColourGradient(i, j, b[0xC6 + j]); + } } - new MainWindow(&_main_window_desc); + new MainWindow(_main_window_desc); /* XXX: these are not done */ switch (_game_mode) { diff --git a/src/map.cpp b/src/map.cpp index 91d02b3f9d..0308640bf0 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -17,11 +17,6 @@ #include "safeguards.h" -#if defined(_MSC_VER) -/* Why the hell is that not in all MSVC headers?? */ -extern "C" _CRTIMP void __cdecl _assert(void *, void *, unsigned); -#endif - /* static */ uint Map::log_x; ///< 2^_map_log_x == _map_size_x /* static */ uint Map::log_y; ///< 2^_map_log_y == _map_size_y /* static */ uint Map::size_x; ///< Size of the map along the X @@ -69,32 +64,18 @@ extern "C" _CRTIMP void __cdecl _assert(void *, void *, unsigned); #ifdef _DEBUG -TileIndex TileAdd(TileIndex tile, TileIndexDiff add, - const char *exp, const char *file, int line) +TileIndex TileAdd(TileIndex tile, TileIndexDiff offset) { - int dx; - int dy; - uint x; - uint y; - - dx = add & Map::MaxX(); + int dx = offset & Map::MaxX(); if (dx >= (int)Map::SizeX() / 2) dx -= Map::SizeX(); - dy = (add - dx) / (int)Map::SizeX(); + int dy = (offset - dx) / (int)Map::SizeX(); - x = TileX(tile) + dx; - y = TileY(tile) + dy; + uint32_t x = TileX(tile) + dx; + uint32_t y = TileY(tile) + dy; - if (x >= Map::SizeX() || y >= Map::SizeY()) { - std::string message = fmt::format("TILE_ADD({}) when adding 0x{:04X} and 0x{:04X} failed", - exp, tile, add); -#if !defined(_MSC_VER) - fmt::print(stderr, "{}:{} {}\n", file, line, message); -#else - _assert(message.data(), (char*)file, line); -#endif - } - - assert(TileXY(x, y) == Map::WrapToMap(tile + add)); + assert(x < Map::SizeX()); + assert(y < Map::SizeY()); + assert(TileXY(x, y) == Map::WrapToMap(tile + offset)); return TileXY(x, y); } diff --git a/src/map_func.h b/src/map_func.h index 14d65db690..7d3e11cd80 100644 --- a/src/map_func.h +++ b/src/map_func.h @@ -30,13 +30,13 @@ private: * Look at docs/landscape.html for the exact meaning of the members. */ struct TileBase { - byte type; ///< The type (bits 4..7), bridges (2..3), rainforest/desert (0..1) - byte height; ///< The height of the northern corner. + uint8_t type; ///< The type (bits 4..7), bridges (2..3), rainforest/desert (0..1) + uint8_t height; ///< The height of the northern corner. uint16_t m2; ///< Primarily used for indices to towns, industries and stations - byte m1; ///< Primarily used for ownership information - byte m3; ///< General purpose - byte m4; ///< General purpose - byte m5; ///< General purpose + uint8_t m1; ///< Primarily used for ownership information + uint8_t m3; ///< General purpose + uint8_t m4; ///< General purpose + uint8_t m5; ///< General purpose }; static_assert(sizeof(TileBase) == 8); @@ -46,8 +46,8 @@ private: * Look at docs/landscape.html for the exact meaning of the members. */ struct TileExtended { - byte m6; ///< General purpose - byte m7; ///< Primarily used for newgrf support + uint8_t m6; ///< General purpose + uint8_t m7; ///< Primarily used for newgrf support uint16_t m8; ///< General purpose }; @@ -86,7 +86,7 @@ public: * @param tile The tile to get the data for. * @return reference to the byte holding the data. */ - debug_inline byte &type() + debug_inline uint8_t &type() { return base_tiles[tile.base()].type; } @@ -98,7 +98,7 @@ public: * @param tile The tile to get the height for. * @return reference to the byte holding the height. */ - debug_inline byte &height() + debug_inline uint8_t &height() { return base_tiles[tile.base()].height; } @@ -110,7 +110,7 @@ public: * @param tile The tile to get the data for. * @return reference to the byte holding the data. */ - debug_inline byte &m1() + debug_inline uint8_t &m1() { return base_tiles[tile.base()].m1; } @@ -134,7 +134,7 @@ public: * @param tile The tile to get the data for. * @return reference to the byte holding the data. */ - debug_inline byte &m3() + debug_inline uint8_t &m3() { return base_tiles[tile.base()].m3; } @@ -146,7 +146,7 @@ public: * @param tile The tile to get the data for. * @return reference to the byte holding the data. */ - debug_inline byte &m4() + debug_inline uint8_t &m4() { return base_tiles[tile.base()].m4; } @@ -158,7 +158,7 @@ public: * @param tile The tile to get the data for. * @return reference to the byte holding the data. */ - debug_inline byte &m5() + debug_inline uint8_t &m5() { return base_tiles[tile.base()].m5; } @@ -170,7 +170,7 @@ public: * @param tile The tile to get the data for. * @return reference to the byte holding the data. */ - debug_inline byte &m6() + debug_inline uint8_t &m6() { return extended_tiles[tile.base()].m6; } @@ -182,7 +182,7 @@ public: * @param tile The tile to get the data for. * @return reference to the byte holding the data. */ - debug_inline byte &m7() + debug_inline uint8_t &m7() { return extended_tiles[tile.base()].m7; } @@ -455,29 +455,31 @@ inline TileIndexDiff ToTileIndexDiff(TileIndexDiffC tidc) } +/** + * Adds a given offset to a tile. + * + * @param tile The tile to add an offset to. + * @param offset The offset to add. + * @return The resulting tile. + */ #ifndef _DEBUG - /** - * Adds two tiles together. - * - * @param x One tile - * @param y Another tile to add - * @return The resulting tile(index) - */ -# define TILE_ADD(x, y) ((x) + (y)) + constexpr TileIndex TileAdd(TileIndex tile, TileIndexDiff offset) { return tile + offset; } #else - extern TileIndex TileAdd(TileIndex tile, TileIndexDiff add, - const char *exp, const char *file, int line); -# define TILE_ADD(x, y) (TileAdd((x), (y), #x " + " #y, __FILE__, __LINE__)) + TileIndex TileAdd(TileIndex tile, TileIndexDiff offset); #endif /** * Adds a given offset to a tile. * - * @param tile The tile to add an offset on it - * @param x The x offset to add to the tile - * @param y The y offset to add to the tile + * @param tile The tile to add an offset to. + * @param x The x offset to add to the tile. + * @param y The y offset to add to the tile. + * @return The resulting tile. */ -#define TILE_ADDXY(tile, x, y) TILE_ADD(tile, TileDiffXY(x, y)) +inline TileIndex TileAddXY(TileIndex tile, int x, int y) +{ + return TileAdd(tile, TileDiffXY(x, y)); +} TileIndex TileAddWrap(TileIndex tile, int addx, int addy); @@ -591,7 +593,7 @@ inline TileIndexDiff TileOffsByDir(Direction dir) */ inline TileIndex TileAddByDir(TileIndex tile, Direction dir) { - return TILE_ADD(tile, TileOffsByDir(dir)); + return TileAdd(tile, TileOffsByDir(dir)); } /** @@ -603,7 +605,7 @@ inline TileIndex TileAddByDir(TileIndex tile, Direction dir) */ inline TileIndex TileAddByDiagDir(TileIndex tile, DiagDirection dir) { - return TILE_ADD(tile, TileOffsByDiagDir(dir)); + return TileAdd(tile, TileOffsByDiagDir(dir)); } /** diff --git a/src/map_type.h b/src/map_type.h index 3ff770d15d..246b6c0432 100644 --- a/src/map_type.h +++ b/src/map_type.h @@ -52,7 +52,7 @@ static const uint MAX_MAP_SIZE = 1U << MAX_MAP_SIZE_BITS; ///< Maximal map #define STRAIGHT_TRACK_LENGTH 7071/10000 /** Argument for CmdLevelLand describing what to do. */ -enum LevelMode : byte { +enum LevelMode : uint8_t { LM_LEVEL, ///< Level the land. LM_LOWER, ///< Lower the land. LM_RAISE, ///< Raise the land. diff --git a/src/misc.cpp b/src/misc.cpp index dd95950dda..72701ff23c 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -36,8 +36,6 @@ #include "safeguards.h" -std::string _savegame_id; ///< Unique ID of the current savegame. - extern TileIndex _cur_tileloop_tile; extern void MakeNewgameSettingsLive(); @@ -56,7 +54,6 @@ void InitializeObjects(); void InitializeTrees(); void InitializeCompanies(); void InitializeCheats(); -void InitializeNPF(); void InitializeOldNames(); /** @@ -89,7 +86,7 @@ std::string GenerateUid(std::string_view subject) */ void GenerateSavegameId() { - _savegame_id = GenerateUid("OpenTTD Savegame ID"); + _game_session_stats.savegame_id = GenerateUid("OpenTTD Savegame ID"); } void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settings) @@ -150,9 +147,6 @@ void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settin InitializeTrees(); InitializeIndustries(); InitializeObjects(); - InitializeBuildingCounts(); - - InitializeNPF(); InitializeCompanies(); AI::Initialize(); diff --git a/src/misc/CMakeLists.txt b/src/misc/CMakeLists.txt index 24cde73e41..f088dd5f8d 100644 --- a/src/misc/CMakeLists.txt +++ b/src/misc/CMakeLists.txt @@ -1,12 +1,10 @@ add_files( - array.hpp binaryheap.hpp countedobj.cpp countedptr.hpp dbg_helpers.cpp dbg_helpers.h endian_buffer.hpp - fixedsizearray.hpp getoptdata.cpp getoptdata.h hashtable.hpp diff --git a/src/misc/array.hpp b/src/misc/array.hpp deleted file mode 100644 index cc48d295cd..0000000000 --- a/src/misc/array.hpp +++ /dev/null @@ -1,116 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD 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, version 2. - * OpenTTD 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 OpenTTD. If not, see . - */ - -/** @file array.hpp Array without an explicit maximum size. */ - -#ifndef ARRAY_HPP -#define ARRAY_HPP - -#include "fixedsizearray.hpp" -#include "../string_func.h" - -/** - * Flexible array with size limit. Implemented as fixed size - * array of fixed size arrays - */ -template -class SmallArray { -protected: - typedef FixedSizeArray SubArray; ///< inner array - typedef FixedSizeArray SuperArray; ///< outer array - - static const uint Tcapacity = B * N; ///< total max number of items - - SuperArray data; ///< array of arrays of items - - /** return first sub-array with free space for new item */ - inline SubArray &FirstFreeSubArray() - { - uint super_size = data.Length(); - if (super_size > 0) { - SubArray &s = data[super_size - 1]; - if (!s.IsFull()) return s; - } - return *data.AppendC(); - } - -public: - /** implicit constructor */ - inline SmallArray() - { - } - - /** Clear (destroy) all items */ - inline void Clear() - { - data.Clear(); - } - - /** Return actual number of items */ - inline uint Length() const - { - uint super_size = data.Length(); - if (super_size == 0) return 0; - uint sub_size = data[super_size - 1].Length(); - return (super_size - 1) * B + sub_size; - } - /** return true if array is empty */ - inline bool IsEmpty() - { - return data.IsEmpty(); - } - - /** return true if array is full */ - inline bool IsFull() - { - return data.IsFull() && data[N - 1].IsFull(); - } - - /** allocate but not construct new item */ - inline T *Append() - { - return FirstFreeSubArray().Append(); - } - - /** allocate and construct new item */ - inline T *AppendC() - { - return FirstFreeSubArray().AppendC(); - } - - /** indexed access (non-const) */ - inline T& operator[](uint index) - { - const SubArray &s = data[index / B]; - T &item = s[index % B]; - return item; - } - /** indexed access (const) */ - inline const T& operator[](uint index) const - { - const SubArray &s = data[index / B]; - const T &item = s[index % B]; - return item; - } - - /** - * Helper for creating a human readable output of this data. - * @param dmp The location to dump to. - */ - template void Dump(D &dmp) const - { - dmp.WriteValue("capacity", Tcapacity); - uint num_items = Length(); - dmp.WriteValue("num_items", num_items); - for (uint i = 0; i < num_items; i++) { - const T &item = (*this)[i]; - dmp.WriteStructT(fmt::format("item[{}]", i), &item); - } - } -}; - -#endif /* ARRAY_HPP */ diff --git a/src/misc/binaryheap.hpp b/src/misc/binaryheap.hpp index 067ad1f291..377d4d9548 100644 --- a/src/misc/binaryheap.hpp +++ b/src/misc/binaryheap.hpp @@ -10,8 +10,6 @@ #ifndef BINARYHEAP_HPP #define BINARYHEAP_HPP -#include "../core/alloc_func.hpp" - /** Enable it if you suspect binary heap doesn't work well */ #define BINARYHEAP_CHECK 0 @@ -27,7 +25,11 @@ * Binary Heap as C++ template. * A carrier which keeps its items automatically holds the smallest item at * the first position. The order of items is maintained by using a binary tree. - * The implementation is used for priority queue's. + * The implementation is used for priority queues. + * + * There are two major differences compared to std::priority_queue. First the + * std::priority_queue does not support indexing/removing elements in the + * middle of the heap/queue and second it has the biggest item first. * * @par Usage information: * Item of the binary heap should support the 'lower-than' operator '<'. @@ -50,27 +52,18 @@ template class CBinaryHeapT { private: - uint items; ///< Number of items in the heap - uint capacity; ///< Maximum number of items the heap can hold - T **data; ///< The pointer to the heap item pointers + size_t items = 0; ///< Number of valid items in the heap + std::vector data; ///< The pointer to the heap item pointers public: /** * Create a binary heap. - * @param max_items The limit of the heap + * @param initial_capacity The initial reserved capacity for the heap. */ - explicit CBinaryHeapT(uint max_items) - : items(0) - , capacity(max_items) - { - this->data = MallocT(max_items + 1); - } - - ~CBinaryHeapT() + explicit CBinaryHeapT(size_t initial_capacity) { + this->data.reserve(initial_capacity); this->Clear(); - free(this->data); - this->data = nullptr; } protected: @@ -83,12 +76,12 @@ protected: * @param item The proposed item for filling the gap * @return The (gap)position where the item fits */ - inline uint HeapifyDown(uint gap, T *item) + inline size_t HeapifyDown(size_t gap, T *item) { assert(gap != 0); /* The first child of the gap is at [parent * 2] */ - uint child = gap * 2; + size_t child = gap * 2; /* while children are valid */ while (child <= this->items) { @@ -119,11 +112,11 @@ protected: * @param item The proposed item for filling the gap * @return The (gap)position where the item fits */ - inline uint HeapifyUp(uint gap, T *item) + inline size_t HeapifyUp(size_t gap, T *item) { assert(gap != 0); - uint parent; + size_t parent; while (gap > 1) { /* compare [gap] with its parent */ @@ -142,8 +135,9 @@ protected: /** Verify the heap consistency */ inline void CheckConsistency() { - for (uint child = 2; child <= this->items; child++) { - uint parent = child / 2; + assert(this->items == this->data.size() - 1); + for (size_t child = 2; child <= this->items; child++) { + size_t parent = child / 2; assert(!(*this->data[child] < *this->data[parent])); } } @@ -155,7 +149,7 @@ public: * * @return The number of items in the queue */ - inline uint Length() const + inline size_t Length() const { return this->items; } @@ -170,16 +164,6 @@ public: return this->items == 0; } - /** - * Test if the priority queue is full. - * - * @return True if full. - */ - inline bool IsFull() const - { - return this->items >= this->capacity; - } - /** * Get the smallest item in the binary tree. * @@ -210,15 +194,9 @@ public: */ inline void Include(T *new_item) { - if (this->IsFull()) { - assert(this->capacity < UINT_MAX / 2); - - this->capacity *= 2; - this->data = ReallocT(this->data, this->capacity + 1); - } - /* Make place for new item. A gap is now at the end of the tree. */ - uint gap = this->HeapifyUp(++items, new_item); + this->data.emplace_back(); + size_t gap = this->HeapifyUp(++items, new_item); this->data[gap] = new_item; CHECK_CONSISTY(); } @@ -238,9 +216,10 @@ public: this->items--; /* at index 1 we have a gap now */ T *last = this->End(); - uint gap = this->HeapifyDown(1, last); + size_t gap = this->HeapifyDown(1, last); /* move last item to the proper place */ if (!this->IsEmpty()) this->data[gap] = last; + this->data.pop_back(); CHECK_CONSISTY(); return first; @@ -251,7 +230,7 @@ public: * * @param index The position of the item in the heap */ - inline void Remove(uint index) + inline void Remove(size_t index) { if (index < this->items) { assert(index != 0); @@ -260,7 +239,7 @@ public: T *last = this->End(); /* Fix binary tree up and downwards */ - uint gap = this->HeapifyUp(index, last); + size_t gap = this->HeapifyUp(index, last); gap = this->HeapifyDown(gap, last); /* move last item to the proper place */ if (!this->IsEmpty()) this->data[gap] = last; @@ -268,6 +247,8 @@ public: assert(index == this->items); this->items--; } + this->data.pop_back(); + CHECK_CONSISTY(); } @@ -279,15 +260,10 @@ public: * @param item The reference to the item * @return The index of the item or zero if not found */ - inline uint FindIndex(const T &item) const + inline size_t FindIndex(const T &item) const { - if (this->IsEmpty()) return 0; - for (T **ppI = this->data + 1, **ppLast = ppI + this->items; ppI <= ppLast; ppI++) { - if (*ppI == &item) { - return ppI - this->data; - } - } - return 0; + auto it = std::find(this->data.begin(), this->data.end(), &item); + return it == this->data.end() ? 0 : std::distance(this->data.begin(), it); } /** @@ -297,6 +273,9 @@ public: inline void Clear() { this->items = 0; + this->data.resize(1); + + CHECK_CONSISTY(); } }; diff --git a/src/misc/dbg_helpers.h b/src/misc/dbg_helpers.h index fdfcaba04a..71e988873d 100644 --- a/src/misc/dbg_helpers.h +++ b/src/misc/dbg_helpers.h @@ -34,7 +34,7 @@ template struct ArrayT { template inline typename ArrayT::Item ItemAtT(E idx, const T &t, typename ArrayT::Item t_unk) { - if ((size_t)idx >= ArrayT::length) { + if (static_cast(idx) >= ArrayT::length) { return t_unk; } return t[idx]; @@ -48,7 +48,7 @@ inline typename ArrayT::Item ItemAtT(E idx, const T &t, typename ArrayT::I template inline typename ArrayT::Item ItemAtT(E idx, const T &t, typename ArrayT::Item t_unk, E idx_inv, typename ArrayT::Item t_inv) { - if ((size_t)idx < ArrayT::length) { + if (static_cast(idx) < ArrayT::length) { return t[idx]; } if (idx == idx_inv) { @@ -165,6 +165,34 @@ struct DumpTarget { EndStruct(); } } + + /** Dump nested object (or only its name if this instance is already known). */ + template void WriteStructT(const std::string &name, const std::deque *s) + { + static size_t type_id = ++LastTypeId(); + + if (s == nullptr) { + /* No need to dump nullptr struct. */ + WriteValue(name, ""); + return; + } + std::string known_as; + if (FindKnownName(type_id, s, known_as)) { + /* We already know this one, no need to dump it. */ + std::string known_as_str = std::string("known_as.") + name; + WriteValue(name, known_as_str); + } else { + /* Still unknown, dump it */ + BeginStruct(type_id, name, s); + size_t num_items = s->size(); + this->WriteValue("num_items", std::to_string(num_items)); + for (size_t i = 0; i < num_items; i++) { + const auto &item = (*s)[i]; + this->WriteStructT(fmt::format("item[{}]", i), &item); + } + EndStruct(); + } + } }; #endif /* DBG_HELPERS_H */ diff --git a/src/misc/endian_buffer.hpp b/src/misc/endian_buffer.hpp index 3229029c53..29e810fa2b 100644 --- a/src/misc/endian_buffer.hpp +++ b/src/misc/endian_buffer.hpp @@ -22,7 +22,7 @@ struct StrongTypedefBase; * as this allows providing custom operator overloads for more complex types * like e.g. structs without needing to modify this class. */ -template , typename Titer = typename std::back_insert_iterator> +template , typename Titer = typename std::back_insert_iterator> class EndianBufferWriter { /** Output iterator for the destination buffer. */ Titer buffer; @@ -34,7 +34,7 @@ public: EndianBufferWriter &operator <<(const std::string &data) { return *this << std::string_view{ data }; } EndianBufferWriter &operator <<(const char *data) { return *this << std::string_view{ data }; } EndianBufferWriter &operator <<(std::string_view data) { this->Write(data); return *this; } - EndianBufferWriter &operator <<(bool data) { return *this << static_cast(data ? 1 : 0); } + EndianBufferWriter &operator <<(bool data) { return *this << static_cast(data ? 1 : 0); } template EndianBufferWriter &operator <<(const OverflowSafeInt &data) { return *this << static_cast(data); }; @@ -59,7 +59,7 @@ public: return *this; } - template > + template > static Tbuf FromValue(const Tvalue &data) { Tbuf buffer; @@ -118,17 +118,17 @@ private: */ class EndianBufferReader { /** Reference to storage buffer. */ - std::span buffer; + std::span buffer; /** Current read position. */ size_t read_pos = 0; public: - EndianBufferReader(std::span buffer) : buffer(buffer) {} + EndianBufferReader(std::span buffer) : buffer(buffer) {} void rewind() { this->read_pos = 0; } EndianBufferReader &operator >>(std::string &data) { data = this->ReadStr(); return *this; } - EndianBufferReader &operator >>(bool &data) { data = this->Read() != 0; return *this; } + EndianBufferReader &operator >>(bool &data) { data = this->Read() != 0; return *this; } template EndianBufferReader &operator >>(OverflowSafeInt &data) { data = this->Read(); return *this; }; @@ -154,7 +154,7 @@ public: } template - static Tvalue ToValue(std::span buffer) + static Tvalue ToValue(std::span buffer) { Tvalue result{}; EndianBufferReader reader{ buffer }; diff --git a/src/misc/fixedsizearray.hpp b/src/misc/fixedsizearray.hpp deleted file mode 100644 index 7a2c97b58b..0000000000 --- a/src/misc/fixedsizearray.hpp +++ /dev/null @@ -1,158 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD 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, version 2. - * OpenTTD 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 OpenTTD. If not, see . - */ - -/** @file fixedsizearray.hpp A fixed size array that doesn't create items until needed. */ - -#ifndef FIXEDSIZEARRAY_HPP -#define FIXEDSIZEARRAY_HPP - -#include "../core/alloc_func.hpp" - -/** - * fixed size array - * Upon construction it preallocates fixed size block of memory - * for all items, but doesn't construct them. Item's construction - * is delayed. - */ -template -struct FixedSizeArray { -protected: - /** header for fixed size array */ - struct ArrayHeader - { - uint items; ///< number of items in the array - uint reference_count; ///< block reference counter (used by copy constructor and by destructor) - }; - - /* make constants visible from outside */ - static const uint Tsize = sizeof(T); ///< size of item - static const uint HeaderSize = sizeof(ArrayHeader); ///< size of header - - /** - * the only member of fixed size array is pointer to the block - * of C array of items. Header can be found on the offset -sizeof(ArrayHeader). - */ - T *data; - - /** return reference to the array header (non-const) */ - inline ArrayHeader &Hdr() - { - return *(ArrayHeader*)(((byte*)data) - HeaderSize); - } - - /** return reference to the array header (const) */ - inline const ArrayHeader &Hdr() const - { - return *(ArrayHeader*)(((byte*)data) - HeaderSize); - } - - /** return reference to the block reference counter */ - inline uint &RefCnt() - { - return Hdr().reference_count; - } - - /** return reference to number of used items */ - inline uint &SizeRef() - { - return Hdr().items; - } - -public: - /** Default constructor. Preallocate space for items and header, then initialize header. */ - FixedSizeArray() - { - /* Ensure the size won't overflow. */ - static_assert(C < (SIZE_MAX - HeaderSize) / Tsize); - - /* allocate block for header + items (don't construct items) */ - data = (T*)((MallocT(HeaderSize + C * Tsize)) + HeaderSize); - SizeRef() = 0; // initial number of items - RefCnt() = 1; // initial reference counter - } - - /** Copy constructor. Preallocate space for items and header, then initialize header. */ - FixedSizeArray(const FixedSizeArray &src) - { - /* share block (header + items) with the source array */ - data = src.data; - RefCnt()++; // now we share block with the source - } - - /** destroy remaining items and free the memory block */ - ~FixedSizeArray() - { - /* release one reference to the shared block */ - if ((--RefCnt()) > 0) return; // and return if there is still some owner - - Clear(); - /* free the memory block occupied by items */ - free(((byte*)data) - HeaderSize); - data = nullptr; - } - - /** Clear (destroy) all items */ - inline void Clear() - { - /* Walk through all allocated items backward and destroy them - * Note: this->Length() can be zero. In that case data[this->Length() - 1] is evaluated unsigned - * on some compilers with some architectures. (e.g. gcc with x86) */ - for (T *pItem = this->data + this->Length() - 1; pItem >= this->data; pItem--) { - pItem->~T(); - } - /* number of items become zero */ - SizeRef() = 0; - } - - /** return number of used items */ - inline uint Length() const - { - return Hdr().items; - } - - /** return true if array is full */ - inline bool IsFull() const - { - return Length() >= C; - } - - /** return true if array is empty */ - inline bool IsEmpty() const - { - return Length() <= 0; - } - - /** add (allocate), but don't construct item */ - inline T *Append() - { - assert(!IsFull()); - return &data[SizeRef()++]; - } - - /** add and construct item using default constructor */ - inline T *AppendC() - { - T *item = Append(); - new(item)T; - return item; - } - /** return item by index (non-const version) */ - inline T& operator[](uint index) - { - assert(index < Length()); - return data[index]; - } - - /** return item by index (const version) */ - inline const T& operator[](uint index) const - { - assert(index < Length()); - return data[index]; - } -}; - -#endif /* FIXEDSIZEARRAY_HPP */ diff --git a/src/misc/getoptdata.cpp b/src/misc/getoptdata.cpp index df54391232..fbc4907375 100644 --- a/src/misc/getoptdata.cpp +++ b/src/misc/getoptdata.cpp @@ -21,23 +21,20 @@ */ int GetOptData::GetOpt() { - const OptionData *odata; - - char *s = this->cont; + const char *s = this->cont; if (s == nullptr) { - if (this->numleft == 0) return -1; // No arguments left -> finished. + if (this->arguments.empty()) return -1; // No arguments left -> finished. - s = this->argv[0]; + s = this->arguments[0]; if (*s != '-') return -1; // No leading '-' -> not an option -> finished. - this->argv++; - this->numleft--; + this->arguments = this->arguments.subspan(1); /* Is it a long option? */ - for (odata = this->options; odata->flags != ODF_END; odata++) { - if (odata->longname != nullptr && !strcmp(odata->longname, s)) { // Long options always use the entire argument. + for (auto &option : this->options) { + if (option.longname != nullptr && !strcmp(option.longname, s)) { // Long options always use the entire argument. this->cont = nullptr; - goto set_optval; + return this->GetOpt(option); } } @@ -45,39 +42,41 @@ int GetOptData::GetOpt() } /* Is it a short option? */ - for (odata = this->options; odata->flags != ODF_END; odata++) { - if (odata->shortname != '\0' && *s == odata->shortname) { + for (auto &option : this->options) { + if (option.shortname != '\0' && *s == option.shortname) { this->cont = (s[1] != '\0') ? s + 1 : nullptr; - -set_optval: // Handle option value of *odata . - this->opt = nullptr; - switch (odata->flags) { - case ODF_NO_VALUE: - return odata->id; - - case ODF_HAS_VALUE: - case ODF_OPTIONAL_VALUE: - if (this->cont != nullptr) { // Remainder of the argument is the option value. - this->opt = this->cont; - this->cont = nullptr; - return odata->id; - } - /* No more arguments, either return an error or a value-less option. */ - if (this->numleft == 0) return (odata->flags == ODF_HAS_VALUE) ? -2 : odata->id; - - /* Next argument looks like another option, let's not return it as option value. */ - if (odata->flags == ODF_OPTIONAL_VALUE && this->argv[0][0] == '-') return odata->id; - - this->opt = this->argv[0]; // Next argument is the option value. - this->argv++; - this->numleft--; - return odata->id; - - default: NOT_REACHED(); - } + return this->GetOpt(option); } } return -2; // No other ways to interpret the text -> error. } +int GetOptData::GetOpt(const OptionData &option) +{ + this->opt = nullptr; + switch (option.type) { + case ODF_NO_VALUE: + return option.id; + + case ODF_HAS_VALUE: + case ODF_OPTIONAL_VALUE: + if (this->cont != nullptr) { // Remainder of the argument is the option value. + this->opt = this->cont; + this->cont = nullptr; + return option.id; + } + /* No more arguments, either return an error or a value-less option. */ + if (this->arguments.empty()) return (option.type == ODF_HAS_VALUE) ? -2 : option.id; + + /* Next argument looks like another option, let's not return it as option value. */ + if (option.type == ODF_OPTIONAL_VALUE && this->arguments[0][0] == '-') return option.id; + + this->opt = this->arguments[0]; // Next argument is the option value. + this->arguments = this->arguments.subspan(1); + return option.id; + + default: NOT_REACHED(); + } +} + diff --git a/src/misc/getoptdata.h b/src/misc/getoptdata.h index f578769df5..244c96358b 100644 --- a/src/misc/getoptdata.h +++ b/src/misc/getoptdata.h @@ -11,100 +11,39 @@ #define GETOPTDATA_H /** Flags of an option. */ -enum OptionDataFlags { +enum OptionDataType : uint8_t { ODF_NO_VALUE, ///< A plain option (no value attached to it). ODF_HAS_VALUE, ///< An option with a value. ODF_OPTIONAL_VALUE, ///< An option with an optional value. - ODF_END, ///< Terminator (data is not parsed further). }; /** Data of an option. */ struct OptionData { - byte id; ///< Unique identification of this option data, often the same as #shortname. - char shortname; ///< Short option letter if available, else use \c '\0'. - uint16_t flags; ///< Option data flags. @see OptionDataFlags - const char *longname; ///< Long option name including '-'/'--' prefix, use \c nullptr if not available. + OptionDataType type; ///< The type of option. + char id; ///< Unique identification of this option data, often the same as #shortname. + char shortname = '\0'; ///< Short option letter if available, else use \c '\0'. + const char *longname = nullptr; ///< Long option name including '-'/'--' prefix, use \c nullptr if not available. }; /** Data storage for parsing command line options. */ struct GetOptData { - char *opt; ///< Option value, if available (else \c nullptr). - int numleft; ///< Number of arguments left in #argv. - char **argv; ///< Remaining command line arguments. - const OptionData *options; ///< Command line option descriptions. - char *cont; ///< Next call to #GetOpt should start here (in the middle of an argument). + using OptionSpan = std::span; + using ArgumentSpan = std::span; + + ArgumentSpan arguments; ///< Remaining command line arguments. + const OptionSpan options; ///< Command line option descriptions. + const char *opt = nullptr; ///< Option value, if available (else \c nullptr). + const char *cont = nullptr; ///< Next call to #GetOpt should start here (in the middle of an argument). /** * Constructor of the data store. - * @param argc Number of command line arguments, excluding the program name. - * @param argv Command line arguments, excluding the program name. + * @param argument The command line arguments, excluding the program name. * @param options Command line option descriptions. */ - GetOptData(int argc, char **argv, const OptionData *options) : - opt(nullptr), - numleft(argc), - argv(argv), - options(options), - cont(nullptr) - { - } + GetOptData(ArgumentSpan arguments, OptionSpan options) : arguments(arguments), options(options) {} int GetOpt(); + int GetOpt(const OptionData &option); }; -/** - * General macro for creating an option. - * @param id Identification of the option. - * @param shortname Short option name. Use \c '\0' if not used. - * @param longname Long option name including leading '-' or '--'. Use \c nullptr if not used. - * @param flags Flags of the option. - */ -#define GETOPT_GENERAL(id, shortname, longname, flags) { id, shortname, flags, longname } - -/** - * Short option without value. - * @param shortname Short option name. Use \c '\0' if not used. - * @param longname Long option name including leading '-' or '--'. Use \c nullptr if not used. - */ -#define GETOPT_NOVAL(shortname, longname) GETOPT_GENERAL(shortname, shortname, longname, ODF_NO_VALUE) - -/** - * Short option with value. - * @param shortname Short option name. Use \c '\0' if not used. - * @param longname Long option name including leading '-' or '--'. Use \c nullptr if not used. - */ -#define GETOPT_VALUE(shortname, longname) GETOPT_GENERAL(shortname, shortname, longname, ODF_HAS_VALUE) - -/** - * Short option with optional value. - * @param shortname Short option name. Use \c '\0' if not used. - * @param longname Long option name including leading '-' or '--'. Use \c nullptr if not used. - * @note Options with optional values are hopelessly ambiguous, eg "-opt -value", avoid them. - */ -#define GETOPT_OPTVAL(shortname, longname) GETOPT_GENERAL(shortname, shortname, longname, ODF_OPTIONAL_VALUE) - - -/** - * Short option without value. - * @param shortname Short option name. Use \c '\0' if not used. - */ -#define GETOPT_SHORT_NOVAL(shortname) GETOPT_NOVAL(shortname, nullptr) - -/** - * Short option with value. - * @param shortname Short option name. Use \c '\0' if not used. - */ -#define GETOPT_SHORT_VALUE(shortname) GETOPT_VALUE(shortname, nullptr) - -/** - * Short option with optional value. - * @param shortname Short option name. Use \c '\0' if not used. - * @note Options with optional values are hopelessly ambiguous, eg "-opt -value", avoid them. - */ -#define GETOPT_SHORT_OPTVAL(shortname) GETOPT_OPTVAL(shortname, nullptr) - -/** Option terminator. */ -#define GETOPT_END() { '\0', '\0', ODF_END, nullptr} - - #endif /* GETOPTDATA_H */ diff --git a/src/misc/lrucache.hpp b/src/misc/lrucache.hpp index 3adedbefd4..0ff9db663a 100644 --- a/src/misc/lrucache.hpp +++ b/src/misc/lrucache.hpp @@ -71,7 +71,7 @@ public: } /* Insert new item. */ - this->data.push_front(std::make_pair(key, item)); + this->data.emplace_front(key, item); this->lookup.emplace(key, this->data.begin()); } diff --git a/src/misc_cmd.cpp b/src/misc_cmd.cpp index d1d79f024b..04cc7e8f96 100644 --- a/src/misc_cmd.cpp +++ b/src/misc_cmd.cpp @@ -241,7 +241,7 @@ CommandCost CmdChangeBankBalance(DoCommandFlag flags, TileIndex tile, Money delt if (flags & DC_EXEC) { /* Change company bank balance of company. */ - Backup cur_company(_current_company, company, FILE_LINE); + Backup cur_company(_current_company, company); SubtractMoneyFromCompany(CommandCost(expenses_type, -delta)); cur_company.Restore(); diff --git a/src/misc_cmd.h b/src/misc_cmd.h index 47cdf760ae..f0d30df397 100644 --- a/src/misc_cmd.h +++ b/src/misc_cmd.h @@ -13,9 +13,9 @@ #include "command_type.h" #include "economy_type.h" -enum PauseMode : byte; +enum PauseMode : uint8_t; -enum class LoanCommand : byte { +enum class LoanCommand : uint8_t { Interval, Max, Amount, diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index adea0e237f..cb97d7c8c3 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -12,6 +12,7 @@ #include "landscape.h" #include "error.h" #include "gui.h" +#include "gfx_layout.h" #include "command_func.h" #include "company_func.h" #include "town.h" @@ -53,17 +54,17 @@ static constexpr NWidgetPart _nested_land_info_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_LAND_AREA_INFORMATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_LI_LOCATION), SetMinimalSize(12, 14), SetDataTip(SPR_GOTO_LOCATION, STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_LI_LOCATION), SetAspect(WidgetDimensions::ASPECT_LOCATION), SetDataTip(SPR_GOTO_LOCATION, STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP), NWidget(WWT_DEBUGBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_LI_BACKGROUND), EndContainer(), }; -static WindowDesc _land_info_desc(__FILE__, __LINE__, +static WindowDesc _land_info_desc( WDP_AUTO, nullptr, 0, 0, WC_LAND_INFO, WC_NONE, 0, - std::begin(_nested_land_info_widgets), std::end(_nested_land_info_widgets) + _nested_land_info_widgets ); class LandInfoWindow : public Window { @@ -89,27 +90,27 @@ public: } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_LI_BACKGROUND) return; - size->height = WidgetDimensions::scaled.frametext.Vertical(); + size.height = WidgetDimensions::scaled.frametext.Vertical(); for (size_t i = 0; i < this->landinfo_data.size(); i++) { uint width = GetStringBoundingBox(this->landinfo_data[i]).width + WidgetDimensions::scaled.frametext.Horizontal(); - size->width = std::max(size->width, width); + size.width = std::max(size.width, width); - size->height += GetCharacterHeight(FS_NORMAL) + (i == 0 ? WidgetDimensions::scaled.vsep_wide : WidgetDimensions::scaled.vsep_normal); + size.height += GetCharacterHeight(FS_NORMAL) + (i == 0 ? WidgetDimensions::scaled.vsep_wide : WidgetDimensions::scaled.vsep_normal); } if (!this->cargo_acceptance.empty()) { uint width = GetStringBoundingBox(this->cargo_acceptance).width + WidgetDimensions::scaled.frametext.Horizontal(); - size->width = std::max(size->width, std::min(static_cast(ScaleGUITrad(300)), width)); + size.width = std::max(size.width, std::min(static_cast(ScaleGUITrad(300)), width)); SetDParamStr(0, cargo_acceptance); - size->height += GetStringHeight(STR_JUST_RAW_STRING, size->width - WidgetDimensions::scaled.frametext.Horizontal()); + size.height += GetStringHeight(STR_JUST_RAW_STRING, size.width - WidgetDimensions::scaled.frametext.Horizontal()); } } - LandInfoWindow(Tile tile) : Window(&_land_info_desc), tile(tile) + LandInfoWindow(Tile tile) : Window(_land_info_desc), tile(tile) { this->InitNested(); @@ -118,7 +119,7 @@ public: #else # define LANDINFOD_LEVEL 1 #endif - Debug(misc, LANDINFOD_LEVEL, "TILE: 0x{:x} ({},{})", (TileIndex)tile, TileX(tile), TileY(tile)); + Debug(misc, LANDINFOD_LEVEL, "TILE: {0} (0x{0:x}) ({1},{2})", (TileIndex)tile, TileX(tile), TileY(tile)); Debug(misc, LANDINFOD_LEVEL, "type = 0x{:x}", tile.type()); Debug(misc, LANDINFOD_LEVEL, "height = 0x{:x}", tile.height()); Debug(misc, LANDINFOD_LEVEL, "m1 = 0x{:x}", tile.m1()); @@ -209,15 +210,16 @@ public: this->landinfo_data.push_back(GetString(str)); /* Location */ - std::stringstream tile_ss; - tile_ss << "0x" << std::setfill('0') << std::setw(4) << std::hex << std::uppercase << tile.base(); // 0x%.4X - SetDParam(0, TileX(tile)); SetDParam(1, TileY(tile)); SetDParam(2, GetTileZ(tile)); - SetDParamStr(3, tile_ss.str()); this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_LANDINFO_COORDS)); + /* Tile index */ + SetDParam(0, tile); + SetDParam(1, tile); + this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_LANDINFO_INDEX)); + /* Local authority */ SetDParam(0, STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE); if (t != nullptr) { @@ -396,14 +398,14 @@ static constexpr NWidgetPart _nested_about_widgets[] = { EndContainer(), }; -static WindowDesc _about_desc(__FILE__, __LINE__, +static WindowDesc _about_desc( WDP_CENTER, nullptr, 0, 0, WC_GAME_OPTIONS, WC_NONE, 0, - std::begin(_nested_about_widgets), std::end(_nested_about_widgets) + _nested_about_widgets ); -static const char * const _credits[] = { +static const std::initializer_list _credits = { "Original design by Chris Sawyer", "Original graphics by Simon Foster", "", @@ -411,6 +413,7 @@ static const char * const _credits[] = { " Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)", " Christoph Elsenhans (frosch) - General coding (since 0.6)", " Lo\u00efc Guilloux (glx) - General / Windows Expert (since 0.4.5)", + " Koen Bussemaker (Kuhnovic) - General / Ship pathfinder (since 14)", " Charles Pigott (LordAro) - General / Correctness police (since 1.9)", " Michael Lutz (michi_cc) - Path based signals (since 0.7)", " Niels Martin Hansen (nielsm) - Music system, general coding (since 1.9)", @@ -418,7 +421,7 @@ static const char * const _credits[] = { " Peter Nelson (peter1138) - Spiritual descendant from NewGRF gods (since 0.4.5)", " Remko Bijker (Rubidium) - Coder and way more (since 0.4.5)", " Patric Stout (TrueBrain) - NoProgrammer (since 0.3), sys op", - " Tyler Trahan (2TallTyler) - General coding (since 13)", + " Tyler Trahan (2TallTyler) - General / Time Lord (since 13)", "", "Inactive Developers:", " Grzegorz Duczy\u0144ski (adf88) - General coding (1.7 - 1.8)", @@ -474,7 +477,7 @@ struct AboutWindow : public Window { int line_height; ///< The height of a single line static const int num_visible_lines = 19; ///< The number of lines visible simultaneously - AboutWindow() : Window(&_about_desc) + AboutWindow() : Window(_about_desc) { this->InitNested(WN_GAME_OPTIONS_ABOUT); @@ -487,7 +490,7 @@ struct AboutWindow : public Window { if (widget == WID_A_COPYRIGHT) SetDParamStr(0, _openttd_revision_year); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_A_SCROLLING_TEXT) return; @@ -497,10 +500,10 @@ struct AboutWindow : public Window { d.height = this->line_height * num_visible_lines; d.width = 0; - for (uint i = 0; i < lengthof(_credits); i++) { - d.width = std::max(d.width, GetStringBoundingBox(_credits[i]).width); + for (const auto &str : _credits) { + d.width = std::max(d.width, GetStringBoundingBox(str).width); } - *size = maxdim(*size, d); + size = maxdim(size, d); } void DrawWidget(const Rect &r, WidgetID widget) const override @@ -510,9 +513,9 @@ struct AboutWindow : public Window { int y = this->text_position; /* Show all scrolling _credits */ - for (uint i = 0; i < lengthof(_credits); i++) { + for (const auto &str : _credits) { if (y >= r.top + 7 && y < r.bottom - this->line_height) { - DrawString(r.left, r.right, y, _credits[i], TC_BLACK, SA_LEFT | SA_FORCE); + DrawString(r.left, r.right, y, str, TC_BLACK, SA_LEFT | SA_FORCE); } y += this->line_height; } @@ -526,7 +529,7 @@ struct AboutWindow : public Window { IntervalTimer scroll_interval = {std::chrono::milliseconds(2100) / GetCharacterHeight(FS_NORMAL), [this](uint count) { this->text_position -= count; /* If the last text has scrolled start a new from the start */ - if (this->text_position < (int)(this->GetWidget(WID_A_SCROLLING_TEXT)->pos_y - lengthof(_credits) * this->line_height)) { + if (this->text_position < (int)(this->GetWidget(WID_A_SCROLLING_TEXT)->pos_y - std::size(_credits) * this->line_height)) { this->text_position = this->GetWidget(WID_A_SCROLLING_TEXT)->pos_y + this->GetWidget(WID_A_SCROLLING_TEXT)->current_y; } this->SetWidgetDirty(WID_A_SCROLLING_TEXT); @@ -654,11 +657,11 @@ static constexpr NWidgetPart _nested_tooltips_widgets[] = { NWidget(WWT_EMPTY, INVALID_COLOUR, WID_TT_BACKGROUND), }; -static WindowDesc _tool_tips_desc(__FILE__, __LINE__, +static WindowDesc _tool_tips_desc( WDP_MANUAL, nullptr, 0, 0, // Coordinates and sizes are not used, WC_TOOLTIPS, WC_NONE, WDF_NO_FOCUS | WDF_NO_CLOSE, - std::begin(_nested_tooltips_widgets), std::end(_nested_tooltips_widgets) + _nested_tooltips_widgets ); /** Window for displaying a tooltip. */ @@ -668,7 +671,7 @@ struct TooltipsWindow : public Window std::vector params; ///< The string parameters. TooltipCloseCondition close_cond; ///< Condition for closing the window. - TooltipsWindow(Window *parent, StringID str, uint paramcount, TooltipCloseCondition close_tooltip) : Window(&_tool_tips_desc) + TooltipsWindow(Window *parent, StringID str, uint paramcount, TooltipCloseCondition close_tooltip) : Window(_tool_tips_desc) { this->parent = parent; this->string_id = str; @@ -700,17 +703,17 @@ struct TooltipsWindow : public Window return pt; } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_TT_BACKGROUND) return; CopyInDParam(this->params); - size->width = std::min(GetStringBoundingBox(this->string_id).width, ScaleGUITrad(194)); - size->height = GetStringHeight(this->string_id, size->width); + size.width = std::min(GetStringBoundingBox(this->string_id).width, ScaleGUITrad(194)); + size.height = GetStringHeight(this->string_id, size.width); /* Increase slightly to have some space around the box. */ - size->width += WidgetDimensions::scaled.framerect.Horizontal() + WidgetDimensions::scaled.fullbevel.Horizontal(); - size->height += WidgetDimensions::scaled.framerect.Vertical() + WidgetDimensions::scaled.fullbevel.Vertical(); + size.width += WidgetDimensions::scaled.framerect.Horizontal() + WidgetDimensions::scaled.fullbevel.Horizontal(); + size.height += WidgetDimensions::scaled.framerect.Vertical() + WidgetDimensions::scaled.fullbevel.Vertical(); } void DrawWidget(const Rect &r, WidgetID widget) const override @@ -778,6 +781,25 @@ static int GetCaretWidth() return GetCharacterWidth(FS_NORMAL, '_'); } +/** + * Reposition edit text box rect based on textbuf length can caret position. + * @param r Initial rect of edit text box. + * @param tb The Textbuf being processed. + * @return Updated rect. + */ +static Rect ScrollEditBoxTextRect(Rect r, const Textbuf &tb) +{ + const int linewidth = tb.pixels + GetCaretWidth(); + const int boxwidth = r.Width(); + if (linewidth <= boxwidth) return r; + + /* Extend to cover whole string. This is left-aligned, adjusted by caret position. */ + r = r.WithWidth(linewidth, false); + + /* Slide so that the caret is at the centre unless limited by bounds of the line, i.e. near either end. */ + return r.Translate(-std::clamp(tb.caretxoffs - (boxwidth / 2), 0, linewidth - boxwidth), 0); +} + void QueryString::DrawEditBox(const Window *w, WidgetID wid) const { const NWidgetLeaf *wi = w->GetWidget(wid); @@ -794,7 +816,7 @@ void QueryString::DrawEditBox(const Window *w, WidgetID wid) const DrawFrameRect(cr, wi->colour, wi->IsLowered() ? FR_LOWERED : FR_NONE); DrawSpriteIgnorePadding(rtl ? SPR_IMG_DELETE_RIGHT : SPR_IMG_DELETE_LEFT, PAL_NONE, cr, SA_CENTER); - if (this->text.bytes == 1) GfxFillRect(cr.Shrink(WidgetDimensions::scaled.bevel), _colour_gradient[wi->colour & 0xF][2], FILLRECT_CHECKER); + if (this->text.bytes == 1) GfxFillRect(cr.Shrink(WidgetDimensions::scaled.bevel), GetColourGradient(wi->colour, SHADE_DARKER), FILLRECT_CHECKER); DrawFrameRect(fr, wi->colour, FR_LOWERED | FR_DARKENED); GfxFillRect(fr.Shrink(WidgetDimensions::scaled.bevel), PC_BLACK); @@ -803,24 +825,29 @@ void QueryString::DrawEditBox(const Window *w, WidgetID wid) const /* Limit the drawing of the string inside the widget boundaries */ DrawPixelInfo dpi; if (!FillDrawPixelInfo(&dpi, fr)) return; + /* Keep coordinates relative to the window. */ + dpi.left += fr.left; + dpi.top += fr.top; AutoRestoreBackup dpi_backup(_cur_dpi, &dpi); /* We will take the current widget length as maximum width, with a small * space reserved at the end for the caret to show */ const Textbuf *tb = &this->text; - int delta = std::min(0, (fr.right - fr.left) - tb->pixels - GetCaretWidth()); - - if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs; + fr = ScrollEditBoxTextRect(fr, *tb); /* If we have a marked area, draw a background highlight. */ - if (tb->marklength != 0) GfxFillRect(delta + tb->markxoffs, 0, delta + tb->markxoffs + tb->marklength - 1, fr.bottom - fr.top, PC_GREY); + if (tb->marklength != 0) GfxFillRect(fr.left + tb->markxoffs, fr.top, fr.left + tb->markxoffs + tb->marklength - 1, fr.bottom, PC_GREY); - DrawString(delta, tb->pixels, 0, tb->buf, TC_YELLOW); + DrawString(fr.left, fr.right, CenterBounds(fr.top, fr.bottom, GetCharacterHeight(FS_NORMAL)), tb->buf, TC_YELLOW); bool focussed = w->IsWidgetGloballyFocused(wid) || IsOSKOpenedFor(w, wid); if (focussed && tb->caret) { - int caret_width = GetStringBoundingBox("_").width; - DrawString(tb->caretxoffs + delta, tb->caretxoffs + delta + caret_width, 0, "_", TC_WHITE); + int caret_width = GetCaretWidth(); + if (rtl) { + DrawString(fr.right - tb->pixels + tb->caretxoffs - caret_width, fr.right - tb->pixels + tb->caretxoffs, CenterBounds(fr.top, fr.bottom, GetCharacterHeight(FS_NORMAL)), "_", TC_WHITE); + } else { + DrawString(fr.left + tb->caretxoffs, fr.left + tb->caretxoffs + caret_width, CenterBounds(fr.top, fr.bottom, GetCharacterHeight(FS_NORMAL)), "_", TC_WHITE); + } } } @@ -844,10 +871,9 @@ Point QueryString::GetCaretPosition(const Window *w, WidgetID wid) const /* Clamp caret position to be inside out current width. */ const Textbuf *tb = &this->text; - int delta = std::min(0, (r.right - r.left) - tb->pixels - GetCaretWidth()); - if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs; + r = ScrollEditBoxTextRect(r, *tb); - Point pt = {r.left + tb->caretxoffs + delta, r.top}; + Point pt = {r.left + tb->caretxoffs, r.top}; return pt; } @@ -873,14 +899,13 @@ Rect QueryString::GetBoundingRect(const Window *w, WidgetID wid, const char *fro /* Clamp caret position to be inside our current width. */ const Textbuf *tb = &this->text; - int delta = std::min(0, r.Width() - tb->pixels - GetCaretWidth()); - if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs; + r = ScrollEditBoxTextRect(r, *tb); /* Get location of first and last character. */ - Point p1 = GetCharPosInString(tb->buf, from, FS_NORMAL); - Point p2 = from != to ? GetCharPosInString(tb->buf, to, FS_NORMAL) : p1; + const auto p1 = GetCharPosInString(tb->buf, from, FS_NORMAL); + const auto p2 = from != to ? GetCharPosInString(tb->buf, to, FS_NORMAL) : p1; - return { Clamp(r.left + p1.x + delta, r.left, r.right), r.top, Clamp(r.left + p2.x + delta, r.left, r.right), r.bottom }; + return { Clamp(r.left + p1.left, r.left, r.right), r.top, Clamp(r.left + p2.right, r.left, r.right), r.bottom }; } /** @@ -906,10 +931,9 @@ ptrdiff_t QueryString::GetCharAtPosition(const Window *w, WidgetID wid, const Po /* Clamp caret position to be inside our current width. */ const Textbuf *tb = &this->text; - int delta = std::min(0, r.Width() - tb->pixels - GetCaretWidth()); - if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs; + r = ScrollEditBoxTextRect(r, *tb); - return ::GetCharAtPosition(tb->buf, pt.x - delta - r.left); + return ::GetCharAtPosition(tb->buf, pt.x - r.left); } void QueryString::ClickEditBox(Window *w, Point pt, WidgetID wid, int click_count, bool focus_changed) @@ -946,9 +970,8 @@ struct QueryStringWindow : public Window { QueryString editbox; ///< Editbox. QueryStringFlags flags; ///< Flags controlling behaviour of the window. - Dimension warning_size; ///< How much space to use for the warning text - QueryStringWindow(StringID str, StringID caption, uint max_bytes, uint max_chars, WindowDesc *desc, Window *parent, CharSetFilter afilter, QueryStringFlags flags) : + QueryStringWindow(StringID str, StringID caption, uint max_bytes, uint max_chars, WindowDesc &desc, Window *parent, CharSetFilter afilter, QueryStringFlags flags) : Window(desc), editbox(max_bytes, max_chars) { this->editbox.text.Assign(str); @@ -963,48 +986,19 @@ struct QueryStringWindow : public Window this->flags = flags; this->InitNested(WN_QUERY_STRING); - this->UpdateWarningStringSize(); this->parent = parent; this->SetFocusedWidget(WID_QS_TEXT); } - void UpdateWarningStringSize() - { - if (this->flags & QSF_PASSWORD) { - assert(this->nested_root->smallest_x > 0); - this->warning_size.width = this->nested_root->current_x - WidgetDimensions::scaled.frametext.Horizontal() - WidgetDimensions::scaled.framerect.Horizontal(); - this->warning_size.height = GetStringHeight(STR_WARNING_PASSWORD_SECURITY, this->warning_size.width); - this->warning_size.height += WidgetDimensions::scaled.frametext.Vertical() + WidgetDimensions::scaled.framerect.Vertical(); - } else { - this->warning_size = Dimension{ 0, 0 }; - } - - this->ReInit(); - } - - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget == WID_QS_DEFAULT && (this->flags & QSF_ENABLE_DEFAULT) == 0) { /* We don't want this widget to show! */ - fill->width = 0; - resize->width = 0; - size->width = 0; - } - - if (widget == WID_QS_WARNING) { - *size = this->warning_size; - } - } - - void DrawWidget(const Rect &r, WidgetID widget) const override - { - if (widget != WID_QS_WARNING) return; - - if (this->flags & QSF_PASSWORD) { - DrawStringMultiLine(r.Shrink(WidgetDimensions::scaled.framerect).Shrink(WidgetDimensions::scaled.frametext), - STR_WARNING_PASSWORD_SECURITY, TC_FROMSTRING, SA_CENTER); + fill.width = 0; + resize.width = 0; + size.width = 0; } } @@ -1045,7 +1039,7 @@ struct QueryStringWindow : public Window if (!this->editbox.handled && this->parent != nullptr) { Window *parent = this->parent; this->parent = nullptr; // so parent doesn't try to close us again - parent->OnQueryTextFinished(nullptr); + parent->OnQueryTextFinished(std::nullopt); } this->Window::Close(); } @@ -1057,9 +1051,8 @@ static constexpr NWidgetPart _nested_query_string_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY, WID_QS_CAPTION), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_WHITE), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_QS_TEXT), SetMinimalSize(256, 12), SetFill(1, 1), SetPadding(2, 2, 2, 2), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_QS_TEXT), SetMinimalSize(256, 0), SetFill(1, 0), SetPadding(2, 2, 2, 2), EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, WID_QS_WARNING), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_QS_DEFAULT), SetMinimalSize(87, 12), SetFill(1, 1), SetDataTip(STR_BUTTON_DEFAULT, STR_NULL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_QS_CANCEL), SetMinimalSize(86, 12), SetFill(1, 1), SetDataTip(STR_BUTTON_CANCEL, STR_NULL), @@ -1067,11 +1060,11 @@ static constexpr NWidgetPart _nested_query_string_widgets[] = { EndContainer(), }; -static WindowDesc _query_string_desc(__FILE__, __LINE__, +static WindowDesc _query_string_desc( WDP_CENTER, nullptr, 0, 0, WC_QUERY_STRING, WC_NONE, 0, - std::begin(_nested_query_string_widgets), std::end(_nested_query_string_widgets) + _nested_query_string_widgets ); /** @@ -1088,7 +1081,7 @@ void ShowQueryString(StringID str, StringID caption, uint maxsize, Window *paren assert(parent != nullptr); CloseWindowByClass(WC_QUERY_STRING); - new QueryStringWindow(str, caption, ((flags & QSF_LEN_IN_CHARS) ? MAX_CHAR_LENGTH : 1) * maxsize, maxsize, &_query_string_desc, parent, afilter, flags); + new QueryStringWindow(str, caption, ((flags & QSF_LEN_IN_CHARS) ? MAX_CHAR_LENGTH : 1) * maxsize, maxsize, _query_string_desc, parent, afilter, flags); } /** @@ -1099,7 +1092,7 @@ struct QueryWindow : public Window { std::vector params; ///< local copy of #_global_string_params StringID message; ///< message shown for query window - QueryWindow(WindowDesc *desc, StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) : Window(desc) + QueryWindow(WindowDesc &desc, StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) : Window(desc) { /* Create a backup of the variadic arguments to strings because it will be * overridden pretty often. We will copy these back for drawing */ @@ -1137,11 +1130,11 @@ struct QueryWindow : public Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget != WID_Q_TEXT) return; - *size = GetStringMultiLineBoundingBox(this->message, *size); + size = GetStringMultiLineBoundingBox(this->message, size); } void DrawWidget(const Rect &r, WidgetID widget) const override @@ -1210,11 +1203,11 @@ static constexpr NWidgetPart _nested_query_widgets[] = { EndContainer(), }; -static WindowDesc _query_desc(__FILE__, __LINE__, +static WindowDesc _query_desc( WDP_CENTER, nullptr, 0, 0, WC_CONFIRM_POPUP_QUERY, WC_NONE, WDF_MODAL, - std::begin(_nested_query_widgets), std::end(_nested_query_widgets) + _nested_query_widgets ); /** @@ -1241,6 +1234,6 @@ void ShowQuery(StringID caption, StringID message, Window *parent, QueryCallback break; } - QueryWindow *q = new QueryWindow(&_query_desc, caption, message, parent, callback); + QueryWindow *q = new QueryWindow(_query_desc, caption, message, parent, callback); if (focus) SetFocusedWindow(q); } diff --git a/src/mixer.cpp b/src/mixer.cpp index 3b30f3d25d..bcfde64a01 100644 --- a/src/mixer.cpp +++ b/src/mixer.cpp @@ -35,6 +35,7 @@ struct MixerChannel { }; static std::atomic _active_channels; +static std::atomic _stop_channels; static MixerChannel _channels[8]; static uint32_t _play_rate = 11025; static uint32_t _max_size = UINT_MAX; @@ -108,6 +109,16 @@ static void MxCloseChannel(uint8_t channel_index) _active_channels.fetch_and(~(1 << channel_index), std::memory_order_release); } +/** + * Close all mixer channels. + * This signals to the mixer that each channel should be closed even if it has not played all remaining samples. + * This is safe (and designed) to be called from the main thread. + */ +void MxCloseAllChannels() +{ + _stop_channels.fetch_or(~0, std::memory_order_release); +} + void MxMixSamples(void *buffer, uint samples) { PerformanceMeasurer framerate(PFE_SOUND); @@ -126,6 +137,12 @@ void MxMixSamples(void *buffer, uint samples) if (_music_stream) _music_stream((int16_t*)buffer, samples); } + /* Check if any channels should be stopped. */ + uint8_t stop = _stop_channels.load(std::memory_order_acquire); + for (uint8_t idx : SetBitIterator(stop)) { + MxCloseChannel(idx); + } + /* Apply simple x^3 scaling to master effect volume. This increases the * perceived difference in loudness to better match expectations. effect_vol * is expected to be in the range 0-127 hence the division by 127 * 127 to @@ -200,6 +217,7 @@ void MxSetChannelVolume(MixerChannel *mc, uint volume, float pan) void MxActivateChannel(MixerChannel *mc) { uint8_t channel_index = mc - _channels; + _stop_channels.fetch_and(~(1 << channel_index), std::memory_order_release); _active_channels.fetch_or((1 << channel_index), std::memory_order_release); } diff --git a/src/mixer.h b/src/mixer.h index ad94f5440c..3fbcbc4bc8 100644 --- a/src/mixer.h +++ b/src/mixer.h @@ -27,6 +27,7 @@ MixerChannel *MxAllocateChannel(); void MxSetChannelRawSrc(MixerChannel *mc, int8_t *mem, size_t size, uint rate, bool is16bit); void MxSetChannelVolume(MixerChannel *mc, uint volume, float pan); void MxActivateChannel(MixerChannel*); +void MxCloseAllChannels(); uint32_t MxSetMusicSource(MxStreamCallback music_callback); diff --git a/src/music.cpp b/src/music.cpp index 825ae388b0..52a8ef259c 100644 --- a/src/music.cpp +++ b/src/music.cpp @@ -8,6 +8,7 @@ /** @file music.cpp The songs that OpenTTD knows. */ #include "stdafx.h" +#include "string_func.h" /** The type of set we're replacing */ @@ -22,55 +23,50 @@ * Read the name of a music CAT file entry. * @param filename Name of CAT file to read from * @param entrynum Index of entry whose name to read - * @return Pointer to string, caller is responsible for freeing memory, - * nullptr if entrynum does not exist. + * @return Name of CAT file entry if it could be read. */ -char *GetMusicCatEntryName(const std::string &filename, size_t entrynum) +std::optional GetMusicCatEntryName(const std::string &filename, size_t entrynum) { - if (!FioCheckFileExists(filename, BASESET_DIR)) return nullptr; + if (!FioCheckFileExists(filename, BASESET_DIR)) return std::nullopt; RandomAccessFile file(filename, BASESET_DIR); uint32_t ofs = file.ReadDword(); size_t entry_count = ofs / 8; - if (entrynum < entry_count) { - file.SeekTo(entrynum * 8, SEEK_SET); - file.SeekTo(file.ReadDword(), SEEK_SET); - byte namelen = file.ReadByte(); - char *name = MallocT(namelen + 1); - file.ReadBlock(name, namelen); - name[namelen] = '\0'; - return name; - } - return nullptr; + if (entrynum >= entry_count) return std::nullopt; + + file.SeekTo(entrynum * 8, SEEK_SET); + file.SeekTo(file.ReadDword(), SEEK_SET); + uint8_t namelen = file.ReadByte(); + + std::string name(namelen, '\0'); + file.ReadBlock(name.data(), namelen); + return StrMakeValid(name); } /** * Read the full data of a music CAT file entry. * @param filename Name of CAT file to read from. * @param entrynum Index of entry to read - * @param[out] entrylen Receives length of data read - * @return Pointer to buffer with data read, caller is responsible for freeind memory, - * nullptr if entrynum does not exist. + * @return Data of CAT file entry. */ -byte *GetMusicCatEntryData(const std::string &filename, size_t entrynum, size_t &entrylen) +std::optional> GetMusicCatEntryData(const std::string &filename, size_t entrynum) { - entrylen = 0; - if (!FioCheckFileExists(filename, BASESET_DIR)) return nullptr; + if (!FioCheckFileExists(filename, BASESET_DIR)) return std::nullopt; RandomAccessFile file(filename, BASESET_DIR); uint32_t ofs = file.ReadDword(); size_t entry_count = ofs / 8; - if (entrynum < entry_count) { - file.SeekTo(entrynum * 8, SEEK_SET); - size_t entrypos = file.ReadDword(); - entrylen = file.ReadDword(); - file.SeekTo(entrypos, SEEK_SET); - file.SkipBytes(file.ReadByte()); - byte *data = MallocT(entrylen); - file.ReadBlock(data, entrylen); - return data; - } - return nullptr; + if (entrynum >= entry_count) return std::nullopt; + + file.SeekTo(entrynum * 8, SEEK_SET); + size_t entrypos = file.ReadDword(); + size_t entrylen = file.ReadDword(); + file.SeekTo(entrypos, SEEK_SET); + file.SkipBytes(file.ReadByte()); + + std::vector data(entrylen); + file.ReadBlock(data.data(), entrylen); + return data; } INSTANTIATE_BASE_MEDIA_METHODS(BaseMedia, MusicSet) @@ -138,13 +134,12 @@ bool MusicSet::FillSetDetails(const IniFile &ini, const std::string &path, const /* Song has a CAT file index, assume it's MPS MIDI format */ this->songinfo[i].filetype = MTT_MPSMIDI; this->songinfo[i].cat_index = atoi(item->value->c_str()); - char *songname = GetMusicCatEntryName(filename, this->songinfo[i].cat_index); - if (songname == nullptr) { + auto songname = GetMusicCatEntryName(filename, this->songinfo[i].cat_index); + if (!songname.has_value()) { Debug(grf, 0, "Base music set song missing from CAT file: {}/{}", filename, this->songinfo[i].cat_index); continue; } - this->songinfo[i].songname = songname; - free(songname); + this->songinfo[i].songname = *songname; } else { this->songinfo[i].filetype = MTT_STANDARDMIDI; } diff --git a/src/music/CMakeLists.txt b/src/music/CMakeLists.txt index 54105bd3cb..cf60e78669 100644 --- a/src/music/CMakeLists.txt +++ b/src/music/CMakeLists.txt @@ -36,12 +36,15 @@ if(NOT OPTION_DEDICATED) bemidi.h CONDITION HAIKU ) + + add_files( + midi.h + midifile.cpp + midifile.hpp + ) endif() add_files( - midi.h - midifile.cpp - midifile.hpp music_driver.hpp null_m.cpp null_m.h diff --git a/src/music/allegro_m.cpp b/src/music/allegro_m.cpp index b4fd0da8b2..ce9184f15f 100644 --- a/src/music/allegro_m.cpp +++ b/src/music/allegro_m.cpp @@ -26,7 +26,7 @@ static MIDI *_midi = nullptr; */ extern int _allegro_instance_count; -const char *MusicDriver_Allegro::Start(const StringList &) +std::optional MusicDriver_Allegro::Start(const StringList &) { if (_allegro_instance_count == 0 && install_allegro(SYSTEM_AUTODETECT, &errno, nullptr)) { Debug(driver, 0, "allegro: install_allegro failed '{}'", allegro_error); @@ -46,7 +46,7 @@ const char *MusicDriver_Allegro::Start(const StringList &) return "No sound card found"; } - return nullptr; + return std::nullopt; } void MusicDriver_Allegro::Stop() @@ -80,7 +80,7 @@ bool MusicDriver_Allegro::IsSongPlaying() return midi_pos >= 0; } -void MusicDriver_Allegro::SetVolume(byte vol) +void MusicDriver_Allegro::SetVolume(uint8_t vol) { set_volume(-1, vol); } diff --git a/src/music/allegro_m.h b/src/music/allegro_m.h index b07a7073b6..de59075f5e 100644 --- a/src/music/allegro_m.h +++ b/src/music/allegro_m.h @@ -15,7 +15,7 @@ /** Allegro's music player. */ class MusicDriver_Allegro : public MusicDriver { public: - const char *Start(const StringList ¶m) override; + std::optional Start(const StringList ¶m) override; void Stop() override; @@ -25,8 +25,8 @@ public: bool IsSongPlaying() override; - void SetVolume(byte vol) override; - const char *GetName() const override { return "allegro"; } + void SetVolume(uint8_t vol) override; + std::string_view GetName() const override { return "allegro"; } }; /** Factory for allegro's music player. */ diff --git a/src/music/bemidi.cpp b/src/music/bemidi.cpp index 3e4f5b311c..44386cf6c8 100644 --- a/src/music/bemidi.cpp +++ b/src/music/bemidi.cpp @@ -18,9 +18,9 @@ /** Factory for BeOS' midi player. */ static FMusicDriver_BeMidi iFMusicDriver_BeMidi; -const char *MusicDriver_BeMidi::Start(const StringList &parm) +std::optional MusicDriver_BeMidi::Start(const StringList &parm) { - return nullptr; + return std::nullopt; } void MusicDriver_BeMidi::Stop() @@ -69,7 +69,7 @@ bool MusicDriver_BeMidi::IsSongPlaying() return !this->midi_synth_file->IsFinished(); } -void MusicDriver_BeMidi::SetVolume(byte vol) +void MusicDriver_BeMidi::SetVolume(uint8_t vol) { this->current_volume = vol / 128.0; if (this->midi_synth_file != nullptr) this->midi_synth_file->SetVolume(this->current_volume); diff --git a/src/music/bemidi.h b/src/music/bemidi.h index c4ab1f3599..47529aa51d 100644 --- a/src/music/bemidi.h +++ b/src/music/bemidi.h @@ -18,7 +18,7 @@ /** The midi player for BeOS. */ class MusicDriver_BeMidi : public MusicDriver { public: - const char *Start(const StringList ¶m) override; + std::optional Start(const StringList ¶m) override; void Stop() override; @@ -28,8 +28,8 @@ public: bool IsSongPlaying() override; - void SetVolume(byte vol) override; - const char *GetName() const override { return "bemidi"; } + void SetVolume(uint8_t vol) override; + std::string_view GetName() const override { return "bemidi"; } private: BMidiSynthFile *midi_synth_file = nullptr; diff --git a/src/music/cocoa_m.cpp b/src/music/cocoa_m.cpp index bd9dfc59a1..9aa847712f 100644 --- a/src/music/cocoa_m.cpp +++ b/src/music/cocoa_m.cpp @@ -37,7 +37,7 @@ static MusicPlayer _player = nullptr; static MusicSequence _sequence = nullptr; static MusicTimeStamp _seq_length = 0; static bool _playing = false; -static byte _volume = 127; +static uint8_t _volume = 127; /** Set the volume of the current sequence. */ @@ -79,11 +79,11 @@ static void DoSetVolume() /** * Initialized the MIDI player, including QuickTime initialization. */ -const char *MusicDriver_Cocoa::Start(const StringList &) +std::optional MusicDriver_Cocoa::Start(const StringList &) { if (NewMusicPlayer(&_player) != noErr) return "failed to create music player"; - return nullptr; + return std::nullopt; } @@ -193,7 +193,7 @@ void MusicDriver_Cocoa::StopSong() * * @param vol The desired volume, range of the value is @c 0-127 */ -void MusicDriver_Cocoa::SetVolume(byte vol) +void MusicDriver_Cocoa::SetVolume(uint8_t vol) { _volume = vol; DoSetVolume(); diff --git a/src/music/cocoa_m.h b/src/music/cocoa_m.h index 046a60c386..dbf58e425e 100644 --- a/src/music/cocoa_m.h +++ b/src/music/cocoa_m.h @@ -14,7 +14,7 @@ class MusicDriver_Cocoa : public MusicDriver { public: - const char *Start(const StringList ¶m) override; + std::optional Start(const StringList ¶m) override; void Stop() override; @@ -24,8 +24,8 @@ public: bool IsSongPlaying() override; - void SetVolume(byte vol) override; - const char *GetName() const override { return "cocoa"; } + void SetVolume(uint8_t vol) override; + std::string_view GetName() const override { return "cocoa"; } }; class FMusicDriver_Cocoa : public DriverFactoryBase { diff --git a/src/music/dmusic.cpp b/src/music/dmusic.cpp index 640a0c771e..c7c2d97642 100644 --- a/src/music/dmusic.cpp +++ b/src/music/dmusic.cpp @@ -128,7 +128,7 @@ static struct { bool do_stop; ///< flag for stopping playback at next opportunity int preload_time; ///< preload time for music blocks. - byte new_volume; ///< volume setting to change to + uint8_t new_volume; ///< volume setting to change to MidiFile next_file; ///< upcoming file to play PlaybackSegment next_segment; ///< segment info for upcoming file @@ -519,12 +519,12 @@ bool DLSFile::LoadFile(const wchar_t *file) } -static byte ScaleVolume(byte original, byte scale) +static uint8_t ScaleVolume(uint8_t original, uint8_t scale) { return original * scale / 127; } -static void TransmitChannelMsg(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, byte status, byte p1, byte p2 = 0) +static void TransmitChannelMsg(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, uint8_t status, uint8_t p1, uint8_t p2 = 0) { if (buffer->PackStructured(rt, 0, status | (p1 << 8) | (p2 << 16)) == E_OUTOFMEMORY) { /* Buffer is full, clear it and try again. */ @@ -535,10 +535,10 @@ static void TransmitChannelMsg(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, by } } -static void TransmitSysex(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, const byte *&msg_start, size_t &remaining) +static void TransmitSysex(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, const uint8_t *&msg_start, size_t &remaining) { /* Find end of message. */ - const byte *msg_end = msg_start; + const uint8_t *msg_end = msg_start; while (*msg_end != MIDIST_ENDSYSEX) msg_end++; msg_end++; // Also include SysEx end byte. @@ -558,7 +558,7 @@ static void TransmitSysex(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, const b static void TransmitStandardSysex(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, MidiSysexMessage msg) { size_t length = 0; - const byte *data = MidiGetStandardSysexMessage(msg, length); + const uint8_t *data = MidiGetStandardSysexMessage(msg, length); TransmitSysex(buffer, rt, data, length); } @@ -594,8 +594,8 @@ static void MidiThreadProc() MidiFile current_file; // file currently being played from PlaybackSegment current_segment; // segment info for current playback size_t current_block = 0; // next block index to send - byte current_volume = 0; // current effective volume setting - byte channel_volumes[16]; // last seen volume controller values in raw data + uint8_t current_volume = 0; // current effective volume setting + uint8_t channel_volumes[16]; // last seen volume controller values in raw data /* Get pointer to the reference clock of our output port. */ IReferenceClock *clock; @@ -650,7 +650,7 @@ static void MidiThreadProc() clock->GetTime(&cur_time); TransmitNotesOff(_buffer, block_time, cur_time); - MemSetT(channel_volumes, 127, lengthof(channel_volumes)); + MemSetT(channel_volumes, 127, lengthof(channel_volumes)); /* Invalidate current volume. */ current_volume = UINT8_MAX; last_volume_time = 0; @@ -735,13 +735,13 @@ static void MidiThreadProc() block_time = playback_start_time + block.realtime * MIDITIME_TO_REFTIME; Debug(driver, 9, "DMusic thread: Streaming block {} (cur={}, block={})", current_block, (long long)(current_time / MS_TO_REFTIME), (long long)(block_time / MS_TO_REFTIME)); - const byte *data = block.data.data(); + const uint8_t *data = block.data.data(); size_t remaining = block.data.size(); - byte last_status = 0; + uint8_t last_status = 0; while (remaining > 0) { /* MidiFile ought to have converted everything out of running status, * but handle it anyway just to be safe */ - byte status = data[0]; + uint8_t status = data[0]; if (status & 0x80) { last_status = status; data++; @@ -870,7 +870,7 @@ static const char *LoadDefaultDLSFile(const char *user_dls) DWORD buf_size = sizeof(dls_path); // Buffer size as to be given in bytes! if (SUCCEEDED(RegQueryValueEx(hkDM, L"GMFilePath", nullptr, nullptr, (LPBYTE)dls_path, &buf_size))) { wchar_t expand_path[MAX_PATH * 2]; - ExpandEnvironmentStrings(dls_path, expand_path, lengthof(expand_path)); + ExpandEnvironmentStrings(dls_path, expand_path, static_cast(std::size(expand_path))); if (!dls_file.LoadFile(expand_path)) Debug(driver, 1, "Failed to load default GM DLS file from registry"); } RegCloseKey(hkDM); @@ -880,7 +880,7 @@ static const char *LoadDefaultDLSFile(const char *user_dls) if (dls_file.instruments.empty()) { static const wchar_t *DLS_GM_FILE = L"%windir%\\System32\\drivers\\gm.dls"; wchar_t path[MAX_PATH]; - ExpandEnvironmentStrings(DLS_GM_FILE, path, lengthof(path)); + ExpandEnvironmentStrings(DLS_GM_FILE, path, static_cast(std::size(path))); if (!dls_file.LoadFile(path)) return "Can't load GM DLS collection"; } @@ -1072,7 +1072,7 @@ static const char *LoadDefaultDLSFile(const char *user_dls) } -const char *MusicDriver_DMusic::Start(const StringList &parm) +std::optional MusicDriver_DMusic::Start(const StringList &parm) { /* Initialize COM */ if (FAILED(CoInitializeEx(nullptr, COINIT_MULTITHREADED))) return "COM initialization failed"; @@ -1153,7 +1153,7 @@ const char *MusicDriver_DMusic::Start(const StringList &parm) if (!StartNewThread(&_dmusic_thread, "ottd:dmusic", &MidiThreadProc)) return "Can't create MIDI output thread"; - return nullptr; + return std::nullopt; } @@ -1237,7 +1237,7 @@ bool MusicDriver_DMusic::IsSongPlaying() } -void MusicDriver_DMusic::SetVolume(byte vol) +void MusicDriver_DMusic::SetVolume(uint8_t vol) { _playback.new_volume = vol; } diff --git a/src/music/dmusic.h b/src/music/dmusic.h index 616bf01208..32f0943d85 100644 --- a/src/music/dmusic.h +++ b/src/music/dmusic.h @@ -17,7 +17,7 @@ class MusicDriver_DMusic : public MusicDriver { public: virtual ~MusicDriver_DMusic(); - const char *Start(const StringList ¶m) override; + std::optional Start(const StringList ¶m) override; void Stop() override; @@ -27,8 +27,8 @@ public: bool IsSongPlaying() override; - void SetVolume(byte vol) override; - const char *GetName() const override { return "dmusic"; } + void SetVolume(uint8_t vol) override; + std::string_view GetName() const override { return "dmusic"; } }; /** Factory for the DirectX music player. */ diff --git a/src/music/extmidi.cpp b/src/music/extmidi.cpp index af62d3488d..22fd8fcfa0 100644 --- a/src/music/extmidi.cpp +++ b/src/music/extmidi.cpp @@ -35,10 +35,10 @@ /** Factory for the midi player that uses external players. */ static FMusicDriver_ExtMidi iFMusicDriver_ExtMidi; -const char *MusicDriver_ExtMidi::Start(const StringList &parm) +std::optional MusicDriver_ExtMidi::Start(const StringList &parm) { - if (strcmp(VideoDriver::GetInstance()->GetName(), "allegro") == 0 || - strcmp(SoundDriver::GetInstance()->GetName(), "allegro") == 0) { + if (VideoDriver::GetInstance()->GetName() == "allegro" || + SoundDriver::GetInstance()->GetName() == "allegro") { return "the extmidi driver does not work when Allegro is loaded."; } @@ -62,7 +62,7 @@ const char *MusicDriver_ExtMidi::Start(const StringList &parm) this->song.clear(); this->pid = -1; - return nullptr; + return std::nullopt; } void MusicDriver_ExtMidi::Stop() @@ -95,7 +95,7 @@ bool MusicDriver_ExtMidi::IsSongPlaying() return this->pid != -1; } -void MusicDriver_ExtMidi::SetVolume(byte) +void MusicDriver_ExtMidi::SetVolume(uint8_t) { Debug(driver, 1, "extmidi: set volume not implemented"); } diff --git a/src/music/extmidi.h b/src/music/extmidi.h index b106ef91f8..f08c513008 100644 --- a/src/music/extmidi.h +++ b/src/music/extmidi.h @@ -22,7 +22,7 @@ private: void DoStop(); public: - const char *Start(const StringList ¶m) override; + std::optional Start(const StringList ¶m) override; void Stop() override; @@ -32,8 +32,8 @@ public: bool IsSongPlaying() override; - void SetVolume(byte vol) override; - const char *GetName() const override { return "extmidi"; } + void SetVolume(uint8_t vol) override; + std::string_view GetName() const override { return "extmidi"; } }; class FMusicDriver_ExtMidi : public DriverFactoryBase { diff --git a/src/music/fluidsynth.cpp b/src/music/fluidsynth.cpp index 7a900579e2..4ffd90e620 100644 --- a/src/music/fluidsynth.cpp +++ b/src/music/fluidsynth.cpp @@ -58,7 +58,7 @@ static void RenderMusicStream(int16_t *buffer, size_t samples) fluid_synth_write_s16(_midi.synth, samples, buffer, 0, 2, buffer, 1, 2); } -const char *MusicDriver_FluidSynth::Start(const StringList ¶m) +std::optional MusicDriver_FluidSynth::Start(const StringList ¶m) { std::lock_guard lock{ _midi.synth_mutex }; @@ -110,7 +110,7 @@ const char *MusicDriver_FluidSynth::Start(const StringList ¶m) _midi.player = nullptr; - return nullptr; + return std::nullopt; } void MusicDriver_FluidSynth::Stop() @@ -183,7 +183,7 @@ bool MusicDriver_FluidSynth::IsSongPlaying() return fluid_player_get_status(_midi.player) == FLUID_PLAYER_PLAYING; } -void MusicDriver_FluidSynth::SetVolume(byte vol) +void MusicDriver_FluidSynth::SetVolume(uint8_t vol) { std::lock_guard lock{ _midi.synth_mutex }; if (_midi.settings == nullptr) return; diff --git a/src/music/fluidsynth.h b/src/music/fluidsynth.h index 91543662d0..ae7a8385d8 100644 --- a/src/music/fluidsynth.h +++ b/src/music/fluidsynth.h @@ -15,7 +15,7 @@ /** Music driver making use of FluidSynth. */ class MusicDriver_FluidSynth : public MusicDriver { public: - const char *Start(const StringList ¶m) override; + std::optional Start(const StringList ¶m) override; void Stop() override; @@ -25,8 +25,8 @@ public: bool IsSongPlaying() override; - void SetVolume(byte vol) override; - const char *GetName() const override { return "fluidsynth"; } + void SetVolume(uint8_t vol) override; + std::string_view GetName() const override { return "fluidsynth"; } }; /** Factory for the fluidsynth driver. */ diff --git a/src/music/midi.h b/src/music/midi.h index 38f82220f4..a0546a8e88 100644 --- a/src/music/midi.h +++ b/src/music/midi.h @@ -152,6 +152,6 @@ enum class MidiSysexMessage { RolandSetReverb, }; -const byte *MidiGetStandardSysexMessage(MidiSysexMessage msg, size_t &length); +const uint8_t *MidiGetStandardSysexMessage(MidiSysexMessage msg, size_t &length); #endif /* MUSIC_MIDI_H */ diff --git a/src/music/midifile.cpp b/src/music/midifile.cpp index fbb1a1dee1..a5eddd6278 100644 --- a/src/music/midifile.cpp +++ b/src/music/midifile.cpp @@ -30,12 +30,12 @@ static MidiFile *_midifile_instance = nullptr; * @param[out] length Receives the length of the returned buffer * @return Pointer to byte buffer with sysex message */ -const byte *MidiGetStandardSysexMessage(MidiSysexMessage msg, size_t &length) +const uint8_t *MidiGetStandardSysexMessage(MidiSysexMessage msg, size_t &length) { - static byte reset_gm_sysex[] = { 0xF0, 0x7E, 0x7F, 0x09, 0x01, 0xF7 }; - static byte reset_gs_sysex[] = { 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x00, 0x7F, 0x00, 0x41, 0xF7 }; - static byte reset_xg_sysex[] = { 0xF0, 0x43, 0x10, 0x4C, 0x00, 0x00, 0x7E, 0x00, 0xF7 }; - static byte roland_reverb_sysex[] = { 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x01, 0x30, 0x02, 0x04, 0x00, 0x40, 0x40, 0x00, 0x00, 0x09, 0xF7 }; + static uint8_t reset_gm_sysex[] = { 0xF0, 0x7E, 0x7F, 0x09, 0x01, 0xF7 }; + static uint8_t reset_gs_sysex[] = { 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x00, 0x7F, 0x00, 0x41, 0xF7 }; + static uint8_t reset_xg_sysex[] = { 0xF0, 0x43, 0x10, 0x4C, 0x00, 0x00, 0x7E, 0x00, 0xF7 }; + static uint8_t roland_reverb_sysex[] = { 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x01, 0x30, 0x02, 0x04, 0x00, 0x40, 0x40, 0x00, 0x00, 0x09, 0xF7 }; switch (msg) { case MidiSysexMessage::ResetGM: @@ -60,7 +60,7 @@ const byte *MidiGetStandardSysexMessage(MidiSysexMessage msg, size_t &length) * RAII-compliant to make teardown in error situations easier. */ class ByteBuffer { - std::vector buf; + std::vector buf; size_t pos; public: /** @@ -104,7 +104,7 @@ public: * @param[out] b returns the read value * @return true if a byte was available for reading */ - bool ReadByte(byte &b) + bool ReadByte(uint8_t &b) { if (this->IsEnd()) return false; b = this->buf[this->pos++]; @@ -121,7 +121,7 @@ public: bool ReadVariableLength(uint32_t &res) { res = 0; - byte b = 0; + uint8_t b = 0; do { if (this->IsEnd()) return false; b = this->buf[this->pos++]; @@ -136,7 +136,7 @@ public: * @param length number of bytes to read * @return true if the requested number of bytes were available */ - bool ReadBuffer(byte *dest, size_t length) + bool ReadBuffer(uint8_t *dest, size_t length) { if (this->IsEnd()) return false; if (this->buf.size() - this->pos < length) return false; @@ -188,9 +188,9 @@ public: static bool ReadTrackChunk(FILE *file, MidiFile &target) { - byte buf[4]; + uint8_t buf[4]; - const byte magic[] = { 'M', 'T', 'r', 'k' }; + const uint8_t magic[] = { 'M', 'T', 'r', 'k' }; if (fread(buf, sizeof(magic), 1, file) != 1) { return false; } @@ -213,7 +213,7 @@ static bool ReadTrackChunk(FILE *file, MidiFile &target) target.blocks.push_back(MidiFile::DataBlock()); MidiFile::DataBlock *block = &target.blocks.back(); - byte last_status = 0; + uint8_t last_status = 0; bool running_sysex = false; while (!chunk.IsEnd()) { /* Read deltatime for event, start new block */ @@ -227,7 +227,7 @@ static bool ReadTrackChunk(FILE *file, MidiFile &target) } /* Read status byte */ - byte status; + uint8_t status; if (!chunk.ReadByte(status)) { return false; } @@ -422,13 +422,13 @@ bool MidiFile::ReadSMFHeader(const std::string &filename, SMFHeader &header) bool MidiFile::ReadSMFHeader(FILE *file, SMFHeader &header) { /* Try to read header, fixed size */ - byte buffer[14]; + uint8_t buffer[14]; if (fread(buffer, sizeof(buffer), 1, file) != 1) { return false; } /* Check magic, 'MThd' followed by 4 byte length indicator (always = 6 in SMF) */ - const byte magic[] = { 'M', 'T', 'h', 'd', 0x00, 0x00, 0x00, 0x06 }; + const uint8_t magic[] = { 'M', 'T', 'h', 'd', 0x00, 0x00, 0x00, 0x06 }; if (MemCmpT(buffer, magic, sizeof(magic)) != 0) { return false; } @@ -505,8 +505,8 @@ cleanup: struct MpsMachine { /** Starting parameter and playback status for one channel/track */ struct Channel { - byte cur_program; ///< program selected, used for velocity scaling (lookup into programvelocities array) - byte running_status; ///< last midi status code seen + uint8_t cur_program; ///< program selected, used for velocity scaling (lookup into programvelocities array) + uint8_t running_status; ///< last midi status code seen uint16_t delay; ///< frames until next command uint32_t playpos; ///< next byte to play this channel from uint32_t startpos; ///< start position of master track @@ -521,9 +521,9 @@ struct MpsMachine { bool shouldplayflag; ///< not-end-of-song flag static const int TEMPO_RATE; - static const byte programvelocities[128]; + static const uint8_t programvelocities[128]; - const byte *songdata; ///< raw data array + const uint8_t *songdata; ///< raw data array size_t songdatalen; ///< length of song data MidiFile ⌖ ///< recipient of data @@ -534,12 +534,12 @@ struct MpsMachine { MPSMIDIST_ENDSONG = 0xFF, ///< immediately end the song }; - static void AddMidiData(MidiFile::DataBlock &block, byte b1, byte b2) + static void AddMidiData(MidiFile::DataBlock &block, uint8_t b1, uint8_t b2) { block.data.push_back(b1); block.data.push_back(b2); } - static void AddMidiData(MidiFile::DataBlock &block, byte b1, byte b2, byte b3) + static void AddMidiData(MidiFile::DataBlock &block, uint8_t b1, uint8_t b2, uint8_t b3) { block.data.push_back(b1); block.data.push_back(b2); @@ -552,7 +552,7 @@ struct MpsMachine { * @param length Length of the data buffer in bytes * @param target MidiFile object to add decoded data to */ - MpsMachine(const byte *data, size_t length, MidiFile &target) + MpsMachine(const uint8_t *data, size_t length, MidiFile &target) : songdata(data), songdatalen(length), target(target) { uint32_t pos = 0; @@ -580,7 +580,7 @@ struct MpsMachine { /* Similar structure to segments list, but also has * the MIDI channel number as a byte before the offset * to next track. */ - byte ch = this->songdata[pos++]; + uint8_t ch = this->songdata[pos++]; this->channels[ch].startpos = pos + 4; pos += FROM_LE16(*(const int16_t *)(this->songdata + pos)); } @@ -593,7 +593,7 @@ struct MpsMachine { */ uint16_t ReadVariableLength(uint32_t &pos) { - byte b = 0; + uint8_t b = 0; uint16_t res = 0; do { b = this->songdata[pos++]; @@ -627,7 +627,7 @@ struct MpsMachine { uint16_t PlayChannelFrame(MidiFile::DataBlock &outblock, int channel) { uint16_t newdelay = 0; - byte b1, b2; + uint8_t b1, b2; Channel &chandata = this->channels[channel]; do { @@ -811,7 +811,7 @@ struct MpsMachine { /** Frames/ticks per second for music playback */ const int MpsMachine::TEMPO_RATE = 148; /** Base note velocities for various GM programs */ -const byte MpsMachine::programvelocities[128] = { +const uint8_t MpsMachine::programvelocities[128] = { 100, 100, 100, 100, 100, 90, 100, 100, 100, 100, 100, 90, 100, 100, 100, 100, 100, 100, 85, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 90, 110, 80, 100, 100, 100, 90, 70, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, @@ -828,7 +828,7 @@ const byte MpsMachine::programvelocities[128] = { * @param length size of data in bytes * @return true if the data could be loaded */ -bool MidiFile::LoadMpsData(const byte *data, size_t length) +bool MidiFile::LoadMpsData(const uint8_t *data, size_t length) { _midifile_instance = this; @@ -843,11 +843,9 @@ bool MidiFile::LoadSong(const MusicSongInfo &song) return this->LoadFile(song.filename); case MTT_MPSMIDI: { - size_t songdatalen = 0; - byte *songdata = GetMusicCatEntryData(song.filename, song.cat_index, songdatalen); - if (songdata != nullptr) { - bool result = this->LoadMpsData(songdata, songdatalen); - free(songdata); + auto songdata = GetMusicCatEntryData(song.filename, song.cat_index); + if (songdata.has_value()) { + bool result = this->LoadMpsData(songdata->data(), songdata->size()); return result; } else { return false; @@ -878,21 +876,21 @@ void MidiFile::MoveFrom(MidiFile &other) static void WriteVariableLen(FILE *f, uint32_t value) { if (value <= 0x7F) { - byte tb = value; + uint8_t tb = value; fwrite(&tb, 1, 1, f); } else if (value <= 0x3FFF) { - byte tb[2]; + uint8_t tb[2]; tb[1] = value & 0x7F; value >>= 7; tb[0] = (value & 0x7F) | 0x80; value >>= 7; fwrite(tb, 1, sizeof(tb), f); } else if (value <= 0x1FFFFF) { - byte tb[3]; + uint8_t tb[3]; tb[2] = value & 0x7F; value >>= 7; tb[1] = (value & 0x7F) | 0x80; value >>= 7; tb[0] = (value & 0x7F) | 0x80; value >>= 7; fwrite(tb, 1, sizeof(tb), f); } else if (value <= 0x0FFFFFFF) { - byte tb[4]; + uint8_t tb[4]; tb[3] = value & 0x7F; value >>= 7; tb[2] = (value & 0x7F) | 0x80; value >>= 7; tb[1] = (value & 0x7F) | 0x80; value >>= 7; @@ -914,17 +912,17 @@ bool MidiFile::WriteSMF(const std::string &filename) } /* SMF header */ - const byte fileheader[] = { + const uint8_t fileheader[] = { 'M', 'T', 'h', 'd', // block name 0x00, 0x00, 0x00, 0x06, // BE32 block length, always 6 bytes 0x00, 0x00, // writing format 0 (all in one track) 0x00, 0x01, // containing 1 track (BE16) - (byte)(this->tickdiv >> 8), (byte)this->tickdiv, // tickdiv in BE16 + (uint8_t)(this->tickdiv >> 8), (uint8_t)this->tickdiv, // tickdiv in BE16 }; fwrite(fileheader, sizeof(fileheader), 1, f); /* Track header */ - const byte trackheader[] = { + const uint8_t trackheader[] = { 'M', 'T', 'r', 'k', // block name 0, 0, 0, 0, // BE32 block length, unknown at this time }; @@ -953,7 +951,7 @@ bool MidiFile::WriteSMF(const std::string &filename) /* Write tempo change if there is one */ if (nexttempo.ticktime <= block.ticktime) { - byte tempobuf[6] = { MIDIST_SMF_META, 0x51, 0x03, 0, 0, 0 }; + uint8_t tempobuf[6] = { MIDIST_SMF_META, 0x51, 0x03, 0, 0, 0 }; tempobuf[3] = (nexttempo.tempo & 0x00FF0000) >> 16; tempobuf[4] = (nexttempo.tempo & 0x0000FF00) >> 8; tempobuf[5] = (nexttempo.tempo & 0x000000FF); @@ -970,7 +968,7 @@ bool MidiFile::WriteSMF(const std::string &filename) } /* Write each block data command */ - byte *dp = block.data.data(); + uint8_t *dp = block.data.data(); while (dp < block.data.data() + block.data.size()) { /* Always zero delta time inside blocks */ if (needtime) { @@ -999,7 +997,7 @@ bool MidiFile::WriteSMF(const std::string &filename) if (*dp == MIDIST_SYSEX) { fwrite(dp, 1, 1, f); dp++; - byte *sysexend = dp; + uint8_t *sysexend = dp; while (*sysexend != MIDIST_ENDSYSEX) sysexend++; ptrdiff_t sysexlen = sysexend - dp; WriteVariableLen(f, sysexlen); @@ -1015,7 +1013,7 @@ bool MidiFile::WriteSMF(const std::string &filename) } /* End of track marker */ - static const byte track_end_marker[] = { 0x00, MIDIST_SMF_META, 0x2F, 0x00 }; + static const uint8_t track_end_marker[] = { 0x00, MIDIST_SMF_META, 0x2F, 0x00 }; fwrite(&track_end_marker, sizeof(track_end_marker), 1, f); /* Fill out the RIFF block length */ @@ -1078,17 +1076,13 @@ std::string MidiFile::GetSMFFile(const MusicSongInfo &song) return output_filename; } - byte *data; - size_t datalen; - data = GetMusicCatEntryData(song.filename, song.cat_index, datalen); - if (data == nullptr) return std::string(); + auto songdata = GetMusicCatEntryData(song.filename, song.cat_index); + if (!songdata.has_value()) return std::string(); MidiFile midifile; - if (!midifile.LoadMpsData(data, datalen)) { - free(data); + if (!midifile.LoadMpsData(songdata->data(), songdata->size())) { return std::string(); } - free(data); if (midifile.WriteSMF(output_filename)) { return output_filename; @@ -1098,7 +1092,7 @@ std::string MidiFile::GetSMFFile(const MusicSongInfo &song) } -static bool CmdDumpSMF(byte argc, char *argv[]) +static bool CmdDumpSMF(uint8_t argc, char *argv[]) { if (argc == 0) { IConsolePrint(CC_HELP, "Write the current song to a Standard MIDI File. Usage: 'dumpsmf '."); diff --git a/src/music/midifile.hpp b/src/music/midifile.hpp index c66094315e..5d13861552 100644 --- a/src/music/midifile.hpp +++ b/src/music/midifile.hpp @@ -17,9 +17,9 @@ struct MusicSongInfo; struct MidiFile { struct DataBlock { - uint32_t ticktime; ///< tick number since start of file this block should be triggered at - uint32_t realtime; ///< real-time (microseconds) since start of file this block should be triggered at - std::vector data; ///< raw midi data contained in block + uint32_t ticktime; ///< tick number since start of file this block should be triggered at + uint32_t realtime = 0; ///< real-time (microseconds) since start of file this block should be triggered at + std::vector data; ///< raw midi data contained in block DataBlock(uint32_t _ticktime = 0) : ticktime(_ticktime) { } }; struct TempoChange { @@ -36,7 +36,7 @@ struct MidiFile { ~MidiFile(); bool LoadFile(const std::string &filename); - bool LoadMpsData(const byte *data, size_t length); + bool LoadMpsData(const uint8_t *data, size_t length); bool LoadSong(const MusicSongInfo &song); void MoveFrom(MidiFile &other); diff --git a/src/music/music_driver.hpp b/src/music/music_driver.hpp index f8aff0e716..eaa5d63ddb 100644 --- a/src/music/music_driver.hpp +++ b/src/music/music_driver.hpp @@ -38,7 +38,7 @@ public: * Set the volume, if possible. * @param vol The new volume. */ - virtual void SetVolume(byte vol) = 0; + virtual void SetVolume(uint8_t vol) = 0; /** * Get the currently active instance of the music driver. diff --git a/src/music/null_m.h b/src/music/null_m.h index 5754f55642..9c2ca82855 100644 --- a/src/music/null_m.h +++ b/src/music/null_m.h @@ -15,7 +15,7 @@ /** The music player that does nothing. */ class MusicDriver_Null : public MusicDriver { public: - const char *Start(const StringList &) override { return nullptr; } + std::optional Start(const StringList &) override { return std::nullopt; } void Stop() override { } @@ -25,8 +25,8 @@ public: bool IsSongPlaying() override { return true; } - void SetVolume(byte) override { } - const char *GetName() const override { return "null"; } + void SetVolume(uint8_t) override { } + std::string_view GetName() const override { return "null"; } }; /** Factory for the null music player. */ diff --git a/src/music/win32_m.cpp b/src/music/win32_m.cpp index d07c7214a7..886deab2c0 100644 --- a/src/music/win32_m.cpp +++ b/src/music/win32_m.cpp @@ -37,8 +37,8 @@ static struct { bool playing; ///< flag indicating that playback is active int do_start; ///< flag for starting playback of next_file at next opportunity bool do_stop; ///< flag for stopping playback at next opportunity - byte current_volume; ///< current effective volume setting - byte new_volume; ///< volume setting to change to + uint8_t current_volume; ///< current effective volume setting + uint8_t new_volume; ///< volume setting to change to MidiFile current_file; ///< file currently being played from PlaybackSegment current_segment; ///< segment info for current playback @@ -47,13 +47,13 @@ static struct { MidiFile next_file; ///< upcoming file to play PlaybackSegment next_segment; ///< segment info for upcoming file - byte channel_volumes[16]; ///< last seen volume controller values in raw data + uint8_t channel_volumes[16]; ///< last seen volume controller values in raw data } _midi; static FMusicDriver_Win32 iFMusicDriver_Win32; -static byte ScaleVolume(byte original, byte scale) +static uint8_t ScaleVolume(uint8_t original, uint8_t scale) { return original * scale / 127; } @@ -68,21 +68,21 @@ void CALLBACK MidiOutProc(HMIDIOUT hmo, UINT wMsg, DWORD_PTR, DWORD_PTR dwParam1 } } -static void TransmitChannelMsg(byte status, byte p1, byte p2 = 0) +static void TransmitChannelMsg(uint8_t status, uint8_t p1, uint8_t p2 = 0) { midiOutShortMsg(_midi.midi_out, status | (p1 << 8) | (p2 << 16)); } -static void TransmitSysex(const byte *&msg_start, size_t &remaining) +static void TransmitSysex(const uint8_t *&msg_start, size_t &remaining) { /* find end of message */ - const byte *msg_end = msg_start; + const uint8_t *msg_end = msg_start; while (*msg_end != MIDIST_ENDSYSEX) msg_end++; msg_end++; /* also include sysex end byte */ /* prepare header */ MIDIHDR *hdr = CallocT(1); - hdr->lpData = reinterpret_cast(const_cast(msg_start)); + hdr->lpData = reinterpret_cast(const_cast(msg_start)); hdr->dwBufferLength = msg_end - msg_start; if (midiOutPrepareHeader(_midi.midi_out, hdr, sizeof(*hdr)) == MMSYSERR_NOERROR) { /* transmit - just point directly into the data buffer */ @@ -100,7 +100,7 @@ static void TransmitSysex(const byte *&msg_start, size_t &remaining) static void TransmitStandardSysex(MidiSysexMessage msg) { size_t length = 0; - const byte *data = MidiGetStandardSysexMessage(msg, length); + const uint8_t *data = MidiGetStandardSysexMessage(msg, length); TransmitSysex(data, length); } @@ -164,7 +164,7 @@ void CALLBACK TimerCallback(UINT uTimerID, UINT, DWORD_PTR, DWORD_PTR, DWORD_PTR _midi.do_start = 0; _midi.current_block = 0; - MemSetT(_midi.channel_volumes, 127, lengthof(_midi.channel_volumes)); + MemSetT(_midi.channel_volumes, 127, lengthof(_midi.channel_volumes)); /* Invalidate current volume. */ _midi.current_volume = UINT8_MAX; volume_throttle = 0; @@ -184,7 +184,7 @@ void CALLBACK TimerCallback(UINT uTimerID, UINT, DWORD_PTR, DWORD_PTR, DWORD_PTR _midi.current_volume = _midi.new_volume; volume_throttle = 20 / _midi.time_period; for (int ch = 0; ch < 16; ch++) { - byte vol = ScaleVolume(_midi.channel_volumes[ch], _midi.current_volume); + uint8_t vol = ScaleVolume(_midi.channel_volumes[ch], _midi.current_volume); TransmitChannelMsg(MIDIST_CONTROLLER | ch, MIDICT_CHANVOLUME, vol); } } else { @@ -242,13 +242,13 @@ void CALLBACK TimerCallback(UINT uTimerID, UINT, DWORD_PTR, DWORD_PTR, DWORD_PTR break; } - const byte *data = block.data.data(); + const uint8_t *data = block.data.data(); size_t remaining = block.data.size(); - byte last_status = 0; + uint8_t last_status = 0; while (remaining > 0) { /* MidiFile ought to have converted everything out of running status, * but handle it anyway just to be safe */ - byte status = data[0]; + uint8_t status = data[0]; if (status & 0x80) { last_status = status; data++; @@ -361,13 +361,13 @@ bool MusicDriver_Win32::IsSongPlaying() return _midi.playing || (_midi.do_start != 0); } -void MusicDriver_Win32::SetVolume(byte vol) +void MusicDriver_Win32::SetVolume(uint8_t vol) { std::lock_guard mutex_lock(_midi.lock); _midi.new_volume = vol; } -const char *MusicDriver_Win32::Start(const StringList &parm) +std::optional MusicDriver_Win32::Start(const StringList &parm) { Debug(driver, 2, "Win32-MIDI: Start: initializing"); @@ -416,7 +416,7 @@ const char *MusicDriver_Win32::Start(const StringList &parm) if (timeBeginPeriod(_midi.time_period) == MMSYSERR_NOERROR) { /* success */ Debug(driver, 2, "Win32-MIDI: Start: timer resolution is {}", _midi.time_period); - return nullptr; + return std::nullopt; } } midiOutClose(_midi.midi_out); diff --git a/src/music/win32_m.h b/src/music/win32_m.h index 5101d29321..bd6125420b 100644 --- a/src/music/win32_m.h +++ b/src/music/win32_m.h @@ -15,7 +15,7 @@ /** The Windows music player. */ class MusicDriver_Win32 : public MusicDriver { public: - const char *Start(const StringList ¶m) override; + std::optional Start(const StringList ¶m) override; void Stop() override; @@ -25,8 +25,8 @@ public: bool IsSongPlaying() override; - void SetVolume(byte vol) override; - const char *GetName() const override { return "win32"; } + void SetVolume(uint8_t vol) override; + std::string_view GetName() const override { return "win32"; } }; /** Factory for Windows' music player. */ diff --git a/src/music_gui.cpp b/src/music_gui.cpp index 728ba73c5c..bcad0b15f0 100644 --- a/src/music_gui.cpp +++ b/src/music_gui.cpp @@ -24,9 +24,9 @@ #include "string_func.h" #include "settings_type.h" #include "settings_gui.h" -#include "widgets/dropdown_func.h" -#include "widgets/dropdown_type.h" -#include "widgets/slider_func.h" +#include "dropdown_func.h" +#include "dropdown_type.h" +#include "slider_func.h" #include "mixer.h" #include "widgets/music_widget.h" @@ -106,7 +106,7 @@ void MusicSystem::BuildPlaylists() const MusicSet *set = BaseMusic::GetUsedSet(); /* Clear current playlists */ - for (size_t i = 0; i < lengthof(this->standard_playlists); ++i) this->standard_playlists[i].clear(); + for (auto &playlist : this->standard_playlists) playlist.clear(); this->music_set.clear(); /* Build standard playlists, and a list of available music */ @@ -428,7 +428,7 @@ void MusicSystem::ChangePlaylistPosition(int ofs) */ void MusicSystem::SaveCustomPlaylist(PlaylistChoices pl) { - byte *settings_pl; + uint8_t *settings_pl; if (pl == PLCH_CUSTOM1) { settings_pl = _settings_client.music.custom_1; } else if (pl == PLCH_CUSTOM2) { @@ -442,7 +442,7 @@ void MusicSystem::SaveCustomPlaylist(PlaylistChoices pl) for (const auto &song : this->standard_playlists[pl]) { /* Music set indices in the settings playlist are 1-based, 0 means unused slot */ - settings_pl[num++] = (byte)song.set_index + 1; + settings_pl[num++] = (uint8_t)song.set_index + 1; } } @@ -477,7 +477,7 @@ void InitializeMusic() struct MusicTrackSelectionWindow : public Window { - MusicTrackSelectionWindow(WindowDesc *desc, WindowNumber number) : Window(desc) + MusicTrackSelectionWindow(WindowDesc &desc, WindowNumber number) : Window(desc) { this->InitNested(number); this->LowerWidget(WID_MTS_LIST_LEFT); @@ -518,7 +518,7 @@ struct MusicTrackSelectionWindow : public Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_MTS_PLAYLIST: { @@ -530,7 +530,7 @@ struct MusicTrackSelectionWindow : public Window { } d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } @@ -547,7 +547,7 @@ struct MusicTrackSelectionWindow : public Window { } d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } } @@ -667,20 +667,20 @@ static constexpr NWidgetPart _nested_music_track_selection_widgets[] = { EndContainer(), }; -static WindowDesc _music_track_selection_desc(__FILE__, __LINE__, +static WindowDesc _music_track_selection_desc( WDP_AUTO, nullptr, 0, 0, WC_MUSIC_TRACK_SELECTION, WC_NONE, 0, - std::begin(_nested_music_track_selection_widgets), std::end(_nested_music_track_selection_widgets) + _nested_music_track_selection_widgets ); static void ShowMusicTrackSelection() { - AllocateWindowDescFront(&_music_track_selection_desc, 0); + AllocateWindowDescFront(_music_track_selection_desc, 0); } struct MusicWindow : public Window { - MusicWindow(WindowDesc *desc, WindowNumber number) : Window(desc) + MusicWindow(WindowDesc &desc, WindowNumber number) : Window(desc) { this->InitNested(number); this->LowerWidget(_settings_client.music.playlist + WID_M_ALL); @@ -700,7 +700,7 @@ struct MusicWindow : public Window { ); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { /* Make sure that WID_M_SHUFFLE and WID_M_PROGRAMME have the same size. @@ -710,7 +710,7 @@ struct MusicWindow : public Window { Dimension d = maxdim(GetStringBoundingBox(STR_MUSIC_PROGRAM), GetStringBoundingBox(STR_MUSIC_SHUFFLE)); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } @@ -718,7 +718,7 @@ struct MusicWindow : public Window { Dimension d = GetStringBoundingBox(STR_MUSIC_TRACK_NONE); d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } @@ -730,7 +730,7 @@ struct MusicWindow : public Window { } d.width += padding.width; d.height += padding.height; - *size = maxdim(*size, d); + size = maxdim(size, d); break; } @@ -775,11 +775,11 @@ struct MusicWindow : public Window { } case WID_M_MUSIC_VOL: - DrawSliderWidget(r, 0, INT8_MAX, _settings_client.music.music_vol, {}); + DrawSliderWidget(r, 0, INT8_MAX, 0, _settings_client.music.music_vol, nullptr); break; case WID_M_EFFECT_VOL: - DrawSliderWidget(r, 0, INT8_MAX, _settings_client.music.effect_vol, {}); + DrawSliderWidget(r, 0, INT8_MAX, 0, _settings_client.music.effect_vol, nullptr); break; } } @@ -825,8 +825,8 @@ struct MusicWindow : public Window { break; case WID_M_MUSIC_VOL: case WID_M_EFFECT_VOL: { // volume sliders - byte &vol = (widget == WID_M_MUSIC_VOL) ? _settings_client.music.music_vol : _settings_client.music.effect_vol; - if (ClickSliderWidget(this->GetWidget(widget)->GetCurrentRect(), pt, 0, INT8_MAX, vol)) { + uint8_t &vol = (widget == WID_M_MUSIC_VOL) ? _settings_client.music.music_vol : _settings_client.music.effect_vol; + if (ClickSliderWidget(this->GetWidget(widget)->GetCurrentRect(), pt, 0, INT8_MAX, 0, vol)) { if (widget == WID_M_MUSIC_VOL) { MusicDriver::GetInstance()->SetVolume(vol); } else { @@ -926,14 +926,14 @@ static constexpr NWidgetPart _nested_music_window_widgets[] = { EndContainer(), }; -static WindowDesc _music_window_desc(__FILE__, __LINE__, +static WindowDesc _music_window_desc( WDP_AUTO, "music", 0, 0, WC_MUSIC_WINDOW, WC_NONE, 0, - std::begin(_nested_music_window_widgets), std::end(_nested_music_window_widgets) + _nested_music_window_widgets ); void ShowMusicWindow() { - AllocateWindowDescFront(&_music_window_desc, 0); + AllocateWindowDescFront(_music_window_desc, 0); } diff --git a/src/network/CMakeLists.txt b/src/network/CMakeLists.txt index 5b97de5cd2..b78142f457 100644 --- a/src/network/CMakeLists.txt +++ b/src/network/CMakeLists.txt @@ -16,6 +16,9 @@ add_files( network_content_gui.h network_coordinator.cpp network_coordinator.h + network_crypto.cpp + network_crypto.h + network_crypto_internal.h network_func.h network_gamelist.cpp network_gamelist.h diff --git a/src/network/core/config.h b/src/network/core/config.h index df8991ad69..648ef2a35c 100644 --- a/src/network/core/config.h +++ b/src/network/core/config.h @@ -45,18 +45,17 @@ static const std::string NETWORK_SURVEY_DETAILS_LINK = "https://survey.openttd.o static const size_t TCP_MTU = 32767; ///< Number of bytes we can pack in a single TCP packet static const size_t COMPAT_MTU = 1460; ///< Number of bytes we can pack in a single packet for backward compatibility -static const byte NETWORK_GAME_ADMIN_VERSION = 3; ///< What version of the admin network do we use? -static const byte NETWORK_GAME_INFO_VERSION = 7; ///< What version of game-info do we use? -static const byte NETWORK_COORDINATOR_VERSION = 6; ///< What version of game-coordinator-protocol do we use? -static const byte NETWORK_SURVEY_VERSION = 1; ///< What version of the survey do we use? +static const uint8_t NETWORK_GAME_ADMIN_VERSION = 3; ///< What version of the admin network do we use? +static const uint8_t NETWORK_GAME_INFO_VERSION = 7; ///< What version of game-info do we use? +static const uint8_t NETWORK_COORDINATOR_VERSION = 6; ///< What version of game-coordinator-protocol do we use? +static const uint8_t NETWORK_SURVEY_VERSION = 2; ///< What version of the survey do we use? static const uint NETWORK_NAME_LENGTH = 80; ///< The maximum length of the server name and map name, in bytes including '\0' static const uint NETWORK_COMPANY_NAME_LENGTH = 128; ///< The maximum length of the company name, in bytes including '\0' static const uint NETWORK_HOSTNAME_LENGTH = 80; ///< The maximum length of the host name, in bytes including '\0' static const uint NETWORK_HOSTNAME_PORT_LENGTH = 80 + 6; ///< The maximum length of the host name + port, in bytes including '\0'. The extra six is ":" + port number (with a max of 65536) -static const uint NETWORK_SERVER_ID_LENGTH = 33; ///< The maximum length of the network id of the servers, in bytes including '\0' static const uint NETWORK_REVISION_LENGTH = 33; ///< The maximum length of the revision, in bytes including '\0' -static const uint NETWORK_PASSWORD_LENGTH = 33; ///< The maximum length of the password, in bytes including '\0' (must be >= NETWORK_SERVER_ID_LENGTH) +static const uint NETWORK_PASSWORD_LENGTH = 33; ///< The maximum length of the password, in bytes including '\0' static const uint NETWORK_CLIENT_NAME_LENGTH = 25; ///< The maximum length of a client's name, in bytes including '\0' static const uint NETWORK_RCONCOMMAND_LENGTH = 500; ///< The maximum length of a rconsole command, in bytes including '\0' static const uint NETWORK_GAMESCRIPT_JSON_LENGTH = 9000; ///< The maximum length of a receiving gamescript json string, in bytes including '\0'. @@ -91,4 +90,15 @@ static const uint NETWORK_GRF_NAME_LENGTH = 80; ///< Maxim */ static const uint NETWORK_MAX_GRF_COUNT = 255; +/** + * The maximum length of the hexadecimal encoded secret keys, in bytes including '\0'. + * This is related to \c X25519_KEY_SIZE in the network crypto internals. + */ +static const uint NETWORK_SECRET_KEY_LENGTH = 32 * 2 + 1; +/** + * The maximum length of the hexadecimal encoded public keys, in bytes including '\0'. + * This is related to \c X25519_KEY_SIZE in the network crypto internals. + */ +static const uint NETWORK_PUBLIC_KEY_LENGTH = 32 * 2 + 1; + #endif /* NETWORK_CORE_CONFIG_H */ diff --git a/src/network/core/core.h b/src/network/core/core.h index 712687022a..a9d12b1f11 100644 --- a/src/network/core/core.h +++ b/src/network/core/core.h @@ -13,6 +13,7 @@ #define NETWORK_CORE_CORE_H #include "../../newgrf_config.h" +#include "../network_crypto.h" #include "config.h" bool NetworkCoreInitialize(); @@ -43,6 +44,11 @@ class NetworkSocketHandler { private: bool has_quit; ///< Whether the current client has quit/send a bad packet +protected: + friend struct Packet; + std::unique_ptr receive_encryption_handler; ///< The handler for decrypting received packets. + std::unique_ptr send_encryption_handler; ///< The handler for encrypting sent packets. + public: /** Create a new unbound socket */ NetworkSocketHandler() { this->has_quit = false; } diff --git a/src/network/core/http_winhttp.cpp b/src/network/core/http_winhttp.cpp index 0efcbe69df..11fa7bf5b7 100644 --- a/src/network/core/http_winhttp.cpp +++ b/src/network/core/http_winhttp.cpp @@ -78,7 +78,7 @@ static std::string GetLastErrorAsString() DWORD error_code = GetLastError(); if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS, GetModuleHandle(L"winhttp.dll"), error_code, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, lengthof(buffer), nullptr) == 0) { + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, static_cast(std::size(buffer)), nullptr) == 0) { return fmt::format("unknown error {}", error_code); } @@ -121,8 +121,8 @@ void NetworkHTTPRequest::WinHttpCallback(DWORD code, void *info, DWORD length) /* Make sure we are not in a redirect loop. */ if (this->depth++ > 5) { Debug(net, 0, "HTTP request failed: too many redirects"); - this->finished = true; this->callback.OnFailure(); + this->finished = true; return; } break; @@ -144,8 +144,8 @@ void NetworkHTTPRequest::WinHttpCallback(DWORD code, void *info, DWORD length) if (status_code >= 400) { /* No need to be verbose about rate limiting. */ Debug(net, status_code == HTTP_429_TOO_MANY_REQUESTS ? 1 : 0, "HTTP request failed: status-code {}", status_code); - this->finished = true; this->callback.OnFailure(); + this->finished = true; return; } @@ -183,14 +183,14 @@ void NetworkHTTPRequest::WinHttpCallback(DWORD code, void *info, DWORD length) case WINHTTP_CALLBACK_STATUS_SECURE_FAILURE: case WINHTTP_CALLBACK_STATUS_REQUEST_ERROR: Debug(net, 0, "HTTP request failed: {}", GetLastErrorAsString()); - this->finished = true; this->callback.OnFailure(); + this->finished = true; break; default: Debug(net, 0, "HTTP request failed: unexepected callback code 0x{:x}", code); - this->finished = true; this->callback.OnFailure(); + this->finished = true; return; } } @@ -222,19 +222,19 @@ void NetworkHTTPRequest::Connect() /* Convert the URL to its components. */ url_components.dwStructSize = sizeof(url_components); url_components.lpszScheme = scheme; - url_components.dwSchemeLength = lengthof(scheme); + url_components.dwSchemeLength = static_cast(std::size(scheme)); url_components.lpszHostName = hostname; - url_components.dwHostNameLength = lengthof(hostname); + url_components.dwHostNameLength = static_cast(std::size(hostname)); url_components.lpszUrlPath = url_path; - url_components.dwUrlPathLength = lengthof(url_path); + url_components.dwUrlPathLength = static_cast(std::size(url_path)); WinHttpCrackUrl(this->uri.c_str(), 0, 0, &url_components); /* Create the HTTP connection. */ this->connection = WinHttpConnect(_winhttp_session, url_components.lpszHostName, url_components.nPort, 0); if (this->connection == nullptr) { Debug(net, 0, "HTTP request failed: {}", GetLastErrorAsString()); - this->finished = true; this->callback.OnFailure(); + this->finished = true; return; } @@ -243,8 +243,8 @@ void NetworkHTTPRequest::Connect() WinHttpCloseHandle(this->connection); Debug(net, 0, "HTTP request failed: {}", GetLastErrorAsString()); - this->finished = true; this->callback.OnFailure(); + this->finished = true; return; } @@ -267,8 +267,8 @@ bool NetworkHTTPRequest::Receive() { if (this->callback.cancelled && !this->finished) { Debug(net, 1, "HTTP request failed: cancelled by user"); - this->finished = true; this->callback.OnFailure(); + this->finished = true; /* Fall-through, as we are waiting for IsQueueEmpty() to happen. */ } diff --git a/src/network/core/network_game_info.cpp b/src/network/core/network_game_info.cpp index adecf1643f..8073edb247 100644 --- a/src/network/core/network_game_info.cpp +++ b/src/network/core/network_game_info.cpp @@ -24,6 +24,7 @@ #include "../../rev.h" #include "../network_func.h" #include "../network.h" +#include "../network_internal.h" #include "packet.h" #include "../../safeguards.h" @@ -46,7 +47,18 @@ std::string_view GetNetworkRevisionString() static std::string network_revision; if (network_revision.empty()) { +#if not defined(NETWORK_INTERNAL_H) +# error("network_internal.h must be included, otherwise the debug related preprocessor tokens won't be picked up correctly.") +#elif not defined(ENABLE_NETWORK_SYNC_EVERY_FRAME) + /* Just a standard build. */ network_revision = _openttd_revision; +#elif defined(NETWORK_SEND_DOUBLE_SEED) + /* Build for debugging that sends both parts of the seeds and by doing that practically syncs every frame. */ + network_revision = fmt::format("dbg_seed-{}", _openttd_revision); +#else + /* Build for debugging that sends the first part of the seed every frame, practically syncing every frame. */ + network_revision = fmt::format("dbg_sync-{}", _openttd_revision); +#endif if (_openttd_revision_tagged) { /* Tagged; do not mangle further, though ensure it's not too long. */ if (network_revision.size() >= NETWORK_REVISION_LENGTH) network_revision.resize(NETWORK_REVISION_LENGTH - 1); @@ -90,14 +102,19 @@ static std::string_view ExtractNetworkRevisionHash(std::string_view revision_str */ bool IsNetworkCompatibleVersion(std::string_view other) { - if (GetNetworkRevisionString() == other) return true; + std::string_view our_revision = GetNetworkRevisionString(); + if (our_revision == other) return true; /* If this version is tagged, then the revision string must be a complete match, * since there is no git hash suffix in it. * This is needed to avoid situations like "1.9.0-beta1" comparing equal to "2.0.0-beta1". */ if (_openttd_revision_tagged) return false; - std::string_view hash1 = ExtractNetworkRevisionHash(GetNetworkRevisionString()); + /* One of the versions is for some sort of debugging, but not both. */ + if (other.starts_with("dbg_seed") != our_revision.starts_with("dbg_seed")) return false; + if (other.starts_with("dbg_sync") != our_revision.starts_with("dbg_sync")) return false; + + std::string_view hash1 = ExtractNetworkRevisionHash(our_revision); std::string_view hash2 = ExtractNetworkRevisionHash(other); return hash1 == hash2; } @@ -148,7 +165,7 @@ const NetworkServerGameInfo &GetCurrentNetworkServerGameInfo() * - invite_code * These don't need to be updated manually here. */ - _network_game_info.companies_on = (byte)Company::GetNumItems(); + _network_game_info.companies_on = (uint8_t)Company::GetNumItems(); _network_game_info.spectators_on = NetworkSpectatorCount(); _network_game_info.calendar_date = TimerGameCalendar::date; _network_game_info.ticks_playing = TimerGameTick::counter; @@ -163,7 +180,7 @@ const NetworkServerGameInfo &GetCurrentNetworkServerGameInfo() * @param config The GRF to handle. * @param name The name of the NewGRF, empty when unknown. */ -static void HandleIncomingNetworkGameInfoGRFConfig(GRFConfig *config, std::string name) +static void HandleIncomingNetworkGameInfoGRFConfig(GRFConfig *config, std::string_view name) { /* Find the matching GRF file */ const GRFConfig *f = FindGRFConfig(config->ident.grfid, FGCM_EXACT, &config->ident.md5sum); @@ -260,7 +277,7 @@ void SerializeNetworkGameInfo(Packet &p, const NetworkServerGameInfo &info, bool */ void DeserializeNetworkGameInfo(Packet &p, NetworkGameInfo &info, const GameInfoNewGRFLookupTable *newgrf_lookup_table) { - byte game_info_version = p.Recv_uint8(); + uint8_t game_info_version = p.Recv_uint8(); NewGRFSerializationType newgrf_serialisation = NST_GRFID_MD5; /* @@ -375,9 +392,7 @@ void DeserializeNetworkGameInfo(Packet &p, NetworkGameInfo &info, const GameInfo void SerializeGRFIdentifier(Packet &p, const GRFIdentifier &grf) { p.Send_uint32(grf.grfid); - for (size_t j = 0; j < grf.md5sum.size(); j++) { - p.Send_uint8(grf.md5sum[j]); - } + p.Send_bytes(grf.md5sum); } /** @@ -388,9 +403,7 @@ void SerializeGRFIdentifier(Packet &p, const GRFIdentifier &grf) void DeserializeGRFIdentifier(Packet &p, GRFIdentifier &grf) { grf.grfid = p.Recv_uint32(); - for (size_t j = 0; j < grf.md5sum.size(); j++) { - grf.md5sum[j] = p.Recv_uint8(); - } + p.Recv_bytes(grf.md5sum); } /** diff --git a/src/network/core/network_game_info.h b/src/network/core/network_game_info.h index 8b63d2d151..3dfd1f0058 100644 --- a/src/network/core/network_game_info.h +++ b/src/network/core/network_game_info.h @@ -104,12 +104,12 @@ struct NetworkServerGameInfo { std::string server_revision; ///< The version number the server is using (e.g.: 'r304' or 0.5.0) bool dedicated; ///< Is this a dedicated server? bool use_password; ///< Is this server passworded? - byte clients_on; ///< Current count of clients on server - byte clients_max; ///< Max clients allowed on server - byte companies_on; ///< How many started companies do we have - byte companies_max; ///< Max companies allowed on server - byte spectators_on; ///< How many spectators do we have? - byte landscape; ///< The used landscape + uint8_t clients_on; ///< Current count of clients on server + uint8_t clients_max; ///< Max clients allowed on server + uint8_t companies_on; ///< How many started companies do we have + uint8_t companies_max; ///< Max companies allowed on server + uint8_t spectators_on; ///< How many spectators do we have? + uint8_t landscape; ///< The used landscape int gamescript_version; ///< Version of the gamescript. std::string gamescript_name; ///< Name of the gamescript. }; diff --git a/src/network/core/os_abstraction.cpp b/src/network/core/os_abstraction.cpp index 97647a4165..023fe5b116 100644 --- a/src/network/core/os_abstraction.cpp +++ b/src/network/core/os_abstraction.cpp @@ -83,7 +83,7 @@ const std::string &NetworkError::AsString() const #if defined(_WIN32) wchar_t buffer[512]; if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, this->error, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, lengthof(buffer), nullptr) == 0) { + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, static_cast(std::size(buffer)), nullptr) == 0) { this->message.assign(fmt::format("Unknown error {}", this->error)); } else { this->message.assign(FS2OTTD(buffer)); diff --git a/src/network/core/packet.cpp b/src/network/core/packet.cpp index d4cf165125..8e95f6c30e 100644 --- a/src/network/core/packet.cpp +++ b/src/network/core/packet.cpp @@ -38,16 +38,24 @@ Packet::Packet(NetworkSocketHandler *cs, size_t limit, size_t initial_read_size) /** * Creates a packet to send + * @param cs The socket handler associated with the socket we are writing to; could be \c nullptr. * @param type The type of the packet to send * @param limit The maximum number of bytes the packet may have. Default is COMPAT_MTU. * Be careful of compatibility with older clients/servers when changing * the limit as it might break things if the other side is not expecting * much larger packets than what they support. */ -Packet::Packet(PacketType type, size_t limit) : pos(0), limit(limit), cs(nullptr) +Packet::Packet(NetworkSocketHandler *cs, PacketType type, size_t limit) : pos(0), limit(limit), cs(cs) { /* Allocate space for the the size so we can write that in just before sending the packet. */ - this->Send_uint16(0); + size_t size = EncodedLengthOfPacketSize(); + if (cs != nullptr && cs->send_encryption_handler != nullptr) { + /* Allocate some space for the message authentication code of the encryption. */ + size += cs->send_encryption_handler->MACSize(); + } + assert(this->CanWriteToPacket(size)); + this->buffer.resize(size, 0); + this->Send_uint8(type); } @@ -57,11 +65,19 @@ Packet::Packet(PacketType type, size_t limit) : pos(0), limit(limit), cs(nullptr */ void Packet::PrepareToSend() { - assert(this->cs == nullptr); + /* Prevent this to be called twice and for packets that have been received. */ + assert(this->buffer[0] == 0 && this->buffer[1] == 0); this->buffer[0] = GB(this->Size(), 0, 8); this->buffer[1] = GB(this->Size(), 8, 8); + if (cs != nullptr && cs->send_encryption_handler != nullptr) { + size_t offset = EncodedLengthOfPacketSize(); + size_t mac_size = cs->send_encryption_handler->MACSize(); + size_t message_offset = offset + mac_size; + cs->send_encryption_handler->Encrypt(std::span(&this->buffer[offset], mac_size), std::span(&this->buffer[message_offset], this->buffer.size() - message_offset)); + } + this->pos = 0; // We start reading from here this->buffer.shrink_to_fit(); } @@ -164,7 +180,7 @@ void Packet::Send_string(const std::string_view data) * Copy a sized byte buffer into the packet. * @param data The data to send. */ -void Packet::Send_buffer(const std::vector &data) +void Packet::Send_buffer(const std::vector &data) { assert(this->CanWriteToPacket(sizeof(uint16_t) + data.size())); this->Send_uint16((uint16_t)data.size()); @@ -174,16 +190,15 @@ void Packet::Send_buffer(const std::vector &data) /** * Send as many of the bytes as possible in the packet. This can mean * that it is possible that not all bytes are sent. To cope with this - * the function returns the amount of bytes that were actually sent. - * @param begin The begin of the buffer to send. - * @param end The end of the buffer to send. - * @return The number of bytes that were added to this packet. + * the function returns the span of bytes that were not sent. + * @param span The span describing the range of bytes to send. + * @return The span of bytes that were not written. */ -size_t Packet::Send_bytes(const byte *begin, const byte *end) +std::span Packet::Send_bytes(const std::span span) { - size_t amount = std::min(end - begin, this->limit - this->Size()); - this->buffer.insert(this->buffer.end(), begin, begin + amount); - return amount; + size_t amount = std::min(span.size(), this->limit - this->Size()); + this->buffer.insert(this->buffer.end(), span.data(), span.data() + amount); + return span.subspan(amount); } /* @@ -222,7 +237,7 @@ bool Packet::CanReadFromPacket(size_t bytes_to_read, bool close_connection) */ bool Packet::HasPacketSizeData() const { - return this->pos >= sizeof(PacketSize); + return this->pos >= EncodedLengthOfPacketSize(); } /** @@ -243,27 +258,36 @@ size_t Packet::Size() const */ bool Packet::ParsePacketSize() { - assert(this->cs != nullptr); - size_t size = (size_t)this->buffer[0]; - size += (size_t)this->buffer[1] << 8; + size_t size = static_cast(this->buffer[0]); + size += static_cast(this->buffer[1]) << 8; /* If the size of the packet is less than the bytes required for the size and type of * the packet, or more than the allowed limit, then something is wrong with the packet. * In those cases the packet can generally be regarded as containing garbage data. */ - if (size < sizeof(PacketSize) + sizeof(PacketType) || size > this->limit) return false; + if (size < EncodedLengthOfPacketSize() + EncodedLengthOfPacketType() || size > this->limit) return false; this->buffer.resize(size); - this->pos = sizeof(PacketSize); + this->pos = static_cast(EncodedLengthOfPacketSize()); return true; } /** * Prepares the packet so it can be read + * @return True when the packet was valid, otherwise false. */ -void Packet::PrepareToRead() +bool Packet::PrepareToRead() { /* Put the position on the right place */ - this->pos = sizeof(PacketSize); + this->pos = static_cast(EncodedLengthOfPacketSize()); + + if (cs == nullptr || cs->receive_encryption_handler == nullptr) return true; + + size_t mac_size = cs->receive_encryption_handler->MACSize(); + if (this->buffer.size() <= pos + mac_size) return false; + + bool valid = cs->receive_encryption_handler->Decrypt(std::span(&this->buffer[pos], mac_size), std::span(&this->buffer[pos + mac_size], this->buffer.size() - pos - mac_size)); + this->pos += static_cast(mac_size); + return valid; } /** @@ -272,8 +296,10 @@ void Packet::PrepareToRead() */ PacketType Packet::GetPacketType() const { - assert(this->Size() >= sizeof(PacketSize) + sizeof(PacketType)); - return static_cast(buffer[sizeof(PacketSize)]); + assert(this->Size() >= EncodedLengthOfPacketSize() + EncodedLengthOfPacketType()); + size_t offset = EncodedLengthOfPacketSize(); + if (cs != nullptr && cs->send_encryption_handler != nullptr) offset += cs->send_encryption_handler->MACSize(); + return static_cast(buffer[offset]); } /** @@ -356,12 +382,12 @@ uint64_t Packet::Recv_uint64() * Extract a sized byte buffer from the packet. * @return The extracted buffer. */ -std::vector Packet::Recv_buffer() +std::vector Packet::Recv_buffer() { uint16_t size = this->Recv_uint16(); if (size == 0 || !this->CanReadFromPacket(size, true)) return {}; - std::vector data; + std::vector data; while (size-- > 0) { data.push_back(this->buffer[this->pos++]); } @@ -369,6 +395,22 @@ std::vector Packet::Recv_buffer() return data; } +/** + * Extract at most the length of the span bytes from the packet into the span. + * @param span The span to write the bytes to. + * @return The number of bytes that were actually read. + */ +size_t Packet::Recv_bytes(std::span span) +{ + auto tranfer_to_span = [](std::span destination, const char *source, size_t amount) { + size_t to_copy = std::min(amount, destination.size()); + std::copy(source, source + to_copy, destination.data()); + return to_copy; + }; + + return this->TransferOut(tranfer_to_span, span); +} + /** * Reads characters (bytes) from the packet until it finds a '\0', or reaches a * maximum of \c length characters. diff --git a/src/network/core/packet.h b/src/network/core/packet.h index 9cedfd63e1..839f8d4740 100644 --- a/src/network/core/packet.h +++ b/src/network/core/packet.h @@ -40,11 +40,13 @@ typedef uint8_t PacketType; ///< Identifier for the packet * (year % 4 == 0) and ((year % 100 != 0) or (year % 400 == 0)) */ struct Packet { + static constexpr size_t EncodedLengthOfPacketSize() { return sizeof(PacketSize); } + static constexpr size_t EncodedLengthOfPacketType() { return sizeof(PacketType); } private: /** The current read/write position in the packet */ PacketSize pos; /** The buffer of this packet. */ - std::vector buffer; + std::vector buffer; /** The limit for the packet size. */ size_t limit; @@ -52,8 +54,8 @@ private: NetworkSocketHandler *cs; public: - Packet(NetworkSocketHandler *cs, size_t limit, size_t initial_read_size = sizeof(PacketSize)); - Packet(PacketType type, size_t limit = COMPAT_MTU); + Packet(NetworkSocketHandler *cs, size_t limit, size_t initial_read_size = EncodedLengthOfPacketSize()); + Packet(NetworkSocketHandler *cs, PacketType type, size_t limit = COMPAT_MTU); /* Sending/writing of packets */ void PrepareToSend(); @@ -65,14 +67,14 @@ public: void Send_uint32(uint32_t data); void Send_uint64(uint64_t data); void Send_string(const std::string_view data); - void Send_buffer(const std::vector &data); - size_t Send_bytes (const byte *begin, const byte *end); + void Send_buffer(const std::vector &data); + std::span Send_bytes(const std::span span); /* Reading/receiving of packets */ bool HasPacketSizeData() const; bool ParsePacketSize(); size_t Size() const; - void PrepareToRead(); + [[nodiscard]] bool PrepareToRead(); PacketType GetPacketType() const; bool CanReadFromPacket(size_t bytes_to_read, bool close_connection = false); @@ -81,7 +83,8 @@ public: uint16_t Recv_uint16(); uint32_t Recv_uint32(); uint64_t Recv_uint64(); - std::vector Recv_buffer(); + std::vector Recv_buffer(); + size_t Recv_bytes(std::span span); std::string Recv_string(size_t length, StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK); size_t RemainingBytesToTransfer() const; diff --git a/src/network/core/tcp.cpp b/src/network/core/tcp.cpp index b01b8cd075..8bd7b44f2f 100644 --- a/src/network/core/tcp.cpp +++ b/src/network/core/tcp.cpp @@ -188,7 +188,11 @@ std::unique_ptr NetworkTCPSocketHandler::ReceivePacket() } } - p.PrepareToRead(); + if (!p.PrepareToRead()) { + Debug(net, 0, "Invalid packet received (too small / decryption error)"); + this->CloseConnection(); + return nullptr; + } return std::move(this->packet_recv); } diff --git a/src/network/core/tcp_admin.h b/src/network/core/tcp_admin.h index 4320a06f66..e14cd060d8 100644 --- a/src/network/core/tcp_admin.h +++ b/src/network/core/tcp_admin.h @@ -333,7 +333,7 @@ protected: * string Name of the company. * string Name of the companies manager. * uint8_t Main company colour. - * bool Company is password protected. + * bool Company is protected. * uint32_t Year the company was inaugurated. * bool Company is an AI. * @param p The packet that was just received. @@ -347,7 +347,7 @@ protected: * string Name of the company. * string Name of the companies manager. * uint8_t Main company colour. - * bool Company is password protected. + * bool Company is protected. * uint8_t Quarters of bankruptcy. * uint8_t Owner of share 1. * uint8_t Owner of share 2. diff --git a/src/network/core/tcp_content.h b/src/network/core/tcp_content.h index 95ee2805ef..24ae8d873a 100644 --- a/src/network/core/tcp_content.h +++ b/src/network/core/tcp_content.h @@ -25,7 +25,7 @@ protected: /** * Client requesting a list of content info: - * byte type + * uint8_t type * uint32_t openttd version (or 0xFFFFFFFF if using a list) * Only if the above value is 0xFFFFFFFF: * uint8_t count @@ -76,7 +76,7 @@ protected: /** * Server sending list of content info: - * byte type (invalid ID == does not exist) + * uint8_t type (invalid ID == does not exist) * uint32_t id * uint32_t file_size * string name (max 32 characters) diff --git a/src/network/core/tcp_coordinator.h b/src/network/core/tcp_coordinator.h index 9f00714891..27ed65ec87 100644 --- a/src/network/core/tcp_coordinator.h +++ b/src/network/core/tcp_coordinator.h @@ -277,7 +277,7 @@ protected: * uint16_t Number of NewGRFs in the packet, with for each of the NewGRFs: * uint32_t Lookup table index for the NewGRF. * uint32_t Unique NewGRF ID. - * byte[16] MD5 checksum of the NewGRF + * uint8_t[16] MD5 checksum of the NewGRF * string Name of the NewGRF. * * The lookup table built using these packets are used by the deserialisation diff --git a/src/network/core/tcp_game.cpp b/src/network/core/tcp_game.cpp index 4bd32ec153..c466ceedee 100644 --- a/src/network/core/tcp_game.cpp +++ b/src/network/core/tcp_game.cpp @@ -81,10 +81,10 @@ NetworkRecvStatus NetworkGameSocketHandler::HandlePacket(Packet &p) case PACKET_CLIENT_GAME_INFO: return this->Receive_CLIENT_GAME_INFO(p); case PACKET_SERVER_GAME_INFO: return this->Receive_SERVER_GAME_INFO(p); case PACKET_SERVER_CLIENT_INFO: return this->Receive_SERVER_CLIENT_INFO(p); - case PACKET_SERVER_NEED_GAME_PASSWORD: return this->Receive_SERVER_NEED_GAME_PASSWORD(p); - case PACKET_SERVER_NEED_COMPANY_PASSWORD: return this->Receive_SERVER_NEED_COMPANY_PASSWORD(p); - case PACKET_CLIENT_GAME_PASSWORD: return this->Receive_CLIENT_GAME_PASSWORD(p); - case PACKET_CLIENT_COMPANY_PASSWORD: return this->Receive_CLIENT_COMPANY_PASSWORD(p); + case PACKET_CLIENT_IDENTIFY: return this->Receive_CLIENT_IDENTIFY(p); + case PACKET_SERVER_AUTH_REQUEST: return this->Receive_SERVER_AUTH_REQUEST(p); + case PACKET_CLIENT_AUTH_RESPONSE: return this->Receive_CLIENT_AUTH_RESPONSE(p); + case PACKET_SERVER_ENABLE_ENCRYPTION: return this->Receive_SERVER_ENABLE_ENCRYPTION(p); case PACKET_SERVER_WELCOME: return this->Receive_SERVER_WELCOME(p); case PACKET_CLIENT_GETMAP: return this->Receive_CLIENT_GETMAP(p); case PACKET_SERVER_WAIT: return this->Receive_SERVER_WAIT(p); @@ -102,7 +102,6 @@ NetworkRecvStatus NetworkGameSocketHandler::HandlePacket(Packet &p) case PACKET_CLIENT_CHAT: return this->Receive_CLIENT_CHAT(p); case PACKET_SERVER_CHAT: return this->Receive_SERVER_CHAT(p); case PACKET_SERVER_EXTERNAL_CHAT: return this->Receive_SERVER_EXTERNAL_CHAT(p); - case PACKET_CLIENT_SET_PASSWORD: return this->Receive_CLIENT_SET_PASSWORD(p); case PACKET_CLIENT_SET_NAME: return this->Receive_CLIENT_SET_NAME(p); case PACKET_CLIENT_QUIT: return this->Receive_CLIENT_QUIT(p); case PACKET_CLIENT_ERROR: return this->Receive_CLIENT_ERROR(p); @@ -116,7 +115,6 @@ NetworkRecvStatus NetworkGameSocketHandler::HandlePacket(Packet &p) case PACKET_CLIENT_NEWGRFS_CHECKED: return this->Receive_CLIENT_NEWGRFS_CHECKED(p); case PACKET_SERVER_MOVE: return this->Receive_SERVER_MOVE(p); case PACKET_CLIENT_MOVE: return this->Receive_CLIENT_MOVE(p); - case PACKET_SERVER_COMPANY_UPDATE: return this->Receive_SERVER_COMPANY_UPDATE(p); case PACKET_SERVER_CONFIG_UPDATE: return this->Receive_SERVER_CONFIG_UPDATE(p); default: @@ -162,10 +160,10 @@ NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_ERROR(Packet &) { ret NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_GAME_INFO(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_GAME_INFO); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_GAME_INFO(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_GAME_INFO); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_CLIENT_INFO); } -NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_NEED_GAME_PASSWORD(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_NEED_GAME_PASSWORD); } -NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_NEED_COMPANY_PASSWORD(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_NEED_COMPANY_PASSWORD); } -NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_GAME_PASSWORD(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_GAME_PASSWORD); } -NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_COMPANY_PASSWORD(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_COMPANY_PASSWORD); } +NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_IDENTIFY(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_IDENTIFY); } +NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_AUTH_REQUEST(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_AUTH_REQUEST); } +NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_AUTH_RESPONSE(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_AUTH_RESPONSE); } +NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_ENABLE_ENCRYPTION(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_ENABLE_ENCRYPTION); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_WELCOME(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_WELCOME); } NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_GETMAP(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_GETMAP); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_WAIT(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_WAIT); } @@ -183,7 +181,6 @@ NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_COMMAND(Packet &) { r NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_CHAT(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_CHAT); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_CHAT(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_CHAT); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_EXTERNAL_CHAT(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_EXTERNAL_CHAT); } -NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_SET_PASSWORD(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_SET_PASSWORD); } NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_SET_NAME(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_SET_NAME); } NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_QUIT(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_QUIT); } NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_ERROR(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_ERROR); } @@ -197,7 +194,6 @@ NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_CHECK_NEWGRFS(Packet NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_NEWGRFS_CHECKED(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_NEWGRFS_CHECKED); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_MOVE(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_MOVE); } NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_MOVE(Packet &) { return this->ReceiveInvalidPacket(PACKET_CLIENT_MOVE); } -NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_COMPANY_UPDATE(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_COMPANY_UPDATE); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_CONFIG_UPDATE(Packet &) { return this->ReceiveInvalidPacket(PACKET_SERVER_CONFIG_UPDATE); } void NetworkGameSocketHandler::DeferDeletion() diff --git a/src/network/core/tcp_game.h b/src/network/core/tcp_game.h index ce031aa07b..5795221a2e 100644 --- a/src/network/core/tcp_game.h +++ b/src/network/core/tcp_game.h @@ -24,10 +24,9 @@ */ enum PacketGameType : uint8_t { /* - * These first four pair of packets (thus eight in - * total) must remain in this order for backward - * and forward compatibility between clients that - * are trying to join directly. + * These first ten packets must remain in this order for backward and forward compatibility + * between clients that are trying to join directly. These packets can be received and/or sent + * by the server before the server has processed the 'join' packet from the client. */ /* Packets sent by socket accepting code without ever constructing a client socket instance. */ @@ -46,6 +45,10 @@ enum PacketGameType : uint8_t { PACKET_SERVER_GAME_INFO, ///< Information about the server. PACKET_CLIENT_GAME_INFO, ///< Request information about the server. + /* A server quitting this game. */ + PACKET_SERVER_NEWGAME, ///< The server is preparing to start a new game. + PACKET_SERVER_SHUTDOWN, ///< The server is shutting down. + /* * Packets after here assume that the client * and server are running the same version. As @@ -56,16 +59,18 @@ enum PacketGameType : uint8_t { * the map and other important data. */ - /* After the join step, the first is checking NewGRFs. */ + /* After the join step, the first perform game authentication and enabling encryption. */ + PACKET_SERVER_AUTH_REQUEST, ///< The server requests the client to authenticate using a number of methods. + PACKET_CLIENT_AUTH_RESPONSE, ///< The client responds to the authentication request. + PACKET_SERVER_ENABLE_ENCRYPTION, ///< The server tells that authentication has completed and requests to enable encryption with the keys of the last \c PACKET_CLIENT_AUTH_RESPONSE. + + /* After the authentication is done, the next step is identification. */ + PACKET_CLIENT_IDENTIFY, ///< Client telling the server the client's name and requested company. + + /* After the identify step, the next is checking NewGRFs. */ PACKET_SERVER_CHECK_NEWGRFS, ///< Server sends NewGRF IDs and MD5 checksums for the client to check. PACKET_CLIENT_NEWGRFS_CHECKED, ///< Client acknowledges that it has all required NewGRFs. - /* Checking the game, and then company passwords. */ - PACKET_SERVER_NEED_GAME_PASSWORD, ///< Server requests the (hashed) game password. - PACKET_CLIENT_GAME_PASSWORD, ///< Clients sends the (hashed) game password. - PACKET_SERVER_NEED_COMPANY_PASSWORD, ///< Server requests the (hashed) company password. - PACKET_CLIENT_COMPANY_PASSWORD, ///< Client sends the (hashed) company password. - /* The server welcomes the authenticated client and sends information of other clients. */ PACKET_SERVER_WELCOME, ///< Server welcomes you and gives you your #ClientID. PACKET_SERVER_CLIENT_INFO, ///< Server sends you information about a client. @@ -110,15 +115,9 @@ enum PacketGameType : uint8_t { PACKET_SERVER_MOVE, ///< Server tells everyone that someone is moved to another company. /* Configuration updates. */ - PACKET_CLIENT_SET_PASSWORD, ///< A client (re)sets its company's password. PACKET_CLIENT_SET_NAME, ///< A client changes its name. - PACKET_SERVER_COMPANY_UPDATE, ///< Information (password) of a company changed. PACKET_SERVER_CONFIG_UPDATE, ///< Some network configuration important to the client changed. - /* A server quitting this game. */ - PACKET_SERVER_NEWGAME, ///< The server is preparing to start a new game. - PACKET_SERVER_SHUTDOWN, ///< The server is shutting down. - /* A client quitting. */ PACKET_CLIENT_QUIT, ///< A client tells the server it is going to quit. PACKET_SERVER_QUIT, ///< A server tells that a client has quit. @@ -162,10 +161,13 @@ protected: /** * Try to join the server: - * string OpenTTD revision (norev000 if no revision). - * string Name of the client (max NETWORK_NAME_LENGTH). - * uint8_t ID of the company to play as (1..MAX_COMPANIES). - * uint8_t ID of the clients Language. + * string OpenTTD revision (norev0000 if no revision). + * uint32_t NewGRF version (added in 1.2). + * string Name of the client (max NETWORK_NAME_LENGTH) (removed in 15). + * uint8_t ID of the company to play as (1..MAX_COMPANIES) (removed in 15). + * uint8_t ID of the clients Language (removed in 15). + * string Client's unique identifier (removed in 1.0). + * * @param p The packet that was just received. */ virtual NetworkRecvStatus Receive_CLIENT_JOIN(Packet &p); @@ -194,53 +196,55 @@ protected: * Send information about a client: * uint32_t ID of the client (always unique on a server. 1 = server, 0 is invalid). * uint8_t ID of the company the client is playing as (255 for spectators). - * string Name of the client. + * string Name of the client. + * string Public key of the client. * @param p The packet that was just received. */ virtual NetworkRecvStatus Receive_SERVER_CLIENT_INFO(Packet &p); /** - * Indication to the client that the server needs a game password. + * The client tells the server about the identity of the client: + * string Name of the client (max NETWORK_NAME_LENGTH). + * uint8_t ID of the company to play as (1..MAX_COMPANIES, or COMPANY_SPECTATOR). * @param p The packet that was just received. */ - virtual NetworkRecvStatus Receive_SERVER_NEED_GAME_PASSWORD(Packet &p); + virtual NetworkRecvStatus Receive_CLIENT_IDENTIFY(Packet &p); /** - * Indication to the client that the server needs a company password: - * uint32_t Generation seed. - * string Network ID of the server. + * Indication to the client that it needs to authenticate: + * uint8_t The \c NetworkAuthenticationMethod to use. + * 32 * uint8_t Public key of the server. + * 24 * uint8_t Nonce for the key exchange. * @param p The packet that was just received. */ - virtual NetworkRecvStatus Receive_SERVER_NEED_COMPANY_PASSWORD(Packet &p); + virtual NetworkRecvStatus Receive_SERVER_AUTH_REQUEST(Packet &p); /** - * Send a password to the server to authorize: - * uint8_t Password type (see NetworkPasswordType). - * string The password. + * Send the response to the authentication request: + * 32 * uint8_t Public key of the client. + * 16 * uint8_t Message authentication code. + * 8 * uint8_t Random message that got encoded and signed. * @param p The packet that was just received. */ - virtual NetworkRecvStatus Receive_CLIENT_GAME_PASSWORD(Packet &p); + virtual NetworkRecvStatus Receive_CLIENT_AUTH_RESPONSE(Packet &p); /** - * Send a password to the server to authorize - * uint8_t Password type (see NetworkPasswordType). - * string The password. + * Indication to the client that authentication is complete and encryption has to be used from here on forward. + * The encryption uses the shared keys generated by the last AUTH_REQUEST key exchange. + * 24 * uint8_t Nonce for encrypted connection. * @param p The packet that was just received. */ - virtual NetworkRecvStatus Receive_CLIENT_COMPANY_PASSWORD(Packet &p); + virtual NetworkRecvStatus Receive_SERVER_ENABLE_ENCRYPTION(Packet &p); /** * The client is joined and ready to receive their map: * uint32_t Own client ID. - * uint32_t Generation seed. - * string Network ID of the server. * @param p The packet that was just received. */ virtual NetworkRecvStatus Receive_SERVER_WELCOME(Packet &p); /** * Request the map from the server. - * uint32_t NewGRF version (release versions of OpenTTD only). * @param p The packet that was just received. */ virtual NetworkRecvStatus Receive_CLIENT_GETMAP(Packet &p); @@ -374,13 +378,6 @@ protected: */ virtual NetworkRecvStatus Receive_SERVER_EXTERNAL_CHAT(Packet &p); - /** - * Set the password for the clients current company: - * string The password. - * @param p The packet that was just received. - */ - virtual NetworkRecvStatus Receive_CLIENT_SET_PASSWORD(Packet &p); - /** * Gives the client a new name: * string New name of the client. @@ -470,18 +467,10 @@ protected: /** * Request the server to move this client into another company: * uint8_t ID of the company the client wants to join. - * string Password, if the company is password protected. * @param p The packet that was just received. */ virtual NetworkRecvStatus Receive_CLIENT_MOVE(Packet &p); - /** - * Update the clients knowledge of which company is password protected: - * uint16_t Bitwise representation of each company - * @param p The packet that was just received. - */ - virtual NetworkRecvStatus Receive_SERVER_COMPANY_UPDATE(Packet &p); - /** * Update the clients knowledge of the max settings: * uint8_t Maximum number of companies allowed. diff --git a/src/network/core/tcp_listen.h b/src/network/core/tcp_listen.h index 088cc7b8cd..6e6d95e5da 100644 --- a/src/network/core/tcp_listen.h +++ b/src/network/core/tcp_listen.h @@ -35,7 +35,7 @@ public: /* Check if the client is banned. */ for (const auto &entry : _network_ban_list) { if (address.IsInNetmask(entry)) { - Packet p(Tban_packet); + Packet p(nullptr, Tban_packet); p.PrepareToSend(); Debug(net, 2, "[{}] Banned ip tried to join ({}), refused", Tsocket::GetName(), entry); @@ -52,7 +52,7 @@ public: if (!Tsocket::AllowConnection()) { /* No more clients allowed? * Send to the client that we are full! */ - Packet p(Tfull_packet); + Packet p(nullptr, Tfull_packet); p.PrepareToSend(); if (p.TransferOut(send, s, 0) < 0) { diff --git a/src/network/core/udp.cpp b/src/network/core/udp.cpp index 04324e0098..d3e69fce85 100644 --- a/src/network/core/udp.cpp +++ b/src/network/core/udp.cpp @@ -133,11 +133,14 @@ void NetworkUDPSocketHandler::ReceivePackets() /* If the size does not match the packet must be corrupted. * Otherwise it will be marked as corrupted later on. */ - if (!p.ParsePacketSize() || (size_t)nbytes != p.Size()) { + if (!p.ParsePacketSize() || static_cast(nbytes) != p.Size()) { Debug(net, 1, "Received a packet with mismatching size from {}", address.GetAddressAsString()); continue; } - p.PrepareToRead(); + if (!p.PrepareToRead()) { + Debug(net, 1, "Invalid packet received (too small / decryption error)"); + continue; + } /* Handle the packet */ this->HandleUDPPacket(p, address); diff --git a/src/network/network.cpp b/src/network/network.cpp index 2193855661..c0c13efb1d 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -37,6 +37,9 @@ #include "../gfx_func.h" #include "../error.h" #include "../misc_cmd.h" +#ifdef DEBUG_DUMP_COMMANDS +# include "../fileio_func.h" +#endif #include #include #include @@ -44,8 +47,11 @@ #include "../safeguards.h" #ifdef DEBUG_DUMP_COMMANDS -#include "../fileio_func.h" -/** When running the server till the wait point, run as fast as we can! */ +/** Helper variable to make the dedicated server go fast until the (first) join. + * Used to load the desync debug logs, i.e. for reproducing a desync. + * There's basically no need to ever enable this, unless you really know what + * you are doing, i.e. debugging a desync. + * See docs/desync.md for details. */ bool _ddc_fastforward = true; #endif /* DEBUG_DUMP_COMMANDS */ @@ -61,7 +67,6 @@ bool _network_server; ///< network-server is active bool _network_available; ///< is network mode available? bool _network_dedicated; ///< are we a dedicated server? bool _is_network_server; ///< Does this client wants to be a network-server? -NetworkCompanyState *_network_company_states = nullptr; ///< Statistics about some companies. ClientID _network_own_client_id; ///< Our client identifier. ClientID _redirect_console_to_client; ///< If not invalid, redirect the console output to a client. uint8_t _network_reconnect; ///< Reconnect timeout @@ -79,12 +84,11 @@ uint32_t _sync_seed_2; ///< Second part of the seed. #endif uint32_t _sync_frame; ///< The frame to perform the sync check. bool _network_first_time; ///< Whether we have finished joining or not. -CompanyMask _network_company_passworded; ///< Bitmask of the password status of all companies. static_assert((int)NETWORK_COMPANY_NAME_LENGTH == MAX_LENGTH_COMPANY_NAME_CHARS * MAX_CHAR_LENGTH); /** The amount of clients connected */ -byte _network_clients_connected = 0; +uint8_t _network_clients_connected = 0; extern std::string GenerateUid(std::string_view subject); @@ -120,6 +124,28 @@ NetworkClientInfo::~NetworkClientInfo() return nullptr; } +/** + * Returns whether the given company can be joined by this client. + * @param company_id The id of the company. + * @return \c true when this company is allowed to join, otherwise \c false. + */ +bool NetworkClientInfo::CanJoinCompany(CompanyID company_id) const +{ + Company *c = Company::GetIfValid(company_id); + return c != nullptr && c->allow_list.Contains(this->public_key); +} + +/** + * Returns whether the given company can be joined by this client. + * @param company_id The id of the company. + * @return \c true when this company is allowed to join, otherwise \c false. + */ +bool NetworkCanJoinCompany(CompanyID company_id) +{ + NetworkClientInfo *info = NetworkClientInfo::GetByClientID(_network_own_client_id); + return info != nullptr && info->CanJoinCompany(company_id); +} + /** * Return the client state given it's client-identifier * @param client_id the ClientID to search for @@ -134,9 +160,62 @@ NetworkClientInfo::~NetworkClientInfo() return nullptr; } -byte NetworkSpectatorCount() + +/** + * Simple helper to find the location of the given authorized key in the authorized keys. + * @param authorized_keys The keys to look through. + * @param authorized_key The key to look for. + * @return The iterator to the location of the authorized key, or \c authorized_keys.end(). + */ +static auto FindKey(auto *authorized_keys, std::string_view authorized_key) { - byte count = 0; + return std::find_if(authorized_keys->begin(), authorized_keys->end(), [authorized_key](auto &value) { return StrEqualsIgnoreCase(value, authorized_key); }); +} + +/** + * Check whether the given key is contains in these authorized keys. + * @param key The key to look for. + * @return \c true when the key has been found, otherwise \c false. + */ +bool NetworkAuthorizedKeys::Contains(std::string_view key) const +{ + return FindKey(this, key) != this->end(); +} + +/** + * Add the given key to the authorized keys, when it is not already contained. + * @param key The key to add. + * @return \c true when the key was added, \c false when the key already existed or the key was empty. + */ +bool NetworkAuthorizedKeys::Add(std::string_view key) +{ + if (key.empty()) return false; + + auto iter = FindKey(this, key); + if (iter != this->end()) return false; + + this->emplace_back(key); + return true; +} + +/** + * Remove the given key from the authorized keys, when it is exists. + * @param key The key to remove. + * @return \c true when the key was removed, \c false when the key did not exist. + */ +bool NetworkAuthorizedKeys::Remove(std::string_view key) +{ + auto iter = FindKey(this, key); + if (iter == this->end()) return false; + + this->erase(iter); + return true; +} + + +uint8_t NetworkSpectatorCount() +{ + uint8_t count = 0; for (const NetworkClientInfo *ci : NetworkClientInfo::Iterate()) { if (ci->client_playas == COMPANY_SPECTATOR) count++; @@ -148,68 +227,6 @@ byte NetworkSpectatorCount() return count; } -/** - * Change the company password of a given company. - * @param company_id ID of the company the password should be changed for. - * @param password The unhashed password we like to set ('*' or '' resets the password) - * @return The password. - */ -std::string NetworkChangeCompanyPassword(CompanyID company_id, std::string password) -{ - if (password.compare("*") == 0) password = ""; - - if (_network_server) { - NetworkServerSetCompanyPassword(company_id, password, false); - } else { - NetworkClientSetCompanyPassword(password); - } - - return password; -} - -/** - * Hash the given password using server ID and game seed. - * @param password Password to hash. - * @param password_server_id Server ID. - * @param password_game_seed Game seed. - * @return The hashed password. - */ -std::string GenerateCompanyPasswordHash(const std::string &password, const std::string &password_server_id, uint32_t password_game_seed) -{ - if (password.empty()) return password; - - size_t password_length = password.size(); - size_t password_server_id_length = password_server_id.size(); - - std::ostringstream salted_password; - /* Add the password with the server's ID and game seed as the salt. */ - for (uint i = 0; i < NETWORK_SERVER_ID_LENGTH - 1; i++) { - char password_char = (i < password_length ? password[i] : 0); - char server_id_char = (i < password_server_id_length ? password_server_id[i] : 0); - char seed_char = password_game_seed >> (i % 32); - salted_password << (char)(password_char ^ server_id_char ^ seed_char); // Cast needed, otherwise interpreted as integer to format - } - - Md5 checksum; - MD5Hash digest; - - /* Generate the MD5 hash */ - std::string salted_password_string = salted_password.str(); - checksum.Append(salted_password_string.data(), salted_password_string.size()); - checksum.Finish(digest); - - return FormatArrayAsHex(digest); -} - -/** - * Check if the company we want to join requires a password. - * @param company_id id of the company we want to check the 'passworded' flag for. - * @return true if the company requires a password. - */ -bool NetworkCompanyIsPassworded(CompanyID company_id) -{ - return HasBit(_network_company_passworded, company_id); -} /* This puts a text-message to the console, or in the future, the chat-box, * (to keep it all a bit more general) @@ -321,6 +338,7 @@ StringID GetNetworkErrorMsg(NetworkErrorCode err) STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP, STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN, STR_NETWORK_ERROR_CLIENT_INVALID_CLIENT_NAME, + STR_NETWORK_ERROR_CLIENT_NOT_ON_ALLOW_LIST, }; static_assert(lengthof(network_error_strings) == NETWORK_ERROR_END); @@ -605,10 +623,6 @@ void NetworkClose(bool close_admins) NetworkFreeLocalCommandQueue(); - delete[] _network_company_states; - _network_company_states = nullptr; - _network_company_passworded = 0; - InitializeNetworkPools(close_admins); } @@ -746,6 +760,7 @@ public: Debug(net, 9, "Client::OnConnect(): connection_string={}", this->connection_string); _networking = true; + _network_own_client_id = ClientID{}; new ClientNetworkGameSocketHandler(s, this->connection_string); IConsoleCmdExec("exec scripts/on_client.scr 0"); NetworkClient_Connected(); @@ -754,7 +769,7 @@ public: /** * Join a client to the server at with the given connection string. - * The default for the passwords is \c nullptr. When the server or company needs a + * The default for the passwords is \c nullptr. When the server needs a * password and none is given, the user is asked to enter the password in the GUI. * This function will return false whenever some information required to join is not * correct such as the company number or the client's name, or when there is not @@ -766,10 +781,9 @@ public: * @param connection_string The IP address, port and company number to join as. * @param default_company The company number to join as when none is given. * @param join_server_password The password for the server. - * @param join_company_password The password for the company. * @return Whether the join has started. */ -bool NetworkClientConnectGame(const std::string &connection_string, CompanyID default_company, const std::string &join_server_password, const std::string &join_company_password) +bool NetworkClientConnectGame(const std::string &connection_string, CompanyID default_company, const std::string &join_server_password) { Debug(net, 9, "NetworkClientConnectGame(): connection_string={}", connection_string); @@ -782,7 +796,6 @@ bool NetworkClientConnectGame(const std::string &connection_string, CompanyID de _network_join.connection_string = resolved_connection_string; _network_join.company = join_as; _network_join.server_password = join_server_password; - _network_join.company_password = join_company_password; if (_game_mode == GM_MENU) { /* From the menu we can immediately continue with the actual join. */ @@ -825,9 +838,12 @@ static void NetworkInitGameInfo() /* There should be always space for the server. */ assert(NetworkClientInfo::CanAllocateItem()); NetworkClientInfo *ci = new NetworkClientInfo(CLIENT_ID_SERVER); - ci->client_playas = _network_dedicated ? COMPANY_SPECTATOR : COMPANY_FIRST; + ci->client_playas = COMPANY_SPECTATOR; ci->client_name = _settings_client.network.client_name; + + NetworkAuthenticationClientHandler::EnsureValidSecretKeyAndUpdatePublicKey(_settings_client.network.client_secret_key, _settings_client.network.client_public_key); + ci->public_key = _settings_client.network.client_public_key; } /** @@ -899,7 +915,6 @@ bool NetworkServerStart() Debug(net, 5, "Starting listeners for incoming server queries"); NetworkUDPServerListen(); - _network_company_states = new NetworkCompanyState[MAX_COMPANIES]; _network_server = true; _networking = true; _frame_counter = 0; @@ -909,7 +924,6 @@ bool NetworkServerStart() _network_own_client_id = CLIENT_ID_SERVER; _network_clients_connected = 0; - _network_company_passworded = 0; NetworkInitGameInfo(); @@ -922,12 +936,42 @@ bool NetworkServerStart() /* if the server is dedicated ... add some other script */ if (_network_dedicated) IConsoleCmdExec("exec scripts/on_dedicated.scr 0"); - /* welcome possibly still connected admins - this can only happen on a dedicated server. */ - if (_network_dedicated) ServerNetworkAdminSocketHandler::WelcomeAll(); - return true; } +/** + * Perform tasks when the server is started. This consists of things + * like putting the server's client in a valid company and resetting the restart time. + */ +void NetworkOnGameStart() +{ + if (!_network_server) return; + + /* Update the static game info to set the values from the new game. */ + NetworkServerUpdateGameInfo(); + + ChangeNetworkRestartTime(true); + + if (!_network_dedicated) { + Company *c = Company::GetIfValid(GetFirstPlayableCompanyID()); + NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(CLIENT_ID_SERVER); + if (c != nullptr && ci != nullptr) { + ci->client_playas = c->index; + + /* + * If the company has not been named yet, the company was just started. + * Otherwise it would have gotten a name already, so announce it as a new company. + */ + if (c->name_1 == STR_SV_UNNAMED && c->name.empty()) NetworkServerNewCompany(c, ci); + } + + ShowClientList(); + } else { + /* welcome possibly still connected admins - this can only happen on a dedicated server. */ + ServerNetworkAdminSocketHandler::WelcomeAll(); + } +} + /* The server is rebooting... * The only difference with NetworkDisconnect, is the packets that is sent */ void NetworkReboot() @@ -1098,6 +1142,16 @@ void NetworkGameLoop() } } + /* Skip all entries in the command-log till we caught up with the current game again. */ + if (TimerGameEconomy::date > next_date || (TimerGameEconomy::date == next_date && TimerGameEconomy::date_fract > next_date_fract)) { + Debug(desync, 0, "Skipping to next command at {:08x}:{:02x}", next_date, next_date_fract); + if (cp != nullptr) { + delete cp; + cp = nullptr; + } + check_sync_state = false; + } + if (cp != nullptr || check_sync_state) break; char buff[4096]; @@ -1130,10 +1184,10 @@ void NetworkGameLoop() cp->cmd = (Commands)cmd; /* Parse command data. */ - std::vector args; + std::vector args; size_t arg_len = strlen(buffer); for (size_t i = 0; i + 1 < arg_len; i += 2) { - byte e = 0; + uint8_t e = 0; std::from_chars(buffer + i, buffer + i + 2, e, 16); args.emplace_back(e); } @@ -1157,7 +1211,8 @@ void NetworkGameLoop() assert(ret == 4); check_sync_state = true; } else if (strncmp(p, "msg: ", 5) == 0 || strncmp(p, "client: ", 8) == 0 || - strncmp(p, "load: ", 6) == 0 || strncmp(p, "save: ", 6) == 0) { + strncmp(p, "load: ", 6) == 0 || strncmp(p, "save: ", 6) == 0 || + strncmp(p, "warning: ", 9) == 0) { /* A message that is not very important to the log playback, but part of the log. */ #ifndef DEBUG_FAILED_DUMP_COMMANDS } else if (strncmp(p, "cmdf: ", 6) == 0) { @@ -1226,11 +1281,6 @@ void NetworkGameLoop() NetworkSend(); } -static void NetworkGenerateServerId() -{ - _settings_client.network.network_id = GenerateUid("OpenTTD Server ID"); -} - /** This tries to launch the network for a given OS */ void NetworkStartUp() { @@ -1240,9 +1290,6 @@ void NetworkStartUp() _network_available = NetworkCoreInitialize(); _network_dedicated = false; - /* Generate an server id when there is none yet */ - if (_settings_client.network.network_id.empty()) NetworkGenerateServerId(); - _network_game_info = {}; NetworkInitialize(); diff --git a/src/network/network_admin.cpp b/src/network/network_admin.cpp index 028acc4d72..f2a035cc00 100644 --- a/src/network/network_admin.cpp +++ b/src/network/network_admin.cpp @@ -32,7 +32,7 @@ AdminIndex _redirect_console_to_admin = INVALID_ADMIN_ID; /** The amount of admins connected. */ -byte _network_admins_connected = 0; +uint8_t _network_admins_connected = 0; /** The pool with sockets/clients. */ NetworkAdminSocketPool _networkadminsocket_pool("NetworkAdminSocket"); @@ -134,7 +134,7 @@ ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler() */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendError(NetworkErrorCode error) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_ERROR); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_ERROR); p->Send_uint8(error); this->SendPacket(std::move(p)); @@ -149,7 +149,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendError(NetworkErrorCode er /** Send the protocol version to the admin. */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendProtocol() { - auto p = std::make_unique(ADMIN_PACKET_SERVER_PROTOCOL); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_PROTOCOL); /* announce the protocol version */ p->Send_uint8(NETWORK_GAME_ADMIN_VERSION); @@ -169,7 +169,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendProtocol() /** Send a welcome message to the admin. */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendWelcome() { - auto p = std::make_unique(ADMIN_PACKET_SERVER_WELCOME); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_WELCOME); p->Send_string(_settings_client.network.server_name); p->Send_string(GetNetworkRevisionString()); @@ -190,7 +190,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendWelcome() /** Tell the admin we started a new game. */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendNewGame() { - auto p = std::make_unique(ADMIN_PACKET_SERVER_NEWGAME); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_NEWGAME); this->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -198,7 +198,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendNewGame() /** Tell the admin we're shutting down. */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendShutdown() { - auto p = std::make_unique(ADMIN_PACKET_SERVER_SHUTDOWN); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_SHUTDOWN); this->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -206,7 +206,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendShutdown() /** Tell the admin the date. */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendDate() { - auto p = std::make_unique(ADMIN_PACKET_SERVER_DATE); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_DATE); p->Send_uint32(TimerGameCalendar::date.base()); this->SendPacket(std::move(p)); @@ -220,7 +220,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendDate() */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientJoin(ClientID client_id) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_CLIENT_JOIN); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CLIENT_JOIN); p->Send_uint32(client_id); this->SendPacket(std::move(p)); @@ -238,7 +238,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientInfo(const NetworkC /* Only send data when we're a proper client, not just someone trying to query the server. */ if (ci == nullptr) return NETWORK_RECV_STATUS_OKAY; - auto p = std::make_unique(ADMIN_PACKET_SERVER_CLIENT_INFO); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CLIENT_INFO); p->Send_uint32(ci->client_id); p->Send_string(cs == nullptr ? "" : const_cast(cs->client_address).GetHostname()); @@ -259,7 +259,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientInfo(const NetworkC */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientUpdate(const NetworkClientInfo *ci) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_CLIENT_UPDATE); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CLIENT_UPDATE); p->Send_uint32(ci->client_id); p->Send_string(ci->client_name); @@ -276,7 +276,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientUpdate(const Networ */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientQuit(ClientID client_id) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_CLIENT_QUIT); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CLIENT_QUIT); p->Send_uint32(client_id); this->SendPacket(std::move(p)); @@ -291,7 +291,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientQuit(ClientID clien */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientError(ClientID client_id, NetworkErrorCode error) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_CLIENT_ERROR); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CLIENT_ERROR); p->Send_uint32(client_id); p->Send_uint8 (error); @@ -306,7 +306,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientError(ClientID clie */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyNew(CompanyID company_id) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_COMPANY_NEW); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_COMPANY_NEW); p->Send_uint8(company_id); this->SendPacket(std::move(p)); @@ -320,7 +320,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyNew(CompanyID comp */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyInfo(const Company *c) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_COMPANY_INFO); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_COMPANY_INFO); p->Send_uint8 (c->index); SetDParam(0, c->index); @@ -328,7 +328,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyInfo(const Company SetDParam(0, c->index); p->Send_string(GetString(STR_PRESIDENT_NAME)); p->Send_uint8 (c->colour); - p->Send_bool (NetworkCompanyIsPassworded(c->index)); + p->Send_bool (true); p->Send_uint32(c->inaugurated_year.base()); p->Send_bool (c->is_ai); p->Send_uint8 (CeilDiv(c->months_of_bankruptcy, 3)); // send as quarters_of_bankruptcy @@ -345,7 +345,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyInfo(const Company */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyUpdate(const Company *c) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_COMPANY_UPDATE); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_COMPANY_UPDATE); p->Send_uint8 (c->index); SetDParam(0, c->index); @@ -353,7 +353,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyUpdate(const Compa SetDParam(0, c->index); p->Send_string(GetString(STR_PRESIDENT_NAME)); p->Send_uint8 (c->colour); - p->Send_bool (NetworkCompanyIsPassworded(c->index)); + p->Send_bool (true); p->Send_uint8 (CeilDiv(c->months_of_bankruptcy, 3)); // send as quarters_of_bankruptcy this->SendPacket(std::move(p)); @@ -368,7 +368,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyUpdate(const Compa */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyRemove(CompanyID company_id, AdminCompanyRemoveReason acrr) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_COMPANY_REMOVE); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_COMPANY_REMOVE); p->Send_uint8(company_id); p->Send_uint8(acrr); @@ -385,7 +385,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyEconomy() /* Get the income. */ Money income = -std::reduce(std::begin(company->yearly_expenses[0]), std::end(company->yearly_expenses[0])); - auto p = std::make_unique(ADMIN_PACKET_SERVER_COMPANY_ECONOMY); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_COMPANY_ECONOMY); p->Send_uint8(company->index); @@ -418,7 +418,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyStats() /* Go through all the companies. */ for (const Company *company : Company::Iterate()) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_COMPANY_STATS); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_COMPANY_STATS); /* Send the information. */ p->Send_uint8(company->index); @@ -447,7 +447,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyStats() */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendChat(NetworkAction action, DestType desttype, ClientID client_id, const std::string &msg, int64_t data) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_CHAT); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CHAT); p->Send_uint8 (action); p->Send_uint8 (desttype); @@ -465,7 +465,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendChat(NetworkAction action */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendRconEnd(const std::string_view command) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_RCON_END); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_RCON_END); p->Send_string(command); this->SendPacket(std::move(p)); @@ -480,7 +480,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendRconEnd(const std::string */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendRcon(uint16_t colour, const std::string_view result) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_RCON); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_RCON); p->Send_uint16(colour); p->Send_string(result); @@ -539,7 +539,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendConsole(const std::string * smaller than COMPAT_MTU. */ if (origin.size() + string.size() + 2 + 3 >= COMPAT_MTU) return NETWORK_RECV_STATUS_OKAY; - auto p = std::make_unique(ADMIN_PACKET_SERVER_CONSOLE); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CONSOLE); p->Send_string(origin); p->Send_string(string); @@ -554,7 +554,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendConsole(const std::string */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendGameScript(const std::string_view json) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_GAMESCRIPT); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_GAMESCRIPT); p->Send_string(json); this->SendPacket(std::move(p)); @@ -565,7 +565,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendGameScript(const std::str /** Send ping-reply (pong) to admin **/ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendPong(uint32_t d1) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_PONG); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_PONG); p->Send_uint32(d1); this->SendPacket(std::move(p)); @@ -576,7 +576,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendPong(uint32_t d1) /** Send the names of the commands. */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdNames() { - auto p = std::make_unique(ADMIN_PACKET_SERVER_CMD_NAMES); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CMD_NAMES); for (uint16_t i = 0; i < CMD_END; i++) { const char *cmdname = GetCommandName(static_cast(i)); @@ -588,7 +588,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdNames() p->Send_bool(false); this->SendPacket(std::move(p)); - p = std::make_unique(ADMIN_PACKET_SERVER_CMD_NAMES); + p = std::make_unique(this, ADMIN_PACKET_SERVER_CMD_NAMES); } p->Send_bool(true); @@ -610,7 +610,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdNames() */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdLogging(ClientID client_id, const CommandPacket &cp) { - auto p = std::make_unique(ADMIN_PACKET_SERVER_CMD_LOGGING); + auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CMD_LOGGING); p->Send_uint32(client_id); p->Send_uint8 (cp.company); diff --git a/src/network/network_base.h b/src/network/network_base.h index 0b717163f7..497db78398 100644 --- a/src/network/network_base.h +++ b/src/network/network_base.h @@ -24,6 +24,7 @@ extern NetworkClientInfoPool _networkclientinfo_pool; struct NetworkClientInfo : NetworkClientInfoPool::PoolItem<&_networkclientinfo_pool> { ClientID client_id; ///< Client identifier (same as ClientState->client_id) std::string client_name; ///< Name of the client + std::string public_key; ///< The public key of the client. CompanyID client_playas; ///< As which company is this client playing (CompanyID) TimerGameEconomy::Date join_date; ///< Gamedate the client has joined @@ -35,6 +36,8 @@ struct NetworkClientInfo : NetworkClientInfoPool::PoolItem<&_networkclientinfo_p ~NetworkClientInfo(); static NetworkClientInfo *GetByClientID(ClientID client_id); + + bool CanJoinCompany(CompanyID company_id) const; }; #endif /* NETWORK_BASE_H */ diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp index ece8f5e88a..92cac80a76 100644 --- a/src/network/network_chat_gui.cpp +++ b/src/network/network_chat_gui.cpp @@ -9,6 +9,7 @@ #include "../stdafx.h" #include "../strings_func.h" +#include "../autocompletion.h" #include "../blitter/factory.hpp" #include "../console_func.h" #include "../video/video_driver.hpp" @@ -44,7 +45,6 @@ struct ChatMessage { static std::deque _chatmsg_list; ///< The actual chat message list. static bool _chatmessage_dirty = false; ///< Does the chat message need repainting? static bool _chatmessage_visible = false; ///< Is a chat message visible. -static bool _chat_tab_completion_active; ///< Whether tab completion is active. static uint MAX_CHAT_MESSAGES = 0; ///< The limit of chat messages to show. /** @@ -262,11 +262,47 @@ static void SendChat(const std::string &buf, DestType type, int dest) } } +class NetworkChatAutoCompletion final : public AutoCompletion { +public: + using AutoCompletion::AutoCompletion; + +private: + std::vector GetSuggestions([[maybe_unused]] std::string_view prefix, std::string_view query) override + { + std::vector suggestions; + for (NetworkClientInfo *ci : NetworkClientInfo::Iterate()) { + if (ci->client_name.starts_with(query)) { + suggestions.push_back(ci->client_name); + } + } + for (const Town *t : Town::Iterate()) { + /* Get the town-name via the string-system */ + SetDParam(0, t->index); + std::string town_name = GetString(STR_TOWN_NAME); + if (town_name.starts_with(query)) { + suggestions.push_back(std::move(town_name)); + } + } + return suggestions; + } + + void ApplySuggestion(std::string_view prefix, std::string_view suggestion) override + { + /* Add ': ' if we are at the start of the line (pretty) */ + if (prefix.empty()) { + this->textbuf->Assign(fmt::format("{}: ", suggestion)); + } else { + this->textbuf->Assign(fmt::format("{}{} ", prefix, suggestion)); + } + } +}; + /** Window to enter the chat message in. */ struct NetworkChatWindow : public Window { DestType dtype; ///< The type of destination. int dest; ///< The identifier of the destination. QueryString message_editbox; ///< Message editbox. + NetworkChatAutoCompletion chat_tab_completion; ///< Holds the state and logic of auto-completion of player names and towns on Tab press. /** * Create a chat input window. @@ -274,7 +310,8 @@ struct NetworkChatWindow : public Window { * @param type The type of destination. * @param dest The actual destination index. */ - NetworkChatWindow(WindowDesc *desc, DestType type, int dest) : Window(desc), message_editbox(NETWORK_CHAT_LENGTH) + NetworkChatWindow(WindowDesc &desc, DestType type, int dest) + : Window(desc), message_editbox(NETWORK_CHAT_LENGTH), chat_tab_completion(&message_editbox.text) { this->dtype = type; this->dest = dest; @@ -295,7 +332,6 @@ struct NetworkChatWindow : public Window { this->SetFocusedWidget(WID_NC_TEXTBOX); InvalidateWindowData(WC_NEWS_WINDOW, 0, this->height); - _chat_tab_completion_active = false; PositionNetworkChatWindow(this); } @@ -311,125 +347,12 @@ struct NetworkChatWindow : public Window { Window::FindWindowPlacementAndResize(_toolbar_width, def_height); } - /** - * Find the next item of the list of things that can be auto-completed. - * @param item The current indexed item to return. This function can, and most - * likely will, alter item, to skip empty items in the arrays. - * @return Returns the view that matched to the index. - */ - std::optional ChatTabCompletionNextItem(uint *item) - { - /* First, try clients */ - if (*item < MAX_CLIENT_SLOTS) { - /* Skip inactive clients */ - for (NetworkClientInfo *ci : NetworkClientInfo::Iterate(*item)) { - *item = ci->index; - return ci->client_name; - } - *item = MAX_CLIENT_SLOTS; - } - - /* Then, try townnames - * Not that the following assumes all town indices are adjacent, ie no - * towns have been deleted. */ - if (*item < (uint)MAX_CLIENT_SLOTS + Town::GetPoolSize()) { - for (const Town *t : Town::Iterate(*item - MAX_CLIENT_SLOTS)) { - /* Get the town-name via the string-system */ - SetDParam(0, t->index); - return GetString(STR_TOWN_NAME); - } - } - - return std::nullopt; - } - - /** - * Find what text to complete. It scans for a space from the left and marks - * the word right from that as to complete. It also writes a \0 at the - * position of the space (if any). If nothing found, buf is returned. - */ - static std::string_view ChatTabCompletionFindText(std::string_view &buf) - { - auto it = buf.find_last_of(' '); - if (it == std::string_view::npos) return buf; - - std::string_view res = buf.substr(it + 1); - buf.remove_suffix(res.size() + 1); - return res; - } - /** * See if we can auto-complete the current text of the user. */ void ChatTabCompletion() { - static std::string _chat_tab_completion_buf; - - Textbuf *tb = &this->message_editbox.text; - uint item = 0; - bool second_scan = false; - - /* Create views, so we do not need to copy the data for now. */ - std::string_view pre_buf = _chat_tab_completion_active ? std::string_view(_chat_tab_completion_buf) : std::string_view(tb->buf); - std::string_view tb_buf = ChatTabCompletionFindText(pre_buf); - - /* - * Comparing pointers of the data, as both "Hi:" and "Hi: Hi:" will result in - * tb_buf and pre_buf being "Hi:", which would be equal in content but not in context. - */ - bool begin_of_line = tb_buf.data() == pre_buf.data(); - - std::optional cur_item; - while ((cur_item = ChatTabCompletionNextItem(&item)).has_value()) { - std::string_view cur_name = cur_item.value(); - item++; - - if (_chat_tab_completion_active) { - /* We are pressing TAB again on the same name, is there another name - * that starts with this? */ - if (!second_scan) { - std::string_view view; - - /* If we are completing at the begin of the line, skip the ': ' we added */ - if (begin_of_line) { - view = std::string_view(tb->buf, (tb->bytes - 1) - 2); - } else { - /* Else, find the place we are completing at */ - size_t offset = pre_buf.size() + 1; - view = std::string_view(tb->buf + offset, (tb->bytes - 1) - offset); - } - - /* Compare if we have a match */ - if (cur_name == view) second_scan = true; - - continue; - } - - /* Now any match we make on _chat_tab_completion_buf after this, is perfect */ - } - - if (tb_buf.size() < cur_name.size() && cur_name.starts_with(tb_buf)) { - /* Save the data it was before completion */ - if (!second_scan) _chat_tab_completion_buf = tb->buf; - _chat_tab_completion_active = true; - - /* Change to the found name. Add ': ' if we are at the start of the line (pretty) */ - if (begin_of_line) { - this->message_editbox.text.Assign(fmt::format("{}: ", cur_name)); - } else { - this->message_editbox.text.Assign(fmt::format("{} {}", pre_buf, cur_name)); - } - - this->SetDirty(); - return; - } - } - - if (second_scan) { - /* We walked all possibilities, and the user presses tab again.. revert to original text */ - this->message_editbox.text.Assign(_chat_tab_completion_buf); - _chat_tab_completion_active = false; - + if (this->chat_tab_completion.AutoComplete()) { this->SetDirty(); } } @@ -475,7 +398,7 @@ struct NetworkChatWindow : public Window { void OnEditboxChanged(WidgetID widget) override { if (widget == WID_NC_TEXTBOX) { - _chat_tab_completion_active = false; + this->chat_tab_completion.Reset(); } } @@ -497,7 +420,7 @@ static constexpr NWidgetPart _nested_chat_window_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY, WID_NC_BACKGROUND), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, COLOUR_GREY, WID_NC_DESTINATION), SetMinimalSize(62, 12), SetPadding(1, 0, 1, 0), SetAlignment(SA_VERT_CENTER | SA_RIGHT), SetDataTip(STR_NULL, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_NC_TEXTBOX), SetMinimalSize(100, 12), SetPadding(1, 0, 1, 0), SetResize(1, 0), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_NC_TEXTBOX), SetMinimalSize(100, 0), SetPadding(1, 0, 1, 0), SetResize(1, 0), SetDataTip(STR_NETWORK_CHAT_OSKTITLE, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NC_SENDBUTTON), SetMinimalSize(62, 12), SetPadding(1, 0, 1, 0), SetDataTip(STR_NETWORK_CHAT_SEND, STR_NULL), EndContainer(), @@ -506,11 +429,11 @@ static constexpr NWidgetPart _nested_chat_window_widgets[] = { }; /** The description of the chat window. */ -static WindowDesc _chat_window_desc(__FILE__, __LINE__, +static WindowDesc _chat_window_desc( WDP_MANUAL, nullptr, 0, 0, WC_SEND_NETWORK_MSG, WC_NONE, 0, - std::begin(_nested_chat_window_widgets), std::end(_nested_chat_window_widgets) + _nested_chat_window_widgets ); @@ -522,5 +445,5 @@ static WindowDesc _chat_window_desc(__FILE__, __LINE__, void ShowNetworkChatQueryWindow(DestType type, int dest) { CloseWindowByClass(WC_SEND_NETWORK_MSG); - new NetworkChatWindow(&_chat_window_desc, type, dest); + new NetworkChatWindow(_chat_window_desc, type, dest); } diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index db49083974..5e85deaefe 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -43,10 +43,10 @@ struct PacketReader : LoadFilter { static const size_t CHUNK = 32 * 1024; ///< 32 KiB chunks of memory. - std::vector blocks; ///< Buffer with blocks of allocated memory. - byte *buf; ///< Buffer we're going to write to/read from. - byte *bufe; ///< End of the buffer we write to/read from. - byte **block; ///< The block we're reading from/writing to. + std::vector blocks; ///< Buffer with blocks of allocated memory. + uint8_t *buf; ///< Buffer we're going to write to/read from. + uint8_t *bufe; ///< End of the buffer we write to/read from. + uint8_t **block; ///< The block we're reading from/writing to. size_t written_bytes; ///< The total number of bytes we've written. size_t read_bytes; ///< The total number of read bytes. @@ -90,18 +90,18 @@ struct PacketReader : LoadFilter { if (p.RemainingBytesToTransfer() == 0) return; /* Allocate a new chunk and add the remaining data. */ - this->blocks.push_back(this->buf = CallocT(CHUNK)); + this->blocks.push_back(this->buf = CallocT(CHUNK)); this->bufe = this->buf + CHUNK; p.TransferOutWithLimit(TransferOutMemCopy, this->bufe - this->buf, this); } - size_t Read(byte *rbuf, size_t size) override + size_t Read(uint8_t *rbuf, size_t size) override { /* Limit the amount to read to whatever we still have. */ size_t ret_size = size = std::min(this->written_bytes - this->read_bytes, size); this->read_bytes += ret_size; - const byte *rbufe = rbuf + ret_size; + const uint8_t *rbufe = rbuf + ret_size; while (rbuf != rbufe) { if (this->buf == this->bufe) { @@ -313,11 +313,6 @@ ClientNetworkGameSocketHandler * ClientNetworkGameSocketHandler::my_client = nul /** Last frame we performed an ack. */ static uint32_t last_ack_frame; -/** One bit of 'entropy' used to generate a salt for the company passwords. */ -static uint32_t _password_game_seed; -/** The other bit of 'entropy' used to generate a salt for the company passwords. */ -static std::string _password_server_id; - /** Maximum number of companies of the currently joined server. */ static uint8_t _network_server_max_companies; /** The current name of the server you are on. */ @@ -326,9 +321,6 @@ std::string _network_server_name; /** Information about the game to join to. */ NetworkJoinInfo _network_join; -/** Make sure the server ID length is the same as a md5 hash. */ -static_assert(NETWORK_SERVER_ID_LENGTH == MD5_HASH_BYTES * 2 + 1); - /*********** * Sending functions ************/ @@ -344,12 +336,21 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendJoin() _network_join_status = NETWORK_JOIN_STATUS_AUTHORIZING; SetWindowDirty(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN); - auto p = std::make_unique(PACKET_CLIENT_JOIN); + auto p = std::make_unique(my_client, PACKET_CLIENT_JOIN); p->Send_string(GetNetworkRevisionString()); p->Send_uint32(_openttd_newgrf_version); + my_client->SendPacket(std::move(p)); + + return NETWORK_RECV_STATUS_OKAY; +} + +NetworkRecvStatus ClientNetworkGameSocketHandler::SendIdentify() +{ + Debug(net, 9, "Client::SendIdentify()"); + + auto p = std::make_unique(my_client, PACKET_CLIENT_IDENTIFY); p->Send_string(_settings_client.network.client_name); // Client name - p->Send_uint8 (_network_join.company); // PlayAs - p->Send_uint8 (0); // Used to be language + p->Send_uint8(_network_join.company); // PlayAs my_client->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -359,7 +360,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendNewGRFsOk() { Debug(net, 9, "Client::SendNewGRFsOk()"); - auto p = std::make_unique(PACKET_CLIENT_NEWGRFS_CHECKED); + auto p = std::make_unique(my_client, PACKET_CLIENT_NEWGRFS_CHECKED); my_client->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -368,27 +369,14 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendNewGRFsOk() * Set the game password as requested. * @param password The game password. */ -NetworkRecvStatus ClientNetworkGameSocketHandler::SendGamePassword(const std::string &password) +NetworkRecvStatus ClientNetworkGameSocketHandler::SendAuthResponse() { - Debug(net, 9, "Client::SendGamePassword()"); + Debug(net, 9, "Client::SendAuthResponse()"); - auto p = std::make_unique(PACKET_CLIENT_GAME_PASSWORD); - p->Send_string(password); + auto p = std::make_unique(my_client, PACKET_CLIENT_AUTH_RESPONSE); + my_client->authentication_handler->SendResponse(*p); my_client->SendPacket(std::move(p)); - return NETWORK_RECV_STATUS_OKAY; -} -/** - * Set the company password as requested. - * @param password The company password. - */ -NetworkRecvStatus ClientNetworkGameSocketHandler::SendCompanyPassword(const std::string &password) -{ - Debug(net, 9, "Client::SendCompanyPassword()"); - - auto p = std::make_unique(PACKET_CLIENT_COMPANY_PASSWORD); - p->Send_string(GenerateCompanyPasswordHash(password, _password_server_id, _password_game_seed)); - my_client->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -400,7 +388,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendGetMap() Debug(net, 9, "Client::status = MAP_WAIT"); my_client->status = STATUS_MAP_WAIT; - auto p = std::make_unique(PACKET_CLIENT_GETMAP); + auto p = std::make_unique(my_client, PACKET_CLIENT_GETMAP); my_client->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -413,7 +401,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendMapOk() Debug(net, 9, "Client::status = ACTIVE"); my_client->status = STATUS_ACTIVE; - auto p = std::make_unique(PACKET_CLIENT_MAP_OK); + auto p = std::make_unique(my_client, PACKET_CLIENT_MAP_OK); my_client->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -423,7 +411,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendAck() { Debug(net, 9, "Client::SendAck()"); - auto p = std::make_unique(PACKET_CLIENT_ACK); + auto p = std::make_unique(my_client, PACKET_CLIENT_ACK); p->Send_uint32(_frame_counter); p->Send_uint8 (my_client->token); @@ -439,7 +427,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendCommand(const CommandPacke { Debug(net, 9, "Client::SendCommand(): cmd={}", cp.cmd); - auto p = std::make_unique(PACKET_CLIENT_COMMAND); + auto p = std::make_unique(my_client, PACKET_CLIENT_COMMAND); my_client->NetworkGameSocketHandler::SendCommand(*p, cp); my_client->SendPacket(std::move(p)); @@ -451,7 +439,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendChat(NetworkAction action, { Debug(net, 9, "Client::SendChat(): action={}, type={}, dest={}", action, type, dest); - auto p = std::make_unique(PACKET_CLIENT_CHAT); + auto p = std::make_unique(my_client, PACKET_CLIENT_CHAT); p->Send_uint8 (action); p->Send_uint8 (type); @@ -468,28 +456,13 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendError(NetworkErrorCode err { Debug(net, 9, "Client::SendError(): errorno={}", errorno); - auto p = std::make_unique(PACKET_CLIENT_ERROR); + auto p = std::make_unique(my_client, PACKET_CLIENT_ERROR); p->Send_uint8(errorno); my_client->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } -/** - * Tell the server that we like to change the password of the company. - * @param password The new password. - */ -NetworkRecvStatus ClientNetworkGameSocketHandler::SendSetPassword(const std::string &password) -{ - Debug(net, 9, "Client::SendSetPassword()"); - - auto p = std::make_unique(PACKET_CLIENT_SET_PASSWORD); - - p->Send_string(GenerateCompanyPasswordHash(password, _password_server_id, _password_game_seed)); - my_client->SendPacket(std::move(p)); - return NETWORK_RECV_STATUS_OKAY; -} - /** * Tell the server that we like to change the name of the client. * @param name The new name. @@ -498,7 +471,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendSetName(const std::string { Debug(net, 9, "Client::SendSetName()"); - auto p = std::make_unique(PACKET_CLIENT_SET_NAME); + auto p = std::make_unique(my_client, PACKET_CLIENT_SET_NAME); p->Send_string(name); my_client->SendPacket(std::move(p)); @@ -510,9 +483,9 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendSetName(const std::string */ NetworkRecvStatus ClientNetworkGameSocketHandler::SendQuit() { - Debug(net, 9, "Client::SendSetName()"); + Debug(net, 9, "Client::SendQuit()"); - auto p = std::make_unique(PACKET_CLIENT_QUIT); + auto p = std::make_unique(my_client, PACKET_CLIENT_QUIT); my_client->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; @@ -527,7 +500,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendRCon(const std::string &pa { Debug(net, 9, "Client::SendRCon()"); - auto p = std::make_unique(PACKET_CLIENT_RCON); + auto p = std::make_unique(my_client, PACKET_CLIENT_RCON); p->Send_string(pass); p->Send_string(command); my_client->SendPacket(std::move(p)); @@ -537,15 +510,13 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendRCon(const std::string &pa /** * Ask the server to move us. * @param company The company to move to. - * @param password The password of the company to move to. */ -NetworkRecvStatus ClientNetworkGameSocketHandler::SendMove(CompanyID company, const std::string &password) +NetworkRecvStatus ClientNetworkGameSocketHandler::SendMove(CompanyID company) { Debug(net, 9, "Client::SendMove(): company={}", company); - auto p = std::make_unique(PACKET_CLIENT_MOVE); + auto p = std::make_unique(my_client, PACKET_CLIENT_MOVE); p->Send_uint8(company); - p->Send_string(GenerateCompanyPasswordHash(password, _password_server_id, _password_game_seed)); my_client->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -598,6 +569,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Pac Debug(net, 9, "Client::Receive_SERVER_CLIENT_INFO(): client_id={}, playas={}", client_id, playas); std::string name = p.Recv_string(NETWORK_NAME_LENGTH); + std::string public_key = p.Recv_string(NETWORK_PUBLIC_KEY_LENGTH); if (this->status < STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET; if (this->HasClientQuit()) return NETWORK_RECV_STATUS_CLIENT_QUIT; @@ -622,6 +594,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Pac ci->client_playas = playas; ci->client_name = name; + ci->public_key = public_key; InvalidateWindowData(WC_CLIENT_LIST, 0); @@ -641,6 +614,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Pac if (client_id == _network_own_client_id) this->SetInfo(ci); ci->client_name = name; + ci->public_key = public_key; InvalidateWindowData(WC_CLIENT_LIST, 0); @@ -671,6 +645,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR(Packet &p STR_NETWORK_ERROR_TIMEOUT_MAP, // NETWORK_ERROR_TIMEOUT_MAP STR_NETWORK_ERROR_TIMEOUT_JOIN, // NETWORK_ERROR_TIMEOUT_JOIN STR_NETWORK_ERROR_INVALID_CLIENT_NAME, // NETWORK_ERROR_INVALID_CLIENT_NAME + STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST, // NETWORK_ERROR_NOT_ON_ALLOW_LIST }; static_assert(lengthof(network_error_strings) == NETWORK_ERROR_END); @@ -696,7 +671,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR(Packet &p NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHECK_NEWGRFS(Packet &p) { - if (this->status != STATUS_JOIN) return NETWORK_RECV_STATUS_MALFORMED_PACKET; + if (this->status != STATUS_ENCRYPTED) return NETWORK_RECV_STATUS_MALFORMED_PACKET; uint grf_count = p.Recv_uint8(); NetworkRecvStatus ret = NETWORK_RECV_STATUS_OKAY; @@ -727,47 +702,64 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHECK_NEWGRFS(P return ret; } -NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEED_GAME_PASSWORD(Packet &) +class ClientGamePasswordRequestHandler : public NetworkAuthenticationPasswordRequestHandler { + virtual void SendResponse() override { MyClient::SendAuthResponse(); } + virtual void AskUserForPassword(std::shared_ptr request) override + { + if (!_network_join.server_password.empty()) { + request->Reply(_network_join.server_password); + } else { + ShowNetworkNeedPassword(request); + } + } +}; + +NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_AUTH_REQUEST(Packet &p) { - if (this->status < STATUS_JOIN || this->status >= STATUS_AUTH_GAME) return NETWORK_RECV_STATUS_MALFORMED_PACKET; + if (this->status != STATUS_JOIN && this->status != STATUS_AUTH_GAME) return NETWORK_RECV_STATUS_MALFORMED_PACKET; Debug(net, 9, "Client::status = AUTH_GAME"); this->status = STATUS_AUTH_GAME; - Debug(net, 9, "Client::Receive_SERVER_NEED_GAME_PASSWORD()"); + Debug(net, 9, "Client::Receive_SERVER_AUTH_REQUEST()"); - if (!_network_join.server_password.empty()) { - return SendGamePassword(_network_join.server_password); + if (this->authentication_handler == nullptr) { + this->authentication_handler = NetworkAuthenticationClientHandler::Create(std::make_shared(), + _settings_client.network.client_secret_key, _settings_client.network.client_public_key); } + switch (this->authentication_handler->ReceiveRequest(p)) { + case NetworkAuthenticationClientHandler::READY_FOR_RESPONSE: + return SendAuthResponse(); - ShowNetworkNeedPassword(NETWORK_GAME_PASSWORD); + case NetworkAuthenticationClientHandler::AWAIT_USER_INPUT: + return NETWORK_RECV_STATUS_OKAY; - return NETWORK_RECV_STATUS_OKAY; + case NetworkAuthenticationClientHandler::INVALID: + default: + return NETWORK_RECV_STATUS_MALFORMED_PACKET; + } } -NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEED_COMPANY_PASSWORD(Packet &p) +NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ENABLE_ENCRYPTION(Packet &p) { - if (this->status < STATUS_JOIN || this->status >= STATUS_AUTH_COMPANY) return NETWORK_RECV_STATUS_MALFORMED_PACKET; - Debug(net, 9, "Client::status = AUTH_COMPANY"); - this->status = STATUS_AUTH_COMPANY; + if (this->status != STATUS_AUTH_GAME || this->authentication_handler == nullptr) return NETWORK_RECV_STATUS_MALFORMED_PACKET; - Debug(net, 9, "Client::Receive_SERVER_NEED_COMPANY_PASSWORD()"); + Debug(net, 9, "Client::Receive_SERVER_ENABLE_ENCRYPTION()"); - _password_game_seed = p.Recv_uint32(); - _password_server_id = p.Recv_string(NETWORK_SERVER_ID_LENGTH); - if (this->HasClientQuit()) return NETWORK_RECV_STATUS_MALFORMED_PACKET; + if (!this->authentication_handler->ReceiveEnableEncryption(p)) return NETWORK_RECV_STATUS_MALFORMED_PACKET; - if (!_network_join.company_password.empty()) { - return SendCompanyPassword(_network_join.company_password); - } + this->receive_encryption_handler = this->authentication_handler->CreateServerToClientEncryptionHandler(); + this->send_encryption_handler = this->authentication_handler->CreateClientToServerEncryptionHandler(); + this->authentication_handler = nullptr; - ShowNetworkNeedPassword(NETWORK_COMPANY_PASSWORD); + Debug(net, 9, "Client::status = ENCRYPTED"); + this->status = STATUS_ENCRYPTED; - return NETWORK_RECV_STATUS_OKAY; + return this->SendIdentify(); } NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_WELCOME(Packet &p) { - if (this->status < STATUS_JOIN || this->status >= STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET; + if (this->status < STATUS_ENCRYPTED || this->status >= STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET; Debug(net, 9, "Client::status = AUTHORIZED"); this->status = STATUS_AUTHORIZED; @@ -775,10 +767,6 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_WELCOME(Packet Debug(net, 9, "Client::Receive_SERVER_WELCOME(): client_id={}", _network_own_client_id); - /* Initialize the password hash salting variables, even if they were previously. */ - _password_game_seed = p.Recv_uint32(); - _password_server_id = p.Recv_string(NETWORK_SERVER_ID_LENGTH); - /* Start receiving the map */ return SendGetMap(); } @@ -865,6 +853,10 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(Packet /* The map is done downloading, load it */ ClearErrorMessages(); + + /* Set the abstract filetype. This is read during savegame load. */ + _file_to_saveload.SetMode(SLO_LOAD, FT_SAVEGAME, DFT_GAME_FILE); + bool load_success = SafeLoad({}, SLO_LOAD, DFT_GAME_FILE, GM_NORMAL, NO_DIRECTORY, this->savegame); this->savegame = nullptr; @@ -882,7 +874,8 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(Packet SendMapOk(); /* As we skipped switch-mode, update the time we "switched". */ - _switch_mode_time = std::chrono::steady_clock::now(); + _game_session_stats.start_time = std::chrono::steady_clock::now(); + _game_session_stats.savegame_size = std::nullopt; ShowClientList(); @@ -897,7 +890,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(Packet Debug(net, 9, "Client::join_status = REGISTERING"); _network_join_status = NETWORK_JOIN_STATUS_REGISTERING; ShowJoinStatusWindow(); - Command::SendNet(STR_NULL, _local_company, CCA_NEW, INVALID_COMPANY, CRR_NONE, INVALID_CLIENT_ID); + Command::Post(CCA_NEW, INVALID_COMPANY, CRR_NONE, _network_own_client_id); } } else { /* take control over an existing company */ @@ -1201,19 +1194,6 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CONFIG_UPDATE(P return NETWORK_RECV_STATUS_OKAY; } -NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_UPDATE(Packet &p) -{ - if (this->status < STATUS_ACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET; - - static_assert(sizeof(_network_company_passworded) <= sizeof(uint16_t)); - _network_company_passworded = p.Recv_uint16(); - SetWindowClassesDirty(WC_COMPANY); - - Debug(net, 9, "Client::Receive_SERVER_COMPANY_UPDATE()"); - - return NETWORK_RECV_STATUS_OKAY; -} - /** * Check the connection's state, i.e. is the connection still up? */ @@ -1270,12 +1250,10 @@ void NetworkClientSendRcon(const std::string &password, const std::string &comma /** * Notify the server of this client wanting to be moved to another company. * @param company_id id of the company the client wishes to be moved to. - * @param pass the password, is only checked on the server end if a password is needed. - * @return void */ -void NetworkClientRequestMove(CompanyID company_id, const std::string &pass) +void NetworkClientRequestMove(CompanyID company_id) { - MyClient::SendMove(company_id, pass); + MyClient::SendMove(company_id); } /** @@ -1284,7 +1262,7 @@ void NetworkClientRequestMove(CompanyID company_id, const std::string &pass) */ void NetworkClientsToSpectators(CompanyID cid) { - Backup cur_company(_current_company, FILE_LINE); + Backup cur_company(_current_company); /* If our company is changing owner, go to spectators */ if (cid == _local_company) SetLocalCompany(COMPANY_SPECTATOR); @@ -1385,15 +1363,6 @@ void NetworkClientSendChat(NetworkAction action, DestType type, int dest, const MyClient::SendChat(action, type, dest, msg, data); } -/** - * Set/Reset company password on the client side. - * @param password Password to be set. - */ -void NetworkClientSetCompanyPassword(const std::string &password) -{ - MyClient::SendSetPassword(password); -} - /** * Tell whether the client has team members who they can chat to. * @param cio client to check members of. diff --git a/src/network/network_client.h b/src/network/network_client.h index d314ddc41a..75a1ce4dd3 100644 --- a/src/network/network_client.h +++ b/src/network/network_client.h @@ -15,17 +15,18 @@ /** Class for handling the client side of the game connection. */ class ClientNetworkGameSocketHandler : public ZeroedMemoryAllocator, public NetworkGameSocketHandler { private: + std::unique_ptr authentication_handler; ///< The handler for the authentication. std::string connection_string; ///< Address we are connected to. std::shared_ptr savegame; ///< Packet reader for reading the savegame. - byte token; ///< The token we need to send back to the server to prove we're the right client. + uint8_t token; ///< The token we need to send back to the server to prove we're the right client. /** Status of the connection with the server. */ enum ServerStatus { STATUS_INACTIVE, ///< The client is not connected nor active. STATUS_JOIN, ///< We are trying to join a server. - STATUS_NEWGRFS_CHECK, ///< Last action was checking NewGRFs. STATUS_AUTH_GAME, ///< Last action was requesting game (server) password. - STATUS_AUTH_COMPANY, ///< Last action was requesting company password. + STATUS_ENCRYPTED, ///< The game authentication has completed and from here on the connection to the server is encrypted. + STATUS_NEWGRFS_CHECK, ///< Last action was checking NewGRFs. STATUS_AUTHORIZED, ///< The client is authorized at the server. STATUS_MAP_WAIT, ///< The client is waiting as someone else is downloading the map. STATUS_MAP, ///< The client is downloading the map. @@ -44,8 +45,8 @@ protected: NetworkRecvStatus Receive_SERVER_BANNED(Packet &p) override; NetworkRecvStatus Receive_SERVER_ERROR(Packet &p) override; NetworkRecvStatus Receive_SERVER_CLIENT_INFO(Packet &p) override; - NetworkRecvStatus Receive_SERVER_NEED_GAME_PASSWORD(Packet &p) override; - NetworkRecvStatus Receive_SERVER_NEED_COMPANY_PASSWORD(Packet &p) override; + NetworkRecvStatus Receive_SERVER_AUTH_REQUEST(Packet &p) override; + NetworkRecvStatus Receive_SERVER_ENABLE_ENCRYPTION(Packet &p) override; NetworkRecvStatus Receive_SERVER_WELCOME(Packet &p) override; NetworkRecvStatus Receive_SERVER_WAIT(Packet &p) override; NetworkRecvStatus Receive_SERVER_MAP_BEGIN(Packet &p) override; @@ -65,12 +66,12 @@ protected: NetworkRecvStatus Receive_SERVER_RCON(Packet &p) override; NetworkRecvStatus Receive_SERVER_CHECK_NEWGRFS(Packet &p) override; NetworkRecvStatus Receive_SERVER_MOVE(Packet &p) override; - NetworkRecvStatus Receive_SERVER_COMPANY_UPDATE(Packet &p) override; NetworkRecvStatus Receive_SERVER_CONFIG_UPDATE(Packet &p) override; static NetworkRecvStatus SendNewGRFsOk(); static NetworkRecvStatus SendGetMap(); static NetworkRecvStatus SendMapOk(); + static NetworkRecvStatus SendIdentify(); void CheckConnection(); public: ClientNetworkGameSocketHandler(SOCKET s, const std::string &connection_string); @@ -85,14 +86,12 @@ public: static NetworkRecvStatus SendQuit(); static NetworkRecvStatus SendAck(); - static NetworkRecvStatus SendGamePassword(const std::string &password); - static NetworkRecvStatus SendCompanyPassword(const std::string &password); + static NetworkRecvStatus SendAuthResponse(); static NetworkRecvStatus SendChat(NetworkAction action, DestType type, int dest, const std::string &msg, int64_t data); - static NetworkRecvStatus SendSetPassword(const std::string &password); static NetworkRecvStatus SendSetName(const std::string &name); static NetworkRecvStatus SendRCon(const std::string &password, const std::string &command); - static NetworkRecvStatus SendMove(CompanyID company, const std::string &password); + static NetworkRecvStatus SendMove(CompanyID company); static bool IsConnected(); @@ -105,7 +104,6 @@ public: typedef ClientNetworkGameSocketHandler MyClient; void NetworkClient_Connected(); -void NetworkClientSetCompanyPassword(const std::string &password); /** Information required to join a server. */ struct NetworkJoinInfo { @@ -113,7 +111,6 @@ struct NetworkJoinInfo { std::string connection_string; ///< The address of the server to join. CompanyID company; ///< The company to join. std::string server_password; ///< The password of the server to join. - std::string company_password; ///< The password of the company to join. }; extern NetworkJoinInfo _network_join; diff --git a/src/network/network_command.cpp b/src/network/network_command.cpp index 189f198070..51c64e261e 100644 --- a/src/network/network_command.cpp +++ b/src/network/network_command.cpp @@ -369,7 +369,7 @@ const char *NetworkGameSocketHandler::ReceiveCommand(Packet &p, CommandPacket &c cp.err_msg = p.Recv_uint16(); cp.data = _cmd_dispatch[cp.cmd].Sanitize(p.Recv_buffer()); - byte callback = p.Recv_uint8(); + uint8_t callback = p.Recv_uint8(); if (callback >= _callback_table.size() || _cmd_dispatch[cp.cmd].Unpack[callback] == nullptr) return "invalid callback"; cp.callback = _callback_table[callback]; diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp index caa437f2fe..66926d26d8 100644 --- a/src/network/network_content.cpp +++ b/src/network/network_content.cpp @@ -13,6 +13,7 @@ #include "../game/game.hpp" #include "../window_func.h" #include "../error.h" +#include "../fileio_func.h" #include "../base_media_base.h" #include "../settings_type.h" #include "network_content.h" @@ -62,16 +63,14 @@ bool ClientNetworkContentSocketHandler::Receive_SERVER_INFO(Packet &p) ci->description = p.Recv_string(NETWORK_CONTENT_DESC_LENGTH, SVS_REPLACE_WITH_QUESTION_MARK | SVS_ALLOW_NEWLINE); ci->unique_id = p.Recv_uint32(); - for (size_t j = 0; j < ci->md5sum.size(); j++) { - ci->md5sum[j] = p.Recv_uint8(); - } + p.Recv_bytes(ci->md5sum); uint dependency_count = p.Recv_uint8(); ci->dependencies.reserve(dependency_count); for (uint i = 0; i < dependency_count; i++) { ContentID dependency_cid = (ContentID)p.Recv_uint32(); ci->dependencies.push_back(dependency_cid); - this->reverse_dependency_map.insert({ dependency_cid, ci->id }); + this->reverse_dependency_map.emplace(dependency_cid, ci->id); } uint tag_count = p.Recv_uint8(); @@ -204,8 +203,8 @@ void ClientNetworkContentSocketHandler::RequestContentList(ContentType type) this->Connect(); - auto p = std::make_unique(PACKET_CONTENT_CLIENT_INFO_LIST); - p->Send_uint8 ((byte)type); + auto p = std::make_unique(this, PACKET_CONTENT_CLIENT_INFO_LIST); + p->Send_uint8 ((uint8_t)type); p->Send_uint32(0xffffffff); p->Send_uint8 (1); p->Send_string("vanilla"); @@ -238,9 +237,9 @@ void ClientNetworkContentSocketHandler::RequestContentList(uint count, const Con * A packet begins with the packet size and a byte for the type. * Then this packet adds a uint16_t for the count in this packet. * The rest of the packet can be used for the IDs. */ - uint p_count = std::min(count, (TCP_MTU - sizeof(PacketSize) - sizeof(byte) - sizeof(uint16_t)) / sizeof(uint32_t)); + uint p_count = std::min(count, (TCP_MTU - sizeof(PacketSize) - sizeof(uint8_t) - sizeof(uint16_t)) / sizeof(uint32_t)); - auto p = std::make_unique(PACKET_CONTENT_CLIENT_INFO_ID, TCP_MTU); + auto p = std::make_unique(this, PACKET_CONTENT_CLIENT_INFO_ID, TCP_MTU); p->Send_uint16(p_count); for (uint i = 0; i < p_count; i++) { @@ -265,20 +264,17 @@ void ClientNetworkContentSocketHandler::RequestContentList(ContentVector *cv, bo this->Connect(); assert(cv->size() < 255); - assert(cv->size() < (TCP_MTU - sizeof(PacketSize) - sizeof(byte) - sizeof(uint8_t)) / + assert(cv->size() < (TCP_MTU - sizeof(PacketSize) - sizeof(uint8_t) - sizeof(uint8_t)) / (sizeof(uint8_t) + sizeof(uint32_t) + (send_md5sum ? MD5_HASH_BYTES : 0))); - auto p = std::make_unique(send_md5sum ? PACKET_CONTENT_CLIENT_INFO_EXTID_MD5 : PACKET_CONTENT_CLIENT_INFO_EXTID, TCP_MTU); + auto p = std::make_unique(this, send_md5sum ? PACKET_CONTENT_CLIENT_INFO_EXTID_MD5 : PACKET_CONTENT_CLIENT_INFO_EXTID, TCP_MTU); p->Send_uint8((uint8_t)cv->size()); for (const ContentInfo *ci : *cv) { - p->Send_uint8((byte)ci->type); + p->Send_uint8((uint8_t)ci->type); p->Send_uint32(ci->unique_id); if (!send_md5sum) continue; - - for (size_t j = 0; j < ci->md5sum.size(); j++) { - p->Send_uint8(ci->md5sum[j]); - } + p->Send_bytes(ci->md5sum); } this->SendPacket(std::move(p)); @@ -363,9 +359,9 @@ void ClientNetworkContentSocketHandler::DownloadSelectedContentFallback(const Co * A packet begins with the packet size and a byte for the type. * Then this packet adds a uint16_t for the count in this packet. * The rest of the packet can be used for the IDs. */ - uint p_count = std::min(count, (TCP_MTU - sizeof(PacketSize) - sizeof(byte) - sizeof(uint16_t)) / sizeof(uint32_t)); + uint p_count = std::min(count, (TCP_MTU - sizeof(PacketSize) - sizeof(uint8_t) - sizeof(uint16_t)) / sizeof(uint32_t)); - auto p = std::make_unique(PACKET_CONTENT_CLIENT_CONTENT, TCP_MTU); + auto p = std::make_unique(this, PACKET_CONTENT_CLIENT_CONTENT, TCP_MTU); p->Send_uint16(p_count); for (uint i = 0; i < p_count; i++) { @@ -420,7 +416,7 @@ static bool GunzipFile(const ContentInfo *ci) if (fin == nullptr || fout == nullptr) { ret = false; } else { - byte buff[8192]; + uint8_t buff[8192]; for (;;) { int read = gzread(fin, buff, sizeof(buff)); if (read == 0) { @@ -441,7 +437,7 @@ static bool GunzipFile(const ContentInfo *ci) if (errnum != 0 && errnum != Z_STREAM_END) ret = false; break; } - if (read < 0 || (size_t)read != fwrite(buff, 1, read, fout)) { + if (read < 0 || static_cast(read) != fwrite(buff, 1, read, fout)) { /* If gzread() returns -1, there was an error in archive */ ret = false; break; @@ -495,7 +491,7 @@ bool ClientNetworkContentSocketHandler::Receive_SERVER_CONTENT(Packet &p) } else { /* We have a file opened, thus are downloading internal content */ size_t toRead = p.RemainingBytesToTransfer(); - if (toRead != 0 && (size_t)p.TransferOut(TransferOutFWrite, this->curFile) != toRead) { + if (toRead != 0 && static_cast(p.TransferOut(TransferOutFWrite, this->curFile)) != toRead) { CloseWindowById(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD); ShowErrorMessage(STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD, STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE, WL_ERROR); this->CloseConnection(); @@ -550,7 +546,7 @@ void ClientNetworkContentSocketHandler::AfterDownload() this->curFile = nullptr; if (GunzipFile(this->curInfo)) { - unlink(GetFullFilename(this->curInfo, true).c_str()); + FioRemove(GetFullFilename(this->curInfo, true)); Subdirectory sd = GetContentInfoSubDir(this->curInfo->type); if (sd == NO_DIRECTORY) NOT_REACHED(); @@ -562,7 +558,7 @@ void ClientNetworkContentSocketHandler::AfterDownload() if (this->curInfo->type == CONTENT_TYPE_BASE_MUSIC) { /* Music can't be in a tar. So extract the tar! */ ExtractTar(fname, BASESET_DIR); - unlink(fname.c_str()); + FioRemove(fname); } #ifdef __EMSCRIPTEN__ diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp index 9b0229e116..d0f8afbde5 100644 --- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -94,14 +94,14 @@ static constexpr NWidgetPart _nested_network_content_download_status_window_widg }; /** Window description for the download window */ -static WindowDesc _network_content_download_status_window_desc(__FILE__, __LINE__, +static WindowDesc _network_content_download_status_window_desc( WDP_CENTER, nullptr, 0, 0, WC_NETWORK_STATUS_WINDOW, WC_NONE, WDF_MODAL, - std::begin(_nested_network_content_download_status_window_widgets), std::end(_nested_network_content_download_status_window_widgets) + _nested_network_content_download_status_window_widgets ); -BaseNetworkContentDownloadStatusWindow::BaseNetworkContentDownloadStatusWindow(WindowDesc *desc) : +BaseNetworkContentDownloadStatusWindow::BaseNetworkContentDownloadStatusWindow(WindowDesc &desc) : Window(desc), downloaded_bytes(0), downloaded_files(0), cur_id(UINT32_MAX) { _network_content_client.AddCallback(this); @@ -116,21 +116,21 @@ void BaseNetworkContentDownloadStatusWindow::Close([[maybe_unused]] int data) this->Window::Close(); } -void BaseNetworkContentDownloadStatusWindow::UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) +void BaseNetworkContentDownloadStatusWindow::UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) { switch (widget) { case WID_NCDS_PROGRESS_BAR: SetDParamMaxDigits(0, 8); SetDParamMaxDigits(1, 8); SetDParamMaxDigits(2, 8); - *size = GetStringBoundingBox(STR_CONTENT_DOWNLOAD_PROGRESS_SIZE); + size = GetStringBoundingBox(STR_CONTENT_DOWNLOAD_PROGRESS_SIZE); /* We need some spacing for the 'border' */ - size->height += WidgetDimensions::scaled.frametext.Horizontal(); - size->width += WidgetDimensions::scaled.frametext.Vertical(); + size.height += WidgetDimensions::scaled.frametext.Horizontal(); + size.width += WidgetDimensions::scaled.frametext.Vertical(); break; case WID_NCDS_PROGRESS_TEXT: - size->height = GetCharacterHeight(FS_NORMAL) * 2 + WidgetDimensions::scaled.vsep_normal; + size.height = GetCharacterHeight(FS_NORMAL) * 2 + WidgetDimensions::scaled.vsep_normal; break; } } @@ -142,7 +142,7 @@ void BaseNetworkContentDownloadStatusWindow::DrawWidget(const Rect &r, WidgetID /* Draw the % complete with a bar and a text */ DrawFrameRect(r, COLOUR_GREY, FR_BORDERONLY | FR_LOWERED); Rect ir = r.Shrink(WidgetDimensions::scaled.bevel); - DrawFrameRect(ir.WithWidth((uint64_t)ir.Width() * this->downloaded_bytes / this->total_bytes, false), COLOUR_MAUVE, FR_NONE); + DrawFrameRect(ir.WithWidth((uint64_t)ir.Width() * this->downloaded_bytes / this->total_bytes, _current_text_dir == TD_RTL), COLOUR_MAUVE, FR_NONE); SetDParam(0, this->downloaded_bytes); SetDParam(1, this->total_bytes); SetDParam(2, this->downloaded_bytes * 100LL / this->total_bytes); @@ -197,7 +197,7 @@ public: * Create a new download window based on a list of content information * with flags whether to download them or not. */ - NetworkContentDownloadStatusWindow() : BaseNetworkContentDownloadStatusWindow(&_network_content_download_status_window_desc) + NetworkContentDownloadStatusWindow() : BaseNetworkContentDownloadStatusWindow(_network_content_download_status_window_desc) { this->parent = FindWindowById(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_CONTENT_LIST); } @@ -334,8 +334,8 @@ class NetworkContentListWindow : public Window, ContentCallback { static Listing last_sorting; ///< The last sorting setting. static Filtering last_filtering; ///< The last filtering setting. - static GUIContentList::SortFunction * const sorter_funcs[]; ///< Sorter functions - static GUIContentList::FilterFunction * const filter_funcs[]; ///< Filter functions. + static const std::initializer_list sorter_funcs; ///< Sorter functions + static const std::initializer_list filter_funcs; ///< Filter functions. GUIContentList content; ///< List with content bool auto_select; ///< Automatically select all content when the meta-data becomes available ContentListFilterData filter_data; ///< Filter for content list @@ -421,7 +421,6 @@ class NetworkContentListWindow : public Window, ContentCallback { this->SetWidgetDisabledState(WID_NCL_SEARCH_EXTERNAL, this->auto_select && all_available); this->FilterContentList(); - this->content.shrink_to_fit(); this->content.RebuildDone(); this->SortContentList(); @@ -464,8 +463,10 @@ class NetworkContentListWindow : public Window, ContentCallback { } /** Filter content by tags/name */ - static bool CDECL TagNameFilter(const ContentInfo * const *a, ContentListFilterData &filter) + static bool TagNameFilter(const ContentInfo * const *a, ContentListFilterData &filter) { + if ((*a)->state == ContentInfo::SELECTED || (*a)->state == ContentInfo::AUTOSELECTED) return true; + filter.string_filter.ResetState(); for (auto &tag : (*a)->tags) filter.string_filter.AddLine(tag); @@ -474,7 +475,7 @@ class NetworkContentListWindow : public Window, ContentCallback { } /** Filter content by type, but still show content selected for download. */ - static bool CDECL TypeOrSelectedFilter(const ContentInfo * const *a, ContentListFilterData &filter) + static bool TypeOrSelectedFilter(const ContentInfo * const *a, ContentListFilterData &filter) { if (filter.types.none()) return true; if (filter.types[(*a)->type]) return true; @@ -541,7 +542,7 @@ public: * other types are only shown when content that depend on them are * selected. */ - NetworkContentListWindow(WindowDesc *desc, bool select_all, const std::bitset &types) : + NetworkContentListWindow(WindowDesc &desc, bool select_all, const std::bitset &types) : Window(desc), auto_select(select_all), filter_editbox(EDITBOX_MAX_SIZE), @@ -583,25 +584,25 @@ public: this->checkbox_size = maxdim(maxdim(GetSpriteSize(SPR_BOX_EMPTY), GetSpriteSize(SPR_BOX_CHECKED)), GetSpriteSize(SPR_BLOT)); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_NCL_CHECKBOX: - size->width = this->checkbox_size.width + padding.width; + size.width = this->checkbox_size.width + padding.width; break; case WID_NCL_TYPE: { - Dimension d = *size; + Dimension d = size; for (int i = CONTENT_TYPE_BEGIN; i < CONTENT_TYPE_END; i++) { d = maxdim(d, GetStringBoundingBox(STR_CONTENT_TYPE_BASE_GRAPHICS + i - CONTENT_TYPE_BASE_GRAPHICS)); } - size->width = d.width + padding.width; + size.width = d.width + padding.width; break; } case WID_NCL_MATRIX: - resize->height = std::max(this->checkbox_size.height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height; - size->height = 10 * resize->height; + resize.height = std::max(this->checkbox_size.height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height; + size.height = 10 * resize.height; break; } } @@ -652,11 +653,8 @@ public: int text_y_offset = (this->resize.step_height - GetCharacterHeight(FS_NORMAL)) / 2; Rect mr = r.WithHeight(this->resize.step_height); - auto iter = this->content.begin() + this->vscroll->GetPosition(); - size_t last = this->vscroll->GetPosition() + this->vscroll->GetCapacity(); - auto end = (last < this->content.size()) ? this->content.begin() + last : this->content.end(); - - for (/**/; iter != end; iter++) { + auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->content); + for (auto iter = first; iter != last; iter++) { const ContentInfo *ci = *iter; if (ci == this->selected) GfxFillRect(mr.Shrink(WidgetDimensions::scaled.bevel), PC_GREY); @@ -811,6 +809,7 @@ public: if (click_count > 1 || IsInsideBS(pt.x, checkbox->pos_x, checkbox->current_x)) { _network_content_client.ToggleSelectedState(this->selected); this->content.ForceResort(); + this->content.ForceRebuild(); } if (this->filter_data.types.any()) { @@ -997,7 +996,7 @@ public: this->SetWidgetDisabledState(WID_NCL_DOWNLOAD, this->filesize_sum == 0 || (FindWindowById(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD) != nullptr && data != 2)); this->SetWidgetDisabledState(WID_NCL_UNSELECT, this->filesize_sum == 0); this->SetWidgetDisabledState(WID_NCL_SELECT_ALL, !show_select_all); - this->SetWidgetDisabledState(WID_NCL_SELECT_UPDATE, !show_select_upgrade); + this->SetWidgetDisabledState(WID_NCL_SELECT_UPDATE, !show_select_upgrade || !this->filter_data.string_filter.IsEmpty()); this->SetWidgetDisabledState(WID_NCL_OPEN_URL, this->selected == nullptr || this->selected->url.empty()); for (TextfileType tft = TFT_CONTENT_BEGIN; tft < TFT_CONTENT_END; tft++) { this->SetWidgetDisabledState(WID_NCL_TEXTFILE + tft, this->selected == nullptr || this->selected->state != ContentInfo::ALREADY_HERE || !this->selected->GetTextfile(tft).has_value()); @@ -1010,13 +1009,13 @@ public: Listing NetworkContentListWindow::last_sorting = {false, 1}; Filtering NetworkContentListWindow::last_filtering = {false, 0}; -NetworkContentListWindow::GUIContentList::SortFunction * const NetworkContentListWindow::sorter_funcs[] = { +const std::initializer_list NetworkContentListWindow::sorter_funcs = { &StateSorter, &TypeSorter, &NameSorter, }; -NetworkContentListWindow::GUIContentList::FilterFunction * const NetworkContentListWindow::filter_funcs[] = { +const std::initializer_list NetworkContentListWindow::filter_funcs = { &TagNameFilter, &TypeOrSelectedFilter, }; @@ -1113,11 +1112,11 @@ static constexpr NWidgetPart _nested_network_content_list_widgets[] = { }; /** Window description of the content list */ -static WindowDesc _network_content_list_desc(__FILE__, __LINE__, +static WindowDesc _network_content_list_desc( WDP_CENTER, "list_content", 630, 460, WC_NETWORK_WINDOW, WC_NONE, 0, - std::begin(_nested_network_content_list_widgets), std::end(_nested_network_content_list_widgets) + _nested_network_content_list_widgets ); /** @@ -1145,7 +1144,7 @@ void ShowNetworkContentListWindow(ContentVector *cv, ContentType type1, ContentT } CloseWindowById(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_CONTENT_LIST); - new NetworkContentListWindow(&_network_content_list_desc, cv != nullptr, types); + new NetworkContentListWindow(_network_content_list_desc, cv != nullptr, types); #else ShowErrorMessage(STR_CONTENT_NO_ZLIB, STR_CONTENT_NO_ZLIB_SUB, WL_ERROR); /* Connection failed... clean up the mess */ diff --git a/src/network/network_content_gui.h b/src/network/network_content_gui.h index 5af46a59aa..b32022ec69 100644 --- a/src/network/network_content_gui.h +++ b/src/network/network_content_gui.h @@ -30,10 +30,10 @@ public: * Create the window with the given description. * @param desc The description of the window. */ - BaseNetworkContentDownloadStatusWindow(WindowDesc *desc); + BaseNetworkContentDownloadStatusWindow(WindowDesc &desc); void Close([[maybe_unused]] int data = 0) override; - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override; + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override; void DrawWidget(const Rect &r, WidgetID widget) const override; void OnDownloadProgress(const ContentInfo *ci, int bytes) override; }; diff --git a/src/network/network_coordinator.cpp b/src/network/network_coordinator.cpp index 129b26f8fb..e7bd0fdb6c 100644 --- a/src/network/network_coordinator.cpp +++ b/src/network/network_coordinator.cpp @@ -458,7 +458,7 @@ void ClientNetworkCoordinatorSocketHandler::Register() this->Connect(); - auto p = std::make_unique(PACKET_COORDINATOR_SERVER_REGISTER); + auto p = std::make_unique(this, PACKET_COORDINATOR_SERVER_REGISTER); p->Send_uint8(NETWORK_COORDINATOR_VERSION); p->Send_uint8(_settings_client.network.server_game_type); p->Send_uint16(_settings_client.network.server_port); @@ -480,7 +480,7 @@ void ClientNetworkCoordinatorSocketHandler::SendServerUpdate() { Debug(net, 6, "Sending server update to Game Coordinator"); - auto p = std::make_unique(PACKET_COORDINATOR_SERVER_UPDATE, TCP_MTU); + auto p = std::make_unique(this, PACKET_COORDINATOR_SERVER_UPDATE, TCP_MTU); p->Send_uint8(NETWORK_COORDINATOR_VERSION); SerializeNetworkGameInfo(*p, GetCurrentNetworkServerGameInfo(), this->next_update.time_since_epoch() != std::chrono::nanoseconds::zero()); @@ -498,7 +498,7 @@ void ClientNetworkCoordinatorSocketHandler::GetListing() _network_game_list_version++; - auto p = std::make_unique(PACKET_COORDINATOR_CLIENT_LISTING); + auto p = std::make_unique(this, PACKET_COORDINATOR_CLIENT_LISTING); p->Send_uint8(NETWORK_COORDINATOR_VERSION); p->Send_uint8(NETWORK_GAME_INFO_VERSION); p->Send_string(_openttd_revision); @@ -530,7 +530,7 @@ void ClientNetworkCoordinatorSocketHandler::ConnectToServer(const std::string &i this->Connect(); - auto p = std::make_unique(PACKET_COORDINATOR_CLIENT_CONNECT); + auto p = std::make_unique(this, PACKET_COORDINATOR_CLIENT_CONNECT); p->Send_uint8(NETWORK_COORDINATOR_VERSION); p->Send_string(invite_code); @@ -547,7 +547,7 @@ void ClientNetworkCoordinatorSocketHandler::ConnectFailure(const std::string &to /* Connecter will destroy itself. */ this->game_connecter = nullptr; - auto p = std::make_unique(PACKET_COORDINATOR_SERCLI_CONNECT_FAILED); + auto p = std::make_unique(this, PACKET_COORDINATOR_SERCLI_CONNECT_FAILED); p->Send_uint8(NETWORK_COORDINATOR_VERSION); p->Send_string(token); p->Send_uint8(tracking_number); @@ -578,7 +578,7 @@ void ClientNetworkCoordinatorSocketHandler::ConnectSuccess(const std::string &to } else { /* The client informs the Game Coordinator about the success. The server * doesn't have to, as it is implied by the client telling. */ - auto p = std::make_unique(PACKET_COORDINATOR_CLIENT_CONNECTED); + auto p = std::make_unique(this, PACKET_COORDINATOR_CLIENT_CONNECTED); p->Send_uint8(NETWORK_COORDINATOR_VERSION); p->Send_string(token); this->SendPacket(std::move(p)); @@ -606,7 +606,7 @@ void ClientNetworkCoordinatorSocketHandler::ConnectSuccess(const std::string &to */ void ClientNetworkCoordinatorSocketHandler::StunResult(const std::string &token, uint8_t family, bool result) { - auto p = std::make_unique(PACKET_COORDINATOR_SERCLI_STUN_RESULT); + auto p = std::make_unique(this, PACKET_COORDINATOR_SERCLI_STUN_RESULT); p->Send_uint8(NETWORK_COORDINATOR_VERSION); p->Send_string(token); p->Send_uint8(family); diff --git a/src/network/network_crypto.cpp b/src/network/network_crypto.cpp new file mode 100644 index 0000000000..38a1f9dd09 --- /dev/null +++ b/src/network/network_crypto.cpp @@ -0,0 +1,495 @@ +/* + * This file is part of OpenTTD. + * OpenTTD 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, version 2. + * OpenTTD 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 OpenTTD. If not, see . + */ + +/** @file network_crypto.cpp Implementation of the network specific cryptography helpers. */ + +#include "../stdafx.h" + +#include "network_crypto_internal.h" +#include "core/packet.h" + +#include "../3rdparty/monocypher/monocypher.h" +#include "../core/random_func.hpp" +#include "../debug.h" +#include "../string_func.h" + +#include "../safeguards.h" + +/** + * Call \c crypto_wipe for all the data in the given span. + * @param span The span to cryptographically wipe. + */ +static void crypto_wipe(std::span span) +{ + crypto_wipe(span.data(), span.size()); +} + +/** Ensure the derived keys do not get leaked when we're done with it. */ +X25519DerivedKeys::~X25519DerivedKeys() +{ + crypto_wipe(keys); +} + +/** + * Get the key to encrypt or decrypt a message sent from the client to the server. + * @return The raw bytes of the key. + */ +std::span X25519DerivedKeys::ClientToServer() const +{ + return std::span(this->keys.data(), X25519_KEY_SIZE); +} + +/** + * Get the key to encrypt or decrypt a message sent from the server to the client. + * @return The raw bytes of the key. + */ +std::span X25519DerivedKeys::ServerToClient() const +{ + return std::span(this->keys.data() + X25519_KEY_SIZE, X25519_KEY_SIZE); +} + +/** + * Perform the actual key exchange. + * @param peer_public_key The public key chosen by the other participant of the key exchange. + * @param side Whether we are the client or server; used to hash the public key of us and the peer in the right order. + * @param our_secret_key The secret key of us. + * @param our_public_key The public key of us. + * @param extra_payload Extra payload to put into the hash function to create the derived keys. + * @return True when the key exchange has succeeded, false when an illegal public key was given. + */ +bool X25519DerivedKeys::Exchange(const X25519PublicKey &peer_public_key, X25519KeyExchangeSide side, + const X25519SecretKey &our_secret_key, const X25519PublicKey &our_public_key, std::string_view extra_payload) +{ + X25519Key shared_secret; + crypto_x25519(shared_secret.data(), our_secret_key.data(), peer_public_key.data()); + if (std::all_of(shared_secret.begin(), shared_secret.end(), [](auto v) { return v == 0; })) { + /* A shared secret of all zeros means that the peer tried to force the shared secret to a known constant. */ + return false; + } + + crypto_blake2b_ctx ctx; + crypto_blake2b_init(&ctx, this->keys.size()); + crypto_blake2b_update(&ctx, shared_secret.data(), shared_secret.size()); + switch (side) { + case X25519KeyExchangeSide::SERVER: + crypto_blake2b_update(&ctx, our_public_key.data(), our_public_key.size()); + crypto_blake2b_update(&ctx, peer_public_key.data(), peer_public_key.size()); + break; + case X25519KeyExchangeSide::CLIENT: + crypto_blake2b_update(&ctx, peer_public_key.data(), peer_public_key.size()); + crypto_blake2b_update(&ctx, our_public_key.data(), our_public_key.size()); + break; + default: + NOT_REACHED(); + } + crypto_blake2b_update(&ctx, reinterpret_cast(extra_payload.data()), extra_payload.size()); + crypto_blake2b_final(&ctx, this->keys.data()); + return true; +} + +/** + * Encryption handler implementation for monocypther encryption after a X25519 key exchange. + */ +class X25519EncryptionHandler : public NetworkEncryptionHandler { +private: + crypto_aead_ctx context; ///< The actual encryption context. + +public: + /** + * Create the encryption handler. + * @param key The key used for the encryption. + * @param nonce The nonce used for the encryption. + */ + X25519EncryptionHandler(const std::span key, const X25519Nonce &nonce) + { + assert(key.size() == X25519_KEY_SIZE); + crypto_aead_init_x(&this->context, key.data(), nonce.data()); + } + + /** Ensure the encryption context is wiped! */ + ~X25519EncryptionHandler() + { + crypto_wipe(&this->context, sizeof(this->context)); + } + + size_t MACSize() const override + { + return X25519_MAC_SIZE; + } + + bool Decrypt(std::span mac, std::span message) override + { + return crypto_aead_read(&this->context, message.data(), mac.data(), nullptr, 0, message.data(), message.size()) == 0; + } + + void Encrypt(std::span mac, std::span message) override + { + crypto_aead_write(&this->context, message.data(), mac.data(), nullptr, 0, message.data(), message.size()); + } +}; + +/** Ensure the key does not get leaked when we're done with it. */ +X25519Key::~X25519Key() +{ + crypto_wipe(*this); +} + +/** + * Create a new secret key that's filled with random bytes. + * @return The randomly filled key. + */ +/* static */ X25519SecretKey X25519SecretKey::CreateRandom() +{ + X25519SecretKey secret_key; + RandomBytesWithFallback(secret_key); + return secret_key; +} + +/** + * Create the public key associated with this secret key. + * @return The public key. + */ +X25519PublicKey X25519SecretKey::CreatePublicKey() const +{ + X25519PublicKey public_key; + crypto_x25519_public_key(public_key.data(), this->data()); + return public_key; +} + +/** + * Create a new nonce that's filled with random bytes. + * @return The randomly filled nonce. + */ +/* static */ X25519Nonce X25519Nonce::CreateRandom() +{ + X25519Nonce nonce; + RandomBytesWithFallback(nonce); + return nonce; +} + +/** Ensure the nonce does not get leaked when we're done with it. */ +X25519Nonce::~X25519Nonce() +{ + crypto_wipe(*this); +} + +/** + * Create the handler, and generate the public keys accordingly. + * @param secret_key The secret key to use for this handler. Defaults to secure random data. + */ +X25519AuthenticationHandler::X25519AuthenticationHandler(const X25519SecretKey &secret_key) : + our_secret_key(secret_key), our_public_key(secret_key.CreatePublicKey()), + key_exchange_nonce(X25519Nonce::CreateRandom()), encryption_nonce(X25519Nonce::CreateRandom()) +{ +} + +/* virtual */ void X25519AuthenticationHandler::SendRequest(Packet &p) +{ + p.Send_bytes(this->our_public_key); + p.Send_bytes(this->key_exchange_nonce); +} + +/** + * Read the key exchange data from a \c Packet that came from the server, + * @param p The packet that has been received. + * @return True when the data seems correct. + */ +bool X25519AuthenticationHandler::ReceiveRequest(Packet &p) +{ + if (p.RemainingBytesToTransfer() != X25519_KEY_SIZE + X25519_NONCE_SIZE) { + Debug(net, 1, "[crypto] Received auth response of illegal size; authentication aborted."); + return false; + } + + p.Recv_bytes(this->peer_public_key); + p.Recv_bytes(this->key_exchange_nonce); + return true; +} + +/** + * Perform the key exchange, and when that is correct fill the \c Packet with the appropriate data. + * @param p The packet that has to be sent. + * @param derived_key_extra_payload The extra payload to pass to the key exchange. + * @return Whether the key exchange was successful or not. + */ +bool X25519AuthenticationHandler::SendResponse(Packet &p, std::string_view derived_key_extra_payload) +{ + if (!this->derived_keys.Exchange(this->peer_public_key, X25519KeyExchangeSide::CLIENT, + this->our_secret_key, this->our_public_key, derived_key_extra_payload)) { + Debug(net, 0, "[crypto] Peer sent an illegal public key; authentication aborted."); + return false; + } + + X25519KeyExchangeMessage message; + RandomBytesWithFallback(message); + X25519Mac mac; + + crypto_aead_lock(message.data(), mac.data(), this->derived_keys.ClientToServer().data(), this->key_exchange_nonce.data(), + this->our_public_key.data(), this->our_public_key.size(), message.data(), message.size()); + + p.Send_bytes(this->our_public_key); + p.Send_bytes(mac); + p.Send_bytes(message); + return true; +} + +/** + * Get the public key the peer provided for the key exchange. + * @return The hexadecimal string representation of the peer's public key. + */ +std::string X25519AuthenticationHandler::GetPeerPublicKey() const +{ + return FormatArrayAsHex(this->peer_public_key); +} + +/** + * Send the initial nonce for the encrypted connection. + * @param p The packet to send the data in. + */ +void X25519AuthenticationHandler::SendEnableEncryption(struct Packet &p) const +{ + p.Send_bytes(this->encryption_nonce); +} + +/** + * Receive the initial nonce for the encrypted connection. + * @param p The packet to read the data from. + * @return \c true when enough bytes could be read for the nonce, otherwise \c false. + */ +bool X25519AuthenticationHandler::ReceiveEnableEncryption(struct Packet &p) +{ + return p.Recv_bytes(this->encryption_nonce) == this->encryption_nonce.size(); +} + +std::unique_ptr X25519AuthenticationHandler::CreateClientToServerEncryptionHandler() const +{ + return std::make_unique(this->derived_keys.ClientToServer(), this->encryption_nonce); +} + +std::unique_ptr X25519AuthenticationHandler::CreateServerToClientEncryptionHandler() const +{ + return std::make_unique(this->derived_keys.ServerToClient(), this->encryption_nonce); +} + +/** + * Read the key exchange data from a \c Packet that came from the client, and check whether the client passes the key + * exchange successfully. + * @param p The packet that has been received. + * @param derived_key_extra_payload The extra payload to pass to the key exchange. + * @return Whether the authentication was successful or not. + */ +NetworkAuthenticationServerHandler::ResponseResult X25519AuthenticationHandler::ReceiveResponse(Packet &p, std::string_view derived_key_extra_payload) +{ + if (p.RemainingBytesToTransfer() != X25519_KEY_SIZE + X25519_MAC_SIZE + X25519_KEY_EXCHANGE_MESSAGE_SIZE) { + Debug(net, 1, "[crypto] Received auth response of illegal size; authentication aborted."); + return NetworkAuthenticationServerHandler::NOT_AUTHENTICATED; + } + + X25519KeyExchangeMessage message{}; + X25519Mac mac; + + p.Recv_bytes(this->peer_public_key); + p.Recv_bytes(mac); + p.Recv_bytes(message); + + if (!this->derived_keys.Exchange(this->peer_public_key, X25519KeyExchangeSide::SERVER, + this->our_secret_key, this->our_public_key, derived_key_extra_payload)) { + Debug(net, 0, "[crypto] Peer sent an illegal public key; authentication aborted."); + return NetworkAuthenticationServerHandler::NOT_AUTHENTICATED; + } + + if (crypto_aead_unlock(message.data(), mac.data(), this->derived_keys.ClientToServer().data(), this->key_exchange_nonce.data(), + this->peer_public_key.data(), this->peer_public_key.size(), message.data(), message.size()) != 0) { + /* + * The ciphertext and the message authentication code do not match with the encryption key. + * This is most likely an invalid password, or possibly a bug in the client. + */ + return NetworkAuthenticationServerHandler::NOT_AUTHENTICATED; + } + + return NetworkAuthenticationServerHandler::AUTHENTICATED; +} + + +/* virtual */ NetworkAuthenticationClientHandler::RequestResult X25519PAKEClientHandler::ReceiveRequest(struct Packet &p) +{ + bool success = this->X25519AuthenticationHandler::ReceiveRequest(p); + if (!success) return NetworkAuthenticationClientHandler::INVALID; + + this->handler->AskUserForPassword(this->handler); + return NetworkAuthenticationClientHandler::AWAIT_USER_INPUT; +} + +/** + * Get the secret key from the given string. If that is not a valid secret key, reset it with a random one. + * Furthermore update the public key so it is always in sync with the private key. + * @param secret_key The secret key to read/validate/fix. + * @param public_key The public key to update. + * @return The valid secret key. + */ +/* static */ X25519SecretKey X25519AuthorizedKeyClientHandler::GetValidSecretKeyAndUpdatePublicKey(std::string &secret_key, std::string &public_key) +{ + X25519SecretKey key{}; + if (!ConvertHexToBytes(secret_key, key)) { + if (secret_key.empty()) { + Debug(net, 3, "[crypto] Creating a new random key"); + } else { + Debug(net, 0, "[crypto] Found invalid secret key, creating a new random key"); + } + key = X25519SecretKey::CreateRandom(); + secret_key = FormatArrayAsHex(key); + } + + public_key = FormatArrayAsHex(key.CreatePublicKey()); + return key; +} + +/* virtual */ NetworkAuthenticationServerHandler::ResponseResult X25519AuthorizedKeyServerHandler::ReceiveResponse(Packet &p) +{ + ResponseResult result = this->X25519AuthenticationHandler::ReceiveResponse(p, {}); + if (result != AUTHENTICATED) return result; + + std::string peer_public_key = this->GetPeerPublicKey(); + return this->authorized_key_handler->IsAllowed(peer_public_key) ? AUTHENTICATED : NOT_AUTHENTICATED; +} + + +/* virtual */ NetworkAuthenticationClientHandler::RequestResult CombinedAuthenticationClientHandler::ReceiveRequest(struct Packet &p) +{ + NetworkAuthenticationMethod method = static_cast(p.Recv_uint8()); + + auto is_of_method = [method](Handler &handler) { return handler->GetAuthenticationMethod() == method; }; + auto it = std::find_if(handlers.begin(), handlers.end(), is_of_method); + if (it == handlers.end()) return INVALID; + + this->current_handler = it->get(); + + Debug(net, 9, "Received {} authentication request", this->GetName()); + return this->current_handler->ReceiveRequest(p); +} + +/* virtual */ bool CombinedAuthenticationClientHandler::SendResponse(struct Packet &p) +{ + Debug(net, 9, "Sending {} authentication response", this->GetName()); + + return this->current_handler->SendResponse(p); +} + +/* virtual */ std::string_view CombinedAuthenticationClientHandler::GetName() const +{ + return this->current_handler != nullptr ? this->current_handler->GetName() : "Unknown"; +} + +/* virtual */ NetworkAuthenticationMethod CombinedAuthenticationClientHandler::GetAuthenticationMethod() const +{ + return this->current_handler != nullptr ? this->current_handler->GetAuthenticationMethod() : NETWORK_AUTH_METHOD_END; +} + + +/** + * Add the given sub-handler to this handler, if the handler can be used (e.g. there are authorized keys or there is a password). + * @param handler The handler to add. + */ +void CombinedAuthenticationServerHandler::Add(CombinedAuthenticationServerHandler::Handler &&handler) +{ + /* Is the handler configured correctly, e.g. does it have a password? */ + if (!handler->CanBeUsed()) return; + + this->handlers.push_back(std::move(handler)); +} + +/* virtual */ void CombinedAuthenticationServerHandler::SendRequest(struct Packet &p) +{ + Debug(net, 9, "Sending {} authentication request", this->GetName()); + + p.Send_uint8(this->handlers.back()->GetAuthenticationMethod()); + this->handlers.back()->SendRequest(p); +} + +/* virtual */ NetworkAuthenticationServerHandler::ResponseResult CombinedAuthenticationServerHandler::ReceiveResponse(struct Packet &p) +{ + Debug(net, 9, "Receiving {} authentication response", this->GetName()); + + ResponseResult result = this->handlers.back()->ReceiveResponse(p); + if (result != NOT_AUTHENTICATED) return result; + + this->handlers.pop_back(); + return this->CanBeUsed() ? RETRY_NEXT_METHOD : NOT_AUTHENTICATED; +} + +/* virtual */ std::string_view CombinedAuthenticationServerHandler::GetName() const +{ + return this->CanBeUsed() ? this->handlers.back()->GetName() : "Unknown"; +} + +/* virtual */ NetworkAuthenticationMethod CombinedAuthenticationServerHandler::GetAuthenticationMethod() const +{ + return this->CanBeUsed() ? this->handlers.back()->GetAuthenticationMethod() : NETWORK_AUTH_METHOD_END; +} + +/* virtual */ bool CombinedAuthenticationServerHandler::CanBeUsed() const +{ + return !this->handlers.empty(); +} + + +/* virtual */ void NetworkAuthenticationPasswordRequestHandler::Reply(const std::string &password) +{ + this->password = password; + this->SendResponse(); +} + +/** + * Ensures that the given secret key is valid, and when not overwrite it with a valid secret key. Then update the public key to be associated with the secret key. + * @param secret_key The location where the secret key is stored; can be overwritten when invalid. + * @param public_key The location where the public key is stored; can be overwritten when invalid. + */ +/* static */ void NetworkAuthenticationClientHandler::EnsureValidSecretKeyAndUpdatePublicKey(std::string &secret_key, std::string &public_key) +{ + X25519AuthorizedKeyClientHandler::GetValidSecretKeyAndUpdatePublicKey(secret_key, public_key); +} + +/** + * Create a NetworkAuthenticationClientHandler. + * @param password_handler The handler for when a request for password needs to be passed on to the user. + * @param secret_key The location where the secret key is stored; can be overwritten when invalid. + * @param public_key The location where the public key is stored; can be overwritten when invalid. + */ +/* static */ std::unique_ptr NetworkAuthenticationClientHandler::Create(std::shared_ptr password_handler, std::string &secret_key, std::string &public_key) +{ + auto secret = X25519AuthorizedKeyClientHandler::GetValidSecretKeyAndUpdatePublicKey(secret_key, public_key); + auto handler = std::make_unique(); + handler->Add(std::make_unique(secret)); + handler->Add(std::make_unique(secret, std::move(password_handler))); + handler->Add(std::make_unique(secret)); + return handler; +} + +/** + * Create a NetworkAuthenticationServerHandler. + * @param password_provider Callback to provide the password handling. Must remain valid until the authentication has succeeded or failed. Can be \c nullptr to skip password checks. + * @param authorized_key_handler Callback to provide the authorized key handling. Must remain valid until the authentication has succeeded or failed. Can be \c nullptr to skip authorized key checks. + * @param client_supported_method_mask Bitmask of the methods that are supported by the client. Defaults to support of all methods. + */ +std::unique_ptr NetworkAuthenticationServerHandler::Create(const NetworkAuthenticationPasswordProvider *password_provider, const NetworkAuthenticationAuthorizedKeyHandler *authorized_key_handler, NetworkAuthenticationMethodMask client_supported_method_mask) +{ + auto secret = X25519SecretKey::CreateRandom(); + auto handler = std::make_unique(); + if (password_provider != nullptr && HasBit(client_supported_method_mask, NETWORK_AUTH_METHOD_X25519_PAKE)) { + handler->Add(std::make_unique(secret, password_provider)); + } + + if (authorized_key_handler != nullptr && HasBit(client_supported_method_mask, NETWORK_AUTH_METHOD_X25519_AUTHORIZED_KEY)) { + handler->Add(std::make_unique(secret, authorized_key_handler)); + } + + if (!handler->CanBeUsed() && HasBit(client_supported_method_mask, NETWORK_AUTH_METHOD_X25519_KEY_EXCHANGE_ONLY)) { + /* Fall back to the plain handler when neither password, nor authorized keys are configured. */ + handler->Add(std::make_unique(secret)); + } + return handler; +} diff --git a/src/network/network_crypto.h b/src/network/network_crypto.h new file mode 100644 index 0000000000..74424860a9 --- /dev/null +++ b/src/network/network_crypto.h @@ -0,0 +1,302 @@ +/* + * This file is part of OpenTTD. + * OpenTTD 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, version 2. + * OpenTTD 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 OpenTTD. If not, see . + */ + +/** + * @file network_crypto.h Crypto specific bits of the network handling. + * + * This provides a set of functionality to perform authentication combined with a key exchange, + * to create a shared secret as well as encryption using those shared secrets. + * + * For the authentication/key exchange, the server determines the available methods and creates + * the appropriate \c NetworkAuthenticationServerHandler. This will be used to create a request + * for the client, which instantiates a \c NetworkAuthenticationClientHandler to handle that + * request. + * At the moment there are three types of request: key exchange only, password-authenticated key + * exchange (PAKE) and authorized keys. When the request is for a password, the user is asked + * for the password via an essentially asynchronous callback from the client handler. For the + * other requests no input from the user is needed, and these are immediately ready to generate + * the response for the server. + * + * The server will validate the response resulting in either the user being authenticated or not. + * When the user failed authentication, there might be a possibility to retry. For example when + * the server has configured authorized keys and passwords; when the client fails with the + * authorized keys, it will retry with the password. + * + * Once the key exchange/authentication has been done, the server can signal the client to + * upgrade the network connection to use encryption using the shared secret of the key exchange. + */ + +#ifndef NETWORK_CRYPTO_H +#define NETWORK_CRYPTO_H + +#include "network_type.h" + +/** + * Base class for handling the encryption (or decryption) of a network connection. + */ +class NetworkEncryptionHandler { +public: + virtual ~NetworkEncryptionHandler() {} + + /** + * Get the size of the MAC (Message Authentication Code) used by the underlying encryption protocol. + * @return The size, in bytes, of the MACs. + */ + virtual size_t MACSize() const = 0; + + /** + * Decrypt the given message in-place, validating against the given MAC. + * @param mac The message authentication code (MAC). + * @param message The location of the message to decrypt. + * @return Whether decryption and authentication/validation of the message succeeded. + */ + virtual bool Decrypt(std::span mac, std::span message) = 0; + + /** + * Encrypt the given message in-place, and write the associated MAC. + * @param mac The location to write the message authentication code (MAC) to. + * @param message The location of the message to encrypt. + */ + virtual void Encrypt(std::span mac, std::span message) = 0; +}; + + +/** + * Callback interface for requests for passwords in the context of network authentication. + */ +class NetworkAuthenticationPasswordRequest { +public: + virtual ~NetworkAuthenticationPasswordRequest() {} + + /** + * Reply to the request with the given password. + */ + virtual void Reply(const std::string &password) = 0; +}; + +/** + * Callback interface for client implementations to provide the handling of the password requests. + */ +class NetworkAuthenticationPasswordRequestHandler : public NetworkAuthenticationPasswordRequest { +protected: + friend class X25519PAKEClientHandler; + + std::string password; ///< The entered password. +public: + + virtual void Reply(const std::string &password) override; + + /** + * Callback to trigger sending the response for the password request. + */ + virtual void SendResponse() = 0; + + /** + * Callback to trigger asking the user for the password. + * @param request The request to the user, to which it can reply with the password. + */ + virtual void AskUserForPassword(std::shared_ptr request) = 0; +}; + + +/** + * Callback interface for server implementations to provide the current password. + */ +class NetworkAuthenticationPasswordProvider { +public: + virtual ~NetworkAuthenticationPasswordProvider() {} + + /** + * Callback to return the password where to validate against. + * @return \c std::string_view of the current password; an empty view means no password check will be performed. + */ + virtual std::string_view GetPassword() const = 0; +}; + +/** + * Default implementation of the password provider. + */ +class NetworkAuthenticationDefaultPasswordProvider : public NetworkAuthenticationPasswordProvider { +private: + const std::string *password; ///< The password to check against. +public: + /** + * Create the provider with the pointer to the password that is to be used. A pointer, so this can handle + * situations where the password gets changed over time. + * @param password The reference to the configured password. + */ + NetworkAuthenticationDefaultPasswordProvider(const std::string &password) : password(&password) {} + + std::string_view GetPassword() const override { return *this->password; }; +}; + +/** + * Callback interface for server implementations to provide the authorized key validation. + */ +class NetworkAuthenticationAuthorizedKeyHandler { +public: + virtual ~NetworkAuthenticationAuthorizedKeyHandler() {} + + /** + * Check whether the key handler can be used, i.e. whether there are authorized keys to check against. + * @return \c true when it can be used, otherwise \c false. + */ + virtual bool CanBeUsed() const = 0; + + /** + * Check whether the given public key of the peer is allowed in. + * @param peer_public_key The public key of the peer to check against. + * @return \c true when the key is allowed, otherwise \c false. + */ + virtual bool IsAllowed(std::string_view peer_public_key) const = 0; +}; + +/** + * Default implementation for the authorized key handler. + */ +class NetworkAuthenticationDefaultAuthorizedKeyHandler : public NetworkAuthenticationAuthorizedKeyHandler { +private: + const NetworkAuthorizedKeys *authorized_keys; ///< The authorized keys to check against. +public: + /** + * Create the handler that uses the given authorized keys to check against. + * @param authorized_keys The reference to the authorized keys to check against. + */ + NetworkAuthenticationDefaultAuthorizedKeyHandler(const NetworkAuthorizedKeys &authorized_keys) : authorized_keys(&authorized_keys) {} + + bool CanBeUsed() const override { return !this->authorized_keys->empty(); } + bool IsAllowed(std::string_view peer_public_key) const override { return authorized_keys->Contains(peer_public_key); } +}; + + +/** The authentication method that can be used. */ +enum NetworkAuthenticationMethod : uint8_t { + NETWORK_AUTH_METHOD_X25519_KEY_EXCHANGE_ONLY, ///< No actual authentication is taking place, just perform a x25519 key exchange. + NETWORK_AUTH_METHOD_X25519_PAKE, ///< Authentication using x25519 password-authenticated key agreement. + NETWORK_AUTH_METHOD_X25519_AUTHORIZED_KEY, ///< Authentication using x22519 key exchange and authorized keys. + NETWORK_AUTH_METHOD_END, ///< Must ALWAYS be on the end of this list!! (period) +}; + +/** The mask of authentication methods that can be used. */ +using NetworkAuthenticationMethodMask = uint16_t; + +/** + * Base class for cryptographic authentication handlers. + */ +class NetworkAuthenticationHandler { +public: + virtual ~NetworkAuthenticationHandler() {} + + /** + * Get the name of the handler for debug messages. + * @return The name of the handler. + */ + virtual std::string_view GetName() const = 0; + + /** + * Get the method this handler is providing functionality for. + * @return The \c NetworkAuthenticationMethod. + */ + virtual NetworkAuthenticationMethod GetAuthenticationMethod() const = 0; + + /** + * Create a \a NetworkEncryptionHandler to encrypt or decrypt messages from the client to the server. + * @return The handler for the client to server encryption. + */ + virtual std::unique_ptr CreateClientToServerEncryptionHandler() const = 0; + + /** + * Create a \a NetworkEncryptionHandler to encrypt or decrypt messages from the server to the client. + * @return The handler for the server to client encryption. + */ + virtual std::unique_ptr CreateServerToClientEncryptionHandler() const = 0; +}; + +/** + * Base class for client side cryptographic authentication handlers. + */ +class NetworkAuthenticationClientHandler : public NetworkAuthenticationHandler { +public: + /** The processing result of receiving a request. */ + enum RequestResult { + AWAIT_USER_INPUT, ///< We have requested some user input, but must wait on that. + READY_FOR_RESPONSE, ///< We do not have to wait for user input, and can immediately respond to the server. + INVALID, ///< We have received an invalid request. + }; + + /** + * Read a request from the server. + * @param p The packet to read the request from. + * @return True when valid, otherwise false. + */ + virtual RequestResult ReceiveRequest(struct Packet &p) = 0; + + /** + * Create the response to send to the server. + * @param p The packet to write the response from. + * @return True when a valid packet was made, otherwise false. + */ + virtual bool SendResponse(struct Packet &p) = 0; + + /** + * Read the request to enable encryption from the server. + * @param p The request from the server. + */ + virtual bool ReceiveEnableEncryption(struct Packet &p) = 0; + + static void EnsureValidSecretKeyAndUpdatePublicKey(std::string &secret_key, std::string &public_key); + static std::unique_ptr Create(std::shared_ptr password_handler, std::string &secret_key, std::string &public_key); +}; + +/** + * Base class for server side cryptographic authentication handlers. + */ +class NetworkAuthenticationServerHandler : public NetworkAuthenticationHandler { +public: + /** The processing result of receiving a response. */ + enum ResponseResult { + AUTHENTICATED, ///< The client was authenticated successfully. + NOT_AUTHENTICATED, ///< All authentications for this handler have been exhausted. + RETRY_NEXT_METHOD, ///< The client failed to authenticate, but there is another method to try. + }; + + /** + * Create the request to send to the client. + * @param p The packet to write the request to. + */ + virtual void SendRequest(struct Packet &p) = 0; + + /** + * Read the response from the client. + * @param p The packet to read the response from. + * @return The \c ResponseResult describing the result. + */ + virtual ResponseResult ReceiveResponse(struct Packet &p) = 0; + + /** + * Create the request to enable encryption to the client. + * @param p The packet to write the enable encryption request to. + */ + virtual void SendEnableEncryption(struct Packet &p) = 0; + + /** + * Checks whether this handler can be used with the current configuration. + * For example when there is no password, the handler cannot be used. + * @return True when this handler can be used. + */ + virtual bool CanBeUsed() const = 0; + + /** + * Get the public key the peer provided during the authentication. + * @return The hexadecimal string representation of the peer's public key. + */ + virtual std::string GetPeerPublicKey() const = 0; + + static std::unique_ptr Create(const NetworkAuthenticationPasswordProvider *password_provider, const NetworkAuthenticationAuthorizedKeyHandler *authorized_key_handler, NetworkAuthenticationMethodMask client_supported_method_mask = ~static_cast(0)); +}; + +#endif /* NETWORK_CRYPTO_H */ diff --git a/src/network/network_crypto_internal.h b/src/network/network_crypto_internal.h new file mode 100644 index 0000000000..e2b11997c6 --- /dev/null +++ b/src/network/network_crypto_internal.h @@ -0,0 +1,353 @@ +/* + * This file is part of OpenTTD. + * OpenTTD 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, version 2. + * OpenTTD 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 OpenTTD. If not, see . + */ + +/** @file network_crypto_internal.h Internal bits to the crypto of the network handling. */ + +#ifndef NETWORK_CRYPTO_INTERNAL_H +#define NETWORK_CRYPTO_INTERNAL_H + +#include "network_crypto.h" + +/** The number of bytes the public and secret keys are in X25519. */ +constexpr size_t X25519_KEY_SIZE = 32; +/** The number of bytes the nonces are in X25519. */ +constexpr size_t X25519_NONCE_SIZE = 24; +/** The number of bytes the message authentication codes are in X25519. */ +constexpr size_t X25519_MAC_SIZE = 16; +/** The number of bytes the (random) payload of the authentication message has. */ +constexpr size_t X25519_KEY_EXCHANGE_MESSAGE_SIZE = 8; + +/** Container for a X25519 key that is automatically crypto-wiped when destructed. */ +struct X25519Key : std::array { + ~X25519Key(); +}; + +/** Container for a X25519 public key. */ +struct X25519PublicKey : X25519Key { +}; + +/** Container for a X25519 secret key. */ +struct X25519SecretKey : X25519Key { + static X25519SecretKey CreateRandom(); + X25519PublicKey CreatePublicKey() const; +}; + +/** Container for a X25519 nonce that is automatically crypto-wiped when destructed. */ +struct X25519Nonce : std::array { + static X25519Nonce CreateRandom(); + ~X25519Nonce(); +}; + +/** Container for a X25519 message authentication code. */ +using X25519Mac = std::array; + +/** Container for a X25519 key exchange message. */ +using X25519KeyExchangeMessage = std::array; + +/** The side of the key exchange. */ +enum class X25519KeyExchangeSide { + CLIENT, ///< We are the client. + SERVER, ///< We are the server. +}; + +/** + * Container for the keys that derived from the X25519 key exchange mechanism. This mechanism derives + * a key to encrypt both the client-to-server and a key to encrypt server-to-client communication. + */ +class X25519DerivedKeys { +private: + /** Single contiguous buffer to store the derived keys in, as they are generated as a single hash. */ + std::array keys; +public: + ~X25519DerivedKeys(); + std::span ClientToServer() const; + std::span ServerToClient() const; + bool Exchange(const X25519PublicKey &peer_public_key, X25519KeyExchangeSide side, + const X25519SecretKey &our_secret_key, const X25519PublicKey &our_public_key, std::string_view extra_payload); +}; + +/** + * Base for handlers using a X25519 key exchange to perform authentication. + * + * In general this works as follows: + * 1) the client and server have or generate a secret and public X25519 key. + * 2) the X25519 key exchange is performed at both the client and server, with their own secret key and their peer's public key. + * 3) a pair of derived keys is created by BLAKE2b-hashing the following into 64 bytes, in this particular order: + * - the shared secret from the key exchange; + * - the public key of the server; + * - the public key of the client; + * - optional extra payload, e.g. a password in the case of PAKE. + * The first of the pair of derived keys is usually used to encrypt client-to-server communication, and the second of the pair + * is usually used to encrypt server-to-client communication. + * 4) a XChaCha20-Poly1305 (authenticated) encryption is performed using: + * - the first of the pair of derived keys as encryption key; + * - a 24 byte nonce; + * - the public key of the client as additional authenticated data. + * - a 8 byte random number as content/message. + * + * The server initiates the request by sending its public key and a 24 byte nonce that is randomly generated. Normally the side + * that sends the encrypted data sends the nonce in their packet, which would be the client on our case. However, there are + * many implementations of clients due to the admin-protocol where this is used, and we cannot guarantee that they generate a + * good enough nonce. As such the server sends one instead. The server will create a new set of keys for each session. + * + * The client receives the request, performs the key exchange, generates the derived keys and then encrypts the message. This + * message must contain some content, so it has to be filled with 8 random bytes. Once the message has been encrypted, the + * client sends their public key, the encrypted message and the message authentication code (MAC) to the server in a response. + * + * The server receives the response, performs the key exchange, generates the derived keys, decrypts the message and validates the + * message authentication code, and finally the message. It is up to the sub class to perform the final authentication checks. + */ +class X25519AuthenticationHandler { +private: + X25519SecretKey our_secret_key; ///< The secret key used by us. + X25519PublicKey our_public_key; ///< The public key used by us. + X25519Nonce key_exchange_nonce; ///< The nonce to prevent replay attacks of the key exchange. + X25519DerivedKeys derived_keys; ///< Keys derived from the authentication process. + X25519PublicKey peer_public_key; ///< The public key used by our peer. + + X25519Nonce encryption_nonce; ///< The nonce to prevent replay attacks the encrypted connection. + +protected: + X25519AuthenticationHandler(const X25519SecretKey &secret_key); + + void SendRequest(struct Packet &p); + bool ReceiveRequest(struct Packet &p); + bool SendResponse(struct Packet &p, std::string_view derived_key_extra_payload); + NetworkAuthenticationServerHandler::ResponseResult ReceiveResponse(struct Packet &p, std::string_view derived_key_extra_payload); + + std::string GetPeerPublicKey() const; + + void SendEnableEncryption(struct Packet &p) const; + bool ReceiveEnableEncryption(struct Packet &p); + std::unique_ptr CreateClientToServerEncryptionHandler() const; + std::unique_ptr CreateServerToClientEncryptionHandler() const; +}; + +/** + * Client side handler for using X25519 without actual authentication. + * + * This follows the method described in \c X25519AuthenticationHandler, without an extra payload. + */ +class X25519KeyExchangeOnlyClientHandler : protected X25519AuthenticationHandler, public NetworkAuthenticationClientHandler { +public: + /** + * Create the handler that that one does the key exchange. + * @param secret_key The secret key to initialize this handler with. + */ + X25519KeyExchangeOnlyClientHandler(const X25519SecretKey &secret_key) : X25519AuthenticationHandler(secret_key) {} + + virtual RequestResult ReceiveRequest(struct Packet &p) override { return this->X25519AuthenticationHandler::ReceiveRequest(p) ? READY_FOR_RESPONSE : INVALID; } + virtual bool SendResponse(struct Packet &p) override { return this->X25519AuthenticationHandler::SendResponse(p, {}); } + + virtual std::string_view GetName() const override { return "X25519-KeyExchangeOnly-client"; } + virtual NetworkAuthenticationMethod GetAuthenticationMethod() const override { return NETWORK_AUTH_METHOD_X25519_KEY_EXCHANGE_ONLY; } + + virtual bool ReceiveEnableEncryption(struct Packet &p) override { return this->X25519AuthenticationHandler::ReceiveEnableEncryption(p); } + virtual std::unique_ptr CreateClientToServerEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateClientToServerEncryptionHandler(); } + virtual std::unique_ptr CreateServerToClientEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateServerToClientEncryptionHandler(); } +}; + +/** + * Server side handler for using X25519 without actual authentication. + * + * This follows the method described in \c X25519AuthenticationHandler, without an extra payload. + */ +class X25519KeyExchangeOnlyServerHandler : protected X25519AuthenticationHandler, public NetworkAuthenticationServerHandler { +public: + /** + * Create the handler that that one does the key exchange. + * @param secret_key The secret key to initialize this handler with. + */ + X25519KeyExchangeOnlyServerHandler(const X25519SecretKey &secret_key) : X25519AuthenticationHandler(secret_key) {} + + virtual void SendRequest(struct Packet &p) override { this->X25519AuthenticationHandler::SendRequest(p); } + virtual ResponseResult ReceiveResponse(struct Packet &p) override { return this->X25519AuthenticationHandler::ReceiveResponse(p, {}); } + + virtual std::string_view GetName() const override { return "X25519-KeyExchangeOnly-server"; } + virtual NetworkAuthenticationMethod GetAuthenticationMethod() const override { return NETWORK_AUTH_METHOD_X25519_KEY_EXCHANGE_ONLY; } + virtual bool CanBeUsed() const override { return true; } + + virtual std::string GetPeerPublicKey() const override { return this->X25519AuthenticationHandler::GetPeerPublicKey(); } + virtual void SendEnableEncryption(struct Packet &p) override { this->X25519AuthenticationHandler::SendEnableEncryption(p); } + virtual std::unique_ptr CreateClientToServerEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateClientToServerEncryptionHandler(); } + virtual std::unique_ptr CreateServerToClientEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateServerToClientEncryptionHandler(); } +}; + +/** + * Client side handler for using X25519 with a password-authenticated key exchange. + * + * This follows the method described in \c X25519AuthenticationHandler, were the password is the extra payload. + */ +class X25519PAKEClientHandler : protected X25519AuthenticationHandler, public NetworkAuthenticationClientHandler { +private: + std::shared_ptr handler; + +public: + /** + * Create the handler with the given password handler. + * @param secret_key The secret key to initialize this handler with. + * @param handler The handler requesting the password from the user, if required. + */ + X25519PAKEClientHandler(const X25519SecretKey &secret_key, std::shared_ptr handler) : X25519AuthenticationHandler(secret_key), handler(handler) {} + + virtual RequestResult ReceiveRequest(struct Packet &p) override; + virtual bool SendResponse(struct Packet &p) override { return this->X25519AuthenticationHandler::SendResponse(p, this->handler->password); } + + virtual std::string_view GetName() const override { return "X25519-PAKE-client"; } + virtual NetworkAuthenticationMethod GetAuthenticationMethod() const override { return NETWORK_AUTH_METHOD_X25519_PAKE; } + + virtual bool ReceiveEnableEncryption(struct Packet &p) override { return this->X25519AuthenticationHandler::ReceiveEnableEncryption(p); } + virtual std::unique_ptr CreateClientToServerEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateClientToServerEncryptionHandler(); } + virtual std::unique_ptr CreateServerToClientEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateServerToClientEncryptionHandler(); } +}; + +/** + * Server side handler for using X25519 with a password-authenticated key exchange. + * + * This follows the method described in \c X25519AuthenticationHandler, were the password is the extra payload. + */ +class X25519PAKEServerHandler : protected X25519AuthenticationHandler, public NetworkAuthenticationServerHandler { +private: + const NetworkAuthenticationPasswordProvider *password_provider; ///< The password to check against. +public: + /** + * Create the handler with the given password provider. + * @param secret_key The secret key to initialize this handler with. + * @param password_provider The provider for the passwords. + */ + X25519PAKEServerHandler(const X25519SecretKey &secret_key, const NetworkAuthenticationPasswordProvider *password_provider) : X25519AuthenticationHandler(secret_key), password_provider(password_provider) {} + + virtual void SendRequest(struct Packet &p) override { this->X25519AuthenticationHandler::SendRequest(p); } + virtual ResponseResult ReceiveResponse(struct Packet &p) override { return this->X25519AuthenticationHandler::ReceiveResponse(p, this->password_provider->GetPassword()); } + + virtual std::string_view GetName() const override { return "X25519-PAKE-server"; } + virtual NetworkAuthenticationMethod GetAuthenticationMethod() const override { return NETWORK_AUTH_METHOD_X25519_PAKE; } + virtual bool CanBeUsed() const override { return !this->password_provider->GetPassword().empty(); } + + virtual std::string GetPeerPublicKey() const override { return this->X25519AuthenticationHandler::GetPeerPublicKey(); } + virtual void SendEnableEncryption(struct Packet &p) override { this->X25519AuthenticationHandler::SendEnableEncryption(p); } + virtual std::unique_ptr CreateClientToServerEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateClientToServerEncryptionHandler(); } + virtual std::unique_ptr CreateServerToClientEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateServerToClientEncryptionHandler(); } +}; + + +/** + * Handler for clients using a X25519 key exchange to perform authentication via a set of authorized (public) keys of clients. + * + * This follows the method described in \c X25519AuthenticationHandler. Once all these checks have succeeded, it will + * check whether the public key of the client is in the list of authorized keys to login. + */ +class X25519AuthorizedKeyClientHandler : protected X25519AuthenticationHandler, public NetworkAuthenticationClientHandler { +public: + /** + * Create the handler that uses the given password to check against. + * @param secret_key The secret key to initialize this handler with. + */ + X25519AuthorizedKeyClientHandler(const X25519SecretKey &secret_key) : X25519AuthenticationHandler(secret_key) {} + + virtual RequestResult ReceiveRequest(struct Packet &p) override { return this->X25519AuthenticationHandler::ReceiveRequest(p) ? READY_FOR_RESPONSE : INVALID; } + virtual bool SendResponse(struct Packet &p) override { return this->X25519AuthenticationHandler::SendResponse(p, {}); } + + virtual std::string_view GetName() const override { return "X25519-AuthorizedKey-client"; } + virtual NetworkAuthenticationMethod GetAuthenticationMethod() const override { return NETWORK_AUTH_METHOD_X25519_AUTHORIZED_KEY; } + + virtual bool ReceiveEnableEncryption(struct Packet &p) override { return this->X25519AuthenticationHandler::ReceiveEnableEncryption(p); } + virtual std::unique_ptr CreateClientToServerEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateClientToServerEncryptionHandler(); } + virtual std::unique_ptr CreateServerToClientEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateServerToClientEncryptionHandler(); } + + static X25519SecretKey GetValidSecretKeyAndUpdatePublicKey(std::string &secret_key, std::string &public_key); +}; + +/** + * Handler for servers using a X25519 key exchange to perform authentication via a set of authorized (public) keys of clients. + * + * This follows the method described in \c X25519AuthenticationHandler. Once all these checks have succeeded, it will + * check whether the public key of the client is in the list of authorized keys to login. + */ +class X25519AuthorizedKeyServerHandler : protected X25519AuthenticationHandler, public NetworkAuthenticationServerHandler { +private: + const NetworkAuthenticationAuthorizedKeyHandler *authorized_key_handler; ///< The handler of the authorized keys. +public: + /** + * Create the handler that uses the given authorized keys to check against. + * @param secret_key The secret key to initialize this handler with. + * @param authorized_key_handler The handler of the authorized keys. + */ + X25519AuthorizedKeyServerHandler(const X25519SecretKey &secret_key, const NetworkAuthenticationAuthorizedKeyHandler *authorized_key_handler) : X25519AuthenticationHandler(secret_key), authorized_key_handler(authorized_key_handler) {} + + virtual void SendRequest(struct Packet &p) override { this->X25519AuthenticationHandler::SendRequest(p); } + virtual ResponseResult ReceiveResponse(struct Packet &p) override; + + virtual std::string_view GetName() const override { return "X25519-AuthorizedKey-server"; } + virtual NetworkAuthenticationMethod GetAuthenticationMethod() const override { return NETWORK_AUTH_METHOD_X25519_AUTHORIZED_KEY; } + virtual bool CanBeUsed() const override { return this->authorized_key_handler->CanBeUsed(); } + + virtual std::string GetPeerPublicKey() const override { return this->X25519AuthenticationHandler::GetPeerPublicKey(); } + virtual void SendEnableEncryption(struct Packet &p) override { this->X25519AuthenticationHandler::SendEnableEncryption(p); } + virtual std::unique_ptr CreateClientToServerEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateClientToServerEncryptionHandler(); } + virtual std::unique_ptr CreateServerToClientEncryptionHandler() const override { return this->X25519AuthenticationHandler::CreateServerToClientEncryptionHandler(); } +}; + + +/** + * Handler for combining a number of authentication handlers, where the failure of one of the handlers will retry with + * another handler. For example when authorized keys fail, it can still fall back to a password. + */ +class CombinedAuthenticationClientHandler : public NetworkAuthenticationClientHandler { +public: + using Handler = std::unique_ptr; ///< The type of the inner handlers. + +private: + std::vector handlers; ///< The handlers that we can authenticate with. + NetworkAuthenticationClientHandler *current_handler = nullptr; ///< The currently active handler. + +public: + /** + * Add the given sub-handler to this handler. + * @param handler The handler to add. + */ + void Add(Handler &&handler) { this->handlers.push_back(std::move(handler)); } + + virtual RequestResult ReceiveRequest(struct Packet &p) override; + virtual bool SendResponse(struct Packet &p) override; + + virtual std::string_view GetName() const override; + virtual NetworkAuthenticationMethod GetAuthenticationMethod() const override; + + virtual bool ReceiveEnableEncryption(struct Packet &p) override { return this->current_handler->ReceiveEnableEncryption(p); } + virtual std::unique_ptr CreateClientToServerEncryptionHandler() const override { return this->current_handler->CreateClientToServerEncryptionHandler(); } + virtual std::unique_ptr CreateServerToClientEncryptionHandler() const override { return this->current_handler->CreateServerToClientEncryptionHandler(); } +}; + +/** + * Handler for combining a number of authentication handlers, where the failure of one of the handlers will retry with + * another handler. For example when authorized keys fail, it can still fall back to a password. + */ +class CombinedAuthenticationServerHandler : public NetworkAuthenticationServerHandler { +public: + using Handler = std::unique_ptr; ///< The type of the inner handlers. + +private: + std::vector handlers; ///< The handlers that we can (still) authenticate with. + +public: + void Add(Handler &&handler); + + virtual void SendRequest(struct Packet &p) override; + virtual ResponseResult ReceiveResponse(struct Packet &p) override; + + virtual std::string_view GetName() const override; + virtual NetworkAuthenticationMethod GetAuthenticationMethod() const override; + virtual bool CanBeUsed() const override; + + virtual std::string GetPeerPublicKey() const override { return this->handlers.back()->GetPeerPublicKey(); } + virtual void SendEnableEncryption(struct Packet &p) override { this->handlers.back()->SendEnableEncryption(p); } + virtual std::unique_ptr CreateClientToServerEncryptionHandler() const override { return this->handlers.back()->CreateClientToServerEncryptionHandler(); } + virtual std::unique_ptr CreateServerToClientEncryptionHandler() const override { return this->handlers.back()->CreateServerToClientEncryptionHandler(); } +}; + +#endif /* NETWORK_CRYPTO_INTERNAL_H */ diff --git a/src/network/network_func.h b/src/network/network_func.h index 369eb0fc30..d1dcd05d6c 100644 --- a/src/network/network_func.h +++ b/src/network/network_func.h @@ -12,7 +12,7 @@ /** * Uncomment the following define to enable command replaying. - * See docs/desync.txt for details. + * See docs/desync.md for details. */ // #define DEBUG_DUMP_COMMANDS // #define DEBUG_FAILED_DUMP_COMMANDS @@ -24,8 +24,6 @@ #include "../company_type.h" #include "../string_type.h" -extern NetworkCompanyState *_network_company_states; - extern ClientID _network_own_client_id; extern ClientID _redirect_console_to_client; extern uint8_t _network_reconnect; @@ -33,7 +31,7 @@ extern StringList _network_bind_list; extern StringList _network_host_list; extern StringList _network_ban_list; -byte NetworkSpectatorCount(); +uint8_t NetworkSpectatorCount(); bool NetworkIsValidClientName(const std::string_view client_name); bool NetworkValidateOurClientName(); bool NetworkValidateClientName(std::string &client_name); @@ -41,7 +39,6 @@ bool NetworkValidateServerName(std::string &server_name); void NetworkUpdateClientName(const std::string &client_name); void NetworkUpdateServerGameType(); bool NetworkCompanyHasClients(CompanyID company); -std::string NetworkChangeCompanyPassword(CompanyID company_id, std::string password); void NetworkReboot(); void NetworkDisconnect(bool close_admins = true); void NetworkGameLoop(); @@ -51,18 +48,20 @@ void NetworkPopulateCompanyStats(NetworkCompanyStats *stats); void NetworkUpdateClientInfo(ClientID client_id); void NetworkClientsToSpectators(CompanyID cid); -bool NetworkClientConnectGame(const std::string &connection_string, CompanyID default_company, const std::string &join_server_password = "", const std::string &join_company_password = ""); +bool NetworkClientConnectGame(const std::string &connection_string, CompanyID default_company, const std::string &join_server_password = ""); void NetworkClientJoinGame(); -void NetworkClientRequestMove(CompanyID company, const std::string &pass = ""); +void NetworkClientRequestMove(CompanyID company); void NetworkClientSendRcon(const std::string &password, const std::string &command); void NetworkClientSendChat(NetworkAction action, DestType type, int dest, const std::string &msg, int64_t data = 0); bool NetworkClientPreferTeamChat(const NetworkClientInfo *cio); -bool NetworkCompanyIsPassworded(CompanyID company_id); uint NetworkMaxCompaniesAllowed(); bool NetworkMaxCompaniesReached(); void NetworkPrintClients(); +std::string_view NetworkGetPublicKeyOfClient(ClientID client_id); void NetworkHandlePauseChange(PauseMode prev_mode, PauseMode changed_mode); +void NetworkOnGameStart(); + /*** Commands ran by the server ***/ void NetworkServerSendConfigUpdate(); void NetworkServerUpdateGameInfo(); @@ -72,6 +71,7 @@ void NetworkServerNewCompany(const Company *company, NetworkClientInfo *ci); bool NetworkServerChangeClientName(ClientID client_id, const std::string &new_name); +bool NetworkCanJoinCompany(CompanyID company_id); void NetworkServerDoMove(ClientID client_id, CompanyID company_id); void NetworkServerSendRcon(ClientID client_id, TextColour colour_code, const std::string &string); void NetworkServerSendChat(NetworkAction action, DestType type, int dest, const std::string &msg, ClientID from_id, int64_t data = 0, bool from_admin = false); diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 2590475ca7..9525ececba 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -23,8 +23,8 @@ #include "network_udp.h" #include "../window_func.h" #include "../gfx_func.h" -#include "../widgets/dropdown_type.h" -#include "../widgets/dropdown_func.h" +#include "../dropdown_type.h" +#include "../dropdown_func.h" #include "../querystring_gui.h" #include "../sortlist_type.h" #include "../company_func.h" @@ -72,9 +72,9 @@ static DropDownList BuildVisibilityDropDownList() { DropDownList list; - list.push_back(std::make_unique(STR_NETWORK_SERVER_VISIBILITY_LOCAL, SERVER_GAME_TYPE_LOCAL, false)); - list.push_back(std::make_unique(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY, SERVER_GAME_TYPE_INVITE_ONLY, false)); - list.push_back(std::make_unique(STR_NETWORK_SERVER_VISIBILITY_PUBLIC, SERVER_GAME_TYPE_PUBLIC, false)); + list.push_back(MakeDropDownListStringItem(STR_NETWORK_SERVER_VISIBILITY_LOCAL, SERVER_GAME_TYPE_LOCAL)); + list.push_back(MakeDropDownListStringItem(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY, SERVER_GAME_TYPE_INVITE_ONLY)); + list.push_back(MakeDropDownListStringItem(STR_NETWORK_SERVER_VISIBILITY_PUBLIC, SERVER_GAME_TYPE_PUBLIC)); return list; } @@ -100,8 +100,8 @@ public: this->Add(std::make_unique(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NG_YEARS, STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION, STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP)); leaf = std::make_unique(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NG_INFO, STR_EMPTY, STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP); - leaf->SetMinimalSize(14 + GetSpriteSize(SPR_LOCK, nullptr, ZOOM_LVL_OUT_4X).width - + GetSpriteSize(SPR_BLOT, nullptr, ZOOM_LVL_OUT_4X).width, 12); + leaf->SetMinimalSize(14 + GetSpriteSize(SPR_LOCK, nullptr, ZOOM_LVL_NORMAL).width + + GetSpriteSize(SPR_BLOT, nullptr, ZOOM_LVL_NORMAL).width, 12); leaf->SetFill(0, 1); this->Add(std::move(leaf)); } @@ -127,6 +127,7 @@ public: } this->smallest_x = this->children.front()->smallest_x + this->children.back()->smallest_x; // First and last are always shown, rest not + this->ApplyAspectRatio(); } void AssignSizePosition(SizingType sizing, int x, int y, uint given_width, uint given_height, bool rtl) override @@ -180,8 +181,8 @@ protected: static Listing last_sorting; /* Constants for sorting servers */ - static GUIGameServerList::SortFunction * const sorter_funcs[]; - static GUIGameServerList::FilterFunction * const filter_funcs[]; + static const std::initializer_list sorter_funcs; + static const std::initializer_list filter_funcs; NetworkGameList *server; ///< Selected server. NetworkGameList *last_joined; ///< The last joined server. @@ -239,7 +240,6 @@ protected: this->servers.SetFilterState(false); } - this->servers.shrink_to_fit(); this->servers.RebuildDone(); this->vscroll->SetCount(this->servers.size()); @@ -337,7 +337,7 @@ protected: } } - static bool CDECL NGameSearchFilter(NetworkGameList * const *item, StringFilter &sf) + static bool NGameSearchFilter(NetworkGameList * const *item, StringFilter &sf) { assert(item != nullptr); assert((*item) != nullptr); @@ -430,7 +430,7 @@ protected: } public: - NetworkGameWindow(WindowDesc *desc) : Window(desc), name_editbox(NETWORK_CLIENT_NAME_LENGTH), filter_editbox(120) + NetworkGameWindow(WindowDesc &desc) : Window(desc), name_editbox(NETWORK_CLIENT_NAME_LENGTH), filter_editbox(120) { this->list_pos = SLP_INVALID; this->server = nullptr; @@ -458,8 +458,8 @@ public: this->server = this->last_joined; this->servers.SetListing(this->last_sorting); - this->servers.SetSortFuncs(this->sorter_funcs); - this->servers.SetFilterFuncs(this->filter_funcs); + this->servers.SetSortFuncs(NetworkGameWindow::sorter_funcs); + this->servers.SetFilterFuncs(NetworkGameWindow::filter_funcs); this->servers.ForceRebuild(); } @@ -475,48 +475,48 @@ public: this->flag_offset = this->blot_offset + ScaleGUITrad(2) + GetSpriteSize(SPR_BLOT).width; } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_NG_MATRIX: - resize->height = std::max(GetSpriteSize(SPR_BLOT).height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height; - fill->height = resize->height; - size->height = 12 * resize->height; + resize.height = std::max(GetSpriteSize(SPR_BLOT).height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height; + fill.height = resize.height; + size.height = 12 * resize.height; break; case WID_NG_LASTJOINED: - size->height = std::max(GetSpriteSize(SPR_BLOT).height, (uint)GetCharacterHeight(FS_NORMAL)) + WidgetDimensions::scaled.matrix.Vertical(); + size.height = std::max(GetSpriteSize(SPR_BLOT).height, (uint)GetCharacterHeight(FS_NORMAL)) + WidgetDimensions::scaled.matrix.Vertical(); break; case WID_NG_LASTJOINED_SPACER: - size->width = NWidgetScrollbar::GetVerticalDimension().width; + size.width = NWidgetScrollbar::GetVerticalDimension().width; break; case WID_NG_NAME: - size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow + size.width += 2 * Window::SortButtonWidth(); // Make space for the arrow break; case WID_NG_CLIENTS: - size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow + size.width += 2 * Window::SortButtonWidth(); // Make space for the arrow SetDParamMaxValue(0, MAX_CLIENTS); SetDParamMaxValue(1, MAX_CLIENTS); SetDParamMaxValue(2, MAX_COMPANIES); SetDParamMaxValue(3, MAX_COMPANIES); - *size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_SERVER_LIST_GENERAL_ONLINE)); + size = maxdim(size, GetStringBoundingBox(STR_NETWORK_SERVER_LIST_GENERAL_ONLINE)); break; case WID_NG_MAPSIZE: - size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow + size.width += 2 * Window::SortButtonWidth(); // Make space for the arrow SetDParamMaxValue(0, MAX_MAP_SIZE); SetDParamMaxValue(1, MAX_MAP_SIZE); - *size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT)); + size = maxdim(size, GetStringBoundingBox(STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT)); break; case WID_NG_DATE: case WID_NG_YEARS: - size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow + size.width += 2 * Window::SortButtonWidth(); // Make space for the arrow SetDParamMaxValue(0, 5); - *size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT)); + size = maxdim(size, GetStringBoundingBox(STR_JUST_INT)); break; } } @@ -527,10 +527,9 @@ public: case WID_NG_MATRIX: { uint16_t y = r.top; - const int max = std::min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), (int)this->servers.size()); - - for (int i = this->vscroll->GetPosition(); i < max; ++i) { - const NetworkGameList *ngl = this->servers[i]; + auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->servers); + for (auto it = first; it != last; ++it) { + const NetworkGameList *ngl = *it; this->DrawServerLine(ngl, y, ngl == this->server); y += this->resize.step_height; } @@ -837,13 +836,13 @@ public: } } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (!StrEmpty(str)) { - _settings_client.network.connect_to_ip = str; - NetworkAddServer(str); - NetworkRebuildHostList(); - } + if (!str.has_value() || str->empty()) return; + + _settings_client.network.connect_to_ip = std::move(*str); + NetworkAddServer(_settings_client.network.connect_to_ip); + NetworkRebuildHostList(); } void OnResize() override @@ -860,7 +859,7 @@ public: }; Listing NetworkGameWindow::last_sorting = {false, 5}; -GUIGameServerList::SortFunction * const NetworkGameWindow::sorter_funcs[] = { +const std::initializer_list NetworkGameWindow::sorter_funcs = { &NGameNameSorter, &NGameClientSorter, &NGameMapSizeSorter, @@ -869,7 +868,7 @@ GUIGameServerList::SortFunction * const NetworkGameWindow::sorter_funcs[] = { &NGameAllowedSorter }; -GUIGameServerList::FilterFunction * const NetworkGameWindow::filter_funcs[] = { +const std::initializer_list NetworkGameWindow::filter_funcs = { &NGameSearchFilter }; @@ -892,7 +891,7 @@ static constexpr NWidgetPart _nested_network_game_widgets[] = { NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NG_FILTER_LABEL), SetDataTip(STR_LIST_FILTER_TITLE, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_LIGHT_BLUE, WID_NG_FILTER), SetMinimalSize(251, 12), SetFill(1, 0), SetResize(1, 0), + NWidget(WWT_EDITBOX, COLOUR_LIGHT_BLUE, WID_NG_FILTER), SetMinimalSize(251, 0), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -918,7 +917,7 @@ static constexpr NWidgetPart _nested_network_game_widgets[] = { NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NG_CLIENT_LABEL), SetDataTip(STR_NETWORK_SERVER_LIST_PLAYER_NAME, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_LIGHT_BLUE, WID_NG_CLIENT), SetMinimalSize(151, 12), SetFill(1, 0), SetResize(1, 0), + NWidget(WWT_EDITBOX, COLOUR_LIGHT_BLUE, WID_NG_CLIENT), SetMinimalSize(151, 0), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE, STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), @@ -956,11 +955,11 @@ static constexpr NWidgetPart _nested_network_game_widgets[] = { EndContainer(), }; -static WindowDesc _network_game_window_desc(__FILE__, __LINE__, +static WindowDesc _network_game_window_desc( WDP_CENTER, "list_servers", 1000, 730, WC_NETWORK_WINDOW, WC_NONE, 0, - std::begin(_nested_network_game_widgets), std::end(_nested_network_game_widgets) + _nested_network_game_widgets ); void ShowNetworkGameWindow() @@ -977,14 +976,14 @@ void ShowNetworkGameWindow() } } - new NetworkGameWindow(&_network_game_window_desc); + new NetworkGameWindow(_network_game_window_desc); } struct NetworkStartServerWindow : public Window { WidgetID widget_id; ///< The widget that has the pop-up input menu QueryString name_editbox; ///< Server name editbox. - NetworkStartServerWindow(WindowDesc *desc) : Window(desc), name_editbox(NETWORK_NAME_LENGTH) + NetworkStartServerWindow(WindowDesc &desc) : Window(desc), name_editbox(NETWORK_NAME_LENGTH) { this->InitNested(WN_NETWORK_WINDOW_START); @@ -1011,13 +1010,13 @@ struct NetworkStartServerWindow : public Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_NSS_CONNTYPE_BTN: - *size = maxdim(maxdim(GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_LOCAL), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_PUBLIC)), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY)); - size->width += padding.width; - size->height += padding.height; + size = maxdim(maxdim(GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_LOCAL), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_PUBLIC)), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY)); + size.width += padding.width; + size.height += padding.height; break; } } @@ -1136,14 +1135,14 @@ struct NetworkStartServerWindow : public Window { this->RaiseWidgetsWhenLowered(WID_NSS_CLIENTS_BTND, WID_NSS_CLIENTS_BTNU, WID_NSS_COMPANIES_BTND, WID_NSS_COMPANIES_BTNU); } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (str == nullptr) return; + if (!str.has_value()) return; if (this->widget_id == WID_NSS_SETPWD) { - _settings_client.network.server_password = str; + _settings_client.network.server_password = std::move(*str); } else { - int32_t value = atoi(str); + int32_t value = atoi(str->c_str()); this->SetWidgetDirty(this->widget_id); switch (this->widget_id) { default: NOT_REACHED(); @@ -1167,7 +1166,7 @@ static constexpr NWidgetPart _nested_network_start_server_window_widgets[] = { NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), /* Game name widgets */ NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NSS_GAMENAME_LABEL), SetFill(1, 0), SetDataTip(STR_NETWORK_START_SERVER_NEW_GAME_NAME, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_LIGHT_BLUE, WID_NSS_GAMENAME), SetMinimalSize(10, 12), SetFill(1, 0), SetDataTip(STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE, STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP), + NWidget(WWT_EDITBOX, COLOUR_LIGHT_BLUE, WID_NSS_GAMENAME), SetFill(1, 0), SetDataTip(STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE, STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), @@ -1185,18 +1184,18 @@ static constexpr NWidgetPart _nested_network_start_server_window_widgets[] = { NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NSS_CLIENTS_LABEL), SetFill(1, 0), SetDataTip(STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS, STR_NULL), NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_LIGHT_BLUE, WID_NSS_CLIENTS_BTND), SetMinimalSize(12, 12), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP), + NWidget(WWT_IMGBTN, COLOUR_LIGHT_BLUE, WID_NSS_CLIENTS_BTND), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_NSS_CLIENTS_TXT), SetFill(1, 0), SetDataTip(STR_NETWORK_START_SERVER_CLIENTS_SELECT, STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP), - NWidget(WWT_IMGBTN, COLOUR_LIGHT_BLUE, WID_NSS_CLIENTS_BTNU), SetMinimalSize(12, 12), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP), + NWidget(WWT_IMGBTN, COLOUR_LIGHT_BLUE, WID_NSS_CLIENTS_BTNU), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NSS_COMPANIES_LABEL), SetFill(1, 0), SetDataTip(STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES, STR_NULL), NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_LIGHT_BLUE, WID_NSS_COMPANIES_BTND), SetMinimalSize(12, 12), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP), + NWidget(WWT_IMGBTN, COLOUR_LIGHT_BLUE, WID_NSS_COMPANIES_BTND), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_NSS_COMPANIES_TXT), SetFill(1, 0), SetDataTip(STR_NETWORK_START_SERVER_COMPANIES_SELECT, STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP), - NWidget(WWT_IMGBTN, COLOUR_LIGHT_BLUE, WID_NSS_COMPANIES_BTNU), SetMinimalSize(12, 12), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP), + NWidget(WWT_IMGBTN, COLOUR_LIGHT_BLUE, WID_NSS_COMPANIES_BTNU), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP), EndContainer(), EndContainer(), EndContainer(), @@ -1223,11 +1222,11 @@ static constexpr NWidgetPart _nested_network_start_server_window_widgets[] = { EndContainer(), }; -static WindowDesc _network_start_server_window_desc(__FILE__, __LINE__, +static WindowDesc _network_start_server_window_desc( WDP_CENTER, nullptr, 0, 0, WC_NETWORK_WINDOW, WC_NONE, 0, - std::begin(_nested_network_start_server_window_widgets), std::end(_nested_network_start_server_window_widgets) + _nested_network_start_server_window_widgets ); static void ShowNetworkStartServerWindow() @@ -1236,7 +1235,7 @@ static void ShowNetworkStartServerWindow() CloseWindowById(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_GAME); - new NetworkStartServerWindow(&_network_start_server_window_desc); + new NetworkStartServerWindow(_network_start_server_window_desc); } /* The window below gives information about the connected clients @@ -1252,61 +1251,56 @@ static constexpr NWidgetPart _nested_client_list_widgets[] = { NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER, STR_NULL), SetPadding(4, 4, 0, 4), SetPIP(0, 2, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), - NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER_NAME, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(10, 0), - NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_SERVER_NAME), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_RAW_STRING, STR_NETWORK_CLIENT_LIST_SERVER_NAME_TOOLTIP), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_CL_SERVER_NAME_EDIT), SetMinimalSize(12, 14), SetDataTip(SPR_RENAME, STR_NETWORK_CLIENT_LIST_SERVER_NAME_EDIT_TOOLTIP), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_CL_SERVER_SELECTOR), - NWidget(NWID_VERTICAL), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), - NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(10, 0), SetFill(1, 0), SetResize(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_CL_SERVER_VISIBILITY), SetDataTip(STR_JUST_STRING, STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), - NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(10, 0), - NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_SERVER_INVITE_CODE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_RAW_STRING, STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE_TOOLTIP), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), - NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(10, 0), - NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_SERVER_CONNECTION_TYPE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_STRING, STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), SetPadding(4), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER_NAME, STR_NULL), + NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_SERVER_NAME), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_RAW_STRING, STR_NETWORK_CLIENT_LIST_SERVER_NAME_TOOLTIP), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_CL_SERVER_NAME_EDIT), SetAspect(WidgetDimensions::ASPECT_RENAME), SetDataTip(SPR_RENAME, STR_NETWORK_CLIENT_LIST_SERVER_NAME_EDIT_TOOLTIP), + EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_CL_SERVER_SELECTOR), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY, STR_NULL), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_CL_SERVER_VISIBILITY), SetDataTip(STR_JUST_STRING, STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY_TOOLTIP), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE, STR_NULL), + NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_SERVER_INVITE_CODE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_RAW_STRING, STR_NETWORK_CLIENT_LIST_SERVER_INVITE_CODE_TOOLTIP), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE, STR_NULL), + NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_SERVER_CONNECTION_TYPE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_STRING, STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + EndContainer(), EndContainer(), EndContainer(), EndContainer(), - EndContainer(), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_PLAYER, STR_NULL), SetPadding(4, 4, 4, 4), SetPIP(0, 2, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), - NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_PLAYER_NAME, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(10, 0), - NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_CLIENT_NAME), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_RAW_STRING, STR_NETWORK_CLIENT_LIST_PLAYER_NAME_TOOLTIP), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_CL_CLIENT_NAME_EDIT), SetMinimalSize(12, 14), SetDataTip(SPR_RENAME, STR_NETWORK_CLIENT_LIST_PLAYER_NAME_EDIT_TOOLTIP), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_PLAYER, STR_NULL), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_NETWORK_CLIENT_LIST_PLAYER_NAME, STR_NULL), + NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_CLIENT_NAME), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_RAW_STRING, STR_NETWORK_CLIENT_LIST_PLAYER_NAME_TOOLTIP), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_CL_CLIENT_NAME_EDIT), SetAspect(WidgetDimensions::ASPECT_RENAME), SetDataTip(SPR_RENAME, STR_NETWORK_CLIENT_LIST_PLAYER_NAME_EDIT_TOOLTIP), + EndContainer(), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(NWID_VERTICAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_CL_MATRIX), SetMinimalSize(180, 0), SetResize(1, 1), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_CL_SCROLLBAR), - NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_CLIENT_COMPANY_COUNT), SetFill(1, 0), SetResize(1, 0), SetPadding(2, 1, 2, 1), SetAlignment(SA_CENTER), SetDataTip(STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT, STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP), - EndContainer(), - EndContainer(), - NWidget(NWID_VERTICAL), - NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_CL_SCROLLBAR), - NWidget(WWT_RESIZEBOX, COLOUR_GREY), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_CL_MATRIX), SetMinimalSize(180, 0), SetResize(1, 1), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_CL_SCROLLBAR), + NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_CL_SCROLLBAR), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PANEL, COLOUR_GREY), + NWidget(WWT_TEXT, COLOUR_GREY, WID_CL_CLIENT_COMPANY_COUNT), SetFill(1, 0), SetResize(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetAlignment(SA_CENTER), SetDataTip(STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT, STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP), EndContainer(), + NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; -static WindowDesc _client_list_desc(__FILE__, __LINE__, +static WindowDesc _client_list_desc( WDP_AUTO, "list_clients", 220, 300, WC_CLIENT_LIST, WC_NONE, 0, - std::begin(_nested_client_list_widgets), std::end(_nested_client_list_widgets) + _nested_client_list_widgets ); /** @@ -1317,7 +1311,6 @@ enum DropDownAdmin { DD_CLIENT_ADMIN_KICK, DD_CLIENT_ADMIN_BAN, DD_COMPANY_ADMIN_RESET, - DD_COMPANY_ADMIN_UNLOCK, }; /** @@ -1350,15 +1343,6 @@ static void AdminCompanyResetCallback(Window *, bool confirmed) } } -/** - * Callback function for admin command to unlock company. - * @param confirmed Iff the user pressed Yes. - */ -static void AdminCompanyUnlockCallback(Window *, bool confirmed) -{ - if (confirmed) NetworkServerSetCompanyPassword(_admin_company_id, "", false); -} - /** * Button shown for either a company or client in the client-list. * @@ -1429,7 +1413,6 @@ using ClientButton = Button; struct NetworkClientListWindow : Window { private: ClientListWidgets query_widget; ///< During a query this tracks what widget caused the query. - CompanyID join_company; ///< During query for company password, this stores what company we wanted to join. ClientID dd_client_id; ///< During admin dropdown, track which client this was for. CompanyID dd_company_id; ///< During admin dropdown, track which company this was for. @@ -1465,10 +1448,6 @@ private: if (_network_server) { NetworkServerDoMove(CLIENT_ID_SERVER, company_id); MarkWholeScreenDirty(); - } else if (NetworkCompanyIsPassworded(company_id)) { - w->query_widget = WID_CL_COMPANY_JOIN; - w->join_company = company_id; - ShowQueryString(STR_EMPTY, STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION, NETWORK_PASSWORD_LENGTH, w, CS_ALPHANUMERAL, QSF_PASSWORD); } else { NetworkClientRequestMove(company_id); } @@ -1481,11 +1460,7 @@ private: */ static void OnClickCompanyNew([[maybe_unused]] NetworkClientListWindow *w, [[maybe_unused]] Point pt, CompanyID) { - if (_network_server) { - Command::Post(CCA_NEW, INVALID_COMPANY, CRR_NONE, _network_own_client_id); - } else { - Command::SendNet(STR_NULL, _local_company, CCA_NEW, INVALID_COMPANY, CRR_NONE, INVALID_CLIENT_ID); - } + Command::Post(CCA_NEW, INVALID_COMPANY, CRR_NONE, _network_own_client_id); } /** @@ -1497,8 +1472,8 @@ private: static void OnClickClientAdmin([[maybe_unused]] NetworkClientListWindow *w, [[maybe_unused]] Point pt, ClientID client_id) { DropDownList list; - list.push_back(std::make_unique(STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK, DD_CLIENT_ADMIN_KICK, false)); - list.push_back(std::make_unique(STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN, DD_CLIENT_ADMIN_BAN, false)); + list.push_back(MakeDropDownListStringItem(STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK, DD_CLIENT_ADMIN_KICK)); + list.push_back(MakeDropDownListStringItem(STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN, DD_CLIENT_ADMIN_BAN)); Rect wi_rect; wi_rect.left = pt.x; @@ -1519,8 +1494,7 @@ private: static void OnClickCompanyAdmin([[maybe_unused]] NetworkClientListWindow *w, [[maybe_unused]] Point pt, CompanyID company_id) { DropDownList list; - list.push_back(std::make_unique(STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET, DD_COMPANY_ADMIN_RESET, NetworkCompanyHasClients(company_id))); - list.push_back(std::make_unique(STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK, DD_COMPANY_ADMIN_UNLOCK, !NetworkCompanyIsPassworded(company_id))); + list.push_back(MakeDropDownListStringItem(STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET, DD_COMPANY_ADMIN_RESET, NetworkCompanyHasClients(company_id))); Rect wi_rect; wi_rect.left = pt.x; @@ -1542,18 +1516,25 @@ private: ShowNetworkChatQueryWindow(DESTTYPE_CLIENT, client_id); } + static void OnClickClientAuthorize([[maybe_unused]] NetworkClientListWindow *w, [[maybe_unused]] Point pt, ClientID client_id) + { + AutoRestoreBackup cur_company(_current_company, NetworkClientInfo::GetByClientID(_network_own_client_id)->client_playas); + Command::Post(CALCA_ADD, NetworkClientInfo::GetByClientID(client_id)->public_key); + } + /** * Part of RebuildList() to create the information for a single company. * @param company_id The company to build the list for. * @param client_playas The company the client is joined as. + * @param can_join_company Whether this company can be joined by us. */ - void RebuildListCompany(CompanyID company_id, CompanyID client_playas) + void RebuildListCompany(CompanyID company_id, CompanyID client_playas, bool can_join_company) { ButtonCommon *chat_button = new CompanyButton(SPR_CHAT, company_id == COMPANY_SPECTATOR ? STR_NETWORK_CLIENT_LIST_CHAT_SPECTATOR_TOOLTIP : STR_NETWORK_CLIENT_LIST_CHAT_COMPANY_TOOLTIP, COLOUR_ORANGE, company_id, &NetworkClientListWindow::OnClickCompanyChat); if (_network_server) this->buttons[line_count].push_back(std::make_unique(SPR_ADMIN, STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP, COLOUR_RED, company_id, &NetworkClientListWindow::OnClickCompanyAdmin, company_id == COMPANY_SPECTATOR)); this->buttons[line_count].emplace_back(chat_button); - if (client_playas != company_id) this->buttons[line_count].push_back(std::make_unique(SPR_JOIN, STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP, COLOUR_ORANGE, company_id, &NetworkClientListWindow::OnClickCompanyJoin, company_id != COMPANY_SPECTATOR && Company::Get(company_id)->is_ai)); + if (can_join_company) this->buttons[line_count].push_back(std::make_unique(SPR_JOIN, STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP, COLOUR_ORANGE, company_id, &NetworkClientListWindow::OnClickCompanyJoin, company_id != COMPANY_SPECTATOR && Company::Get(company_id)->is_ai)); this->line_count += 1; @@ -1564,6 +1545,7 @@ private: if (_network_server) this->buttons[line_count].push_back(std::make_unique(SPR_ADMIN, STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP, COLOUR_RED, ci->client_id, &NetworkClientListWindow::OnClickClientAdmin, _network_own_client_id == ci->client_id)); if (_network_own_client_id != ci->client_id) this->buttons[line_count].push_back(std::make_unique(SPR_CHAT, STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP, COLOUR_ORANGE, ci->client_id, &NetworkClientListWindow::OnClickClientChat)); + if (_network_own_client_id != ci->client_id && client_playas != COMPANY_SPECTATOR && !ci->CanJoinCompany(client_playas)) this->buttons[line_count].push_back(std::make_unique(SPR_JOIN, STR_NETWORK_CLIENT_LIST_COMPANY_AUTHORIZE_TOOLTIP, COLOUR_GREEN, ci->client_id, &NetworkClientListWindow::OnClickClientAuthorize)); if (ci->client_id == _network_own_client_id) { this->player_self_index = this->line_count; @@ -1598,18 +1580,18 @@ private: } if (client_playas != COMPANY_SPECTATOR) { - this->RebuildListCompany(client_playas, client_playas); + this->RebuildListCompany(client_playas, client_playas, false); } /* Companies */ for (const Company *c : Company::Iterate()) { if (c->index == client_playas) continue; - this->RebuildListCompany(c->index, client_playas); + this->RebuildListCompany(c->index, client_playas, (own_ci != nullptr && c->allow_list.Contains(own_ci->public_key)) || _network_server); } /* Spectators */ - this->RebuildListCompany(COMPANY_SPECTATOR, client_playas); + this->RebuildListCompany(COMPANY_SPECTATOR, client_playas, client_playas != COMPANY_SPECTATOR); this->vscroll->SetCount(this->line_count); } @@ -1648,7 +1630,7 @@ private: } public: - NetworkClientListWindow(WindowDesc *desc, WindowNumber window_number) : + NetworkClientListWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc), hover_index(-1), player_self_index(-1), @@ -1674,7 +1656,7 @@ public: this->SetWidgetDisabledState(WID_CL_SERVER_NAME_EDIT, !_network_server); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_CL_SERVER_NAME: @@ -1685,14 +1667,14 @@ public: const NetworkClientInfo *own_ci = NetworkClientInfo::GetByClientID(_network_own_client_id); SetDParamStr(0, own_ci != nullptr ? own_ci->client_name : _settings_client.network.client_name); } - *size = GetStringBoundingBox(STR_JUST_RAW_STRING); - size->width = std::min(size->width, static_cast(ScaleGUITrad(200))); // By default, don't open the window too wide. + size = GetStringBoundingBox(STR_JUST_RAW_STRING); + size.width = std::min(size.width, static_cast(ScaleGUITrad(200))); // By default, don't open the window too wide. break; case WID_CL_SERVER_VISIBILITY: - *size = maxdim(maxdim(GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_LOCAL), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_PUBLIC)), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY)); - size->width += padding.width; - size->height += padding.height; + size = maxdim(maxdim(GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_LOCAL), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_PUBLIC)), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY)); + size.width += padding.width; + size.height += padding.height; break; case WID_CL_MATRIX: { @@ -1700,10 +1682,10 @@ public: height += WidgetDimensions::scaled.framerect.Vertical(); this->line_height = std::max(height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height; - resize->width = 1; - resize->height = this->line_height; - fill->height = this->line_height; - size->height = std::max(size->height, 5 * this->line_height); + resize.width = 1; + resize.height = this->line_height; + fill.height = this->line_height; + size.height = std::max(size.height, 5 * this->line_height); break; } } @@ -1866,13 +1848,6 @@ public: SetDParam(0, _admin_company_id); break; - case DD_COMPANY_ADMIN_UNLOCK: - _admin_company_id = this->dd_company_id; - text = STR_NETWORK_CLIENT_LIST_ASK_COMPANY_UNLOCK; - callback = AdminCompanyUnlockCallback; - SetDParam(0, _admin_company_id); - break; - default: NOT_REACHED(); } @@ -1893,9 +1868,9 @@ public: this->SetDirty(); } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (str == nullptr) return; + if (!str.has_value()) return; switch (this->query_widget) { default: NOT_REACHED(); @@ -1903,20 +1878,16 @@ public: case WID_CL_SERVER_NAME_EDIT: { if (!_network_server) break; - SetSettingValue(GetSettingFromName("network.server_name")->AsStringSetting(), str); + SetSettingValue(GetSettingFromName("network.server_name")->AsStringSetting(), *str); this->InvalidateData(); break; } case WID_CL_CLIENT_NAME_EDIT: { - SetSettingValue(GetSettingFromName("network.client_name")->AsStringSetting(), str); + SetSettingValue(GetSettingFromName("network.client_name")->AsStringSetting(), *str); this->InvalidateData(); break; } - - case WID_CL_COMPANY_JOIN: - NetworkClientRequestMove(this->join_company, str); - break; } } @@ -1946,7 +1917,7 @@ public: DrawFrameRect(r, button->colour, FR_NONE); DrawSprite(button->sprite, PAL_NONE, r.left + WidgetDimensions::scaled.framerect.left, r.top + WidgetDimensions::scaled.framerect.top); if (button->disabled) { - GfxFillRect(r.Shrink(WidgetDimensions::scaled.bevel), _colour_gradient[button->colour & 0xF][2], FILLRECT_CHECKER); + GfxFillRect(r.Shrink(WidgetDimensions::scaled.bevel), GetColourGradient(button->colour, SHADE_DARKER), FILLRECT_CHECKER); } int width = button->width + WidgetDimensions::scaled.hsep_normal; @@ -2095,7 +2066,7 @@ public: void ShowClientList() { - AllocateWindowDescFront(&_client_list_desc, 0); + AllocateWindowDescFront(_client_list_desc, 0); } NetworkJoinStatus _network_join_status; ///< The status of joining. @@ -2104,9 +2075,9 @@ uint32_t _network_join_bytes; ///< The number of bytes we already do uint32_t _network_join_bytes_total; ///< The total number of bytes to download. struct NetworkJoinStatusWindow : Window { - NetworkPasswordType password_type; + std::shared_ptr request; - NetworkJoinStatusWindow(WindowDesc *desc) : Window(desc) + NetworkJoinStatusWindow(WindowDesc &desc) : Window(desc) { this->parent = FindWindowById(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_GAME); this->InitNested(WN_NETWORK_STATUS_WINDOW_JOIN); @@ -2140,7 +2111,7 @@ struct NetworkJoinStatusWindow : Window { progress = 15 + _network_join_bytes * (100 - 15) / _network_join_bytes_total; break; } - DrawFrameRect(ir.WithWidth(ir.Width() * progress / 100, false), COLOUR_MAUVE, FR_NONE); + DrawFrameRect(ir.WithWidth(ir.Width() * progress / 100, _current_text_dir == TD_RTL), COLOUR_MAUVE, FR_NONE); DrawString(ir.left, ir.right, CenterBounds(ir.top, ir.bottom, GetCharacterHeight(FS_NORMAL)), STR_NETWORK_CONNECTING_1 + _network_join_status, TC_FROMSTRING, SA_HOR_CENTER); break; } @@ -2163,28 +2134,28 @@ struct NetworkJoinStatusWindow : Window { } } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { case WID_NJS_PROGRESS_BAR: /* Account for the statuses */ for (uint i = 0; i < NETWORK_JOIN_STATUS_END; i++) { - *size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_CONNECTING_1 + i)); + size = maxdim(size, GetStringBoundingBox(STR_NETWORK_CONNECTING_1 + i)); } /* For the number of waiting (other) players */ SetDParamMaxValue(0, MAX_CLIENTS); - *size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_CONNECTING_WAITING)); + size = maxdim(size, GetStringBoundingBox(STR_NETWORK_CONNECTING_WAITING)); /* We need some spacing for the 'border' */ - size->height += WidgetDimensions::scaled.frametext.Horizontal(); - size->width += WidgetDimensions::scaled.frametext.Vertical(); + size.height += WidgetDimensions::scaled.frametext.Horizontal(); + size.width += WidgetDimensions::scaled.frametext.Vertical(); break; case WID_NJS_PROGRESS_TEXT: /* Account for downloading ~ 10 MiB */ SetDParamMaxDigits(0, 8); SetDParamMaxDigits(1, 8); - *size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_CONNECTING_DOWNLOADING_1)); - *size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_CONNECTING_DOWNLOADING_1)); + size = maxdim(size, GetStringBoundingBox(STR_NETWORK_CONNECTING_DOWNLOADING_1)); + size = maxdim(size, GetStringBoundingBox(STR_NETWORK_CONNECTING_DOWNLOADING_1)); break; } } @@ -2198,18 +2169,14 @@ struct NetworkJoinStatusWindow : Window { } } - void OnQueryTextFinished(char *str) override + void OnQueryTextFinished(std::optional str) override { - if (StrEmpty(str)) { + if (!str.has_value() || str->empty() || this->request == nullptr) { NetworkDisconnect(); return; } - switch (this->password_type) { - case NETWORK_GAME_PASSWORD: MyClient::SendGamePassword (str); break; - case NETWORK_COMPANY_PASSWORD: MyClient::SendCompanyPassword(str); break; - default: NOT_REACHED(); - } + this->request->Reply(*str); } }; @@ -2224,140 +2191,26 @@ static constexpr NWidgetPart _nested_network_join_status_window_widgets[] = { EndContainer(), }; -static WindowDesc _network_join_status_window_desc(__FILE__, __LINE__, +static WindowDesc _network_join_status_window_desc( WDP_CENTER, nullptr, 0, 0, WC_NETWORK_STATUS_WINDOW, WC_NONE, WDF_MODAL, - std::begin(_nested_network_join_status_window_widgets), std::end(_nested_network_join_status_window_widgets) + _nested_network_join_status_window_widgets ); void ShowJoinStatusWindow() { CloseWindowById(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN); - new NetworkJoinStatusWindow(&_network_join_status_window_desc); + new NetworkJoinStatusWindow(_network_join_status_window_desc); } -void ShowNetworkNeedPassword(NetworkPasswordType npt) +void ShowNetworkNeedPassword(std::shared_ptr request) { - NetworkJoinStatusWindow *w = (NetworkJoinStatusWindow *)FindWindowById(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN); + NetworkJoinStatusWindow *w = dynamic_cast(FindWindowById(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN)); if (w == nullptr) return; - w->password_type = npt; + w->request = request; - StringID caption; - switch (npt) { - default: NOT_REACHED(); - case NETWORK_GAME_PASSWORD: caption = STR_NETWORK_NEED_GAME_PASSWORD_CAPTION; break; - case NETWORK_COMPANY_PASSWORD: caption = STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION; break; - } - ShowQueryString(STR_EMPTY, caption, NETWORK_PASSWORD_LENGTH, w, CS_ALPHANUMERAL, QSF_PASSWORD); -} - -struct NetworkCompanyPasswordWindow : public Window { - QueryString password_editbox; ///< Password editbox. - Dimension warning_size; ///< How much space to use for the warning text - - NetworkCompanyPasswordWindow(WindowDesc *desc, Window *parent) : Window(desc), password_editbox(lengthof(_settings_client.network.default_company_pass)) - { - this->InitNested(0); - this->UpdateWarningStringSize(); - - this->parent = parent; - this->querystrings[WID_NCP_PASSWORD] = &this->password_editbox; - this->password_editbox.cancel_button = WID_NCP_CANCEL; - this->password_editbox.ok_button = WID_NCP_OK; - this->SetFocusedWidget(WID_NCP_PASSWORD); - } - - void UpdateWarningStringSize() - { - assert(this->nested_root->smallest_x > 0); - this->warning_size.width = this->nested_root->current_x - (WidgetDimensions::scaled.framerect.Horizontal()) * 2; - this->warning_size.height = GetStringHeight(STR_WARNING_PASSWORD_SECURITY, this->warning_size.width); - this->warning_size.height += (WidgetDimensions::scaled.framerect.Vertical()) * 2; - - this->ReInit(); - } - - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override - { - if (widget == WID_NCP_WARNING) { - *size = this->warning_size; - } - } - - void DrawWidget(const Rect &r, WidgetID widget) const override - { - if (widget != WID_NCP_WARNING) return; - - DrawStringMultiLine(r.Shrink(WidgetDimensions::scaled.framerect), - STR_WARNING_PASSWORD_SECURITY, TC_FROMSTRING, SA_CENTER); - } - - void OnOk() - { - if (this->IsWidgetLowered(WID_NCP_SAVE_AS_DEFAULT_PASSWORD)) { - _settings_client.network.default_company_pass = this->password_editbox.text.buf; - } - - NetworkChangeCompanyPassword(_local_company, this->password_editbox.text.buf); - } - - void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override - { - switch (widget) { - case WID_NCP_OK: - this->OnOk(); - [[fallthrough]]; - - case WID_NCP_CANCEL: - this->Close(); - break; - - case WID_NCP_SAVE_AS_DEFAULT_PASSWORD: - this->ToggleWidgetLoweredState(WID_NCP_SAVE_AS_DEFAULT_PASSWORD); - this->SetDirty(); - break; - } - } -}; - -static constexpr NWidgetPart _nested_network_company_password_window_widgets[] = { - NWidget(NWID_HORIZONTAL), - NWidget(WWT_CLOSEBOX, COLOUR_GREY), - NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_COMPANY_PASSWORD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), - EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, WID_NCP_BACKGROUND), - NWidget(NWID_VERTICAL), SetPIP(5, 5, 5), - NWidget(NWID_HORIZONTAL), SetPIP(5, 5, 5), - NWidget(WWT_TEXT, COLOUR_GREY, WID_NCP_LABEL), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_NCP_PASSWORD), SetFill(1, 0), SetMinimalSize(194, 12), SetDataTip(STR_COMPANY_VIEW_SET_PASSWORD, STR_NULL), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(5, 0, 5), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_NCP_SAVE_AS_DEFAULT_PASSWORD), SetMinimalSize(194, 12), - SetDataTip(STR_COMPANY_PASSWORD_MAKE_DEFAULT, STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP), - EndContainer(), - EndContainer(), - EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, WID_NCP_WARNING), EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NCP_CANCEL), SetFill(1, 0), SetDataTip(STR_BUTTON_CANCEL, STR_COMPANY_PASSWORD_CANCEL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NCP_OK), SetFill(1, 0), SetDataTip(STR_BUTTON_OK, STR_COMPANY_PASSWORD_OK), - EndContainer(), -}; - -static WindowDesc _network_company_password_window_desc(__FILE__, __LINE__, - WDP_AUTO, nullptr, 0, 0, - WC_COMPANY_PASSWORD_WINDOW, WC_NONE, - 0, - std::begin(_nested_network_company_password_window_widgets), std::end(_nested_network_company_password_window_widgets) -); - -void ShowNetworkCompanyPasswordWindow(Window *parent) -{ - CloseWindowById(WC_COMPANY_PASSWORD_WINDOW, 0); - - new NetworkCompanyPasswordWindow(&_network_company_password_window_desc, parent); + ShowQueryString(STR_EMPTY, STR_NETWORK_NEED_GAME_PASSWORD_CAPTION, NETWORK_PASSWORD_LENGTH, w, CS_ALPHANUMERAL, QSF_NONE); } /** @@ -2368,7 +2221,7 @@ struct NetworkAskRelayWindow : public Window { std::string relay_connection_string; ///< The relay server we want to connect to. std::string token; ///< The token for this connection. - NetworkAskRelayWindow(WindowDesc *desc, Window *parent, const std::string &server_connection_string, const std::string &relay_connection_string, const std::string &token) : + NetworkAskRelayWindow(WindowDesc &desc, Window *parent, const std::string &server_connection_string, const std::string &relay_connection_string, const std::string &token) : Window(desc), server_connection_string(server_connection_string), relay_connection_string(relay_connection_string), @@ -2384,10 +2237,10 @@ struct NetworkAskRelayWindow : public Window { this->Window::Close(); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget == WID_NAR_TEXT) { - *size = GetStringBoundingBox(STR_NETWORK_ASK_RELAY_TEXT); + size = GetStringBoundingBox(STR_NETWORK_ASK_RELAY_TEXT); } } @@ -2455,11 +2308,11 @@ static constexpr NWidgetPart _nested_network_ask_relay_widgets[] = { EndContainer(), }; -static WindowDesc _network_ask_relay_desc(__FILE__, __LINE__, +static WindowDesc _network_ask_relay_desc( WDP_CENTER, nullptr, 0, 0, WC_NETWORK_ASK_RELAY, WC_NONE, WDF_MODAL, - std::begin(_nested_network_ask_relay_widgets), std::end(_nested_network_ask_relay_widgets) + _nested_network_ask_relay_widgets ); /** @@ -2473,24 +2326,24 @@ void ShowNetworkAskRelay(const std::string &server_connection_string, const std: CloseWindowByClass(WC_NETWORK_ASK_RELAY, NRWCD_HANDLED); Window *parent = GetMainWindow(); - new NetworkAskRelayWindow(&_network_ask_relay_desc, parent, server_connection_string, relay_connection_string, token); + new NetworkAskRelayWindow(_network_ask_relay_desc, parent, server_connection_string, relay_connection_string, token); } /** * Window used for asking if the user wants to participate in the automated survey. */ struct NetworkAskSurveyWindow : public Window { - NetworkAskSurveyWindow(WindowDesc *desc, Window *parent) : + NetworkAskSurveyWindow(WindowDesc &desc, Window *parent) : Window(desc) { this->parent = parent; this->InitNested(0); } - void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { if (widget == WID_NAS_TEXT) { - *size = GetStringBoundingBox(STR_NETWORK_ASK_SURVEY_TEXT); + size = GetStringBoundingBox(STR_NETWORK_ASK_SURVEY_TEXT); } } @@ -2553,11 +2406,11 @@ static constexpr NWidgetPart _nested_network_ask_survey_widgets[] = { EndContainer(), }; -static WindowDesc _network_ask_survey_desc(__FILE__, __LINE__, +static WindowDesc _network_ask_survey_desc( WDP_CENTER, nullptr, 0, 0, WC_NETWORK_ASK_SURVEY, WC_NONE, WDF_MODAL, - std::begin(_nested_network_ask_survey_widgets), std::end(_nested_network_ask_survey_widgets) + _nested_network_ask_survey_widgets ); /** @@ -2571,7 +2424,7 @@ void ShowNetworkAskSurvey() CloseWindowByClass(WC_NETWORK_ASK_SURVEY); Window *parent = GetMainWindow(); - new NetworkAskSurveyWindow(&_network_ask_survey_desc, parent); + new NetworkAskSurveyWindow(_network_ask_survey_desc, parent); } /** Window for displaying the textfile of a survey result. */ diff --git a/src/network/network_gui.h b/src/network/network_gui.h index 74d6d153e6..6c2555a5bf 100644 --- a/src/network/network_gui.h +++ b/src/network/network_gui.h @@ -17,12 +17,11 @@ #include "network_type.h" #include "network_gamelist.h" -void ShowNetworkNeedPassword(NetworkPasswordType npt); +void ShowNetworkNeedPassword(std::shared_ptr request); void ShowNetworkChatQueryWindow(DestType type, int dest); void ShowJoinStatusWindow(); void ShowNetworkGameWindow(); void ShowClientList(); -void ShowNetworkCompanyPasswordWindow(Window *parent); void ShowNetworkAskRelay(const std::string &server_connection_string, const std::string &relay_connection_string, const std::string &token); void ShowNetworkAskSurvey(); void ShowSurveyResultTextfileWindow(); diff --git a/src/network/network_internal.h b/src/network/network_internal.h index 66dea11be4..aa394f6e44 100644 --- a/src/network/network_internal.h +++ b/src/network/network_internal.h @@ -37,19 +37,6 @@ #define NETWORK_SEND_DOUBLE_SEED #endif /* RANDOM_DEBUG */ -/** - * Helper variable to make the dedicated server go fast until the (first) join. - * Used to load the desync debug logs, i.e. for reproducing a desync. - * There's basically no need to ever enable this, unless you really know what - * you are doing, i.e. debugging a desync. - * See docs/desync.txt for details. - */ -#ifdef DEBUG_DUMP_COMMANDS -extern bool _ddc_fastforward; -#else -#define _ddc_fastforward (false) -#endif /* DEBUG_DUMP_COMMANDS */ - typedef class ServerNetworkGameSocketHandler NetworkClientSocket; /** Status of the clients during joining. */ @@ -93,8 +80,6 @@ extern std::string _network_server_name; extern uint8_t _network_reconnect; -extern CompanyMask _network_company_passworded; - void NetworkQueryServer(const std::string &connection_string); void GetBindAddresses(NetworkAddressList *addresses, uint16_t port); @@ -129,7 +114,6 @@ void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send, uint NetworkCalculateLag(const NetworkClientSocket *cs); StringID GetNetworkErrorMsg(NetworkErrorCode err); bool NetworkMakeClientNameUnique(std::string &new_name); -std::string GenerateCompanyPasswordHash(const std::string &password, const std::string &password_server_id, uint32_t password_game_seed); std::string_view ParseCompanyFromConnectionString(const std::string &connection_string, CompanyID *company_id); NetworkAddress ParseConnectionString(const std::string &connection_string, uint16_t default_port); diff --git a/src/network/network_query.cpp b/src/network/network_query.cpp index 34cbd09289..9f87a277f9 100644 --- a/src/network/network_query.cpp +++ b/src/network/network_query.cpp @@ -83,7 +83,7 @@ NetworkRecvStatus QueryNetworkGameSocketHandler::SendGameInfo() { Debug(net, 9, "Query::SendGameInfo()"); - this->SendPacket(std::make_unique(PACKET_CLIENT_GAME_INFO)); + this->SendPacket(std::make_unique(this, PACKET_CLIENT_GAME_INFO)); return NETWORK_RECV_STATUS_OKAY; } diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index f0eba6d005..be04e39a99 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -58,6 +58,11 @@ INSTANTIATE_POOL_METHODS(NetworkClientSocket) /** Instantiate the listen sockets. */ template SocketList TCPListenHandler::sockets; +static NetworkAuthenticationDefaultPasswordProvider _password_provider(_settings_client.network.server_password); ///< Provides the password validation for the game's password. +static NetworkAuthenticationDefaultAuthorizedKeyHandler _authorized_key_handler(_settings_client.network.server_authorized_keys); ///< Provides the authorized key handling for the game authentication. +static NetworkAuthenticationDefaultAuthorizedKeyHandler _rcon_authorized_key_handler(_settings_client.network.rcon_authorized_keys); ///< Provides the authorized key validation for rcon. + + /** Writing a savegame directly to a number of packets. */ struct PacketWriter : SaveFilter { ServerNetworkGameSocketHandler *cs; ///< Socket we are associated with. @@ -116,10 +121,9 @@ struct PacketWriter : SaveFilter { /** * Transfer all packets from here to the network's queue while holding * the lock on our mutex. - * @param socket The network socket to write to. * @return True iff the last packet of the map has been sent. */ - bool TransferToNetworkQueue(ServerNetworkGameSocketHandler *socket) + bool TransferToNetworkQueue() { /* Unsafe check for the queue being empty or not. */ if (this->packets.empty()) return false; @@ -128,7 +132,7 @@ struct PacketWriter : SaveFilter { while (!this->packets.empty()) { bool last_packet = this->packets.front()->GetPacketType() == PACKET_SERVER_MAP_DONE; - socket->SendPacket(std::move(this->packets.front())); + this->cs->SendPacket(std::move(this->packets.front())); this->packets.pop_front(); if (last_packet) return true; @@ -137,23 +141,22 @@ struct PacketWriter : SaveFilter { return false; } - void Write(byte *buf, size_t size) override + void Write(uint8_t *buf, size_t size) override { + std::lock_guard lock(this->mutex); + /* We want to abort the saving when the socket is closed. */ if (this->cs == nullptr) SlError(STR_NETWORK_ERROR_LOSTCONNECTION); - if (this->current == nullptr) this->current = std::make_unique(PACKET_SERVER_MAP_DATA, TCP_MTU); + if (this->current == nullptr) this->current = std::make_unique(this->cs, PACKET_SERVER_MAP_DATA, TCP_MTU); - std::lock_guard lock(this->mutex); - - byte *bufe = buf + size; - while (buf != bufe) { - size_t written = this->current->Send_bytes(buf, bufe); - buf += written; + std::span to_write(buf, size); + while (!to_write.empty()) { + to_write = this->current->Send_bytes(to_write); if (!this->current->CanWriteToPacket(1)) { this->packets.push_back(std::move(this->current)); - if (buf != bufe) this->current = std::make_unique(PACKET_SERVER_MAP_DATA, TCP_MTU); + if (!to_write.empty()) this->current = std::make_unique(this->cs, PACKET_SERVER_MAP_DATA, TCP_MTU); } } @@ -162,19 +165,19 @@ struct PacketWriter : SaveFilter { void Finish() override { + std::lock_guard lock(this->mutex); + /* We want to abort the saving when the socket is closed. */ if (this->cs == nullptr) SlError(STR_NETWORK_ERROR_LOSTCONNECTION); - std::lock_guard lock(this->mutex); - /* Make sure the last packet is flushed. */ if (this->current != nullptr) this->packets.push_back(std::move(this->current)); /* Add a packet stating that this is the end to the queue. */ - this->packets.push_back(std::make_unique(PACKET_SERVER_MAP_DONE)); + this->packets.push_back(std::make_unique(this->cs, PACKET_SERVER_MAP_DONE)); /* Fast-track the size to the client. */ - auto p = std::make_unique(PACKET_SERVER_MAP_SIZE); + auto p = std::make_unique(this->cs, PACKET_SERVER_MAP_SIZE); p->Send_uint32((uint32_t)this->total_size); this->packets.push_front(std::move(p)); } @@ -213,6 +216,8 @@ ServerNetworkGameSocketHandler::~ServerNetworkGameSocketHandler() this->savegame->Destroy(); this->savegame = nullptr; } + + InvalidateWindowData(WC_CLIENT_LIST, 0); } std::unique_ptr ServerNetworkGameSocketHandler::ReceivePacket() @@ -248,7 +253,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::CloseConnection(NetworkRecvSta /* Inform other clients of this... strange leaving ;) */ for (NetworkClientSocket *new_cs : NetworkClientSocket::Iterate()) { - if (new_cs->status > STATUS_AUTHORIZED && this != new_cs) { + if (new_cs->status >= STATUS_AUTHORIZED && this != new_cs) { new_cs->SendErrorQuit(this->client_id, NETWORK_ERROR_CONNECTION_LOST); } } @@ -269,15 +274,13 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::CloseConnection(NetworkRecvSta /* We just lost one client :( */ if (this->status >= STATUS_AUTHORIZED) _network_game_info.clients_on--; - extern byte _network_clients_connected; + extern uint8_t _network_clients_connected; _network_clients_connected--; this->SendPackets(true); this->DeferDeletion(); - InvalidateWindowData(WC_CLIENT_LIST, 0); - return status; } @@ -287,7 +290,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::CloseConnection(NetworkRecvSta */ /* static */ bool ServerNetworkGameSocketHandler::AllowConnection() { - extern byte _network_clients_connected; + extern uint8_t _network_clients_connected; bool accept = _network_clients_connected < MAX_CLIENTS; /* We can't go over the MAX_CLIENTS limit here. However, the @@ -325,10 +328,11 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendClientInfo(NetworkClientIn Debug(net, 9, "client[{}] SendClientInfo(): client_id={}", this->client_id, ci->client_id); if (ci->client_id != INVALID_CLIENT_ID) { - auto p = std::make_unique(PACKET_SERVER_CLIENT_INFO); + auto p = std::make_unique(this, PACKET_SERVER_CLIENT_INFO); p->Send_uint32(ci->client_id); p->Send_uint8 (ci->client_playas); p->Send_string(ci->client_name); + p->Send_string(ci->public_key); this->SendPacket(std::move(p)); } @@ -340,7 +344,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendGameInfo() { Debug(net, 9, "client[{}] SendGameInfo()", this->client_id); - auto p = std::make_unique(PACKET_SERVER_GAME_INFO, TCP_MTU); + auto p = std::make_unique(this, PACKET_SERVER_GAME_INFO, TCP_MTU); SerializeNetworkGameInfo(*p, GetCurrentNetworkServerGameInfo()); this->SendPacket(std::move(p)); @@ -357,7 +361,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendError(NetworkErrorCode err { Debug(net, 9, "client[{}] SendError(): error={}", this->client_id, error); - auto p = std::make_unique(PACKET_SERVER_ERROR); + auto p = std::make_unique(this, PACKET_SERVER_ERROR); p->Send_uint8(error); if (!reason.empty()) p->Send_string(reason); @@ -366,7 +370,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendError(NetworkErrorCode err StringID strid = GetNetworkErrorMsg(error); /* Only send when the current client was in game */ - if (this->status > STATUS_AUTHORIZED) { + if (this->status >= STATUS_AUTHORIZED) { std::string client_name = this->GetClientName(); Debug(net, 1, "'{}' made an error and has been disconnected: {}", client_name, GetString(strid)); @@ -402,7 +406,18 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendNewGRFCheck() { Debug(net, 9, "client[{}] SendNewGRFCheck()", this->client_id); - auto p = std::make_unique(PACKET_SERVER_CHECK_NEWGRFS, TCP_MTU); + /* Invalid packet when status is anything but STATUS_IDENTIFY. */ + if (this->status != STATUS_IDENTIFY) return this->CloseConnection(NETWORK_RECV_STATUS_MALFORMED_PACKET); + + Debug(net, 9, "client[{}] status = NEWGRFS_CHECK", this->client_id); + this->status = STATUS_NEWGRFS_CHECK; + + if (_grfconfig == nullptr) { + /* There are no NewGRFs, so they're welcome. */ + return this->SendWelcome(); + } + + auto p = std::make_unique(this, PACKET_SERVER_CHECK_NEWGRFS, TCP_MTU); const GRFConfig *c; uint grf_count = 0; @@ -420,49 +435,40 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendNewGRFCheck() } /** Request the game password. */ -NetworkRecvStatus ServerNetworkGameSocketHandler::SendNeedGamePassword() +NetworkRecvStatus ServerNetworkGameSocketHandler::SendAuthRequest() { - if (_settings_client.network.server_password.empty()) { - /* Do not actually need a game password, continue with the company password. */ - return this->SendNeedCompanyPassword(); - } + Debug(net, 9, "client[{}] SendAuthRequest()", this->client_id); - Debug(net, 9, "client[{}] SendNeedGamePassword()", this->client_id); - - /* Invalid packet when status is STATUS_AUTH_GAME or higher */ - if (this->status >= STATUS_AUTH_GAME) return this->CloseConnection(NETWORK_RECV_STATUS_MALFORMED_PACKET); + /* Invalid packet when status is anything but STATUS_INACTIVE or STATUS_AUTH_GAME. */ + if (this->status != STATUS_INACTIVE && status != STATUS_AUTH_GAME) return this->CloseConnection(NETWORK_RECV_STATUS_MALFORMED_PACKET); Debug(net, 9, "client[{}] status = AUTH_GAME", this->client_id); this->status = STATUS_AUTH_GAME; + /* Reset 'lag' counters */ this->last_frame = this->last_frame_server = _frame_counter; - auto p = std::make_unique(PACKET_SERVER_NEED_GAME_PASSWORD); + if (this->authentication_handler == nullptr) { + this->authentication_handler = NetworkAuthenticationServerHandler::Create(&_password_provider, &_authorized_key_handler); + } + + auto p = std::make_unique(this, PACKET_SERVER_AUTH_REQUEST); + this->authentication_handler->SendRequest(*p); + this->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } -/** Request the company password. */ -NetworkRecvStatus ServerNetworkGameSocketHandler::SendNeedCompanyPassword() +/** Notify the client that the authentication has completed and tell that for the remainder of this socket encryption is enabled. */ +NetworkRecvStatus ServerNetworkGameSocketHandler::SendEnableEncryption() { - NetworkClientInfo *ci = this->GetInfo(); - if (!Company::IsValidID(ci->client_playas) || _network_company_states[ci->client_playas].password.empty()) { - return this->SendWelcome(); - } + Debug(net, 9, "client[{}] SendEnableEncryption()", this->client_id); - Debug(net, 9, "client[{}] SendNeedCompanyPassword()", this->client_id); + /* Invalid packet when status is anything but STATUS_AUTH_GAME. */ + if (this->status != STATUS_AUTH_GAME) return this->CloseConnection(NETWORK_RECV_STATUS_MALFORMED_PACKET); - /* Invalid packet when status is STATUS_AUTH_COMPANY or higher */ - if (this->status >= STATUS_AUTH_COMPANY) return this->CloseConnection(NETWORK_RECV_STATUS_MALFORMED_PACKET); - - Debug(net, 9, "client[{}] status = AUTH_COMPANY", this->client_id); - this->status = STATUS_AUTH_COMPANY; - /* Reset 'lag' counters */ - this->last_frame = this->last_frame_server = _frame_counter; - - auto p = std::make_unique(PACKET_SERVER_NEED_COMPANY_PASSWORD); - p->Send_uint32(_settings_game.game_creation.generation_seed); - p->Send_string(_settings_client.network.network_id); + auto p = std::make_unique(this, PACKET_SERVER_ENABLE_ENCRYPTION); + this->authentication_handler->SendEnableEncryption(*p); this->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -472,20 +478,19 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendWelcome() { Debug(net, 9, "client[{}] SendWelcome()", this->client_id); - /* Invalid packet when status is AUTH or higher */ - if (this->status >= STATUS_AUTHORIZED) return this->CloseConnection(NETWORK_RECV_STATUS_MALFORMED_PACKET); + /* Invalid packet when status is anything but STATUS_NEWGRFS_CHECK. */ + if (this->status != STATUS_NEWGRFS_CHECK) return this->CloseConnection(NETWORK_RECV_STATUS_MALFORMED_PACKET); Debug(net, 9, "client[{}] status = AUTHORIZED", this->client_id); this->status = STATUS_AUTHORIZED; + /* Reset 'lag' counters */ this->last_frame = this->last_frame_server = _frame_counter; _network_game_info.clients_on++; - auto p = std::make_unique(PACKET_SERVER_WELCOME); + auto p = std::make_unique(this, PACKET_SERVER_WELCOME); p->Send_uint32(this->client_id); - p->Send_uint32(_settings_game.game_creation.generation_seed); - p->Send_string(_settings_client.network.network_id); this->SendPacket(std::move(p)); /* Transmit info about all the active clients */ @@ -511,7 +516,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendWait() if (new_cs->GetInfo()->join_date < this->GetInfo()->join_date || (new_cs->GetInfo()->join_date == this->GetInfo()->join_date && new_cs->client_id < this->client_id)) waiting++; } - auto p = std::make_unique(PACKET_SERVER_WAIT); + auto p = std::make_unique(this, PACKET_SERVER_WAIT); p->Send_uint8(waiting); this->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; @@ -561,7 +566,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap() this->savegame = std::make_shared(this); /* Now send the _frame_counter and how many packets are coming */ - auto p = std::make_unique(PACKET_SERVER_MAP_BEGIN); + auto p = std::make_unique(this, PACKET_SERVER_MAP_BEGIN); p->Send_uint32(_frame_counter); this->SendPacket(std::move(p)); @@ -577,7 +582,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap() } if (this->status == STATUS_MAP) { - bool last_packet = this->savegame->TransferToNetworkQueue(this); + bool last_packet = this->savegame->TransferToNetworkQueue(); if (last_packet) { Debug(net, 9, "client[{}] SendMap(): last_packet", this->client_id); @@ -604,7 +609,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendJoin(ClientID client_id) { Debug(net, 9, "client[{}] SendJoin(): client_id={}", this->client_id, client_id); - auto p = std::make_unique(PACKET_SERVER_JOIN); + auto p = std::make_unique(this, PACKET_SERVER_JOIN); p->Send_uint32(client_id); @@ -615,7 +620,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendJoin(ClientID client_id) /** Tell the client that they may run to a particular frame. */ NetworkRecvStatus ServerNetworkGameSocketHandler::SendFrame() { - auto p = std::make_unique(PACKET_SERVER_FRAME); + auto p = std::make_unique(this, PACKET_SERVER_FRAME); p->Send_uint32(_frame_counter); p->Send_uint32(_frame_counter_max); #ifdef ENABLE_NETWORK_SYNC_EVERY_FRAME @@ -640,7 +645,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendSync() { Debug(net, 9, "client[{}] SendSync(), frame_counter={}, sync_seed_1={}", this->client_id, _frame_counter, _sync_seed_1); - auto p = std::make_unique(PACKET_SERVER_SYNC); + auto p = std::make_unique(this, PACKET_SERVER_SYNC); p->Send_uint32(_frame_counter); p->Send_uint32(_sync_seed_1); @@ -659,7 +664,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendCommand(const CommandPacke { Debug(net, 9, "client[{}] SendCommand(): cmd={}", this->client_id, cp.cmd); - auto p = std::make_unique(PACKET_SERVER_COMMAND); + auto p = std::make_unique(this, PACKET_SERVER_COMMAND); this->NetworkGameSocketHandler::SendCommand(*p, cp); p->Send_uint32(cp.frame); @@ -683,7 +688,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendChat(NetworkAction action, if (this->status < STATUS_PRE_ACTIVE) return NETWORK_RECV_STATUS_OKAY; - auto p = std::make_unique(PACKET_SERVER_CHAT); + auto p = std::make_unique(this, PACKET_SERVER_CHAT); p->Send_uint8 (action); p->Send_uint32(client_id); @@ -708,7 +713,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendExternalChat(const std::st if (this->status < STATUS_PRE_ACTIVE) return NETWORK_RECV_STATUS_OKAY; - auto p = std::make_unique(PACKET_SERVER_EXTERNAL_CHAT); + auto p = std::make_unique(this, PACKET_SERVER_EXTERNAL_CHAT); p->Send_string(source); p->Send_uint16(colour); @@ -728,7 +733,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendErrorQuit(ClientID client_ { Debug(net, 9, "client[{}] SendErrorQuit(): client_id={}, errorno={}", this->client_id, client_id, errorno); - auto p = std::make_unique(PACKET_SERVER_ERROR_QUIT); + auto p = std::make_unique(this, PACKET_SERVER_ERROR_QUIT); p->Send_uint32(client_id); p->Send_uint8 (errorno); @@ -745,7 +750,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendQuit(ClientID client_id) { Debug(net, 9, "client[{}] SendQuit(): client_id={}", this->client_id, client_id); - auto p = std::make_unique(PACKET_SERVER_QUIT); + auto p = std::make_unique(this, PACKET_SERVER_QUIT); p->Send_uint32(client_id); @@ -758,7 +763,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendShutdown() { Debug(net, 9, "client[{}] SendShutdown()", this->client_id); - auto p = std::make_unique(PACKET_SERVER_SHUTDOWN); + auto p = std::make_unique(this, PACKET_SERVER_SHUTDOWN); this->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -768,7 +773,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendNewGame() { Debug(net, 9, "client[{}] SendNewGame()", this->client_id); - auto p = std::make_unique(PACKET_SERVER_NEWGAME); + auto p = std::make_unique(this, PACKET_SERVER_NEWGAME); this->SendPacket(std::move(p)); return NETWORK_RECV_STATUS_OKAY; } @@ -782,7 +787,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendRConResult(uint16_t colour { Debug(net, 9, "client[{}] SendRConResult()", this->client_id); - auto p = std::make_unique(PACKET_SERVER_RCON); + auto p = std::make_unique(this, PACKET_SERVER_RCON); p->Send_uint16(colour); p->Send_string(command); @@ -799,7 +804,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMove(ClientID client_id, C { Debug(net, 9, "client[{}] SendMove(): client_id={}", this->client_id, client_id); - auto p = std::make_unique(PACKET_SERVER_MOVE); + auto p = std::make_unique(this, PACKET_SERVER_MOVE); p->Send_uint32(client_id); p->Send_uint8(company_id); @@ -807,25 +812,12 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMove(ClientID client_id, C return NETWORK_RECV_STATUS_OKAY; } -/** Send an update about the company password states. */ -NetworkRecvStatus ServerNetworkGameSocketHandler::SendCompanyUpdate() -{ - Debug(net, 9, "client[{}] SendCompanyUpdate()", this->client_id); - - auto p = std::make_unique(PACKET_SERVER_COMPANY_UPDATE); - - static_assert(sizeof(_network_company_passworded) <= sizeof(uint16_t)); - p->Send_uint16(_network_company_passworded); - this->SendPacket(std::move(p)); - return NETWORK_RECV_STATUS_OKAY; -} - /** Send an update about the max company/spectator counts. */ NetworkRecvStatus ServerNetworkGameSocketHandler::SendConfigUpdate() { Debug(net, 9, "client[{}] SendConfigUpdate()", this->client_id); - auto p = std::make_unique(PACKET_SERVER_CONFIG_UPDATE); + auto p = std::make_unique(this, PACKET_SERVER_CONFIG_UPDATE); p->Send_uint8(_settings_client.network.max_companies); p->Send_string(_settings_client.network.server_name); @@ -853,7 +845,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_NEWGRFS_CHECKED Debug(net, 9, "client[{}] Receive_CLIENT_NEWGRFS_CHECKED()", this->client_id); - return this->SendNeedGamePassword(); + return this->SendWelcome(); } NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet &p) @@ -879,6 +871,15 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet &p) return this->SendError(NETWORK_ERROR_WRONG_REVISION); } + return this->SendAuthRequest(); +} + +NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_IDENTIFY(Packet &p) +{ + if (this->status != STATUS_IDENTIFY) return this->SendError(NETWORK_ERROR_NOT_EXPECTED); + + Debug(net, 9, "client[{}] Receive_CLIENT_IDENTIFY()", this->client_id); + std::string client_name = p.Recv_string(NETWORK_CLIENT_NAME_LENGTH); CompanyID playas = (Owner)p.Recv_uint8(); @@ -893,10 +894,15 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet &p) break; case COMPANY_SPECTATOR: // Spectator break; - default: // Join another company (companies 1-8 (index 0-7)) + default: // Join another company (companies 1..MAX_COMPANIES (index 0..(MAX_COMPANIES-1))) if (!Company::IsValidHumanID(playas)) { return this->SendError(NETWORK_ERROR_COMPANY_MISMATCH); } + + if (!Company::Get(playas)->allow_list.Contains(this->peer_public_key)) { + /* When we're not authorized, just bump us to a spectator. */ + playas = COMPANY_SPECTATOR; + } break; } @@ -918,63 +924,65 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet &p) ci->join_date = TimerGameEconomy::date; ci->client_name = client_name; ci->client_playas = playas; + ci->public_key = this->peer_public_key; Debug(desync, 1, "client: {:08x}; {:02x}; {:02x}; {:02x}", TimerGameEconomy::date, TimerGameEconomy::date_fract, (int)ci->client_playas, (int)ci->index); /* Make sure companies to which people try to join are not autocleaned */ - if (Company::IsValidID(playas)) _network_company_states[playas].months_empty = 0; - - Debug(net, 9, "client[{}] status = NEWGRFS_CHECK", this->client_id); - this->status = STATUS_NEWGRFS_CHECK; - - if (_grfconfig == nullptr) { - /* Continue asking for the game password. */ - return this->SendNeedGamePassword(); - } + Company *c = Company::GetIfValid(playas); + if (c != nullptr) c->months_empty = 0; return this->SendNewGRFCheck(); } -NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_GAME_PASSWORD(Packet &p) +static NetworkErrorCode GetErrorForAuthenticationMethod(NetworkAuthenticationMethod method) +{ + switch (method) { + case NETWORK_AUTH_METHOD_X25519_PAKE: + return NETWORK_ERROR_WRONG_PASSWORD; + case NETWORK_AUTH_METHOD_X25519_AUTHORIZED_KEY: + return NETWORK_ERROR_NOT_ON_ALLOW_LIST; + + default: + NOT_REACHED(); + } +} + +NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_AUTH_RESPONSE(Packet &p) { if (this->status != STATUS_AUTH_GAME) { return this->SendError(NETWORK_ERROR_NOT_EXPECTED); } - Debug(net, 9, "client[{}] Receive_CLIENT_GAME_PASSWORD()", this->client_id); + Debug(net, 9, "client[{}] Receive_CLIENT_AUTH_RESPONSE()", this->client_id); - std::string password = p.Recv_string(NETWORK_PASSWORD_LENGTH); + auto authentication_method = this->authentication_handler->GetAuthenticationMethod(); + switch (this->authentication_handler->ReceiveResponse(p)) { + case NetworkAuthenticationServerHandler::AUTHENTICATED: + break; - /* Check game password. Allow joining if we cleared the password meanwhile */ - if (!_settings_client.network.server_password.empty() && - _settings_client.network.server_password.compare(password) != 0) { - /* Password is invalid */ - return this->SendError(NETWORK_ERROR_WRONG_PASSWORD); + case NetworkAuthenticationServerHandler::RETRY_NEXT_METHOD: + return this->SendAuthRequest(); + + case NetworkAuthenticationServerHandler::NOT_AUTHENTICATED: + default: + return this->SendError(GetErrorForAuthenticationMethod(authentication_method)); } - return this->SendNeedCompanyPassword(); -} + NetworkRecvStatus status = this->SendEnableEncryption(); + if (status != NETWORK_RECV_STATUS_OKAY) return status; -NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_COMPANY_PASSWORD(Packet &p) -{ - if (this->status != STATUS_AUTH_COMPANY) { - return this->SendError(NETWORK_ERROR_NOT_EXPECTED); - } + this->peer_public_key = this->authentication_handler->GetPeerPublicKey(); + this->receive_encryption_handler = this->authentication_handler->CreateClientToServerEncryptionHandler(); + this->send_encryption_handler = this->authentication_handler->CreateServerToClientEncryptionHandler(); + this->authentication_handler = nullptr; - Debug(net, 9, "client[{}] Receive_CLIENT_COMPANY_PASSWORD()", this->client_id); + Debug(net, 9, "client[{}] status = IDENTIFY", this->client_id); + this->status = STATUS_IDENTIFY; - std::string password = p.Recv_string(NETWORK_PASSWORD_LENGTH); + /* Reset 'lag' counters */ + this->last_frame = this->last_frame_server = _frame_counter; - /* Check company password. Allow joining if we cleared the password meanwhile. - * Also, check the company is still valid - client could be moved to spectators - * in the middle of the authorization process */ - CompanyID playas = this->GetInfo()->client_playas; - if (Company::IsValidID(playas) && !_network_company_states[playas].password.empty() && - _network_company_states[playas].password.compare(password) != 0) { - /* Password is invalid */ - return this->SendError(NETWORK_ERROR_WRONG_PASSWORD); - } - - return this->SendWelcome(); + return NETWORK_RECV_STATUS_OKAY; } NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_GETMAP(Packet &) @@ -1037,10 +1045,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_MAP_OK(Packet & NetworkAdminClientInfo(this, true); /* also update the new client with our max values */ - this->SendConfigUpdate(); - - /* quickly update the syncing client with company details */ - return this->SendCompanyUpdate(); + return this->SendConfigUpdate(); } /* Wrong status for this packet, give a warning to client, and close connection */ @@ -1112,6 +1117,24 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_COMMAND(Packet } } + if (cp.cmd == CMD_COMPANY_ALLOW_LIST_CTRL) { + /* Maybe the client just got moved before allowing? */ + if (ci->client_id != CLIENT_ID_SERVER && ci->client_playas != cp.company) return NETWORK_RECV_STATUS_OKAY; + + /* Only allow clients to add/remove currently joined clients. The server owner does not go via this method, so is allowed to do more. */ + std::string public_key = std::get<1>(EndianBufferReader::ToValue::Args>(cp.data)); + bool found = false; + for (const NetworkClientInfo *info : NetworkClientInfo::Iterate()) { + if (info->public_key == public_key) { + found = true; + break; + } + } + + /* Maybe the client just left? */ + if (!found) return NETWORK_RECV_STATUS_OKAY; + } + if (GetCommandFlags(cp.cmd) & CMD_CLIENT_ID) NetworkReplaceCommandClientId(cp, this->client_id); this->incoming_queue.push_back(cp); @@ -1252,7 +1275,7 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co } else { /* Else find the client to send the message to */ for (NetworkClientSocket *cs : NetworkClientSocket::Iterate()) { - if (cs->client_id == (ClientID)dest) { + if (cs->client_id == (ClientID)dest && cs->status >= ServerNetworkGameSocketHandler::STATUS_AUTHORIZED) { cs->SendChat(action, from_id, false, msg, data); break; } @@ -1269,7 +1292,7 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co } } else { for (NetworkClientSocket *cs : NetworkClientSocket::Iterate()) { - if (cs->client_id == from_id) { + if (cs->client_id == from_id && cs->status >= ServerNetworkGameSocketHandler::STATUS_AUTHORIZED) { cs->SendChat(action, (ClientID)dest, true, msg, data); break; } @@ -1284,7 +1307,7 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co ci_to = nullptr; for (NetworkClientSocket *cs : NetworkClientSocket::Iterate()) { ci = cs->GetInfo(); - if (ci != nullptr && ci->client_playas == (CompanyID)dest) { + if (ci != nullptr && ci->client_playas == (CompanyID)dest && cs->status >= ServerNetworkGameSocketHandler::STATUS_AUTHORIZED) { cs->SendChat(action, from_id, false, msg, data); if (cs->client_id == from_id) show_local = false; ci_to = ci; // Remember a client that is in the company for company-name @@ -1316,7 +1339,7 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co NetworkTextMessage(action, GetDrawStringCompanyColour(ci_own->client_playas), true, name, msg, data); } else { for (NetworkClientSocket *cs : NetworkClientSocket::Iterate()) { - if (cs->client_id == from_id) { + if (cs->client_id == from_id && cs->status >= ServerNetworkGameSocketHandler::STATUS_AUTHORIZED) { cs->SendChat(action, ci_to->client_id, true, msg, data); } } @@ -1330,7 +1353,7 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co case DESTTYPE_BROADCAST: for (NetworkClientSocket *cs : NetworkClientSocket::Iterate()) { - cs->SendChat(action, from_id, false, msg, data); + if (cs->status >= ServerNetworkGameSocketHandler::STATUS_AUTHORIZED) cs->SendChat(action, from_id, false, msg, data); } NetworkAdminChat(action, desttype, from_id, msg, data, from_admin); @@ -1353,7 +1376,7 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co void NetworkServerSendExternalChat(const std::string &source, TextColour colour, const std::string &user, const std::string &msg) { for (NetworkClientSocket *cs : NetworkClientSocket::Iterate()) { - cs->SendExternalChat(source, colour, user, msg); + if (cs->status >= ServerNetworkGameSocketHandler::STATUS_AUTHORIZED) cs->SendExternalChat(source, colour, user, msg); } NetworkTextMessage(NETWORK_ACTION_EXTERNAL_CHAT, colour, false, user, msg, 0, source); } @@ -1388,22 +1411,6 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_CHAT(Packet &p) return NETWORK_RECV_STATUS_OKAY; } -NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_SET_PASSWORD(Packet &p) -{ - if (this->status != STATUS_ACTIVE) { - /* Illegal call, return error and ignore the packet */ - return this->SendError(NETWORK_ERROR_NOT_EXPECTED); - } - - Debug(net, 9, "client[{}] Receive_CLIENT_SET_PASSWORD()", this->client_id); - - std::string password = p.Recv_string(NETWORK_PASSWORD_LENGTH); - const NetworkClientInfo *ci = this->GetInfo(); - - NetworkServerSetCompanyPassword(ci->client_playas, password); - return NETWORK_RECV_STATUS_OKAY; -} - NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_SET_NAME(Packet &p) { if (this->status != STATUS_ACTIVE) { @@ -1442,14 +1449,16 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_RCON(Packet &p) { if (this->status != STATUS_ACTIVE) return this->SendError(NETWORK_ERROR_NOT_EXPECTED); - if (_settings_client.network.rcon_password.empty()) return NETWORK_RECV_STATUS_OKAY; - Debug(net, 9, "client[{}] Receive_CLIENT_RCON()", this->client_id); std::string password = p.Recv_string(NETWORK_PASSWORD_LENGTH); std::string command = p.Recv_string(NETWORK_RCONCOMMAND_LENGTH); - if (_settings_client.network.rcon_password.compare(password) != 0) { + if (_rcon_authorized_key_handler.IsAllowed(this->peer_public_key)) { + /* We are allowed, nothing more to validate. */ + } else if (_settings_client.network.rcon_password.empty()) { + return NETWORK_RECV_STATUS_OKAY; + } else if (_settings_client.network.rcon_password.compare(password) != 0) { Debug(net, 1, "[rcon] Wrong password from client-id {}", this->client_id); return NETWORK_RECV_STATUS_OKAY; } @@ -1473,16 +1482,9 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_MOVE(Packet &p) /* Check if the company is valid, we don't allow moving to AI companies */ if (company_id != COMPANY_SPECTATOR && !Company::IsValidHumanID(company_id)) return NETWORK_RECV_STATUS_OKAY; - /* Check if we require a password for this company */ - if (company_id != COMPANY_SPECTATOR && !_network_company_states[company_id].password.empty()) { - /* we need a password from the client - should be in this packet */ - std::string password = p.Recv_string(NETWORK_PASSWORD_LENGTH); - - /* Incorrect password sent, return! */ - if (_network_company_states[company_id].password.compare(password) != 0) { - Debug(net, 2, "Wrong password from client-id #{} for company #{}", this->client_id, company_id + 1); - return NETWORK_RECV_STATUS_OKAY; - } + if (company_id != COMPANY_SPECTATOR && !Company::Get(company_id)->allow_list.Contains(this->peer_public_key)) { + Debug(net, 2, "Wrong public key from client-id #{} for company #{}", this->client_id, company_id + 1); + return NETWORK_RECV_STATUS_OKAY; } /* if we get here we can move the client */ @@ -1501,7 +1503,7 @@ void NetworkPopulateCompanyStats(NetworkCompanyStats *stats) /* Go through all vehicles and count the type of vehicles */ for (const Vehicle *v : Vehicle::Iterate()) { if (!Company::IsValidID(v->owner) || !v->IsPrimaryVehicle()) continue; - byte type = 0; + uint8_t type = 0; switch (v->type) { case VEH_TRAIN: type = NETWORK_VEH_TRAIN; break; case VEH_ROAD: type = RoadVehicle::From(v)->IsBus() ? NETWORK_VEH_BUS : NETWORK_VEH_LORRY; break; @@ -1547,11 +1549,10 @@ void NetworkUpdateClientInfo(ClientID client_id) NetworkAdminClientUpdate(ci); } -/** Check if the server has autoclean_companies activated - * Two things happen: - * 1) If a company is not protected, it is closed after 1 year (for example) - * 2) If a company is protected, protection is disabled after 3 years (for example) - * (and item 1. happens a year later) +/** + * Remove companies that have not been used depending on the \c autoclean_companies setting + * and values for \c autoclean_protected, which removes any company, and + * \c autoclean_novehicles, which removes companies without vehicles. */ static void NetworkAutoCleanCompanies() { @@ -1578,37 +1579,29 @@ static void NetworkAutoCleanCompanies() } /* Go through all the companies */ - for (const Company *c : Company::Iterate()) { + for (Company *c : Company::Iterate()) { /* Skip the non-active once */ if (c->is_ai) continue; if (!HasBit(has_clients, c->index)) { /* The company is empty for one month more */ - _network_company_states[c->index].months_empty++; + if (c->months_empty != std::numeric_limitsmonths_empty)>::max()) c->months_empty++; - /* Is the company empty for autoclean_unprotected-months, and is there no protection? */ - if (_settings_client.network.autoclean_unprotected != 0 && _network_company_states[c->index].months_empty > _settings_client.network.autoclean_unprotected && _network_company_states[c->index].password.empty()) { + /* Is the company empty for autoclean_protected-months? */ + if (_settings_client.network.autoclean_protected != 0 && c->months_empty > _settings_client.network.autoclean_protected) { /* Shut the company down */ Command::Post(CCA_DELETE, c->index, CRR_AUTOCLEAN, INVALID_CLIENT_ID); - IConsolePrint(CC_INFO, "Auto-cleaned company #{} with no password.", c->index + 1); - } - /* Is the company empty for autoclean_protected-months, and there is a protection? */ - if (_settings_client.network.autoclean_protected != 0 && _network_company_states[c->index].months_empty > _settings_client.network.autoclean_protected && !_network_company_states[c->index].password.empty()) { - /* Unprotect the company */ - _network_company_states[c->index].password.clear(); - IConsolePrint(CC_INFO, "Auto-removed protection from company #{}.", c->index + 1); - _network_company_states[c->index].months_empty = 0; - NetworkServerUpdateCompanyPassworded(c->index, false); + IConsolePrint(CC_INFO, "Auto-cleaned company #{}.", c->index + 1); } /* Is the company empty for autoclean_novehicles-months, and has no vehicles? */ - if (_settings_client.network.autoclean_novehicles != 0 && _network_company_states[c->index].months_empty > _settings_client.network.autoclean_novehicles && !HasBit(has_vehicles, c->index)) { + if (_settings_client.network.autoclean_novehicles != 0 && c->months_empty > _settings_client.network.autoclean_novehicles && !HasBit(has_vehicles, c->index)) { /* Shut the company down */ Command::Post(CCA_DELETE, c->index, CRR_AUTOCLEAN, INVALID_CLIENT_ID); IConsolePrint(CC_INFO, "Auto-cleaned company #{} with no vehicles.", c->index + 1); } } else { /* It is not empty, reset the date */ - _network_company_states[c->index].months_empty = 0; + c->months_empty = 0; } } } @@ -1675,25 +1668,6 @@ bool NetworkServerChangeClientName(ClientID client_id, const std::string &new_na return true; } -/** - * Set/Reset a company password on the server end. - * @param company_id ID of the company the password should be changed for. - * @param password The new password. - * @param already_hashed Is the given password already hashed? - */ -void NetworkServerSetCompanyPassword(CompanyID company_id, const std::string &password, bool already_hashed) -{ - if (!Company::IsValidHumanID(company_id)) return; - - if (already_hashed) { - _network_company_states[company_id].password = password; - } else { - _network_company_states[company_id].password = GenerateCompanyPasswordHash(password, _settings_client.network.network_id, _settings_game.game_creation.generation_seed); - } - - NetworkServerUpdateCompanyPassworded(company_id, !_network_company_states[company_id].password.empty()); -} - /** * Handle the command-queue of a socket. * @param cs The socket to handle the queue for. @@ -1766,6 +1740,7 @@ void NetworkServer_Tick(bool send_frame) break; case NetworkClientSocket::STATUS_INACTIVE: + case NetworkClientSocket::STATUS_IDENTIFY: case NetworkClientSocket::STATUS_NEWGRFS_CHECK: case NetworkClientSocket::STATUS_AUTHORIZED: /* NewGRF check and authorized states should be handled almost instantly. @@ -1812,7 +1787,6 @@ void NetworkServer_Tick(bool send_frame) break; case NetworkClientSocket::STATUS_AUTH_GAME: - case NetworkClientSocket::STATUS_AUTH_COMPANY: /* These don't block? */ if (lag > _settings_client.network.max_password_time) { IConsolePrint(CC_WARNING, "Client #{} (IP: {}) is dropped because it took longer than {} ticks to enter the password.", cs->client_id, cs->GetClientIP(), _settings_client.network.max_password_time); @@ -1958,9 +1932,9 @@ void NetworkServerShowStatusToConsole() { static const char * const stat_str[] = { "inactive", + "authorizing", + "identifing client", "checking NewGRFs", - "authorizing (server password)", - "authorizing (company password)", "authorized", "waiting", "loading map", @@ -2000,25 +1974,6 @@ void NetworkServerUpdateGameInfo() if (_network_server) FillStaticNetworkServerGameInfo(); } -/** - * Tell that a particular company is (not) passworded. - * @param company_id The company that got/removed the password. - * @param passworded Whether the password was received or removed. - */ -void NetworkServerUpdateCompanyPassworded(CompanyID company_id, bool passworded) -{ - if (NetworkCompanyIsPassworded(company_id) == passworded) return; - - SB(_network_company_passworded, company_id, 1, !!passworded); - SetWindowClassesDirty(WC_COMPANY); - - for (NetworkClientSocket *cs : NetworkClientSocket::Iterate()) { - if (cs->status >= NetworkClientSocket::STATUS_PRE_ACTIVE) cs->SendCompanyUpdate(); - } - - NetworkAdminCompanyUpdate(Company::GetIfValid(company_id)); -} - /** * Handle the tid-bits of moving a client from one company to another. * @param client_id id of the client we want to move. @@ -2176,6 +2131,18 @@ void NetworkPrintClients() } } +/** + * Get the public key of the client with the given id. + * @param client_id The id of the client. + * @return View of the public key, which is empty when the client does not exist. + */ +std::string_view NetworkGetPublicKeyOfClient(ClientID client_id) +{ + auto socket = NetworkClientSocket::GetByClientID(client_id); + return socket == nullptr ? "" : socket->GetPeerPublicKey(); +} + + /** * Perform all the server specific administration of a new company. * @param c The newly created company; can't be nullptr. @@ -2187,21 +2154,20 @@ void NetworkServerNewCompany(const Company *c, NetworkClientInfo *ci) if (!_network_server) return; - _network_company_states[c->index].months_empty = 0; - _network_company_states[c->index].password.clear(); - NetworkServerUpdateCompanyPassworded(c->index, false); - if (ci != nullptr) { /* ci is nullptr when replaying, or for AIs. In neither case there is a client. */ ci->client_playas = c->index; NetworkUpdateClientInfo(ci->client_id); - Command::SendNet(STR_NULL, c->index, ci->client_name); - } - if (ci != nullptr) { - /* ci is nullptr when replaying, or for AIs. In neither case there is a client. - We need to send Admin port update here so that they first know about the new company - and then learn about a possibly joining client (see FS#6025) */ + /* + * This function is called from a command, but is only called for the server. + * The client information is managed out-of-band from the commands, so to not have a + * different state/president/company name in the different clients, we need to + * circumvent the normal ::Post logic and go directly to sending the command. + */ + Command::SendNet(STR_NULL, c->index, CALCA_ADD, ci->public_key); + Command::SendNet(STR_NULL, c->index, ci->client_name); + NetworkServerSendChat(NETWORK_ACTION_COMPANY_NEW, DESTTYPE_BROADCAST, 0, "", ci->client_id, c->index + 1); } } diff --git a/src/network/network_server.h b/src/network/network_server.h index bbf9817248..31aa2739bc 100644 --- a/src/network/network_server.h +++ b/src/network/network_server.h @@ -23,16 +23,18 @@ extern NetworkClientSocketPool _networkclientsocket_pool; /** Class for handling the server side of the game connection. */ class ServerNetworkGameSocketHandler : public NetworkClientSocketPool::PoolItem<&_networkclientsocket_pool>, public NetworkGameSocketHandler, public TCPListenHandler { protected: + std::unique_ptr authentication_handler; ///< The handler for the authentication. + std::string peer_public_key; ///< The public key of our client. + NetworkRecvStatus Receive_CLIENT_JOIN(Packet &p) override; + NetworkRecvStatus Receive_CLIENT_IDENTIFY(Packet &p) override; NetworkRecvStatus Receive_CLIENT_GAME_INFO(Packet &p) override; - NetworkRecvStatus Receive_CLIENT_GAME_PASSWORD(Packet &p) override; - NetworkRecvStatus Receive_CLIENT_COMPANY_PASSWORD(Packet &p) override; + NetworkRecvStatus Receive_CLIENT_AUTH_RESPONSE(Packet &p) override; NetworkRecvStatus Receive_CLIENT_GETMAP(Packet &p) override; NetworkRecvStatus Receive_CLIENT_MAP_OK(Packet &p) override; NetworkRecvStatus Receive_CLIENT_ACK(Packet &p) override; NetworkRecvStatus Receive_CLIENT_COMMAND(Packet &p) override; NetworkRecvStatus Receive_CLIENT_CHAT(Packet &p) override; - NetworkRecvStatus Receive_CLIENT_SET_PASSWORD(Packet &p) override; NetworkRecvStatus Receive_CLIENT_SET_NAME(Packet &p) override; NetworkRecvStatus Receive_CLIENT_QUIT(Packet &p) override; NetworkRecvStatus Receive_CLIENT_ERROR(Packet &p) override; @@ -43,16 +45,16 @@ protected: NetworkRecvStatus SendGameInfo(); NetworkRecvStatus SendNewGRFCheck(); NetworkRecvStatus SendWelcome(); - NetworkRecvStatus SendNeedGamePassword(); - NetworkRecvStatus SendNeedCompanyPassword(); + NetworkRecvStatus SendAuthRequest(); + NetworkRecvStatus SendEnableEncryption(); public: /** Status of a client */ enum ClientStatus { STATUS_INACTIVE, ///< The client is not connected nor active. - STATUS_NEWGRFS_CHECK, ///< The client is checking NewGRFs. STATUS_AUTH_GAME, ///< The client is authorizing with game (server) password. - STATUS_AUTH_COMPANY, ///< The client is authorizing with company password. + STATUS_IDENTIFY, ///< The client is identifying itself. + STATUS_NEWGRFS_CHECK, ///< The client is checking NewGRFs. STATUS_AUTHORIZED, ///< The client is authorized. STATUS_MAP_WAIT, ///< The client is waiting as someone else is downloading the map. STATUS_MAP, ///< The client is downloading the map. @@ -62,8 +64,8 @@ public: STATUS_END, ///< Must ALWAYS be on the end of this list!! (period). }; - byte lag_test; ///< Byte used for lag-testing the client - byte last_token; ///< The last random token we did send to verify the client is listening + uint8_t lag_test; ///< Byte used for lag-testing the client + uint8_t last_token; ///< The last random token we did send to verify the client is listening uint32_t last_token_frame; ///< The last frame we received the right token ClientStatus status; ///< Status of this client CommandQueue outgoing_queue; ///< The command-queue awaiting delivery; conceptually more a bucket to gather commands in, after which the whole bucket is sent to the client. @@ -98,7 +100,6 @@ public: NetworkRecvStatus SendFrame(); NetworkRecvStatus SendSync(); NetworkRecvStatus SendCommand(const CommandPacket &cp); - NetworkRecvStatus SendCompanyUpdate(); NetworkRecvStatus SendConfigUpdate(); static void Send(); @@ -115,13 +116,12 @@ public: } const std::string &GetClientIP(); + std::string_view GetPeerPublicKey() const { return this->peer_public_key; } static ServerNetworkGameSocketHandler *GetByClientID(ClientID client_id); }; void NetworkServer_Tick(bool send_frame); void ChangeNetworkRestartTime(bool reset); -void NetworkServerSetCompanyPassword(CompanyID company_id, const std::string &password, bool already_hashed = true); -void NetworkServerUpdateCompanyPassworded(CompanyID company_id, bool passworded); #endif /* NETWORK_SERVER_H */ diff --git a/src/network/network_stun.cpp b/src/network/network_stun.cpp index c606ff0c83..2acd438e56 100644 --- a/src/network/network_stun.cpp +++ b/src/network/network_stun.cpp @@ -92,7 +92,7 @@ std::unique_ptr ClientNetworkStunSocketHandler:: stun_handler->Connect(token, family); - auto p = std::make_unique(PACKET_STUN_SERCLI_STUN); + auto p = std::make_unique(stun_handler.get(), PACKET_STUN_SERCLI_STUN); p->Send_uint8(NETWORK_COORDINATOR_VERSION); p->Send_string(token); p->Send_uint8(family); diff --git a/src/network/network_survey.cpp b/src/network/network_survey.cpp index 59d9b22d60..9bdddc40c2 100644 --- a/src/network/network_survey.cpp +++ b/src/network/network_survey.cpp @@ -19,8 +19,6 @@ #include "../safeguards.h" -extern std::string _savegame_id; - NetworkSurveyHandler _survey = {}; NLOHMANN_JSON_SERIALIZE_ENUM(NetworkSurveyHandler::Reason, { @@ -43,7 +41,6 @@ std::string NetworkSurveyHandler::CreatePayload(Reason reason, bool for_preview) survey["schema"] = NETWORK_SURVEY_VERSION; survey["reason"] = reason; - survey["id"] = _savegame_id; survey["date"] = fmt::format("{:%Y-%m-%d %H:%M:%S} (UTC)", fmt::gmtime(time(nullptr))); #ifdef SURVEY_KEY @@ -53,6 +50,8 @@ std::string NetworkSurveyHandler::CreatePayload(Reason reason, bool for_preview) survey["key"] = ""; #endif + SurveyGameSession(survey["session"]); + { auto &info = survey["info"]; SurveyOS(info["os"]); diff --git a/src/network/network_turn.cpp b/src/network/network_turn.cpp index c3dfa75a0b..6626ae057d 100644 --- a/src/network/network_turn.cpp +++ b/src/network/network_turn.cpp @@ -100,7 +100,7 @@ void ClientNetworkTurnSocketHandler::Connect() { auto turn_handler = std::make_unique(token, tracking_number, connection_string); - auto p = std::make_unique(PACKET_TURN_SERCLI_CONNECT); + auto p = std::make_unique(turn_handler.get(), PACKET_TURN_SERCLI_CONNECT); p->Send_uint8(NETWORK_COORDINATOR_VERSION); p->Send_string(ticket); diff --git a/src/network/network_type.h b/src/network/network_type.h index 5244fe18d6..911a163de0 100644 --- a/src/network/network_type.h +++ b/src/network/network_type.h @@ -70,25 +70,13 @@ struct NetworkCompanyStats { bool ai; ///< Is this company an AI }; -/** Some state information of a company, especially for servers */ -struct NetworkCompanyState { - std::string password; ///< The password for the company - uint16_t months_empty; ///< How many months the company is empty -}; - struct NetworkClientInfo; -/** The type of password we're asking for. */ -enum NetworkPasswordType { - NETWORK_GAME_PASSWORD, ///< The password of the game. - NETWORK_COMPANY_PASSWORD, ///< The password of the company. -}; - /** * Destination of our chat messages. * @warning The values of the enum items are part of the admin network API. Only append at the end. */ -enum DestType : byte { +enum DestType : uint8_t { DESTTYPE_BROADCAST, ///< Send message/notice to all clients (All) DESTTYPE_TEAM, ///< Send message/notice to everyone playing the same company (Team) DESTTYPE_CLIENT, ///< Send message/notice to only a certain client (Private) @@ -145,8 +133,22 @@ enum NetworkErrorCode { NETWORK_ERROR_TIMEOUT_MAP, NETWORK_ERROR_TIMEOUT_JOIN, NETWORK_ERROR_INVALID_CLIENT_NAME, + NETWORK_ERROR_NOT_ON_ALLOW_LIST, NETWORK_ERROR_END, }; +/** + * Simple helper to (more easily) manage authorized keys. + * + * The authorized keys are hexadecimal representations of their binary form. + * The authorized keys are case insensitive. + */ +class NetworkAuthorizedKeys : public std::vector { +public: + bool Contains(std::string_view key) const; + bool Add(std::string_view key); + bool Remove(std::string_view key); +}; + #endif /* NETWORK_TYPE_H */ diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp index 478e804eaf..88aaea538e 100644 --- a/src/network/network_udp.cpp +++ b/src/network/network_udp.cpp @@ -75,7 +75,7 @@ public: void ServerNetworkUDPSocketHandler::Receive_CLIENT_FIND_SERVER(Packet &, NetworkAddress &client_addr) { - Packet packet(PACKET_UDP_SERVER_RESPONSE); + Packet packet(this, PACKET_UDP_SERVER_RESPONSE); this->SendPacket(packet, client_addr); Debug(net, 7, "Queried from {}", client_addr.GetHostname()); @@ -104,7 +104,7 @@ static void NetworkUDPBroadCast(NetworkUDPSocketHandler *socket) for (NetworkAddress &addr : _broadcast_list) { Debug(net, 5, "Broadcasting to {}", addr.GetHostname()); - Packet p(PACKET_UDP_CLIENT_FIND_SERVER); + Packet p(socket, PACKET_UDP_CLIENT_FIND_SERVER); socket->SendPacket(p, addr, true, true); } } diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 97d9878335..d276cdbba3 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -27,6 +27,7 @@ #include "newgrf_station.h" #include "industrytype.h" #include "industry_map.h" +#include "newgrf_act5.h" #include "newgrf_canal.h" #include "newgrf_townname.h" #include "newgrf_industries.h" @@ -73,7 +74,7 @@ const std::vector &GetAllGRFFiles() } /** Miscellaneous GRF features, set by Action 0x0D, parameter 0x9E */ -byte _misc_grf_features = 0; +uint8_t _misc_grf_features = 0; /** 32 * 8 = 256 flags. Apparently TTDPatch uses this many.. */ static uint32_t _ttdpatch_flags[8]; @@ -133,7 +134,7 @@ public: * @param numsets Number of sets to define. * @param numents Number of sprites per set to define. */ - void AddSpriteSets(byte feature, SpriteID first_sprite, uint first_set, uint numsets, uint numents) + void AddSpriteSets(uint8_t feature, SpriteID first_sprite, uint first_set, uint numsets, uint numents) { assert(feature < GSF_END); for (uint i = 0; i < numsets; i++) { @@ -149,7 +150,7 @@ public: * @return true if there are any valid sets. * @note Spritesets with zero sprites are valid to allow callback-failures. */ - bool HasValidSpriteSets(byte feature) const + bool HasValidSpriteSets(uint8_t feature) const { assert(feature < GSF_END); return !this->spritesets[feature].empty(); @@ -162,7 +163,7 @@ public: * @return true if the set is valid. * @note Spritesets with zero sprites are valid to allow callback-failures. */ - bool IsValidSpriteSet(byte feature, uint set) const + bool IsValidSpriteSet(uint8_t feature, uint set) const { assert(feature < GSF_END); return this->spritesets[feature].find(set) != this->spritesets[feature].end(); @@ -174,7 +175,7 @@ public: * @param set Set to query. * @return First sprite of the set. */ - SpriteID GetSprite(byte feature, uint set) const + SpriteID GetSprite(uint8_t feature, uint set) const { assert(IsValidSpriteSet(feature, set)); return this->spritesets[feature].find(set)->second.sprite; @@ -186,7 +187,7 @@ public: * @param set Set to query. * @return Number of sprites in the set. */ - uint GetNumEnts(byte feature, uint set) const + uint GetNumEnts(uint8_t feature, uint set) const { assert(IsValidSpriteSet(feature, set)); return this->spritesets[feature].find(set)->second.num_sprites; @@ -213,13 +214,13 @@ class OTTDByteReaderSignal { }; /** Class to read from a NewGRF file */ class ByteReader { protected: - byte *data; - byte *end; + uint8_t *data; + uint8_t *end; public: - ByteReader(byte *data, byte *end) : data(data), end(end) { } + ByteReader(uint8_t *data, uint8_t *end) : data(data), end(end) { } - inline byte *ReadBytes(size_t size) + inline uint8_t *ReadBytes(size_t size) { if (data + size >= end) { /* Put data at the end, as would happen if every byte had been individually read. */ @@ -227,12 +228,12 @@ public: throw OTTDByteReaderSignal(); } - byte *ret = data; + uint8_t *ret = data; data += size; return ret; } - inline byte ReadByte() + inline uint8_t ReadByte() { if (data < end) return *(data)++; throw OTTDByteReaderSignal(); @@ -256,7 +257,7 @@ public: return val | (ReadWord() << 16); } - uint32_t ReadVarSize(byte size) + uint32_t ReadVarSize(uint8_t size) { switch (size) { case 1: return ReadByte(); @@ -268,22 +269,15 @@ public: } } - const char *ReadString() + std::string_view ReadString() { char *string = reinterpret_cast(data); size_t string_length = ttd_strnlen(string, Remaining()); - if (string_length == Remaining()) { - /* String was not NUL terminated, so make sure it is now. */ - string[string_length - 1] = '\0'; - GrfMsg(7, "String was not terminated with a zero byte."); - } else { - /* Increase the string length to include the NUL byte. */ - string_length++; - } - Skip(string_length); + /* Skip past the terminating NUL byte if it is present, but not more than remaining. */ + Skip(std::min(string_length + 1, Remaining())); - return string; + return std::string_view(string, string_length); } inline size_t Remaining() const @@ -296,7 +290,7 @@ public: return data + count <= end; } - inline byte *Data() + inline uint8_t *Data() { return data; } @@ -310,7 +304,7 @@ public: } }; -typedef void (*SpecialSpriteHandler)(ByteReader *buf); +typedef void (*SpecialSpriteHandler)(ByteReader &buf); /** The maximum amount of stations a single GRF is allowed to add */ static const uint NUM_STATIONS_PER_GRF = UINT16_MAX - 1; @@ -376,8 +370,8 @@ struct GRFLocation { } }; -static std::map _grm_sprites; -typedef std::map> GRFLineToSpriteOverride; +static std::map> _grm_sprites; +typedef std::map> GRFLineToSpriteOverride; static GRFLineToSpriteOverride _grf_line_to_action6_sprite_override; /** @@ -458,12 +452,26 @@ static GRFError *DisableGrf(StringID message = STR_NULL, GRFConfig *config = nul * Information for mapping static StringIDs. */ struct StringIDMapping { - uint32_t grfid; ///< Source NewGRF. - StringID source; ///< Source StringID (GRF local). - StringID *target; ///< Destination for mapping result. + uint32_t grfid; ///< Source NewGRF. + StringID source; ///< Source StringID (GRF local). + std::function func; ///< Function for mapping result. + + StringIDMapping(uint32_t grfid, StringID source, std::function &&func) : grfid(grfid), source(source), func(std::move(func)) { } }; -typedef std::vector StringIDMappingVector; -static StringIDMappingVector _string_to_grf_mapping; + +/** Strings to be mapped during load. */ +static std::vector _string_to_grf_mapping; + +/** + * Record a static StringID for getting translated later. + * @param source Source StringID (GRF local). + * @param func Function to call to set the mapping result. + */ +static void AddStringForMapping(StringID source, std::function &&func) +{ + func(STR_UNDEFINED); + _string_to_grf_mapping.emplace_back(_cur.grffile->grfid, source, std::move(func)); +} /** * Record a static StringID for getting translated later. @@ -472,8 +480,7 @@ static StringIDMappingVector _string_to_grf_mapping; */ static void AddStringForMapping(StringID source, StringID *target) { - *target = STR_UNDEFINED; - _string_to_grf_mapping.push_back({_cur.grffile->grfid, source, target}); + AddStringForMapping(source, [target](StringID str) { *target = str; }); } /** @@ -583,8 +590,13 @@ static std::map _grf_id_overrides; */ static void SetNewGRFOverride(uint32_t source_grfid, uint32_t target_grfid) { - _grf_id_overrides[source_grfid] = target_grfid; - GrfMsg(5, "SetNewGRFOverride: Added override of 0x{:X} to 0x{:X}", BSWAP32(source_grfid), BSWAP32(target_grfid)); + if (target_grfid == 0) { + _grf_id_overrides.erase(source_grfid); + GrfMsg(5, "SetNewGRFOverride: Removed override of 0x{:X}", BSWAP32(source_grfid)); + } else { + _grf_id_overrides[source_grfid] = target_grfid; + GrfMsg(5, "SetNewGRFOverride: Added override of 0x{:X} to 0x{:X}", BSWAP32(source_grfid), BSWAP32(target_grfid)); + } } /** @@ -603,14 +615,13 @@ static Engine *GetNewEngine(const GRFFile *file, VehicleType type, uint16_t inte if (_settings_game.vehicle.dynamic_engines) { /* If dynamic_engies is enabled, there can be multiple independent ID ranges. */ scope_grfid = file->grfid; - uint32_t override = _grf_id_overrides[file->grfid]; - if (override != 0) { - scope_grfid = override; - const GRFFile *grf_match = GetFileByGRFID(override); + if (auto it = _grf_id_overrides.find(file->grfid); it != std::end(_grf_id_overrides)) { + scope_grfid = it->second; + const GRFFile *grf_match = GetFileByGRFID(scope_grfid); if (grf_match == nullptr) { - GrfMsg(5, "Tried mapping from GRFID {:x} to {:x} but target is not loaded", BSWAP32(file->grfid), BSWAP32(override)); + GrfMsg(5, "Tried mapping from GRFID {:x} to {:x} but target is not loaded", BSWAP32(file->grfid), BSWAP32(scope_grfid)); } else { - GrfMsg(5, "Mapping from GRFID {:x} to {:x}", BSWAP32(file->grfid), BSWAP32(override)); + GrfMsg(5, "Mapping from GRFID {:x} to {:x}", BSWAP32(file->grfid), BSWAP32(scope_grfid)); } } @@ -692,8 +703,9 @@ EngineID GetNewEngineID(const GRFFile *file, VehicleType type, uint16_t internal uint32_t scope_grfid = INVALID_GRFID; // If not using dynamic_engines, all newgrfs share their ID range if (_settings_game.vehicle.dynamic_engines) { scope_grfid = file->grfid; - uint32_t override = _grf_id_overrides[file->grfid]; - if (override != 0) scope_grfid = override; + if (auto it = _grf_id_overrides.find(file->grfid); it != std::end(_grf_id_overrides)) { + scope_grfid = it->second; + } } return _engine_mngr.GetID(type, internal_id, scope_grfid); @@ -734,11 +746,11 @@ static void MapSpriteMappingRecolour(PalSpriteID *grf_sprite) * @param[out] max_palette_offset Optionally returns the number of sprites in the spriteset of the palette. (0 if no spritset) * @return Read TileLayoutFlags. */ -static TileLayoutFlags ReadSpriteLayoutSprite(ByteReader *buf, bool read_flags, bool invert_action1_flag, bool use_cur_spritesets, int feature, PalSpriteID *grf_sprite, uint16_t *max_sprite_offset = nullptr, uint16_t *max_palette_offset = nullptr) +static TileLayoutFlags ReadSpriteLayoutSprite(ByteReader &buf, bool read_flags, bool invert_action1_flag, bool use_cur_spritesets, int feature, PalSpriteID *grf_sprite, uint16_t *max_sprite_offset = nullptr, uint16_t *max_palette_offset = nullptr) { - grf_sprite->sprite = buf->ReadWord(); - grf_sprite->pal = buf->ReadWord(); - TileLayoutFlags flags = read_flags ? (TileLayoutFlags)buf->ReadWord() : TLF_NOTHING; + grf_sprite->sprite = buf.ReadWord(); + grf_sprite->pal = buf.ReadWord(); + TileLayoutFlags flags = read_flags ? (TileLayoutFlags)buf.ReadWord() : TLF_NOTHING; MapSpriteMappingRecolour(grf_sprite); @@ -792,7 +804,7 @@ static TileLayoutFlags ReadSpriteLayoutSprite(ByteReader *buf, bool read_flags, * @param dts Sprite layout to insert data into. * @param index Sprite index to process; 0 for ground sprite. */ -static void ReadSpriteLayoutRegisters(ByteReader *buf, TileLayoutFlags flags, bool is_parent, NewGRFSpriteLayout *dts, uint index) +static void ReadSpriteLayoutRegisters(ByteReader &buf, TileLayoutFlags flags, bool is_parent, NewGRFSpriteLayout *dts, uint index) { if (!(flags & TLF_DRAWING_FLAGS)) return; @@ -800,23 +812,23 @@ static void ReadSpriteLayoutRegisters(ByteReader *buf, TileLayoutFlags flags, bo TileLayoutRegisters ®s = const_cast(dts->registers[index]); regs.flags = flags & TLF_DRAWING_FLAGS; - if (flags & TLF_DODRAW) regs.dodraw = buf->ReadByte(); - if (flags & TLF_SPRITE) regs.sprite = buf->ReadByte(); - if (flags & TLF_PALETTE) regs.palette = buf->ReadByte(); + if (flags & TLF_DODRAW) regs.dodraw = buf.ReadByte(); + if (flags & TLF_SPRITE) regs.sprite = buf.ReadByte(); + if (flags & TLF_PALETTE) regs.palette = buf.ReadByte(); if (is_parent) { if (flags & TLF_BB_XY_OFFSET) { - regs.delta.parent[0] = buf->ReadByte(); - regs.delta.parent[1] = buf->ReadByte(); + regs.delta.parent[0] = buf.ReadByte(); + regs.delta.parent[1] = buf.ReadByte(); } - if (flags & TLF_BB_Z_OFFSET) regs.delta.parent[2] = buf->ReadByte(); + if (flags & TLF_BB_Z_OFFSET) regs.delta.parent[2] = buf.ReadByte(); } else { - if (flags & TLF_CHILD_X_OFFSET) regs.delta.child[0] = buf->ReadByte(); - if (flags & TLF_CHILD_Y_OFFSET) regs.delta.child[1] = buf->ReadByte(); + if (flags & TLF_CHILD_X_OFFSET) regs.delta.child[0] = buf.ReadByte(); + if (flags & TLF_CHILD_Y_OFFSET) regs.delta.child[1] = buf.ReadByte(); } if (flags & TLF_SPRITE_VAR10) { - regs.sprite_var10 = buf->ReadByte(); + regs.sprite_var10 = buf.ReadByte(); if (regs.sprite_var10 > TLR_MAX_VAR10) { GrfMsg(1, "ReadSpriteLayoutRegisters: Spritelayout specifies var10 ({}) exceeding the maximal allowed value {}", regs.sprite_var10, TLR_MAX_VAR10); DisableGrf(STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT); @@ -825,7 +837,7 @@ static void ReadSpriteLayoutRegisters(ByteReader *buf, TileLayoutFlags flags, bo } if (flags & TLF_PALETTE_VAR10) { - regs.palette_var10 = buf->ReadByte(); + regs.palette_var10 = buf.ReadByte(); if (regs.palette_var10 > TLR_MAX_VAR10) { GrfMsg(1, "ReadSpriteLayoutRegisters: Spritelayout specifies var10 ({}) exceeding the maximal allowed value {}", regs.palette_var10, TLR_MAX_VAR10); DisableGrf(STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT); @@ -845,7 +857,7 @@ static void ReadSpriteLayoutRegisters(ByteReader *buf, TileLayoutFlags flags, bo * @param dts Layout container to output into * @return True on error (GRF was disabled). */ -static bool ReadSpriteLayout(ByteReader *buf, uint num_building_sprites, bool use_cur_spritesets, byte feature, bool allow_var10, bool no_z_position, NewGRFSpriteLayout *dts) +static bool ReadSpriteLayout(ByteReader &buf, uint num_building_sprites, bool use_cur_spritesets, uint8_t feature, bool allow_var10, bool no_z_position, NewGRFSpriteLayout *dts) { bool has_flags = HasBit(num_building_sprites, 6); ClrBit(num_building_sprites, 6); @@ -881,15 +893,15 @@ static bool ReadSpriteLayout(ByteReader *buf, uint num_building_sprites, bool us return true; } - seq->delta_x = buf->ReadByte(); - seq->delta_y = buf->ReadByte(); + seq->delta_x = buf.ReadByte(); + seq->delta_y = buf.ReadByte(); - if (!no_z_position) seq->delta_z = buf->ReadByte(); + if (!no_z_position) seq->delta_z = buf.ReadByte(); if (seq->IsParentSprite()) { - seq->size_x = buf->ReadByte(); - seq->size_y = buf->ReadByte(); - seq->size_z = buf->ReadByte(); + seq->size_x = buf.ReadByte(); + seq->size_y = buf.ReadByte(); + seq->size_z = buf.ReadByte(); } ReadSpriteLayoutRegisters(buf, flags, seq->IsParentSprite(), dts, i + 1); @@ -983,7 +995,7 @@ enum ChangeInfoResult { CIR_INVALID_ID, ///< Attempt to modify an invalid ID }; -typedef ChangeInfoResult (*VCI_Handler)(uint engine, int numinfo, int prop, ByteReader *buf); +typedef ChangeInfoResult (*VCI_Handler)(uint engine, int numinfo, int prop, ByteReader &buf); /** * Define properties common to all vehicles @@ -992,32 +1004,32 @@ typedef ChangeInfoResult (*VCI_Handler)(uint engine, int numinfo, int prop, Byte * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult CommonVehicleChangeInfo(EngineInfo *ei, int prop, ByteReader *buf) +static ChangeInfoResult CommonVehicleChangeInfo(EngineInfo *ei, int prop, ByteReader &buf) { switch (prop) { case 0x00: // Introduction date - ei->base_intro = buf->ReadWord() + CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR; + ei->base_intro = buf.ReadWord() + CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR; break; case 0x02: // Decay speed - ei->decay_speed = buf->ReadByte(); + ei->decay_speed = buf.ReadByte(); break; case 0x03: // Vehicle life - ei->lifelength = buf->ReadByte(); + ei->lifelength = buf.ReadByte(); break; case 0x04: // Model life - ei->base_life = buf->ReadByte(); + ei->base_life = buf.ReadByte(); break; case 0x06: // Climates available - ei->climates = buf->ReadByte(); + ei->climates = buf.ReadByte(); break; case PROP_VEHICLE_LOAD_AMOUNT: // 0x07 Loading speed /* Amount of cargo loaded during a vehicle's "loading tick" */ - ei->load_amount = buf->ReadByte(); + ei->load_amount = buf.ReadByte(); break; default: @@ -1035,7 +1047,7 @@ static ChangeInfoResult CommonVehicleChangeInfo(EngineInfo *ei, int prop, ByteRe * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1048,7 +1060,7 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop switch (prop) { case 0x05: { // Track type - uint8_t tracktype = buf->ReadByte(); + uint8_t tracktype = buf.ReadByte(); if (tracktype < _cur.grffile->railtype_list.size()) { _gted[e->index].railtypelabel = _cur.grffile->railtype_list[tracktype]; @@ -1069,11 +1081,11 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop case 0x08: // AI passenger service /* Tells the AI that this engine is designed for * passenger services and shouldn't be used for freight. */ - rvi->ai_passenger_only = buf->ReadByte(); + rvi->ai_passenger_only = buf.ReadByte(); break; case PROP_TRAIN_SPEED: { // 0x09 Speed (1 unit is 1 km-ish/h) - uint16_t speed = buf->ReadWord(); + uint16_t speed = buf.ReadWord(); if (speed == 0xFFFF) speed = 0; rvi->max_speed = speed; @@ -1081,7 +1093,7 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop } case PROP_TRAIN_POWER: // 0x0B Power - rvi->power = buf->ReadWord(); + rvi->power = buf.ReadWord(); /* Set engine / wagon state based on power */ if (rvi->power != 0) { @@ -1094,15 +1106,15 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop break; case PROP_TRAIN_RUNNING_COST_FACTOR: // 0x0D Running cost factor - rvi->running_cost = buf->ReadByte(); + rvi->running_cost = buf.ReadByte(); break; case 0x0E: // Running cost base - ConvertTTDBasePrice(buf->ReadDWord(), "RailVehicleChangeInfo", &rvi->running_cost_class); + ConvertTTDBasePrice(buf.ReadDWord(), "RailVehicleChangeInfo", &rvi->running_cost_class); break; case 0x12: { // Sprite ID - uint8_t spriteid = buf->ReadByte(); + uint8_t spriteid = buf.ReadByte(); uint8_t orig_spriteid = spriteid; /* TTD sprite IDs point to a location in a 16bit array, but we use it @@ -1119,7 +1131,7 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop } case 0x13: { // Dual-headed - uint8_t dual = buf->ReadByte(); + uint8_t dual = buf.ReadByte(); if (dual != 0) { rvi->railveh_type = RAILVEH_MULTIHEAD; @@ -1131,12 +1143,12 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop } case PROP_TRAIN_CARGO_CAPACITY: // 0x14 Cargo capacity - rvi->capacity = buf->ReadByte(); + rvi->capacity = buf.ReadByte(); break; case 0x15: { // Cargo type _gted[e->index].defaultcargo_grf = _cur.grffile; - uint8_t ctype = buf->ReadByte(); + uint8_t ctype = buf.ReadByte(); if (ctype == 0xFF) { /* 0xFF is specified as 'use first refittable' */ @@ -1156,16 +1168,16 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop } case PROP_TRAIN_WEIGHT: // 0x16 Weight - SB(rvi->weight, 0, 8, buf->ReadByte()); + SB(rvi->weight, 0, 8, buf.ReadByte()); break; case PROP_TRAIN_COST_FACTOR: // 0x17 Cost factor - rvi->cost_factor = buf->ReadByte(); + rvi->cost_factor = buf.ReadByte(); break; case 0x18: // AI rank GrfMsg(2, "RailVehicleChangeInfo: Property 0x18 'AI rank' not used by NoAI, ignored."); - buf->ReadByte(); + buf.ReadByte(); break; case 0x19: { // Engine traction type @@ -1176,7 +1188,7 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop * 0x32 .. 0x37: Monorail * 0x38 .. 0x41: Maglev */ - uint8_t traction = buf->ReadByte(); + uint8_t traction = buf.ReadByte(); EngineClass engclass; if (traction <= 0x07) { @@ -1205,19 +1217,19 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop } case 0x1A: // Alter purchase list sort order - AlterVehicleListOrder(e->index, buf->ReadExtendedByte()); + AlterVehicleListOrder(e->index, buf.ReadExtendedByte()); break; case 0x1B: // Powered wagons power bonus - rvi->pow_wag_power = buf->ReadWord(); + rvi->pow_wag_power = buf.ReadWord(); break; case 0x1C: // Refit cost - ei->refit_cost = buf->ReadByte(); + ei->refit_cost = buf.ReadByte(); break; case 0x1D: { // Refit cargo - uint32_t mask = buf->ReadDWord(); + uint32_t mask = buf.ReadDWord(); _gted[e->index].UpdateRefittability(mask != 0); ei->refit_mask = TranslateRefitMask(mask); _gted[e->index].defaultcargo_grf = _cur.grffile; @@ -1225,23 +1237,23 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop } case 0x1E: // Callback - SB(ei->callback_mask, 0, 8, buf->ReadByte()); + SB(ei->callback_mask, 0, 8, buf.ReadByte()); break; case PROP_TRAIN_TRACTIVE_EFFORT: // 0x1F Tractive effort coefficient - rvi->tractive_effort = buf->ReadByte(); + rvi->tractive_effort = buf.ReadByte(); break; case 0x20: // Air drag - rvi->air_drag = buf->ReadByte(); + rvi->air_drag = buf.ReadByte(); break; case PROP_TRAIN_SHORTEN_FACTOR: // 0x21 Shorter vehicle - rvi->shorten_factor = buf->ReadByte(); + rvi->shorten_factor = buf.ReadByte(); break; case 0x22: // Visual effect - rvi->visual_effect = buf->ReadByte(); + rvi->visual_effect = buf.ReadByte(); /* Avoid accidentally setting visual_effect to the default value * Since bit 6 (disable effects) is set anyways, we can safely erase some bits. */ if (rvi->visual_effect == VE_DEFAULT) { @@ -1251,11 +1263,11 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop break; case 0x23: // Powered wagons weight bonus - rvi->pow_wag_weight = buf->ReadByte(); + rvi->pow_wag_weight = buf.ReadByte(); break; case 0x24: { // High byte of vehicle weight - byte weight = buf->ReadByte(); + uint8_t weight = buf.ReadByte(); if (weight > 4) { GrfMsg(2, "RailVehicleChangeInfo: Nonsensical weight of {} tons, ignoring", weight << 8); @@ -1266,65 +1278,65 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop } case PROP_TRAIN_USER_DATA: // 0x25 User-defined bit mask to set when checking veh. var. 42 - rvi->user_def_data = buf->ReadByte(); + rvi->user_def_data = buf.ReadByte(); break; case 0x26: // Retire vehicle early - ei->retire_early = buf->ReadByte(); + ei->retire_early = buf.ReadByte(); break; case 0x27: // Miscellaneous flags - ei->misc_flags = buf->ReadByte(); + ei->misc_flags = buf.ReadByte(); _loaded_newgrf_features.has_2CC |= HasBit(ei->misc_flags, EF_USES_2CC); break; case 0x28: // Cargo classes allowed - _gted[e->index].cargo_allowed = buf->ReadWord(); + _gted[e->index].cargo_allowed = buf.ReadWord(); _gted[e->index].UpdateRefittability(_gted[e->index].cargo_allowed != 0); _gted[e->index].defaultcargo_grf = _cur.grffile; break; case 0x29: // Cargo classes disallowed - _gted[e->index].cargo_disallowed = buf->ReadWord(); + _gted[e->index].cargo_disallowed = buf.ReadWord(); _gted[e->index].UpdateRefittability(false); break; case 0x2A: // Long format introduction date (days since year 0) - ei->base_intro = buf->ReadDWord(); + ei->base_intro = buf.ReadDWord(); break; case PROP_TRAIN_CARGO_AGE_PERIOD: // 0x2B Cargo aging period - ei->cargo_age_period = buf->ReadWord(); + ei->cargo_age_period = buf.ReadWord(); break; case 0x2C: // CTT refit include list case 0x2D: { // CTT refit exclude list - uint8_t count = buf->ReadByte(); + uint8_t count = buf.ReadByte(); _gted[e->index].UpdateRefittability(prop == 0x2C && count != 0); if (prop == 0x2C) _gted[e->index].defaultcargo_grf = _cur.grffile; CargoTypes &ctt = prop == 0x2C ? _gted[e->index].ctt_include_mask : _gted[e->index].ctt_exclude_mask; ctt = 0; while (count--) { - CargoID ctype = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + CargoID ctype = GetCargoTranslation(buf.ReadByte(), _cur.grffile); if (IsValidCargoID(ctype)) SetBit(ctt, ctype); } break; } case PROP_TRAIN_CURVE_SPEED_MOD: // 0x2E Curve speed modifier - rvi->curve_speed_mod = buf->ReadWord(); + rvi->curve_speed_mod = buf.ReadWord(); break; case 0x2F: // Engine variant - ei->variant_id = buf->ReadWord(); + ei->variant_id = buf.ReadWord(); break; case 0x30: // Extra miscellaneous flags - ei->extra_flags = static_cast(buf->ReadDWord()); + ei->extra_flags = static_cast(buf.ReadDWord()); break; case 0x31: // Callback additional mask - SB(ei->callback_mask, 8, 8, buf->ReadByte()); + SB(ei->callback_mask, 8, 8, buf.ReadByte()); break; default: @@ -1344,7 +1356,7 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1359,23 +1371,23 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop case 0x05: // Road/tram type /* RoadTypeLabel is looked up later after the engine's road/tram * flag is set, however 0 means the value has not been set. */ - _gted[e->index].roadtramtype = buf->ReadByte() + 1; + _gted[e->index].roadtramtype = buf.ReadByte() + 1; break; case 0x08: // Speed (1 unit is 0.5 kmh) - rvi->max_speed = buf->ReadByte(); + rvi->max_speed = buf.ReadByte(); break; case PROP_ROADVEH_RUNNING_COST_FACTOR: // 0x09 Running cost factor - rvi->running_cost = buf->ReadByte(); + rvi->running_cost = buf.ReadByte(); break; case 0x0A: // Running cost base - ConvertTTDBasePrice(buf->ReadDWord(), "RoadVehicleChangeInfo", &rvi->running_cost_class); + ConvertTTDBasePrice(buf.ReadDWord(), "RoadVehicleChangeInfo", &rvi->running_cost_class); break; case 0x0E: { // Sprite ID - uint8_t spriteid = buf->ReadByte(); + uint8_t spriteid = buf.ReadByte(); uint8_t orig_spriteid = spriteid; /* cars have different custom id in the GRF file */ @@ -1393,12 +1405,12 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop } case PROP_ROADVEH_CARGO_CAPACITY: // 0x0F Cargo capacity - rvi->capacity = buf->ReadByte(); + rvi->capacity = buf.ReadByte(); break; case 0x10: { // Cargo type _gted[e->index].defaultcargo_grf = _cur.grffile; - uint8_t ctype = buf->ReadByte(); + uint8_t ctype = buf.ReadByte(); if (ctype == 0xFF) { /* 0xFF is specified as 'use first refittable' */ @@ -1418,27 +1430,27 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop } case PROP_ROADVEH_COST_FACTOR: // 0x11 Cost factor - rvi->cost_factor = buf->ReadByte(); + rvi->cost_factor = buf.ReadByte(); break; case 0x12: // SFX - rvi->sfx = GetNewGRFSoundID(_cur.grffile, buf->ReadByte()); + rvi->sfx = GetNewGRFSoundID(_cur.grffile, buf.ReadByte()); break; case PROP_ROADVEH_POWER: // Power in units of 10 HP. - rvi->power = buf->ReadByte(); + rvi->power = buf.ReadByte(); break; case PROP_ROADVEH_WEIGHT: // Weight in units of 1/4 tons. - rvi->weight = buf->ReadByte(); + rvi->weight = buf.ReadByte(); break; case PROP_ROADVEH_SPEED: // Speed in mph/0.8 - _gted[e->index].rv_max_speed = buf->ReadByte(); + _gted[e->index].rv_max_speed = buf.ReadByte(); break; case 0x16: { // Cargoes available for refitting - uint32_t mask = buf->ReadDWord(); + uint32_t mask = buf.ReadDWord(); _gted[e->index].UpdateRefittability(mask != 0); ei->refit_mask = TranslateRefitMask(mask); _gted[e->index].defaultcargo_grf = _cur.grffile; @@ -1446,51 +1458,51 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop } case 0x17: // Callback mask - SB(ei->callback_mask, 0, 8, buf->ReadByte()); + SB(ei->callback_mask, 0, 8, buf.ReadByte()); break; case PROP_ROADVEH_TRACTIVE_EFFORT: // Tractive effort coefficient in 1/256. - rvi->tractive_effort = buf->ReadByte(); + rvi->tractive_effort = buf.ReadByte(); break; case 0x19: // Air drag - rvi->air_drag = buf->ReadByte(); + rvi->air_drag = buf.ReadByte(); break; case 0x1A: // Refit cost - ei->refit_cost = buf->ReadByte(); + ei->refit_cost = buf.ReadByte(); break; case 0x1B: // Retire vehicle early - ei->retire_early = buf->ReadByte(); + ei->retire_early = buf.ReadByte(); break; case 0x1C: // Miscellaneous flags - ei->misc_flags = buf->ReadByte(); + ei->misc_flags = buf.ReadByte(); _loaded_newgrf_features.has_2CC |= HasBit(ei->misc_flags, EF_USES_2CC); break; case 0x1D: // Cargo classes allowed - _gted[e->index].cargo_allowed = buf->ReadWord(); + _gted[e->index].cargo_allowed = buf.ReadWord(); _gted[e->index].UpdateRefittability(_gted[e->index].cargo_allowed != 0); _gted[e->index].defaultcargo_grf = _cur.grffile; break; case 0x1E: // Cargo classes disallowed - _gted[e->index].cargo_disallowed = buf->ReadWord(); + _gted[e->index].cargo_disallowed = buf.ReadWord(); _gted[e->index].UpdateRefittability(false); break; case 0x1F: // Long format introduction date (days since year 0) - ei->base_intro = buf->ReadDWord(); + ei->base_intro = buf.ReadDWord(); break; case 0x20: // Alter purchase list sort order - AlterVehicleListOrder(e->index, buf->ReadExtendedByte()); + AlterVehicleListOrder(e->index, buf.ReadExtendedByte()); break; case 0x21: // Visual effect - rvi->visual_effect = buf->ReadByte(); + rvi->visual_effect = buf.ReadByte(); /* Avoid accidentally setting visual_effect to the default value * Since bit 6 (disable effects) is set anyways, we can safely erase some bits. */ if (rvi->visual_effect == VE_DEFAULT) { @@ -1500,37 +1512,37 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop break; case PROP_ROADVEH_CARGO_AGE_PERIOD: // 0x22 Cargo aging period - ei->cargo_age_period = buf->ReadWord(); + ei->cargo_age_period = buf.ReadWord(); break; case PROP_ROADVEH_SHORTEN_FACTOR: // 0x23 Shorter vehicle - rvi->shorten_factor = buf->ReadByte(); + rvi->shorten_factor = buf.ReadByte(); break; case 0x24: // CTT refit include list case 0x25: { // CTT refit exclude list - uint8_t count = buf->ReadByte(); + uint8_t count = buf.ReadByte(); _gted[e->index].UpdateRefittability(prop == 0x24 && count != 0); if (prop == 0x24) _gted[e->index].defaultcargo_grf = _cur.grffile; CargoTypes &ctt = prop == 0x24 ? _gted[e->index].ctt_include_mask : _gted[e->index].ctt_exclude_mask; ctt = 0; while (count--) { - CargoID ctype = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + CargoID ctype = GetCargoTranslation(buf.ReadByte(), _cur.grffile); if (IsValidCargoID(ctype)) SetBit(ctt, ctype); } break; } case 0x26: // Engine variant - ei->variant_id = buf->ReadWord(); + ei->variant_id = buf.ReadWord(); break; case 0x27: // Extra miscellaneous flags - ei->extra_flags = static_cast(buf->ReadDWord()); + ei->extra_flags = static_cast(buf.ReadDWord()); break; case 0x28: // Callback additional mask - SB(ei->callback_mask, 8, 8, buf->ReadByte()); + SB(ei->callback_mask, 8, 8, buf.ReadByte()); break; default: @@ -1550,7 +1562,7 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1563,7 +1575,7 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop switch (prop) { case 0x08: { // Sprite ID - uint8_t spriteid = buf->ReadByte(); + uint8_t spriteid = buf.ReadByte(); uint8_t orig_spriteid = spriteid; /* ships have different custom id in the GRF file */ @@ -1581,20 +1593,20 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop } case 0x09: // Refittable - svi->old_refittable = (buf->ReadByte() != 0); + svi->old_refittable = (buf.ReadByte() != 0); break; case PROP_SHIP_COST_FACTOR: // 0x0A Cost factor - svi->cost_factor = buf->ReadByte(); + svi->cost_factor = buf.ReadByte(); break; case PROP_SHIP_SPEED: // 0x0B Speed (1 unit is 0.5 km-ish/h). Use 0x23 to achieve higher speeds. - svi->max_speed = buf->ReadByte(); + svi->max_speed = buf.ReadByte(); break; case 0x0C: { // Cargo type _gted[e->index].defaultcargo_grf = _cur.grffile; - uint8_t ctype = buf->ReadByte(); + uint8_t ctype = buf.ReadByte(); if (ctype == 0xFF) { /* 0xFF is specified as 'use first refittable' */ @@ -1614,19 +1626,19 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop } case PROP_SHIP_CARGO_CAPACITY: // 0x0D Cargo capacity - svi->capacity = buf->ReadWord(); + svi->capacity = buf.ReadWord(); break; case PROP_SHIP_RUNNING_COST_FACTOR: // 0x0F Running cost factor - svi->running_cost = buf->ReadByte(); + svi->running_cost = buf.ReadByte(); break; case 0x10: // SFX - svi->sfx = GetNewGRFSoundID(_cur.grffile, buf->ReadByte()); + svi->sfx = GetNewGRFSoundID(_cur.grffile, buf.ReadByte()); break; case 0x11: { // Cargoes available for refitting - uint32_t mask = buf->ReadDWord(); + uint32_t mask = buf.ReadDWord(); _gted[e->index].UpdateRefittability(mask != 0); ei->refit_mask = TranslateRefitMask(mask); _gted[e->index].defaultcargo_grf = _cur.grffile; @@ -1634,51 +1646,51 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop } case 0x12: // Callback mask - SB(ei->callback_mask, 0, 8, buf->ReadByte()); + SB(ei->callback_mask, 0, 8, buf.ReadByte()); break; case 0x13: // Refit cost - ei->refit_cost = buf->ReadByte(); + ei->refit_cost = buf.ReadByte(); break; case 0x14: // Ocean speed fraction - svi->ocean_speed_frac = buf->ReadByte(); + svi->ocean_speed_frac = buf.ReadByte(); break; case 0x15: // Canal speed fraction - svi->canal_speed_frac = buf->ReadByte(); + svi->canal_speed_frac = buf.ReadByte(); break; case 0x16: // Retire vehicle early - ei->retire_early = buf->ReadByte(); + ei->retire_early = buf.ReadByte(); break; case 0x17: // Miscellaneous flags - ei->misc_flags = buf->ReadByte(); + ei->misc_flags = buf.ReadByte(); _loaded_newgrf_features.has_2CC |= HasBit(ei->misc_flags, EF_USES_2CC); break; case 0x18: // Cargo classes allowed - _gted[e->index].cargo_allowed = buf->ReadWord(); + _gted[e->index].cargo_allowed = buf.ReadWord(); _gted[e->index].UpdateRefittability(_gted[e->index].cargo_allowed != 0); _gted[e->index].defaultcargo_grf = _cur.grffile; break; case 0x19: // Cargo classes disallowed - _gted[e->index].cargo_disallowed = buf->ReadWord(); + _gted[e->index].cargo_disallowed = buf.ReadWord(); _gted[e->index].UpdateRefittability(false); break; case 0x1A: // Long format introduction date (days since year 0) - ei->base_intro = buf->ReadDWord(); + ei->base_intro = buf.ReadDWord(); break; case 0x1B: // Alter purchase list sort order - AlterVehicleListOrder(e->index, buf->ReadExtendedByte()); + AlterVehicleListOrder(e->index, buf.ReadExtendedByte()); break; case 0x1C: // Visual effect - svi->visual_effect = buf->ReadByte(); + svi->visual_effect = buf.ReadByte(); /* Avoid accidentally setting visual_effect to the default value * Since bit 6 (disable effects) is set anyways, we can safely erase some bits. */ if (svi->visual_effect == VE_DEFAULT) { @@ -1688,41 +1700,41 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop break; case PROP_SHIP_CARGO_AGE_PERIOD: // 0x1D Cargo aging period - ei->cargo_age_period = buf->ReadWord(); + ei->cargo_age_period = buf.ReadWord(); break; case 0x1E: // CTT refit include list case 0x1F: { // CTT refit exclude list - uint8_t count = buf->ReadByte(); + uint8_t count = buf.ReadByte(); _gted[e->index].UpdateRefittability(prop == 0x1E && count != 0); if (prop == 0x1E) _gted[e->index].defaultcargo_grf = _cur.grffile; CargoTypes &ctt = prop == 0x1E ? _gted[e->index].ctt_include_mask : _gted[e->index].ctt_exclude_mask; ctt = 0; while (count--) { - CargoID ctype = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + CargoID ctype = GetCargoTranslation(buf.ReadByte(), _cur.grffile); if (IsValidCargoID(ctype)) SetBit(ctt, ctype); } break; } case 0x20: // Engine variant - ei->variant_id = buf->ReadWord(); + ei->variant_id = buf.ReadWord(); break; case 0x21: // Extra miscellaneous flags - ei->extra_flags = static_cast(buf->ReadDWord()); + ei->extra_flags = static_cast(buf.ReadDWord()); break; case 0x22: // Callback additional mask - SB(ei->callback_mask, 8, 8, buf->ReadByte()); + SB(ei->callback_mask, 8, 8, buf.ReadByte()); break; case 0x23: // Speed (1 unit is 0.5 km-ish/h) - svi->max_speed = buf->ReadWord(); + svi->max_speed = buf.ReadWord(); break; case 0x24: // Acceleration (1 unit is 0.5 km-ish/h per tick) - svi->acceleration = std::max(1, buf->ReadByte()); + svi->acceleration = std::max(1, buf.ReadByte()); break; default: @@ -1742,7 +1754,7 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1755,7 +1767,7 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int switch (prop) { case 0x08: { // Sprite ID - uint8_t spriteid = buf->ReadByte(); + uint8_t spriteid = buf.ReadByte(); uint8_t orig_spriteid = spriteid; /* aircraft have different custom id in the GRF file */ @@ -1773,7 +1785,7 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int } case 0x09: // Helicopter - if (buf->ReadByte() == 0) { + if (buf.ReadByte() == 0) { avi->subtype = AIR_HELI; } else { SB(avi->subtype, 0, 1, 1); // AIR_CTOL @@ -1781,39 +1793,39 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int break; case 0x0A: // Large - SB(avi->subtype, 1, 1, (buf->ReadByte() != 0 ? 1 : 0)); // AIR_FAST + SB(avi->subtype, 1, 1, (buf.ReadByte() != 0 ? 1 : 0)); // AIR_FAST break; case PROP_AIRCRAFT_COST_FACTOR: // 0x0B Cost factor - avi->cost_factor = buf->ReadByte(); + avi->cost_factor = buf.ReadByte(); break; case PROP_AIRCRAFT_SPEED: // 0x0C Speed (1 unit is 8 mph, we translate to 1 unit is 1 km-ish/h) - avi->max_speed = (buf->ReadByte() * 128) / 10; + avi->max_speed = (buf.ReadByte() * 128) / 10; break; case 0x0D: // Acceleration - avi->acceleration = buf->ReadByte(); + avi->acceleration = buf.ReadByte(); break; case PROP_AIRCRAFT_RUNNING_COST_FACTOR: // 0x0E Running cost factor - avi->running_cost = buf->ReadByte(); + avi->running_cost = buf.ReadByte(); break; case PROP_AIRCRAFT_PASSENGER_CAPACITY: // 0x0F Passenger capacity - avi->passenger_capacity = buf->ReadWord(); + avi->passenger_capacity = buf.ReadWord(); break; case PROP_AIRCRAFT_MAIL_CAPACITY: // 0x11 Mail capacity - avi->mail_capacity = buf->ReadByte(); + avi->mail_capacity = buf.ReadByte(); break; case 0x12: // SFX - avi->sfx = GetNewGRFSoundID(_cur.grffile, buf->ReadByte()); + avi->sfx = GetNewGRFSoundID(_cur.grffile, buf.ReadByte()); break; case 0x13: { // Cargoes available for refitting - uint32_t mask = buf->ReadDWord(); + uint32_t mask = buf.ReadDWord(); _gted[e->index].UpdateRefittability(mask != 0); ei->refit_mask = TranslateRefitMask(mask); _gted[e->index].defaultcargo_grf = _cur.grffile; @@ -1821,73 +1833,73 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int } case 0x14: // Callback mask - SB(ei->callback_mask, 0, 8, buf->ReadByte()); + SB(ei->callback_mask, 0, 8, buf.ReadByte()); break; case 0x15: // Refit cost - ei->refit_cost = buf->ReadByte(); + ei->refit_cost = buf.ReadByte(); break; case 0x16: // Retire vehicle early - ei->retire_early = buf->ReadByte(); + ei->retire_early = buf.ReadByte(); break; case 0x17: // Miscellaneous flags - ei->misc_flags = buf->ReadByte(); + ei->misc_flags = buf.ReadByte(); _loaded_newgrf_features.has_2CC |= HasBit(ei->misc_flags, EF_USES_2CC); break; case 0x18: // Cargo classes allowed - _gted[e->index].cargo_allowed = buf->ReadWord(); + _gted[e->index].cargo_allowed = buf.ReadWord(); _gted[e->index].UpdateRefittability(_gted[e->index].cargo_allowed != 0); _gted[e->index].defaultcargo_grf = _cur.grffile; break; case 0x19: // Cargo classes disallowed - _gted[e->index].cargo_disallowed = buf->ReadWord(); + _gted[e->index].cargo_disallowed = buf.ReadWord(); _gted[e->index].UpdateRefittability(false); break; case 0x1A: // Long format introduction date (days since year 0) - ei->base_intro = buf->ReadDWord(); + ei->base_intro = buf.ReadDWord(); break; case 0x1B: // Alter purchase list sort order - AlterVehicleListOrder(e->index, buf->ReadExtendedByte()); + AlterVehicleListOrder(e->index, buf.ReadExtendedByte()); break; case PROP_AIRCRAFT_CARGO_AGE_PERIOD: // 0x1C Cargo aging period - ei->cargo_age_period = buf->ReadWord(); + ei->cargo_age_period = buf.ReadWord(); break; case 0x1D: // CTT refit include list case 0x1E: { // CTT refit exclude list - uint8_t count = buf->ReadByte(); + uint8_t count = buf.ReadByte(); _gted[e->index].UpdateRefittability(prop == 0x1D && count != 0); if (prop == 0x1D) _gted[e->index].defaultcargo_grf = _cur.grffile; CargoTypes &ctt = prop == 0x1D ? _gted[e->index].ctt_include_mask : _gted[e->index].ctt_exclude_mask; ctt = 0; while (count--) { - CargoID ctype = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + CargoID ctype = GetCargoTranslation(buf.ReadByte(), _cur.grffile); if (IsValidCargoID(ctype)) SetBit(ctt, ctype); } break; } case PROP_AIRCRAFT_RANGE: // 0x1F Max aircraft range - avi->max_range = buf->ReadWord(); + avi->max_range = buf.ReadWord(); break; case 0x20: // Engine variant - ei->variant_id = buf->ReadWord(); + ei->variant_id = buf.ReadWord(); break; case 0x21: // Extra miscellaneous flags - ei->extra_flags = static_cast(buf->ReadDWord()); + ei->extra_flags = static_cast(buf.ReadDWord()); break; case 0x22: // Callback additional mask - SB(ei->callback_mask, 8, 8, buf->ReadByte()); + SB(ei->callback_mask, 8, 8, buf.ReadByte()); break; default: @@ -1907,7 +1919,7 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1937,13 +1949,13 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte } /* Swap classid because we read it in BE meaning WAYP or DFLT */ - uint32_t classid = buf->ReadDWord(); - statspec->cls_id = StationClass::Allocate(BSWAP32(classid)); + uint32_t classid = buf.ReadDWord(); + statspec->class_index = StationClass::Allocate(BSWAP32(classid)); break; } case 0x09: { // Define sprite layout - uint16_t tiles = buf->ReadExtendedByte(); + uint16_t tiles = buf.ReadExtendedByte(); statspec->renderdata.clear(); // delete earlier loaded stuff statspec->renderdata.reserve(tiles); @@ -1951,8 +1963,8 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte NewGRFSpriteLayout *dts = &statspec->renderdata.emplace_back(); dts->consistent_max_offset = UINT16_MAX; // Spritesets are unknown, so no limit. - if (buf->HasData(4) && *(uint32_t*)buf->Data() == 0) { - buf->Skip(4); + if (buf.HasData(4) && *(uint32_t*)buf.Data() == 0) { + buf.Skip(4); extern const DrawTileSprites _station_display_datas_rail[8]; dts->Clone(&_station_display_datas_rail[t % 8]); continue; @@ -1969,13 +1981,13 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte DrawTileSeqStruct &dtss = tmp_layout.emplace_back(); MemSetT(&dtss, 0); - dtss.delta_x = buf->ReadByte(); + dtss.delta_x = buf.ReadByte(); if (dtss.IsTerminator()) break; - dtss.delta_y = buf->ReadByte(); - dtss.delta_z = buf->ReadByte(); - dtss.size_x = buf->ReadByte(); - dtss.size_y = buf->ReadByte(); - dtss.size_z = buf->ReadByte(); + dtss.delta_y = buf.ReadByte(); + dtss.delta_z = buf.ReadByte(); + dtss.size_x = buf.ReadByte(); + dtss.size_y = buf.ReadByte(); + dtss.size_z = buf.ReadByte(); ReadSpriteLayoutSprite(buf, false, true, false, GSF_STATIONS, &dtss.image); /* On error, bail out immediately. Temporary GRF data was already freed */ @@ -1993,7 +2005,7 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte } case 0x0A: { // Copy sprite layout - uint16_t srcid = buf->ReadExtendedByte(); + uint16_t srcid = buf.ReadExtendedByte(); const StationSpec *srcstatspec = srcid >= _cur.grffile->stations.size() ? nullptr : _cur.grffile->stations[srcid].get(); if (srcstatspec == nullptr) { @@ -2012,28 +2024,28 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte } case 0x0B: // Callback mask - statspec->callback_mask = buf->ReadByte(); + statspec->callback_mask = buf.ReadByte(); break; case 0x0C: // Disallowed number of platforms - statspec->disallowed_platforms = buf->ReadByte(); + statspec->disallowed_platforms = buf.ReadByte(); break; case 0x0D: // Disallowed platform lengths - statspec->disallowed_lengths = buf->ReadByte(); + statspec->disallowed_lengths = buf.ReadByte(); break; case 0x0E: // Define custom layout - while (buf->HasData()) { - byte length = buf->ReadByte(); - byte number = buf->ReadByte(); + while (buf.HasData()) { + uint8_t length = buf.ReadByte(); + uint8_t number = buf.ReadByte(); if (length == 0 || number == 0) break; if (statspec->layouts.size() < length) statspec->layouts.resize(length); if (statspec->layouts[length - 1].size() < number) statspec->layouts[length - 1].resize(number); - const byte *layout = buf->ReadBytes(length * number); + const uint8_t *layout = buf.ReadBytes(length * number); statspec->layouts[length - 1][number - 1].assign(layout, layout + length * number); /* Validate tile values are only the permitted 00, 02, 04 and 06. */ @@ -2047,7 +2059,7 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte break; case 0x0F: { // Copy custom layout - uint16_t srcid = buf->ReadExtendedByte(); + uint16_t srcid = buf.ReadExtendedByte(); const StationSpec *srcstatspec = srcid >= _cur.grffile->stations.size() ? nullptr : _cur.grffile->stations[srcid].get(); if (srcstatspec == nullptr) { @@ -2060,56 +2072,56 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte } case 0x10: // Little/lots cargo threshold - statspec->cargo_threshold = buf->ReadWord(); + statspec->cargo_threshold = buf.ReadWord(); break; case 0x11: // Pylon placement - statspec->pylons = buf->ReadByte(); + statspec->pylons = buf.ReadByte(); break; case 0x12: // Cargo types for random triggers if (_cur.grffile->grf_version >= 7) { - statspec->cargo_triggers = TranslateRefitMask(buf->ReadDWord()); + statspec->cargo_triggers = TranslateRefitMask(buf.ReadDWord()); } else { - statspec->cargo_triggers = (CargoTypes)buf->ReadDWord(); + statspec->cargo_triggers = (CargoTypes)buf.ReadDWord(); } break; case 0x13: // General flags - statspec->flags = buf->ReadByte(); + statspec->flags = buf.ReadByte(); break; case 0x14: // Overhead wire placement - statspec->wires = buf->ReadByte(); + statspec->wires = buf.ReadByte(); break; case 0x15: // Blocked tiles - statspec->blocked = buf->ReadByte(); + statspec->blocked = buf.ReadByte(); break; case 0x16: // Animation info - statspec->animation.frames = buf->ReadByte(); - statspec->animation.status = buf->ReadByte(); + statspec->animation.frames = buf.ReadByte(); + statspec->animation.status = buf.ReadByte(); break; case 0x17: // Animation speed - statspec->animation.speed = buf->ReadByte(); + statspec->animation.speed = buf.ReadByte(); break; case 0x18: // Animation triggers - statspec->animation.triggers = buf->ReadWord(); + statspec->animation.triggers = buf.ReadWord(); break; /* 0x19 road routing (not implemented) */ case 0x1A: { // Advanced sprite layout - uint16_t tiles = buf->ReadExtendedByte(); + uint16_t tiles = buf.ReadExtendedByte(); statspec->renderdata.clear(); // delete earlier loaded stuff statspec->renderdata.reserve(tiles); for (uint t = 0; t < tiles; t++) { NewGRFSpriteLayout *dts = &statspec->renderdata.emplace_back(); - uint num_building_sprites = buf->ReadByte(); + uint num_building_sprites = buf.ReadByte(); /* On error, bail out immediately. Temporary GRF data was already freed */ if (ReadSpriteLayout(buf, num_building_sprites, false, GSF_STATIONS, true, false, dts)) return CIR_DISABLED; } @@ -2123,18 +2135,18 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte } case 0x1B: // Minimum bridge height (not implemented) - buf->ReadWord(); - buf->ReadWord(); - buf->ReadWord(); - buf->ReadWord(); + buf.ReadWord(); + buf.ReadWord(); + buf.ReadWord(); + buf.ReadWord(); break; case 0x1C: // Station Name - AddStringForMapping(buf->ReadWord(), &statspec->name); + AddStringForMapping(buf.ReadWord(), &statspec->name); break; case 0x1D: // Station Class name - AddStringForMapping(buf->ReadWord(), &StationClass::Get(statspec->cls_id)->name); + AddStringForMapping(buf.ReadWord(), [statspec](StringID str) { StationClass::Get(statspec->class_index)->name = str; }); break; default: @@ -2154,7 +2166,7 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult CanalChangeInfo(uint id, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult CanalChangeInfo(uint id, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2168,11 +2180,11 @@ static ChangeInfoResult CanalChangeInfo(uint id, int numinfo, int prop, ByteRead switch (prop) { case 0x08: - cp->callback_mask = buf->ReadByte(); + cp->callback_mask = buf.ReadByte(); break; case 0x09: - cp->flags = buf->ReadByte(); + cp->flags = buf.ReadByte(); break; default: @@ -2192,7 +2204,7 @@ static ChangeInfoResult CanalChangeInfo(uint id, int numinfo, int prop, ByteRead * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult BridgeChangeInfo(uint brid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult BridgeChangeInfo(uint brid, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2207,32 +2219,32 @@ static ChangeInfoResult BridgeChangeInfo(uint brid, int numinfo, int prop, ByteR switch (prop) { case 0x08: { // Year of availability /* We treat '0' as always available */ - byte year = buf->ReadByte(); + uint8_t year = buf.ReadByte(); bridge->avail_year = (year > 0 ? CalendarTime::ORIGINAL_BASE_YEAR + year : 0); break; } case 0x09: // Minimum length - bridge->min_length = buf->ReadByte(); + bridge->min_length = buf.ReadByte(); break; case 0x0A: // Maximum length - bridge->max_length = buf->ReadByte(); + bridge->max_length = buf.ReadByte(); if (bridge->max_length > 16) bridge->max_length = UINT16_MAX; break; case 0x0B: // Cost factor - bridge->price = buf->ReadByte(); + bridge->price = buf.ReadByte(); break; case 0x0C: // Maximum speed - bridge->speed = buf->ReadWord(); + bridge->speed = buf.ReadWord(); if (bridge->speed == 0) bridge->speed = UINT16_MAX; break; case 0x0D: { // Bridge sprite tables - byte tableid = buf->ReadByte(); - byte numtables = buf->ReadByte(); + uint8_t tableid = buf.ReadByte(); + uint8_t numtables = buf.ReadByte(); if (bridge->sprite_table == nullptr) { /* Allocate memory for sprite table pointers and zero out */ @@ -2242,7 +2254,7 @@ static ChangeInfoResult BridgeChangeInfo(uint brid, int numinfo, int prop, ByteR for (; numtables-- != 0; tableid++) { if (tableid >= 7) { // skip invalid data GrfMsg(1, "BridgeChangeInfo: Table {} >= 7, skipping", tableid); - for (byte sprite = 0; sprite < 32; sprite++) buf->ReadDWord(); + for (uint8_t sprite = 0; sprite < 32; sprite++) buf.ReadDWord(); continue; } @@ -2250,9 +2262,9 @@ static ChangeInfoResult BridgeChangeInfo(uint brid, int numinfo, int prop, ByteR bridge->sprite_table[tableid] = MallocT(32); } - for (byte sprite = 0; sprite < 32; sprite++) { - SpriteID image = buf->ReadWord(); - PaletteID pal = buf->ReadWord(); + for (uint8_t sprite = 0; sprite < 32; sprite++) { + SpriteID image = buf.ReadWord(); + PaletteID pal = buf.ReadWord(); bridge->sprite_table[tableid][sprite].sprite = image; bridge->sprite_table[tableid][sprite].pal = pal; @@ -2264,28 +2276,28 @@ static ChangeInfoResult BridgeChangeInfo(uint brid, int numinfo, int prop, ByteR } case 0x0E: // Flags; bit 0 - disable far pillars - bridge->flags = buf->ReadByte(); + bridge->flags = buf.ReadByte(); break; case 0x0F: // Long format year of availability (year since year 0) - bridge->avail_year = Clamp(TimerGameCalendar::Year(buf->ReadDWord()), CalendarTime::MIN_YEAR, CalendarTime::MAX_YEAR); + bridge->avail_year = Clamp(TimerGameCalendar::Year(buf.ReadDWord()), CalendarTime::MIN_YEAR, CalendarTime::MAX_YEAR); break; case 0x10: { // purchase string - StringID newone = GetGRFStringID(_cur.grffile->grfid, buf->ReadWord()); + StringID newone = GetGRFStringID(_cur.grffile->grfid, buf.ReadWord()); if (newone != STR_UNDEFINED) bridge->material = newone; break; } case 0x11: // description of bridge with rails or roads case 0x12: { - StringID newone = GetGRFStringID(_cur.grffile->grfid, buf->ReadWord()); + StringID newone = GetGRFStringID(_cur.grffile->grfid, buf.ReadWord()); if (newone != STR_UNDEFINED) bridge->transport_name[prop - 0x11] = newone; break; } case 0x13: // 16 bits cost multiplier - bridge->price = buf->ReadWord(); + bridge->price = buf.ReadWord(); break; default: @@ -2303,7 +2315,7 @@ static ChangeInfoResult BridgeChangeInfo(uint brid, int numinfo, int prop, ByteR * @param buf Property value. * @return ChangeInfoResult. */ -static ChangeInfoResult IgnoreTownHouseProperty(int prop, ByteReader *buf) +static ChangeInfoResult IgnoreTownHouseProperty(int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2325,7 +2337,7 @@ static ChangeInfoResult IgnoreTownHouseProperty(int prop, ByteReader *buf) case 0x1C: case 0x1D: case 0x1F: - buf->ReadByte(); + buf.ReadByte(); break; case 0x0A: @@ -2334,25 +2346,25 @@ static ChangeInfoResult IgnoreTownHouseProperty(int prop, ByteReader *buf) case 0x13: case 0x21: case 0x22: - buf->ReadWord(); + buf.ReadWord(); break; case 0x1E: - buf->ReadDWord(); + buf.ReadDWord(); break; case 0x17: - for (uint j = 0; j < 4; j++) buf->ReadByte(); + for (uint j = 0; j < 4; j++) buf.ReadByte(); break; case 0x20: { - byte count = buf->ReadByte(); - for (byte j = 0; j < count; j++) buf->ReadByte(); + uint8_t count = buf.ReadByte(); + for (uint8_t j = 0; j < count; j++) buf.ReadByte(); break; } case 0x23: - buf->Skip(buf->ReadByte() * 2); + buf.Skip(buf.ReadByte() * 2); break; default: @@ -2370,7 +2382,7 @@ static ChangeInfoResult IgnoreTownHouseProperty(int prop, ByteReader *buf) * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2394,7 +2406,7 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt switch (prop) { case 0x08: { // Substitute building type, and definition of a new house - byte subs_id = buf->ReadByte(); + uint8_t subs_id = buf.ReadByte(); if (subs_id == 0xFF) { /* Instead of defining a new house, a substitute house id * of 0xFF disables the old house with the current id. */ @@ -2439,31 +2451,31 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt } case 0x09: // Building flags - housespec->building_flags = (BuildingFlags)buf->ReadByte(); + housespec->building_flags = (BuildingFlags)buf.ReadByte(); break; case 0x0A: { // Availability years - uint16_t years = buf->ReadWord(); + uint16_t years = buf.ReadWord(); housespec->min_year = GB(years, 0, 8) > 150 ? CalendarTime::MAX_YEAR : CalendarTime::ORIGINAL_BASE_YEAR + GB(years, 0, 8); housespec->max_year = GB(years, 8, 8) > 150 ? CalendarTime::MAX_YEAR : CalendarTime::ORIGINAL_BASE_YEAR + GB(years, 8, 8); break; } case 0x0B: // Population - housespec->population = buf->ReadByte(); + housespec->population = buf.ReadByte(); break; case 0x0C: // Mail generation multiplier - housespec->mail_generation = buf->ReadByte(); + housespec->mail_generation = buf.ReadByte(); break; case 0x0D: // Passenger acceptance case 0x0E: // Mail acceptance - housespec->cargo_acceptance[prop - 0x0D] = buf->ReadByte(); + housespec->cargo_acceptance[prop - 0x0D] = buf.ReadByte(); break; case 0x0F: { // Goods/candy, food/fizzy drinks acceptance - int8_t goods = buf->ReadByte(); + int8_t goods = buf.ReadByte(); /* If value of goods is negative, it means in fact food or, if in toyland, fizzy_drink acceptance. * Else, we have "standard" 3rd cargo type, goods or candy, for toyland once more */ @@ -2480,27 +2492,27 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt } case 0x10: // Local authority rating decrease on removal - housespec->remove_rating_decrease = buf->ReadWord(); + housespec->remove_rating_decrease = buf.ReadWord(); break; case 0x11: // Removal cost multiplier - housespec->removal_cost = buf->ReadByte(); + housespec->removal_cost = buf.ReadByte(); break; case 0x12: // Building name ID - AddStringForMapping(buf->ReadWord(), &housespec->building_name); + AddStringForMapping(buf.ReadWord(), &housespec->building_name); break; case 0x13: // Building availability mask - housespec->building_availability = (HouseZones)buf->ReadWord(); + housespec->building_availability = (HouseZones)buf.ReadWord(); break; case 0x14: // House callback mask - housespec->callback_mask |= buf->ReadByte(); + housespec->callback_mask |= buf.ReadByte(); break; case 0x15: { // House override byte - byte override = buf->ReadByte(); + uint8_t override = buf.ReadByte(); /* The house being overridden must be an original house. */ if (override >= NEW_HOUSE_OFFSET) { @@ -2513,46 +2525,46 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt } case 0x16: // Periodic refresh multiplier - housespec->processing_time = std::min(buf->ReadByte(), 63u); + housespec->processing_time = std::min(buf.ReadByte(), 63u); break; case 0x17: // Four random colours to use - for (uint j = 0; j < 4; j++) housespec->random_colour[j] = static_cast(GB(buf->ReadByte(), 0, 4)); + for (uint j = 0; j < 4; j++) housespec->random_colour[j] = static_cast(GB(buf.ReadByte(), 0, 4)); break; case 0x18: // Relative probability of appearing - housespec->probability = buf->ReadByte(); + housespec->probability = buf.ReadByte(); break; case 0x19: // Extra flags - housespec->extra_flags = (HouseExtraFlags)buf->ReadByte(); + housespec->extra_flags = (HouseExtraFlags)buf.ReadByte(); break; case 0x1A: // Animation frames - housespec->animation.frames = buf->ReadByte(); + housespec->animation.frames = buf.ReadByte(); housespec->animation.status = GB(housespec->animation.frames, 7, 1); SB(housespec->animation.frames, 7, 1, 0); break; case 0x1B: // Animation speed - housespec->animation.speed = Clamp(buf->ReadByte(), 2, 16); + housespec->animation.speed = Clamp(buf.ReadByte(), 2, 16); break; case 0x1C: // Class of the building type - housespec->class_id = AllocateHouseClassID(buf->ReadByte(), _cur.grffile->grfid); + housespec->class_id = AllocateHouseClassID(buf.ReadByte(), _cur.grffile->grfid); break; case 0x1D: // Callback mask part 2 - housespec->callback_mask |= (buf->ReadByte() << 8); + housespec->callback_mask |= (buf.ReadByte() << 8); break; case 0x1E: { // Accepted cargo types - uint32_t cargotypes = buf->ReadDWord(); + uint32_t cargotypes = buf.ReadDWord(); /* Check if the cargo types should not be changed */ if (cargotypes == 0xFFFFFFFF) break; - for (uint j = 0; j < 3; j++) { + for (uint j = 0; j < HOUSE_ORIGINAL_NUM_ACCEPTS; j++) { /* Get the cargo number from the 'list' */ uint8_t cargo_part = GB(cargotypes, 8 * j, 8); CargoID cargo = GetCargoTranslation(cargo_part, _cur.grffile); @@ -2563,33 +2575,35 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt } else { housespec->accepts_cargo[j] = cargo; } + housespec->accepts_cargo_label[j] = CT_INVALID; } break; } case 0x1F: // Minimum life span - housespec->minimum_life = buf->ReadByte(); + housespec->minimum_life = buf.ReadByte(); break; case 0x20: { // Cargo acceptance watch list - byte count = buf->ReadByte(); - for (byte j = 0; j < count; j++) { - CargoID cargo = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + uint8_t count = buf.ReadByte(); + for (uint8_t j = 0; j < count; j++) { + CargoID cargo = GetCargoTranslation(buf.ReadByte(), _cur.grffile); if (IsValidCargoID(cargo)) SetBit(housespec->watched_cargoes, cargo); } break; } case 0x21: // long introduction year - housespec->min_year = buf->ReadWord(); + housespec->min_year = buf.ReadWord(); break; case 0x22: // long maximum year - housespec->max_year = buf->ReadWord(); + housespec->max_year = buf.ReadWord(); + if (housespec->max_year == UINT16_MAX) housespec->max_year = CalendarTime::MAX_YEAR; break; case 0x23: { // variable length cargo types accepted - uint count = buf->ReadByte(); + uint count = buf.ReadByte(); if (count > lengthof(housespec->accepts_cargo)) { GRFError *error = DisableGrf(STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG); error->param_value[1] = prop; @@ -2600,8 +2614,8 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt * any risks of array overrun. */ for (uint i = 0; i < lengthof(housespec->accepts_cargo); i++) { if (i < count) { - housespec->accepts_cargo[i] = GetCargoTranslation(buf->ReadByte(), _cur.grffile); - housespec->cargo_acceptance[i] = buf->ReadByte(); + housespec->accepts_cargo[i] = GetCargoTranslation(buf.ReadByte(), _cur.grffile); + housespec->cargo_acceptance[i] = buf.ReadByte(); } else { housespec->accepts_cargo[i] = INVALID_CARGO; housespec->cargo_acceptance[i] = 0; @@ -2630,7 +2644,12 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt { /* LanguageID "MAX_LANG", i.e. 7F is any. This language can't have a gender/case mapping, but has to be handled gracefully. */ const GRFFile *grffile = GetFileByGRFID(grfid); - return (grffile != nullptr && grffile->language_map != nullptr && language_id < MAX_LANG) ? &grffile->language_map[language_id] : nullptr; + if (grffile == nullptr) return nullptr; + + auto it = grffile->language_map.find(language_id); + if (it == std::end(grffile->language_map)) return nullptr; + + return &it->second; } /** @@ -2643,7 +2662,7 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt * @return ChangeInfoResult. */ template -static ChangeInfoResult LoadTranslationTable(uint gvid, int numinfo, ByteReader *buf, std::vector &translation_table, const char *name) +static ChangeInfoResult LoadTranslationTable(uint gvid, int numinfo, ByteReader &buf, std::vector &translation_table, const char *name) { if (gvid != 0) { GrfMsg(1, "LoadTranslationTable: {} translation table must start at zero", name); @@ -2651,8 +2670,9 @@ static ChangeInfoResult LoadTranslationTable(uint gvid, int numinfo, ByteReader } translation_table.clear(); + translation_table.reserve(numinfo); for (int i = 0; i < numinfo; i++) { - translation_table.push_back(T(BSWAP32(buf->ReadDWord()))); + translation_table.push_back(T(BSWAP32(buf.ReadDWord()))); } return CIR_SUCCESS; @@ -2664,10 +2684,10 @@ static ChangeInfoResult LoadTranslationTable(uint gvid, int numinfo, ByteReader * @param reader The source of the DWord. * @return The read DWord as string. */ -static std::string ReadDWordAsString(ByteReader *reader) +static std::string ReadDWordAsString(ByteReader &reader) { std::string output; - for (int i = 0; i < 4; i++) output.push_back(reader->ReadByte()); + for (int i = 0; i < 4; i++) output.push_back(reader.ReadByte()); return StrMakeValid(output); } @@ -2679,7 +2699,7 @@ static std::string ReadDWordAsString(ByteReader *reader) * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, ByteReader &buf) { /* Properties which are handled as a whole */ switch (prop) { @@ -2704,7 +2724,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By for (int i = 0; i < numinfo; i++) { switch (prop) { case 0x08: { // Cost base factor - int factor = buf->ReadByte(); + int factor = buf.ReadByte(); uint price = gvid + i; if (price < PR_END) { @@ -2717,7 +2737,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By case 0x0A: { // Currency display names uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); - StringID newone = GetGRFStringID(_cur.grffile->grfid, buf->ReadWord()); + StringID newone = GetGRFStringID(_cur.grffile->grfid, buf.ReadWord()); if ((newone != STR_UNDEFINED) && (curidx < CURRENCY_END)) { _currency_specs[curidx].name = newone; @@ -2728,7 +2748,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By case 0x0B: { // Currency multipliers uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); - uint32_t rate = buf->ReadDWord(); + uint32_t rate = buf.ReadDWord(); if (curidx < CURRENCY_END) { /* TTDPatch uses a multiple of 1000 for its conversion calculations, @@ -2743,7 +2763,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By case 0x0C: { // Currency options uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); - uint16_t options = buf->ReadWord(); + uint16_t options = buf.ReadWord(); if (curidx < CURRENCY_END) { _currency_specs[curidx].separator.clear(); @@ -2783,7 +2803,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By case 0x0F: { // Euro introduction dates uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); - TimerGameCalendar::Year year_euro = buf->ReadWord(); + TimerGameCalendar::Year year_euro = buf.ReadWord(); if (curidx < CURRENCY_END) { _currency_specs[curidx].to_euro = year_euro; @@ -2796,14 +2816,14 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By case 0x10: // Snow line height table if (numinfo > 1 || IsSnowLineSet()) { GrfMsg(1, "GlobalVarChangeInfo: The snowline can only be set once ({})", numinfo); - } else if (buf->Remaining() < SNOW_LINE_MONTHS * SNOW_LINE_DAYS) { - GrfMsg(1, "GlobalVarChangeInfo: Not enough entries set in the snowline table ({})", buf->Remaining()); + } else if (buf.Remaining() < SNOW_LINE_MONTHS * SNOW_LINE_DAYS) { + GrfMsg(1, "GlobalVarChangeInfo: Not enough entries set in the snowline table ({})", buf.Remaining()); } else { - byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]; + uint8_t table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]; for (uint i = 0; i < SNOW_LINE_MONTHS; i++) { for (uint j = 0; j < SNOW_LINE_DAYS; j++) { - table[i][j] = buf->ReadByte(); + table[i][j] = buf.ReadByte(); if (_cur.grffile->grf_version >= 8) { if (table[i][j] != 0xFF) table[i][j] = table[i][j] * (1 + _settings_game.construction.map_height_limit) / 256; } else { @@ -2823,7 +2843,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By case 0x11: // GRF match for engine allocation /* This is loaded during the reservation stage, so just skip it here. */ /* Each entry is 8 bytes. */ - buf->Skip(8); + buf.Skip(8); break; case 0x13: // Gender translation table @@ -2835,19 +2855,17 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By GrfMsg(1, "GlobalVarChangeInfo: Language {} is not known, ignoring", curidx); /* Skip over the data. */ if (prop == 0x15) { - buf->ReadByte(); + buf.ReadByte(); } else { - while (buf->ReadByte() != 0) { - buf->ReadString(); + while (buf.ReadByte() != 0) { + buf.ReadString(); } } break; } - if (_cur.grffile->language_map == nullptr) _cur.grffile->language_map = new LanguageMap[MAX_LANG]; - if (prop == 0x15) { - uint plural_form = buf->ReadByte(); + uint plural_form = buf.ReadByte(); if (plural_form >= LANGUAGE_MAX_PLURAL) { GrfMsg(1, "GlobalVarChanceInfo: Plural form {} is out of range, ignoring", plural_form); } else { @@ -2856,36 +2874,36 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By break; } - byte newgrf_id = buf->ReadByte(); // The NewGRF (custom) identifier. + uint8_t newgrf_id = buf.ReadByte(); // The NewGRF (custom) identifier. while (newgrf_id != 0) { - const char *name = buf->ReadString(); // The name for the OpenTTD identifier. + std::string_view name = buf.ReadString(); // The name for the OpenTTD identifier. /* We'll just ignore the UTF8 identifier character. This is (fairly) * safe as OpenTTD's strings gender/cases are usually in ASCII which * is just a subset of UTF8, or they need the bigger UTF8 characters * such as Cyrillic. Thus we will simply assume they're all UTF8. */ char32_t c; - size_t len = Utf8Decode(&c, name); - if (c == NFO_UTF8_IDENTIFIER) name += len; + size_t len = Utf8Decode(&c, name.data()); + if (c == NFO_UTF8_IDENTIFIER) name = name.substr(len); LanguageMap::Mapping map; map.newgrf_id = newgrf_id; if (prop == 0x13) { - map.openttd_id = lang->GetGenderIndex(name); + map.openttd_id = lang->GetGenderIndex(name.data()); if (map.openttd_id >= MAX_NUM_GENDERS) { GrfMsg(1, "GlobalVarChangeInfo: Gender name {} is not known, ignoring", name); } else { _cur.grffile->language_map[curidx].gender_map.push_back(map); } } else { - map.openttd_id = lang->GetCaseIndex(name); + map.openttd_id = lang->GetCaseIndex(name.data()); if (map.openttd_id >= MAX_NUM_CASES) { GrfMsg(1, "GlobalVarChangeInfo: Case name {} is not known, ignoring", name); } else { _cur.grffile->language_map[curidx].case_map.push_back(map); } } - newgrf_id = buf->ReadByte(); + newgrf_id = buf.ReadByte(); } break; } @@ -2899,7 +2917,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By return ret; } -static ChangeInfoResult GlobalVarReserveInfo(uint gvid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult GlobalVarReserveInfo(uint gvid, int numinfo, int prop, ByteReader &buf) { /* Properties which are handled as a whole */ switch (prop) { @@ -2925,36 +2943,36 @@ static ChangeInfoResult GlobalVarReserveInfo(uint gvid, int numinfo, int prop, B switch (prop) { case 0x08: // Cost base factor case 0x15: // Plural form translation - buf->ReadByte(); + buf.ReadByte(); break; case 0x0A: // Currency display names case 0x0C: // Currency options case 0x0F: // Euro introduction dates - buf->ReadWord(); + buf.ReadWord(); break; case 0x0B: // Currency multipliers case 0x0D: // Currency prefix symbol case 0x0E: // Currency suffix symbol - buf->ReadDWord(); + buf.ReadDWord(); break; case 0x10: // Snow line height table - buf->Skip(SNOW_LINE_MONTHS * SNOW_LINE_DAYS); + buf.Skip(SNOW_LINE_MONTHS * SNOW_LINE_DAYS); break; case 0x11: { // GRF match for engine allocation - uint32_t s = buf->ReadDWord(); - uint32_t t = buf->ReadDWord(); + uint32_t s = buf.ReadDWord(); + uint32_t t = buf.ReadDWord(); SetNewGRFOverride(s, t); break; } case 0x13: // Gender translation table case 0x14: // Case translation table - while (buf->ReadByte() != 0) { - buf->ReadString(); + while (buf.ReadByte() != 0) { + buf.ReadString(); } break; @@ -2976,7 +2994,7 @@ static ChangeInfoResult GlobalVarReserveInfo(uint gvid, int numinfo, int prop, B * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2990,7 +3008,7 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea switch (prop) { case 0x08: // Bit number of cargo - cs->bitnum = buf->ReadByte(); + cs->bitnum = buf.ReadByte(); if (cs->IsValid()) { cs->grffile = _cur.grffile; SetBit(_cargo_mask, cid + i); @@ -3001,11 +3019,11 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea break; case 0x09: // String ID for cargo type name - AddStringForMapping(buf->ReadWord(), &cs->name); + AddStringForMapping(buf.ReadWord(), &cs->name); break; case 0x0A: // String for 1 unit of cargo - AddStringForMapping(buf->ReadWord(), &cs->name_single); + AddStringForMapping(buf.ReadWord(), &cs->name_single); break; case 0x0B: // String for singular quantity of cargo (e.g. 1 tonne of coal) @@ -3013,7 +3031,7 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea /* String for units of cargo. This is different in OpenTTD * (e.g. tonnes) to TTDPatch (e.g. {COMMA} tonne of coal). * Property 1B is used to set OpenTTD's behaviour. */ - AddStringForMapping(buf->ReadWord(), &cs->units_volume); + AddStringForMapping(buf.ReadWord(), &cs->units_volume); break; case 0x0C: // String for plural quantity of cargo (e.g. 10 tonnes of coal) @@ -3021,56 +3039,56 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea /* Strings for an amount of cargo. This is different in OpenTTD * (e.g. {WEIGHT} of coal) to TTDPatch (e.g. {COMMA} tonnes of coal). * Property 1C is used to set OpenTTD's behaviour. */ - AddStringForMapping(buf->ReadWord(), &cs->quantifier); + AddStringForMapping(buf.ReadWord(), &cs->quantifier); break; case 0x0D: // String for two letter cargo abbreviation - AddStringForMapping(buf->ReadWord(), &cs->abbrev); + AddStringForMapping(buf.ReadWord(), &cs->abbrev); break; case 0x0E: // Sprite ID for cargo icon - cs->sprite = buf->ReadWord(); + cs->sprite = buf.ReadWord(); break; case 0x0F: // Weight of one unit of cargo - cs->weight = buf->ReadByte(); + cs->weight = buf.ReadByte(); break; case 0x10: // Used for payment calculation - cs->transit_periods[0] = buf->ReadByte(); + cs->transit_periods[0] = buf.ReadByte(); break; case 0x11: // Used for payment calculation - cs->transit_periods[1] = buf->ReadByte(); + cs->transit_periods[1] = buf.ReadByte(); break; case 0x12: // Base cargo price - cs->initial_payment = buf->ReadDWord(); + cs->initial_payment = buf.ReadDWord(); break; case 0x13: // Colour for station rating bars - cs->rating_colour = buf->ReadByte(); + cs->rating_colour = buf.ReadByte(); break; case 0x14: // Colour for cargo graph - cs->legend_colour = buf->ReadByte(); + cs->legend_colour = buf.ReadByte(); break; case 0x15: // Freight status - cs->is_freight = (buf->ReadByte() != 0); + cs->is_freight = (buf.ReadByte() != 0); break; case 0x16: // Cargo classes - cs->classes = buf->ReadWord(); + cs->classes = buf.ReadWord(); break; case 0x17: // Cargo label - cs->label = CargoLabel{BSWAP32(buf->ReadDWord())}; + cs->label = CargoLabel{BSWAP32(buf.ReadDWord())}; BuildCargoLabelMap(); break; case 0x18: { // Town growth substitute type - uint8_t substitute_type = buf->ReadByte(); + uint8_t substitute_type = buf.ReadByte(); switch (substitute_type) { case 0x00: cs->town_acceptance_effect = TAE_PASSENGERS; break; @@ -3087,19 +3105,19 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea } case 0x19: // Town growth coefficient - buf->ReadWord(); + buf.ReadWord(); break; case 0x1A: // Bitmask of callbacks to use - cs->callback_mask = buf->ReadByte(); + cs->callback_mask = buf.ReadByte(); break; case 0x1D: // Vehicle capacity muliplier - cs->multiplier = std::max(1u, buf->ReadWord()); + cs->multiplier = std::max(1u, buf.ReadWord()); break; case 0x1E: { // Town production substitute type - uint8_t substitute_type = buf->ReadByte(); + uint8_t substitute_type = buf.ReadByte(); switch (substitute_type) { case 0x00: cs->town_production_effect = TPE_PASSENGERS; break; @@ -3113,7 +3131,7 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea } case 0x1F: // Town production multiplier - cs->town_production_multiplier = std::max(1U, buf->ReadWord()); + cs->town_production_multiplier = std::max(1U, buf.ReadWord()); break; default: @@ -3134,7 +3152,7 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult SoundEffectChangeInfo(uint sid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult SoundEffectChangeInfo(uint sid, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3153,15 +3171,15 @@ static ChangeInfoResult SoundEffectChangeInfo(uint sid, int numinfo, int prop, B switch (prop) { case 0x08: // Relative volume - sound->volume = buf->ReadByte(); + sound->volume = Clamp(buf.ReadByte(), 0, SOUND_EFFECT_MAX_VOLUME); break; case 0x09: // Priority - sound->priority = buf->ReadByte(); + sound->priority = buf.ReadByte(); break; case 0x0A: { // Override old sound - SoundID orig_sound = buf->ReadByte(); + SoundID orig_sound = buf.ReadByte(); if (orig_sound >= ORIGINAL_SAMPLE_COUNT) { GrfMsg(1, "SoundEffectChangeInfo: Original sound {} not defined (max {})", orig_sound, ORIGINAL_SAMPLE_COUNT); @@ -3189,7 +3207,7 @@ static ChangeInfoResult SoundEffectChangeInfo(uint sid, int numinfo, int prop, B * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult IgnoreIndustryTileProperty(int prop, ByteReader *buf) +static ChangeInfoResult IgnoreIndustryTileProperty(int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3200,18 +3218,18 @@ static ChangeInfoResult IgnoreIndustryTileProperty(int prop, ByteReader *buf) case 0x10: case 0x11: case 0x12: - buf->ReadByte(); + buf.ReadByte(); break; case 0x0A: case 0x0B: case 0x0C: case 0x0F: - buf->ReadWord(); + buf.ReadWord(); break; case 0x13: - buf->Skip(buf->ReadByte() * 2); + buf.Skip(buf.ReadByte() * 2); break; default: @@ -3229,7 +3247,7 @@ static ChangeInfoResult IgnoreIndustryTileProperty(int prop, ByteReader *buf) * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3252,7 +3270,7 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr switch (prop) { case 0x08: { // Substitute industry tile type - byte subs_id = buf->ReadByte(); + uint8_t subs_id = buf.ReadByte(); if (subs_id >= NEW_INDUSTRYTILEOFFSET) { /* The substitute id must be one of the original industry tile. */ GrfMsg(2, "IndustryTilesChangeInfo: Attempt to use new industry tile {} as substitute industry tile for {}. Ignoring.", subs_id, indtid + i); @@ -3281,7 +3299,7 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr } case 0x09: { // Industry tile override - byte ovrid = buf->ReadByte(); + uint8_t ovrid = buf.ReadByte(); /* The industry being overridden must be an original industry. */ if (ovrid >= NEW_INDUSTRYTILEOFFSET) { @@ -3296,39 +3314,40 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr case 0x0A: // Tile acceptance case 0x0B: case 0x0C: { - uint16_t acctp = buf->ReadWord(); + uint16_t acctp = buf.ReadWord(); tsp->accepts_cargo[prop - 0x0A] = GetCargoTranslation(GB(acctp, 0, 8), _cur.grffile); tsp->acceptance[prop - 0x0A] = Clamp(GB(acctp, 8, 8), 0, 16); + tsp->accepts_cargo_label[prop - 0x0A] = CT_INVALID; break; } case 0x0D: // Land shape flags - tsp->slopes_refused = (Slope)buf->ReadByte(); + tsp->slopes_refused = (Slope)buf.ReadByte(); break; case 0x0E: // Callback mask - tsp->callback_mask = buf->ReadByte(); + tsp->callback_mask = buf.ReadByte(); break; case 0x0F: // Animation information - tsp->animation.frames = buf->ReadByte(); - tsp->animation.status = buf->ReadByte(); + tsp->animation.frames = buf.ReadByte(); + tsp->animation.status = buf.ReadByte(); break; case 0x10: // Animation speed - tsp->animation.speed = buf->ReadByte(); + tsp->animation.speed = buf.ReadByte(); break; case 0x11: // Triggers for callback 25 - tsp->animation.triggers = buf->ReadByte(); + tsp->animation.triggers = buf.ReadByte(); break; case 0x12: // Special flags - tsp->special_flags = (IndustryTileSpecialFlags)buf->ReadByte(); + tsp->special_flags = (IndustryTileSpecialFlags)buf.ReadByte(); break; case 0x13: { // variable length cargo acceptance - byte num_cargoes = buf->ReadByte(); + uint8_t num_cargoes = buf.ReadByte(); if (num_cargoes > std::size(tsp->acceptance)) { GRFError *error = DisableGrf(STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG); error->param_value[1] = prop; @@ -3336,9 +3355,9 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr } for (uint i = 0; i < std::size(tsp->acceptance); i++) { if (i < num_cargoes) { - tsp->accepts_cargo[i] = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + tsp->accepts_cargo[i] = GetCargoTranslation(buf.ReadByte(), _cur.grffile); /* Tile acceptance can be negative to counteract the INDTILE_SPECIAL_ACCEPTS_ALL_CARGO flag */ - tsp->acceptance[i] = (int8_t)buf->ReadByte(); + tsp->acceptance[i] = (int8_t)buf.ReadByte(); } else { tsp->accepts_cargo[i] = INVALID_CARGO; tsp->acceptance[i] = 0; @@ -3363,7 +3382,7 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult IgnoreIndustryProperty(int prop, ByteReader *buf) +static ChangeInfoResult IgnoreIndustryProperty(int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3379,65 +3398,65 @@ static ChangeInfoResult IgnoreIndustryProperty(int prop, ByteReader *buf) case 0x19: case 0x21: case 0x22: - buf->ReadByte(); + buf.ReadByte(); break; case 0x0C: case 0x0D: case 0x0E: - case 0x10: + case 0x10: // INDUSTRY_ORIGINAL_NUM_OUTPUTS bytes case 0x1B: case 0x1F: case 0x24: - buf->ReadWord(); + buf.ReadWord(); break; - case 0x11: + case 0x11: // INDUSTRY_ORIGINAL_NUM_INPUTS bytes + 1 case 0x1A: case 0x1C: case 0x1D: case 0x1E: case 0x20: case 0x23: - buf->ReadDWord(); + buf.ReadDWord(); break; case 0x0A: { - byte num_table = buf->ReadByte(); - for (byte j = 0; j < num_table; j++) { + uint8_t num_table = buf.ReadByte(); + for (uint8_t j = 0; j < num_table; j++) { for (uint k = 0;; k++) { - byte x = buf->ReadByte(); + uint8_t x = buf.ReadByte(); if (x == 0xFE && k == 0) { - buf->ReadByte(); - buf->ReadByte(); + buf.ReadByte(); + buf.ReadByte(); break; } - byte y = buf->ReadByte(); + uint8_t y = buf.ReadByte(); if (x == 0 && y == 0x80) break; - byte gfx = buf->ReadByte(); - if (gfx == 0xFE) buf->ReadWord(); + uint8_t gfx = buf.ReadByte(); + if (gfx == 0xFE) buf.ReadWord(); } } break; } case 0x16: - for (byte j = 0; j < 3; j++) buf->ReadByte(); + for (uint8_t j = 0; j < INDUSTRY_ORIGINAL_NUM_INPUTS; j++) buf.ReadByte(); break; case 0x15: case 0x25: case 0x26: case 0x27: - buf->Skip(buf->ReadByte()); + buf.Skip(buf.ReadByte()); break; case 0x28: { - int num_inputs = buf->ReadByte(); - int num_outputs = buf->ReadByte(); - buf->Skip(num_inputs * num_outputs * 2); + int num_inputs = buf.ReadByte(); + int num_outputs = buf.ReadByte(); + buf.Skip(num_inputs * num_outputs * 2); break; } @@ -3486,7 +3505,7 @@ static bool ValidateIndustryLayout(const IndustryTileLayout &layout) * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3509,7 +3528,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, switch (prop) { case 0x08: { // Substitute industry type - byte subs_id = buf->ReadByte(); + uint8_t subs_id = buf.ReadByte(); if (subs_id == 0xFF) { /* Instead of defining a new industry, a substitute industry id * of 0xFF disables the old industry with the current id. */ @@ -3540,7 +3559,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } case 0x09: { // Industry type override - byte ovrid = buf->ReadByte(); + uint8_t ovrid = buf.ReadByte(); /* The industry being overridden must be an original industry. */ if (ovrid >= NEW_INDUSTRYOFFSET) { @@ -3553,14 +3572,15 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } case 0x0A: { // Set industry layout(s) - byte new_num_layouts = buf->ReadByte(); - uint32_t definition_size = buf->ReadDWord(); + uint8_t new_num_layouts = buf.ReadByte(); + uint32_t definition_size = buf.ReadDWord(); uint32_t bytes_read = 0; std::vector new_layouts; IndustryTileLayout layout; - for (byte j = 0; j < new_num_layouts; j++) { + for (uint8_t j = 0; j < new_num_layouts; j++) { layout.clear(); + layout.reserve(new_num_layouts); for (uint k = 0;; k++) { if (bytes_read >= definition_size) { @@ -3572,13 +3592,13 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, layout.push_back(IndustryTileLayoutTile{}); IndustryTileLayoutTile &it = layout.back(); - it.ti.x = buf->ReadByte(); // Offsets from northermost tile + it.ti.x = buf.ReadByte(); // Offsets from northermost tile ++bytes_read; if (it.ti.x == 0xFE && k == 0) { /* This means we have to borrow the layout from an old industry */ - IndustryType type = buf->ReadByte(); - byte laynbr = buf->ReadByte(); + IndustryType type = buf.ReadByte(); + uint8_t laynbr = buf.ReadByte(); bytes_read += 2; if (type >= lengthof(_origin_industry_specs)) { @@ -3595,7 +3615,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, break; } - it.ti.y = buf->ReadByte(); // Or table definition finalisation + it.ti.y = buf.ReadByte(); // Or table definition finalisation ++bytes_read; if (it.ti.x == 0 && it.ti.y == 0x80) { @@ -3604,12 +3624,12 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, break; } - it.gfx = buf->ReadByte(); + it.gfx = buf.ReadByte(); ++bytes_read; if (it.gfx == 0xFE) { /* Use a new tile from this GRF */ - int local_tile_id = buf->ReadWord(); + int local_tile_id = buf.ReadWord(); bytes_read += 2; /* Read the ID from the _industile_mngr. */ @@ -3652,124 +3672,116 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } case 0x0B: // Industry production flags - indsp->life_type = (IndustryLifeType)buf->ReadByte(); + indsp->life_type = (IndustryLifeType)buf.ReadByte(); break; case 0x0C: // Industry closure message - AddStringForMapping(buf->ReadWord(), &indsp->closure_text); + AddStringForMapping(buf.ReadWord(), &indsp->closure_text); break; case 0x0D: // Production increase message - AddStringForMapping(buf->ReadWord(), &indsp->production_up_text); + AddStringForMapping(buf.ReadWord(), &indsp->production_up_text); break; case 0x0E: // Production decrease message - AddStringForMapping(buf->ReadWord(), &indsp->production_down_text); + AddStringForMapping(buf.ReadWord(), &indsp->production_down_text); break; case 0x0F: // Fund cost multiplier - indsp->cost_multiplier = buf->ReadByte(); + indsp->cost_multiplier = buf.ReadByte(); break; case 0x10: // Production cargo types - for (byte j = 0; j < 2; j++) { - indsp->produced_cargo[j] = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + for (uint8_t j = 0; j < INDUSTRY_ORIGINAL_NUM_OUTPUTS; j++) { + indsp->produced_cargo[j] = GetCargoTranslation(buf.ReadByte(), _cur.grffile); indsp->produced_cargo_label[j] = CT_INVALID; } break; case 0x11: // Acceptance cargo types - for (byte j = 0; j < 3; j++) { - indsp->accepts_cargo[j] = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + for (uint8_t j = 0; j < INDUSTRY_ORIGINAL_NUM_INPUTS; j++) { + indsp->accepts_cargo[j] = GetCargoTranslation(buf.ReadByte(), _cur.grffile); indsp->accepts_cargo_label[j] = CT_INVALID; } - buf->ReadByte(); // Unnused, eat it up + buf.ReadByte(); // Unnused, eat it up break; case 0x12: // Production multipliers case 0x13: - indsp->production_rate[prop - 0x12] = buf->ReadByte(); + indsp->production_rate[prop - 0x12] = buf.ReadByte(); break; case 0x14: // Minimal amount of cargo distributed - indsp->minimal_cargo = buf->ReadByte(); + indsp->minimal_cargo = buf.ReadByte(); break; case 0x15: { // Random sound effects - indsp->number_of_sounds = buf->ReadByte(); - uint8_t *sounds = MallocT(indsp->number_of_sounds); + uint8_t num_sounds = buf.ReadByte(); - try { - for (uint8_t j = 0; j < indsp->number_of_sounds; j++) { - sounds[j] = buf->ReadByte(); - } - } catch (...) { - free(sounds); - throw; + std::vector sounds; + sounds.reserve(num_sounds); + for (uint8_t j = 0; j < num_sounds; ++j) { + sounds.push_back(buf.ReadByte()); } - if (HasBit(indsp->cleanup_flag, CLEAN_RANDOMSOUNDS)) { - free(indsp->random_sounds); - } - indsp->random_sounds = sounds; - SetBit(indsp->cleanup_flag, CLEAN_RANDOMSOUNDS); + indsp->random_sounds = std::move(sounds); break; } case 0x16: // Conflicting industry types - for (byte j = 0; j < 3; j++) indsp->conflicting[j] = buf->ReadByte(); + for (uint8_t j = 0; j < 3; j++) indsp->conflicting[j] = buf.ReadByte(); break; case 0x17: // Probability in random game - indsp->appear_creation[_settings_game.game_creation.landscape] = buf->ReadByte(); + indsp->appear_creation[_settings_game.game_creation.landscape] = buf.ReadByte(); break; case 0x18: // Probability during gameplay - indsp->appear_ingame[_settings_game.game_creation.landscape] = buf->ReadByte(); + indsp->appear_ingame[_settings_game.game_creation.landscape] = buf.ReadByte(); break; case 0x19: // Map colour - indsp->map_colour = buf->ReadByte(); + indsp->map_colour = buf.ReadByte(); break; case 0x1A: // Special industry flags to define special behavior - indsp->behaviour = (IndustryBehaviour)buf->ReadDWord(); + indsp->behaviour = (IndustryBehaviour)buf.ReadDWord(); break; case 0x1B: // New industry text ID - AddStringForMapping(buf->ReadWord(), &indsp->new_industry_text); + AddStringForMapping(buf.ReadWord(), &indsp->new_industry_text); break; case 0x1C: // Input cargo multipliers for the three input cargo types case 0x1D: case 0x1E: { - uint32_t multiples = buf->ReadDWord(); + uint32_t multiples = buf.ReadDWord(); indsp->input_cargo_multiplier[prop - 0x1C][0] = GB(multiples, 0, 16); indsp->input_cargo_multiplier[prop - 0x1C][1] = GB(multiples, 16, 16); break; } case 0x1F: // Industry name - AddStringForMapping(buf->ReadWord(), &indsp->name); + AddStringForMapping(buf.ReadWord(), &indsp->name); break; case 0x20: // Prospecting success chance - indsp->prospecting_chance = buf->ReadDWord(); + indsp->prospecting_chance = buf.ReadDWord(); break; case 0x21: // Callback mask case 0x22: { // Callback additional mask - byte aflag = buf->ReadByte(); + uint8_t aflag = buf.ReadByte(); SB(indsp->callback_mask, (prop - 0x21) * 8, 8, aflag); break; } case 0x23: // removal cost multiplier - indsp->removal_cost_multiplier = buf->ReadDWord(); + indsp->removal_cost_multiplier = buf.ReadDWord(); break; case 0x24: { // name for nearby station - uint16_t str = buf->ReadWord(); + uint16_t str = buf.ReadWord(); if (str == 0) { indsp->station_name = STR_NULL; } else { @@ -3779,15 +3791,15 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } case 0x25: { // variable length produced cargoes - byte num_cargoes = buf->ReadByte(); - if (num_cargoes > lengthof(indsp->produced_cargo)) { + uint8_t num_cargoes = buf.ReadByte(); + if (num_cargoes > std::size(indsp->produced_cargo)) { GRFError *error = DisableGrf(STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG); error->param_value[1] = prop; return CIR_DISABLED; } - for (uint i = 0; i < lengthof(indsp->produced_cargo); i++) { + for (size_t i = 0; i < std::size(indsp->produced_cargo); i++) { if (i < num_cargoes) { - CargoID cargo = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + CargoID cargo = GetCargoTranslation(buf.ReadByte(), _cur.grffile); indsp->produced_cargo[i] = cargo; } else { indsp->produced_cargo[i] = INVALID_CARGO; @@ -3798,15 +3810,15 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } case 0x26: { // variable length accepted cargoes - byte num_cargoes = buf->ReadByte(); - if (num_cargoes > lengthof(indsp->accepts_cargo)) { + uint8_t num_cargoes = buf.ReadByte(); + if (num_cargoes > std::size(indsp->accepts_cargo)) { GRFError *error = DisableGrf(STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG); error->param_value[1] = prop; return CIR_DISABLED; } - for (uint i = 0; i < lengthof(indsp->accepts_cargo); i++) { + for (size_t i = 0; i < std::size(indsp->accepts_cargo); i++) { if (i < num_cargoes) { - CargoID cargo = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + CargoID cargo = GetCargoTranslation(buf.ReadByte(), _cur.grffile); indsp->accepts_cargo[i] = cargo; } else { indsp->accepts_cargo[i] = INVALID_CARGO; @@ -3817,7 +3829,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } case 0x27: { // variable length production rates - byte num_cargoes = buf->ReadByte(); + uint8_t num_cargoes = buf.ReadByte(); if (num_cargoes > lengthof(indsp->production_rate)) { GRFError *error = DisableGrf(STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG); error->param_value[1] = prop; @@ -3825,7 +3837,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } for (uint i = 0; i < lengthof(indsp->production_rate); i++) { if (i < num_cargoes) { - indsp->production_rate[i] = buf->ReadByte(); + indsp->production_rate[i] = buf.ReadByte(); } else { indsp->production_rate[i] = 0; } @@ -3834,17 +3846,17 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, } case 0x28: { // variable size input/output production multiplier table - byte num_inputs = buf->ReadByte(); - byte num_outputs = buf->ReadByte(); - if (num_inputs > lengthof(indsp->accepts_cargo) || num_outputs > lengthof(indsp->produced_cargo)) { + uint8_t num_inputs = buf.ReadByte(); + uint8_t num_outputs = buf.ReadByte(); + if (num_inputs > std::size(indsp->accepts_cargo) || num_outputs > std::size(indsp->produced_cargo)) { GRFError *error = DisableGrf(STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG); error->param_value[1] = prop; return CIR_DISABLED; } - for (uint i = 0; i < lengthof(indsp->accepts_cargo); i++) { - for (uint j = 0; j < lengthof(indsp->produced_cargo); j++) { + for (size_t i = 0; i < std::size(indsp->accepts_cargo); i++) { + for (size_t j = 0; j < std::size(indsp->produced_cargo); j++) { uint16_t mult = 0; - if (i < num_inputs && j < num_outputs) mult = buf->ReadWord(); + if (i < num_inputs && j < num_outputs) mult = buf.ReadWord(); indsp->input_cargo_multiplier[i][j] = mult; } } @@ -3860,32 +3872,6 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, return ret; } -/** - * Create a copy of the tile table so it can be freed later - * without problems. - * @param as The AirportSpec to copy the arrays of. - */ -static void DuplicateTileTable(AirportSpec *as) -{ - AirportTileTable **table_list = MallocT(as->num_table); - for (int i = 0; i < as->num_table; i++) { - uint num_tiles = 1; - const AirportTileTable *it = as->table[0]; - do { - num_tiles++; - } while ((++it)->ti.x != -0x80); - table_list[i] = MallocT(num_tiles); - MemCpyT(table_list[i], as->table[i], num_tiles); - } - as->table = table_list; - HangarTileTable *depot_table = MallocT(as->nof_depots); - MemCpyT(depot_table, as->depot_table, as->nof_depots); - as->depot_table = depot_table; - Direction *rotation = MallocT(as->num_table); - MemCpyT(rotation, as->rotation, as->num_table); - as->rotation = rotation; -} - /** * Define properties for airports * @param airport Local ID of the airport. @@ -3894,7 +3880,7 @@ static void DuplicateTileTable(AirportSpec *as) * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3916,7 +3902,7 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B switch (prop) { case 0x08: { // Modify original airport - byte subs_id = buf->ReadByte(); + uint8_t subs_id = buf.ReadByte(); if (subs_id == 0xFF) { /* Instead of defining a new airport, an airport id * of 0xFF disables the old airport with the current id. */ @@ -3941,116 +3927,95 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B as->grf_prop.grffile = _cur.grffile; /* override the default airport */ _airport_mngr.Add(airport + i, _cur.grffile->grfid, subs_id); - /* Create a copy of the original tiletable so it can be freed later. */ - DuplicateTileTable(as); } break; } case 0x0A: { // Set airport layout - byte old_num_table = as->num_table; - free(as->rotation); - as->num_table = buf->ReadByte(); // Number of layaouts - as->rotation = MallocT(as->num_table); - uint32_t defsize = buf->ReadDWord(); // Total size of the definition - AirportTileTable **tile_table = CallocT(as->num_table); // Table with tiles to compose the airport - AirportTileTable *att = CallocT(defsize); // Temporary array to read the tile layouts from the GRF - int size; - const AirportTileTable *copy_from; - try { - for (byte j = 0; j < as->num_table; j++) { - const_cast(as->rotation[j]) = (Direction)buf->ReadByte(); - for (int k = 0;; k++) { - att[k].ti.x = buf->ReadByte(); // Offsets from northermost tile - att[k].ti.y = buf->ReadByte(); + uint8_t num_layouts = buf.ReadByte(); + buf.ReadDWord(); // Total size of definition, unneeded. + uint8_t size_x = 0; + uint8_t size_y = 0; - if (att[k].ti.x == 0 && att[k].ti.y == 0x80) { - /* Not the same terminator. The one we are using is rather - * x = -80, y = 0 . So, adjust it. */ - att[k].ti.x = -0x80; - att[k].ti.y = 0; - att[k].gfx = 0; + std::vector layouts; + layouts.reserve(num_layouts); - size = k + 1; - copy_from = att; - break; - } + for (uint8_t j = 0; j != num_layouts; ++j) { + auto &layout = layouts.emplace_back(); + layout.rotation = static_cast(buf.ReadByte() & 6); // Rotation can only be DIR_NORTH, DIR_EAST, DIR_SOUTH or DIR_WEST. - att[k].gfx = buf->ReadByte(); - - if (att[k].gfx == 0xFE) { - /* Use a new tile from this GRF */ - int local_tile_id = buf->ReadWord(); - - /* Read the ID from the _airporttile_mngr. */ - uint16_t tempid = _airporttile_mngr.GetID(local_tile_id, _cur.grffile->grfid); - - if (tempid == INVALID_AIRPORTTILE) { - GrfMsg(2, "AirportChangeInfo: Attempt to use airport tile {} with airport id {}, not yet defined. Ignoring.", local_tile_id, airport + i); - } else { - /* Declared as been valid, can be used */ - att[k].gfx = tempid; - } - } else if (att[k].gfx == 0xFF) { - att[k].ti.x = (int8_t)GB(att[k].ti.x, 0, 8); - att[k].ti.y = (int8_t)GB(att[k].ti.y, 0, 8); - } - - if (as->rotation[j] == DIR_E || as->rotation[j] == DIR_W) { - as->size_x = std::max(as->size_x, att[k].ti.y + 1); - as->size_y = std::max(as->size_y, att[k].ti.x + 1); - } else { - as->size_x = std::max(as->size_x, att[k].ti.x + 1); - as->size_y = std::max(as->size_y, att[k].ti.y + 1); - } + for (;;) { + auto &tile = layout.tiles.emplace_back(); + tile.ti.x = buf.ReadByte(); + tile.ti.y = buf.ReadByte(); + if (tile.ti.x == 0 && tile.ti.y == 0x80) { + /* Convert terminator to our own. */ + tile.ti.x = -0x80; + tile.ti.y = 0; + tile.gfx = 0; + break; + } + + tile.gfx = buf.ReadByte(); + + if (tile.gfx == 0xFE) { + /* Use a new tile from this GRF */ + int local_tile_id = buf.ReadWord(); + + /* Read the ID from the _airporttile_mngr. */ + uint16_t tempid = _airporttile_mngr.GetID(local_tile_id, _cur.grffile->grfid); + + if (tempid == INVALID_AIRPORTTILE) { + GrfMsg(2, "AirportChangeInfo: Attempt to use airport tile {} with airport id {}, not yet defined. Ignoring.", local_tile_id, airport + i); + } else { + /* Declared as been valid, can be used */ + tile.gfx = tempid; + } + } else if (tile.gfx == 0xFF) { + tile.ti.x = static_cast(GB(tile.ti.x, 0, 8)); + tile.ti.y = static_cast(GB(tile.ti.y, 0, 8)); + } + + /* Determine largest size. */ + if (layout.rotation == DIR_E || layout.rotation == DIR_W) { + size_x = std::max(size_x, tile.ti.y + 1); + size_y = std::max(size_y, tile.ti.x + 1); + } else { + size_x = std::max(size_x, tile.ti.x + 1); + size_y = std::max(size_y, tile.ti.y + 1); } - tile_table[j] = CallocT(size); - memcpy(tile_table[j], copy_from, sizeof(*copy_from) * size); } - /* Free old layouts in the airport spec */ - for (int j = 0; j < old_num_table; j++) { - /* remove the individual layouts */ - free(as->table[j]); - } - free(as->table); - /* Install final layout construction in the airport spec */ - as->table = tile_table; - free(att); - } catch (...) { - for (int i = 0; i < as->num_table; i++) { - free(tile_table[i]); - } - free(tile_table); - free(att); - throw; } + as->layouts = std::move(layouts); + as->size_x = size_x; + as->size_y = size_y; break; } case 0x0C: - as->min_year = buf->ReadWord(); - as->max_year = buf->ReadWord(); + as->min_year = buf.ReadWord(); + as->max_year = buf.ReadWord(); if (as->max_year == 0xFFFF) as->max_year = CalendarTime::MAX_YEAR; break; case 0x0D: - as->ttd_airport_type = (TTDPAirportType)buf->ReadByte(); + as->ttd_airport_type = (TTDPAirportType)buf.ReadByte(); break; case 0x0E: - as->catchment = Clamp(buf->ReadByte(), 1, MAX_CATCHMENT); + as->catchment = Clamp(buf.ReadByte(), 1, MAX_CATCHMENT); break; case 0x0F: - as->noise_level = buf->ReadByte(); + as->noise_level = buf.ReadByte(); break; case 0x10: - AddStringForMapping(buf->ReadWord(), &as->name); + AddStringForMapping(buf.ReadWord(), &as->name); break; case 0x11: // Maintenance cost factor - as->maintenance_cost = buf->ReadWord(); + as->maintenance_cost = buf.ReadWord(); break; default: @@ -4068,7 +4033,7 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader *buf) +static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4081,7 +4046,7 @@ static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader *buf) case 0x16: case 0x17: case 0x18: - buf->ReadByte(); + buf.ReadByte(); break; case 0x09: @@ -4090,13 +4055,13 @@ static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader *buf) case 0x11: case 0x13: case 0x15: - buf->ReadWord(); + buf.ReadWord(); break; case 0x08: case 0x0E: case 0x0F: - buf->ReadDWord(); + buf.ReadDWord(); break; default: @@ -4115,7 +4080,7 @@ static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader *buf) * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4148,27 +4113,26 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea } /* Swap classid because we read it in BE. */ - uint32_t classid = buf->ReadDWord(); - spec->cls_id = ObjectClass::Allocate(BSWAP32(classid)); + uint32_t classid = buf.ReadDWord(); + spec->class_index = ObjectClass::Allocate(BSWAP32(classid)); break; } case 0x09: { // Class name - ObjectClass *objclass = ObjectClass::Get(spec->cls_id); - AddStringForMapping(buf->ReadWord(), &objclass->name); + AddStringForMapping(buf.ReadWord(), [spec](StringID str) { ObjectClass::Get(spec->class_index)->name = str; }); break; } case 0x0A: // Object name - AddStringForMapping(buf->ReadWord(), &spec->name); + AddStringForMapping(buf.ReadWord(), &spec->name); break; case 0x0B: // Climate mask - spec->climate = buf->ReadByte(); + spec->climate = buf.ReadByte(); break; case 0x0C: // Size - spec->size = buf->ReadByte(); + spec->size = buf.ReadByte(); if (GB(spec->size, 0, 4) == 0 || GB(spec->size, 4, 4) == 0) { GrfMsg(0, "ObjectChangeInfo: Invalid object size requested (0x{:X}) for object id {}. Ignoring.", spec->size, id + i); spec->size = OBJECT_SIZE_1X1; @@ -4176,50 +4140,50 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea break; case 0x0D: // Build cost multipler - spec->build_cost_multiplier = buf->ReadByte(); + spec->build_cost_multiplier = buf.ReadByte(); spec->clear_cost_multiplier = spec->build_cost_multiplier; break; case 0x0E: // Introduction date - spec->introduction_date = buf->ReadDWord(); + spec->introduction_date = buf.ReadDWord(); break; case 0x0F: // End of life - spec->end_of_life_date = buf->ReadDWord(); + spec->end_of_life_date = buf.ReadDWord(); break; case 0x10: // Flags - spec->flags = (ObjectFlags)buf->ReadWord(); + spec->flags = (ObjectFlags)buf.ReadWord(); _loaded_newgrf_features.has_2CC |= (spec->flags & OBJECT_FLAG_2CC_COLOUR) != 0; break; case 0x11: // Animation info - spec->animation.frames = buf->ReadByte(); - spec->animation.status = buf->ReadByte(); + spec->animation.frames = buf.ReadByte(); + spec->animation.status = buf.ReadByte(); break; case 0x12: // Animation speed - spec->animation.speed = buf->ReadByte(); + spec->animation.speed = buf.ReadByte(); break; case 0x13: // Animation triggers - spec->animation.triggers = buf->ReadWord(); + spec->animation.triggers = buf.ReadWord(); break; case 0x14: // Removal cost multiplier - spec->clear_cost_multiplier = buf->ReadByte(); + spec->clear_cost_multiplier = buf.ReadByte(); break; case 0x15: // Callback mask - spec->callback_mask = buf->ReadWord(); + spec->callback_mask = buf.ReadWord(); break; case 0x16: // Building height - spec->height = buf->ReadByte(); + spec->height = buf.ReadByte(); break; case 0x17: // Views - spec->views = buf->ReadByte(); + spec->views = buf.ReadByte(); if (spec->views != 1 && spec->views != 2 && spec->views != 4) { GrfMsg(2, "ObjectChangeInfo: Invalid number of views ({}) for object id {}. Ignoring.", spec->views, id + i); spec->views = 1; @@ -4227,7 +4191,7 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea break; case 0x18: // Amount placed on 256^2 map on map creation - spec->generate_amount = buf->ReadByte(); + spec->generate_amount = buf.ReadByte(); break; default: @@ -4247,7 +4211,7 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4267,11 +4231,11 @@ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteR switch (prop) { case 0x08: // Label of rail type /* Skipped here as this is loaded during reservation stage. */ - buf->ReadDWord(); + buf.ReadDWord(); break; case 0x09: { // Toolbar caption of railtype (sets name as well for backwards compatibility for grf ver < 8) - uint16_t str = buf->ReadWord(); + uint16_t str = buf.ReadWord(); AddStringForMapping(str, &rti->strings.toolbar_caption); if (_cur.grffile->grf_version < 8) { AddStringForMapping(str, &rti->strings.name); @@ -4280,19 +4244,19 @@ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteR } case 0x0A: // Menu text of railtype - AddStringForMapping(buf->ReadWord(), &rti->strings.menu_text); + AddStringForMapping(buf.ReadWord(), &rti->strings.menu_text); break; case 0x0B: // Build window caption - AddStringForMapping(buf->ReadWord(), &rti->strings.build_caption); + AddStringForMapping(buf.ReadWord(), &rti->strings.build_caption); break; case 0x0C: // Autoreplace text - AddStringForMapping(buf->ReadWord(), &rti->strings.replace_text); + AddStringForMapping(buf.ReadWord(), &rti->strings.replace_text); break; case 0x0D: // New locomotive text - AddStringForMapping(buf->ReadWord(), &rti->strings.new_loco); + AddStringForMapping(buf.ReadWord(), &rti->strings.new_loco); break; case 0x0E: // Compatible railtype list @@ -4303,9 +4267,9 @@ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteR /* Rail type compatibility bits are added to the existing bits * to allow multiple GRFs to modify compatibility with the * default rail types. */ - int n = buf->ReadByte(); + int n = buf.ReadByte(); for (int j = 0; j != n; j++) { - RailTypeLabel label = buf->ReadDWord(); + RailTypeLabel label = buf.ReadDWord(); RailType resolved_rt = GetRailTypeByLabel(BSWAP32(label), false); if (resolved_rt != INVALID_RAILTYPE) { switch (prop) { @@ -4320,52 +4284,52 @@ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteR } case 0x10: // Rail Type flags - rti->flags = (RailTypeFlags)buf->ReadByte(); + rti->flags = (RailTypeFlags)buf.ReadByte(); break; case 0x11: // Curve speed advantage - rti->curve_speed = buf->ReadByte(); + rti->curve_speed = buf.ReadByte(); break; case 0x12: // Station graphic - rti->fallback_railtype = Clamp(buf->ReadByte(), 0, 2); + rti->fallback_railtype = Clamp(buf.ReadByte(), 0, 2); break; case 0x13: // Construction cost factor - rti->cost_multiplier = buf->ReadWord(); + rti->cost_multiplier = buf.ReadWord(); break; case 0x14: // Speed limit - rti->max_speed = buf->ReadWord(); + rti->max_speed = buf.ReadWord(); break; case 0x15: // Acceleration model - rti->acceleration_type = Clamp(buf->ReadByte(), 0, 2); + rti->acceleration_type = Clamp(buf.ReadByte(), 0, 2); break; case 0x16: // Map colour - rti->map_colour = buf->ReadByte(); + rti->map_colour = buf.ReadByte(); break; case 0x17: // Introduction date - rti->introduction_date = buf->ReadDWord(); + rti->introduction_date = buf.ReadDWord(); break; case 0x1A: // Sort order - rti->sorting_order = buf->ReadByte(); + rti->sorting_order = buf.ReadByte(); break; case 0x1B: // Name of railtype (overridden by prop 09 for grf ver < 8) - AddStringForMapping(buf->ReadWord(), &rti->strings.name); + AddStringForMapping(buf.ReadWord(), &rti->strings.name); break; case 0x1C: // Maintenance cost factor - rti->maintenance_multiplier = buf->ReadWord(); + rti->maintenance_multiplier = buf.ReadWord(); break; case 0x1D: // Alternate rail type label list /* Skipped here as this is loaded during reservation stage. */ - for (int j = buf->ReadByte(); j != 0; j--) buf->ReadDWord(); + for (int j = buf.ReadByte(); j != 0; j--) buf.ReadDWord(); break; default: @@ -4377,7 +4341,7 @@ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteR return ret; } -static ChangeInfoResult RailTypeReserveInfo(uint id, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult RailTypeReserveInfo(uint id, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4392,7 +4356,7 @@ static ChangeInfoResult RailTypeReserveInfo(uint id, int numinfo, int prop, Byte switch (prop) { case 0x08: // Label of rail type { - RailTypeLabel rtl = buf->ReadDWord(); + RailTypeLabel rtl = buf.ReadDWord(); rtl = BSWAP32(rtl); RailType rt = GetRailTypeByLabel(rtl, false); @@ -4414,14 +4378,14 @@ static ChangeInfoResult RailTypeReserveInfo(uint id, int numinfo, int prop, Byte case 0x14: // Speed limit case 0x1B: // Name of railtype case 0x1C: // Maintenance cost factor - buf->ReadWord(); + buf.ReadWord(); break; case 0x1D: // Alternate rail type label list if (_cur.grffile->railtype_map[id + i] != INVALID_RAILTYPE) { - int n = buf->ReadByte(); + int n = buf.ReadByte(); for (int j = 0; j != n; j++) { - _railtypes[_cur.grffile->railtype_map[id + i]].alternate_labels.push_back(BSWAP32(buf->ReadDWord())); + _railtypes[_cur.grffile->railtype_map[id + i]].alternate_labels.push_back(BSWAP32(buf.ReadDWord())); } break; } @@ -4432,7 +4396,7 @@ static ChangeInfoResult RailTypeReserveInfo(uint id, int numinfo, int prop, Byte case 0x0F: // Powered railtype list case 0x18: // Railtype list required for date introduction case 0x19: // Introduced railtype list - for (int j = buf->ReadByte(); j != 0; j--) buf->ReadDWord(); + for (int j = buf.ReadByte(); j != 0; j--) buf.ReadDWord(); break; case 0x10: // Rail Type flags @@ -4441,11 +4405,11 @@ static ChangeInfoResult RailTypeReserveInfo(uint id, int numinfo, int prop, Byte case 0x15: // Acceleration model case 0x16: // Map colour case 0x1A: // Sort order - buf->ReadByte(); + buf.ReadByte(); break; case 0x17: // Introduction date - buf->ReadDWord(); + buf.ReadDWord(); break; default: @@ -4465,7 +4429,7 @@ static ChangeInfoResult RailTypeReserveInfo(uint id, int numinfo, int prop, Byte * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult RoadTypeChangeInfo(uint id, int numinfo, int prop, ByteReader *buf, RoadTramType rtt) +static ChangeInfoResult RoadTypeChangeInfo(uint id, int numinfo, int prop, ByteReader &buf, RoadTramType rtt) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4486,29 +4450,29 @@ static ChangeInfoResult RoadTypeChangeInfo(uint id, int numinfo, int prop, ByteR switch (prop) { case 0x08: // Label of road type /* Skipped here as this is loaded during reservation stage. */ - buf->ReadDWord(); + buf.ReadDWord(); break; case 0x09: { // Toolbar caption of roadtype (sets name as well for backwards compatibility for grf ver < 8) - uint16_t str = buf->ReadWord(); + uint16_t str = buf.ReadWord(); AddStringForMapping(str, &rti->strings.toolbar_caption); break; } case 0x0A: // Menu text of roadtype - AddStringForMapping(buf->ReadWord(), &rti->strings.menu_text); + AddStringForMapping(buf.ReadWord(), &rti->strings.menu_text); break; case 0x0B: // Build window caption - AddStringForMapping(buf->ReadWord(), &rti->strings.build_caption); + AddStringForMapping(buf.ReadWord(), &rti->strings.build_caption); break; case 0x0C: // Autoreplace text - AddStringForMapping(buf->ReadWord(), &rti->strings.replace_text); + AddStringForMapping(buf.ReadWord(), &rti->strings.replace_text); break; case 0x0D: // New engine text - AddStringForMapping(buf->ReadWord(), &rti->strings.new_engine); + AddStringForMapping(buf.ReadWord(), &rti->strings.new_engine); break; case 0x0F: // Powered roadtype list @@ -4517,9 +4481,9 @@ static ChangeInfoResult RoadTypeChangeInfo(uint id, int numinfo, int prop, ByteR /* Road type compatibility bits are added to the existing bits * to allow multiple GRFs to modify compatibility with the * default road types. */ - int n = buf->ReadByte(); + int n = buf.ReadByte(); for (int j = 0; j != n; j++) { - RoadTypeLabel label = buf->ReadDWord(); + RoadTypeLabel label = buf.ReadDWord(); RoadType resolved_rt = GetRoadTypeByLabel(BSWAP32(label), false); if (resolved_rt != INVALID_ROADTYPE) { switch (prop) { @@ -4539,40 +4503,40 @@ static ChangeInfoResult RoadTypeChangeInfo(uint id, int numinfo, int prop, ByteR } case 0x10: // Road Type flags - rti->flags = (RoadTypeFlags)buf->ReadByte(); + rti->flags = (RoadTypeFlags)buf.ReadByte(); break; case 0x13: // Construction cost factor - rti->cost_multiplier = buf->ReadWord(); + rti->cost_multiplier = buf.ReadWord(); break; case 0x14: // Speed limit - rti->max_speed = buf->ReadWord(); + rti->max_speed = buf.ReadWord(); break; case 0x16: // Map colour - rti->map_colour = buf->ReadByte(); + rti->map_colour = buf.ReadByte(); break; case 0x17: // Introduction date - rti->introduction_date = buf->ReadDWord(); + rti->introduction_date = buf.ReadDWord(); break; case 0x1A: // Sort order - rti->sorting_order = buf->ReadByte(); + rti->sorting_order = buf.ReadByte(); break; case 0x1B: // Name of roadtype - AddStringForMapping(buf->ReadWord(), &rti->strings.name); + AddStringForMapping(buf.ReadWord(), &rti->strings.name); break; case 0x1C: // Maintenance cost factor - rti->maintenance_multiplier = buf->ReadWord(); + rti->maintenance_multiplier = buf.ReadWord(); break; case 0x1D: // Alternate road type label list /* Skipped here as this is loaded during reservation stage. */ - for (int j = buf->ReadByte(); j != 0; j--) buf->ReadDWord(); + for (int j = buf.ReadByte(); j != 0; j--) buf.ReadDWord(); break; default: @@ -4584,18 +4548,18 @@ static ChangeInfoResult RoadTypeChangeInfo(uint id, int numinfo, int prop, ByteR return ret; } -static ChangeInfoResult RoadTypeChangeInfo(uint id, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult RoadTypeChangeInfo(uint id, int numinfo, int prop, ByteReader &buf) { return RoadTypeChangeInfo(id, numinfo, prop, buf, RTT_ROAD); } -static ChangeInfoResult TramTypeChangeInfo(uint id, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult TramTypeChangeInfo(uint id, int numinfo, int prop, ByteReader &buf) { return RoadTypeChangeInfo(id, numinfo, prop, buf, RTT_TRAM); } -static ChangeInfoResult RoadTypeReserveInfo(uint id, int numinfo, int prop, ByteReader *buf, RoadTramType rtt) +static ChangeInfoResult RoadTypeReserveInfo(uint id, int numinfo, int prop, ByteReader &buf, RoadTramType rtt) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4610,7 +4574,7 @@ static ChangeInfoResult RoadTypeReserveInfo(uint id, int numinfo, int prop, Byte for (int i = 0; i < numinfo; i++) { switch (prop) { case 0x08: { // Label of road type - RoadTypeLabel rtl = buf->ReadDWord(); + RoadTypeLabel rtl = buf.ReadDWord(); rtl = BSWAP32(rtl); RoadType rt = GetRoadTypeByLabel(rtl, false); @@ -4634,14 +4598,14 @@ static ChangeInfoResult RoadTypeReserveInfo(uint id, int numinfo, int prop, Byte case 0x14: // Speed limit case 0x1B: // Name of roadtype case 0x1C: // Maintenance cost factor - buf->ReadWord(); + buf.ReadWord(); break; case 0x1D: // Alternate road type label list if (type_map[id + i] != INVALID_ROADTYPE) { - int n = buf->ReadByte(); + int n = buf.ReadByte(); for (int j = 0; j != n; j++) { - _roadtypes[type_map[id + i]].alternate_labels.push_back(BSWAP32(buf->ReadDWord())); + _roadtypes[type_map[id + i]].alternate_labels.push_back(BSWAP32(buf.ReadDWord())); } break; } @@ -4651,17 +4615,17 @@ static ChangeInfoResult RoadTypeReserveInfo(uint id, int numinfo, int prop, Byte case 0x0F: // Powered roadtype list case 0x18: // Roadtype list required for date introduction case 0x19: // Introduced roadtype list - for (int j = buf->ReadByte(); j != 0; j--) buf->ReadDWord(); + for (int j = buf.ReadByte(); j != 0; j--) buf.ReadDWord(); break; case 0x10: // Road Type flags case 0x16: // Map colour case 0x1A: // Sort order - buf->ReadByte(); + buf.ReadByte(); break; case 0x17: // Introduction date - buf->ReadDWord(); + buf.ReadDWord(); break; default: @@ -4673,17 +4637,17 @@ static ChangeInfoResult RoadTypeReserveInfo(uint id, int numinfo, int prop, Byte return ret; } -static ChangeInfoResult RoadTypeReserveInfo(uint id, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult RoadTypeReserveInfo(uint id, int numinfo, int prop, ByteReader &buf) { return RoadTypeReserveInfo(id, numinfo, prop, buf, RTT_ROAD); } -static ChangeInfoResult TramTypeReserveInfo(uint id, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult TramTypeReserveInfo(uint id, int numinfo, int prop, ByteReader &buf) { return RoadTypeReserveInfo(id, numinfo, prop, buf, RTT_TRAM); } -static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4705,7 +4669,7 @@ static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int pro switch (prop) { case 0x08: { // Substitute airport tile type - byte subs_id = buf->ReadByte(); + uint8_t subs_id = buf.ReadByte(); if (subs_id >= NEW_AIRPORTTILE_OFFSET) { /* The substitute id must be one of the original airport tiles. */ GrfMsg(2, "AirportTileChangeInfo: Attempt to use new airport tile {} as substitute airport tile for {}. Ignoring.", subs_id, airtid + i); @@ -4730,7 +4694,7 @@ static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int pro } case 0x09: { // Airport tile override - byte override = buf->ReadByte(); + uint8_t override = buf.ReadByte(); /* The airport tile being overridden must be an original airport tile. */ if (override >= NEW_AIRPORTTILE_OFFSET) { @@ -4743,20 +4707,20 @@ static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int pro } case 0x0E: // Callback mask - tsp->callback_mask = buf->ReadByte(); + tsp->callback_mask = buf.ReadByte(); break; case 0x0F: // Animation information - tsp->animation.frames = buf->ReadByte(); - tsp->animation.status = buf->ReadByte(); + tsp->animation.frames = buf.ReadByte(); + tsp->animation.status = buf.ReadByte(); break; case 0x10: // Animation speed - tsp->animation.speed = buf->ReadByte(); + tsp->animation.speed = buf.ReadByte(); break; case 0x11: // Animation triggers - tsp->animation.triggers = buf->ReadByte(); + tsp->animation.triggers = buf.ReadByte(); break; default: @@ -4774,7 +4738,7 @@ static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int pro * @param buf The property value. * @return ChangeInfoResult. */ -static ChangeInfoResult IgnoreRoadStopProperty(uint prop, ByteReader *buf) +static ChangeInfoResult IgnoreRoadStopProperty(uint prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4783,7 +4747,7 @@ static ChangeInfoResult IgnoreRoadStopProperty(uint prop, ByteReader *buf) case 0x0C: case 0x0F: case 0x11: - buf->ReadByte(); + buf.ReadByte(); break; case 0x0A: @@ -4791,13 +4755,13 @@ static ChangeInfoResult IgnoreRoadStopProperty(uint prop, ByteReader *buf) case 0x0E: case 0x10: case 0x15: - buf->ReadWord(); + buf.ReadWord(); break; case 0x08: case 0x0D: case 0x12: - buf->ReadDWord(); + buf.ReadDWord(); break; default: @@ -4808,7 +4772,7 @@ static ChangeInfoResult IgnoreRoadStopProperty(uint prop, ByteReader *buf) return ret; } -static ChangeInfoResult RoadStopChangeInfo(uint id, int numinfo, int prop, ByteReader *buf) +static ChangeInfoResult RoadStopChangeInfo(uint id, int numinfo, int prop, ByteReader &buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4836,56 +4800,55 @@ static ChangeInfoResult RoadStopChangeInfo(uint id, int numinfo, int prop, ByteR rs = _cur.grffile->roadstops[id + i].get(); } - uint32_t classid = buf->ReadDWord(); - rs->cls_id = RoadStopClass::Allocate(BSWAP32(classid)); - rs->spec_id = id + i; + uint32_t classid = buf.ReadDWord(); + rs->class_index = RoadStopClass::Allocate(BSWAP32(classid)); break; } case 0x09: // Road stop type - rs->stop_type = (RoadStopAvailabilityType)buf->ReadByte(); + rs->stop_type = (RoadStopAvailabilityType)buf.ReadByte(); break; case 0x0A: // Road Stop Name - AddStringForMapping(buf->ReadWord(), &rs->name); + AddStringForMapping(buf.ReadWord(), &rs->name); break; case 0x0B: // Road Stop Class name - AddStringForMapping(buf->ReadWord(), &RoadStopClass::Get(rs->cls_id)->name); + AddStringForMapping(buf.ReadWord(), [rs](StringID str) { RoadStopClass::Get(rs->class_index)->name = str; }); break; case 0x0C: // The draw mode - rs->draw_mode = (RoadStopDrawMode)buf->ReadByte(); + rs->draw_mode = static_cast(buf.ReadByte()); break; case 0x0D: // Cargo types for random triggers - rs->cargo_triggers = TranslateRefitMask(buf->ReadDWord()); + rs->cargo_triggers = TranslateRefitMask(buf.ReadDWord()); break; case 0x0E: // Animation info - rs->animation.frames = buf->ReadByte(); - rs->animation.status = buf->ReadByte(); + rs->animation.frames = buf.ReadByte(); + rs->animation.status = buf.ReadByte(); break; case 0x0F: // Animation speed - rs->animation.speed = buf->ReadByte(); + rs->animation.speed = buf.ReadByte(); break; case 0x10: // Animation triggers - rs->animation.triggers = buf->ReadWord(); + rs->animation.triggers = buf.ReadWord(); break; case 0x11: // Callback mask - rs->callback_mask = buf->ReadByte(); + rs->callback_mask = buf.ReadByte(); break; case 0x12: // General flags - rs->flags = (uint8_t)buf->ReadDWord(); // Future-proofing, size this as 4 bytes, but we only need one byte's worth of flags at present + rs->flags = (uint16_t)buf.ReadDWord(); // Future-proofing, size this as 4 bytes, but we only need two byte's worth of flags at present break; case 0x15: // Cost multipliers - rs->build_cost_multiplier = buf->ReadByte(); - rs->clear_cost_multiplier = buf->ReadByte(); + rs->build_cost_multiplier = buf.ReadByte(); + rs->clear_cost_multiplier = buf.ReadByte(); break; default: @@ -4927,7 +4890,7 @@ static bool HandleChangeInfoResult(const char *caller, ChangeInfoResult cir, uin } /* Action 0x00 */ -static void FeatureChangeInfo(ByteReader *buf) +static void FeatureChangeInfo(ByteReader &buf) { /* <00> ()... * @@ -4965,10 +4928,10 @@ static void FeatureChangeInfo(ByteReader *buf) }; static_assert(GSF_END == lengthof(handler)); - uint8_t feature = buf->ReadByte(); - uint8_t numprops = buf->ReadByte(); - uint numinfo = buf->ReadByte(); - uint engine = buf->ReadExtendedByte(); + uint8_t feature = buf.ReadByte(); + uint8_t numprops = buf.ReadByte(); + uint numinfo = buf.ReadByte(); + uint engine = buf.ReadExtendedByte(); if (feature >= GSF_END) { GrfMsg(1, "FeatureChangeInfo: Unsupported feature 0x{:02X}, skipping", feature); @@ -4986,8 +4949,8 @@ static void FeatureChangeInfo(ByteReader *buf) /* Mark the feature as used by the grf */ SetBit(_cur.grffile->grf_features, feature); - while (numprops-- && buf->HasData()) { - uint8_t prop = buf->ReadByte(); + while (numprops-- && buf.HasData()) { + uint8_t prop = buf.ReadByte(); ChangeInfoResult cir = handler[feature](engine, numinfo, prop, buf); if (HandleChangeInfoResult("FeatureChangeInfo", cir, feature, prop)) return; @@ -4995,26 +4958,26 @@ static void FeatureChangeInfo(ByteReader *buf) } /* Action 0x00 (GLS_SAFETYSCAN) */ -static void SafeChangeInfo(ByteReader *buf) +static void SafeChangeInfo(ByteReader &buf) { - uint8_t feature = buf->ReadByte(); - uint8_t numprops = buf->ReadByte(); - uint numinfo = buf->ReadByte(); - buf->ReadExtendedByte(); // id + uint8_t feature = buf.ReadByte(); + uint8_t numprops = buf.ReadByte(); + uint numinfo = buf.ReadByte(); + buf.ReadExtendedByte(); // id if (feature == GSF_BRIDGES && numprops == 1) { - uint8_t prop = buf->ReadByte(); + uint8_t prop = buf.ReadByte(); /* Bridge property 0x0D is redefinition of sprite layout tables, which * is considered safe. */ if (prop == 0x0D) return; } else if (feature == GSF_GLOBALVAR && numprops == 1) { - uint8_t prop = buf->ReadByte(); + uint8_t prop = buf.ReadByte(); /* Engine ID Mappings are safe, if the source is static */ if (prop == 0x11) { bool is_safe = true; for (uint i = 0; i < numinfo; i++) { - uint32_t s = buf->ReadDWord(); - buf->ReadDWord(); // dest + uint32_t s = buf.ReadDWord(); + buf.ReadDWord(); // dest const GRFConfig *grfconfig = GetGRFConfig(s); if (grfconfig != nullptr && !HasBit(grfconfig->flags, GCF_STATIC)) { is_safe = false; @@ -5032,18 +4995,18 @@ static void SafeChangeInfo(ByteReader *buf) } /* Action 0x00 (GLS_RESERVE) */ -static void ReserveChangeInfo(ByteReader *buf) +static void ReserveChangeInfo(ByteReader &buf) { - uint8_t feature = buf->ReadByte(); + uint8_t feature = buf.ReadByte(); if (feature != GSF_CARGOES && feature != GSF_GLOBALVAR && feature != GSF_RAILTYPES && feature != GSF_ROADTYPES && feature != GSF_TRAMTYPES) return; - uint8_t numprops = buf->ReadByte(); - uint8_t numinfo = buf->ReadByte(); - uint8_t index = buf->ReadExtendedByte(); + uint8_t numprops = buf.ReadByte(); + uint8_t numinfo = buf.ReadByte(); + uint8_t index = buf.ReadExtendedByte(); - while (numprops-- && buf->HasData()) { - uint8_t prop = buf->ReadByte(); + while (numprops-- && buf.HasData()) { + uint8_t prop = buf.ReadByte(); ChangeInfoResult cir = CIR_SUCCESS; switch (feature) { @@ -5074,7 +5037,7 @@ static void ReserveChangeInfo(ByteReader *buf) } /* Action 0x01 */ -static void NewSpriteSet(ByteReader *buf) +static void NewSpriteSet(ByteReader &buf) { /* Basic format: <01> * Extended format: <01> 00 @@ -5090,17 +5053,17 @@ static void NewSpriteSet(ByteReader *buf) * In that case, use num-dirs=4. */ - uint8_t feature = buf->ReadByte(); - uint16_t num_sets = buf->ReadByte(); + uint8_t feature = buf.ReadByte(); + uint16_t num_sets = buf.ReadByte(); uint16_t first_set = 0; - if (num_sets == 0 && buf->HasData(3)) { + if (num_sets == 0 && buf.HasData(3)) { /* Extended Action1 format. * Some GRFs define zero sets of zero sprites, though there is actually no use in that. Ignore them. */ - first_set = buf->ReadExtendedByte(); - num_sets = buf->ReadExtendedByte(); + first_set = buf.ReadExtendedByte(); + num_sets = buf.ReadExtendedByte(); } - uint16_t num_ents = buf->ReadExtendedByte(); + uint16_t num_ents = buf.ReadExtendedByte(); if (feature >= GSF_END) { _cur.skip_sprites = num_sets * num_ents; @@ -5121,18 +5084,18 @@ static void NewSpriteSet(ByteReader *buf) } /* Action 0x01 (SKIP) */ -static void SkipAct1(ByteReader *buf) +static void SkipAct1(ByteReader &buf) { - buf->ReadByte(); - uint16_t num_sets = buf->ReadByte(); + buf.ReadByte(); + uint16_t num_sets = buf.ReadByte(); - if (num_sets == 0 && buf->HasData(3)) { + if (num_sets == 0 && buf.HasData(3)) { /* Extended Action1 format. * Some GRFs define zero sets of zero sprites, though there is actually no use in that. Ignore them. */ - buf->ReadExtendedByte(); // first_set - num_sets = buf->ReadExtendedByte(); + buf.ReadExtendedByte(); // first_set + num_sets = buf.ReadExtendedByte(); } - uint16_t num_ents = buf->ReadExtendedByte(); + uint16_t num_ents = buf.ReadExtendedByte(); _cur.skip_sprites = num_sets * num_ents; @@ -5141,7 +5104,7 @@ static void SkipAct1(ByteReader *buf) /* Helper function to either create a callback or link to a previously * defined spritegroup. */ -static const SpriteGroup *GetGroupFromGroupID(byte setid, byte type, uint16_t groupid) +static const SpriteGroup *GetGroupFromGroupID(uint8_t setid, uint8_t type, uint16_t groupid) { if (HasBit(groupid, 15)) { assert(CallbackResultSpriteGroup::CanAllocateItem()); @@ -5164,7 +5127,7 @@ static const SpriteGroup *GetGroupFromGroupID(byte setid, byte type, uint16_t gr * @param spriteid Raw value from the GRF for the new spritegroup; describes either the return value or the referenced spritegroup. * @return Created spritegroup. */ -static const SpriteGroup *CreateGroupFromGroupID(byte feature, byte setid, byte type, uint16_t spriteid) +static const SpriteGroup *CreateGroupFromGroupID(uint8_t feature, uint8_t setid, uint8_t type, uint16_t spriteid) { if (HasBit(spriteid, 15)) { assert(CallbackResultSpriteGroup::CanAllocateItem()); @@ -5187,7 +5150,7 @@ static const SpriteGroup *CreateGroupFromGroupID(byte feature, byte setid, byte } /* Action 0x02 */ -static void NewSpriteGroup(ByteReader *buf) +static void NewSpriteGroup(ByteReader &buf) { /* <02> * @@ -5201,14 +5164,14 @@ static void NewSpriteGroup(ByteReader *buf) * V feature-specific-data (huge mess, don't even look it up --pasky) */ const SpriteGroup *act_group = nullptr; - uint8_t feature = buf->ReadByte(); + uint8_t feature = buf.ReadByte(); if (feature >= GSF_END) { GrfMsg(1, "NewSpriteGroup: Unsupported feature 0x{:02X}, skipping", feature); return; } - uint8_t setid = buf->ReadByte(); - uint8_t type = buf->ReadByte(); + uint8_t setid = buf.ReadByte(); + uint8_t type = buf.ReadByte(); /* Sprite Groups are created here but they are allocated from a pool, so * we do not need to delete anything if there is an exception from the @@ -5223,8 +5186,8 @@ static void NewSpriteGroup(ByteReader *buf) case 0x89: // Self scope, dword case 0x8A: // Parent scope, dword { - byte varadjust; - byte varsize; + uint8_t varadjust; + uint8_t varsize; assert(DeterministicSpriteGroup::CanAllocateItem()); DeterministicSpriteGroup *group = new DeterministicSpriteGroup(); @@ -5245,23 +5208,23 @@ static void NewSpriteGroup(ByteReader *buf) DeterministicSpriteGroupAdjust &adjust = group->adjusts.emplace_back(); /* The first var adjust doesn't have an operation specified, so we set it to add. */ - adjust.operation = group->adjusts.size() == 1 ? DSGA_OP_ADD : (DeterministicSpriteGroupAdjustOperation)buf->ReadByte(); - adjust.variable = buf->ReadByte(); + adjust.operation = group->adjusts.size() == 1 ? DSGA_OP_ADD : (DeterministicSpriteGroupAdjustOperation)buf.ReadByte(); + adjust.variable = buf.ReadByte(); if (adjust.variable == 0x7E) { /* Link subroutine group */ - adjust.subroutine = GetGroupFromGroupID(setid, type, buf->ReadByte()); + adjust.subroutine = GetGroupFromGroupID(setid, type, buf.ReadByte()); } else { - adjust.parameter = IsInsideMM(adjust.variable, 0x60, 0x80) ? buf->ReadByte() : 0; + adjust.parameter = IsInsideMM(adjust.variable, 0x60, 0x80) ? buf.ReadByte() : 0; } - varadjust = buf->ReadByte(); + varadjust = buf.ReadByte(); adjust.shift_num = GB(varadjust, 0, 5); adjust.type = (DeterministicSpriteGroupAdjustType)GB(varadjust, 6, 2); - adjust.and_mask = buf->ReadVarSize(varsize); + adjust.and_mask = buf.ReadVarSize(varsize); if (adjust.type != DSGA_TYPE_NONE) { - adjust.add_val = buf->ReadVarSize(varsize); - adjust.divmod_val = buf->ReadVarSize(varsize); + adjust.add_val = buf.ReadVarSize(varsize); + adjust.divmod_val = buf.ReadVarSize(varsize); } else { adjust.add_val = 0; adjust.divmod_val = 0; @@ -5271,34 +5234,35 @@ static void NewSpriteGroup(ByteReader *buf) } while (HasBit(varadjust, 5)); std::vector ranges; - ranges.resize(buf->ReadByte()); - for (uint i = 0; i < ranges.size(); i++) { - ranges[i].group = GetGroupFromGroupID(setid, type, buf->ReadWord()); - ranges[i].low = buf->ReadVarSize(varsize); - ranges[i].high = buf->ReadVarSize(varsize); + ranges.resize(buf.ReadByte()); + for (auto &range : ranges) { + range.group = GetGroupFromGroupID(setid, type, buf.ReadWord()); + range.low = buf.ReadVarSize(varsize); + range.high = buf.ReadVarSize(varsize); } - group->default_group = GetGroupFromGroupID(setid, type, buf->ReadWord()); + group->default_group = GetGroupFromGroupID(setid, type, buf.ReadWord()); group->error_group = ranges.empty() ? group->default_group : ranges[0].group; /* nvar == 0 is a special case -- we turn our value into a callback result */ group->calculated_result = ranges.empty(); /* Sort ranges ascending. When ranges overlap, this may required clamping or splitting them */ std::vector bounds; - for (uint i = 0; i < ranges.size(); i++) { - bounds.push_back(ranges[i].low); - if (ranges[i].high != UINT32_MAX) bounds.push_back(ranges[i].high + 1); + bounds.reserve(ranges.size()); + for (const auto &range : ranges) { + bounds.push_back(range.low); + if (range.high != UINT32_MAX) bounds.push_back(range.high + 1); } std::sort(bounds.begin(), bounds.end()); bounds.erase(std::unique(bounds.begin(), bounds.end()), bounds.end()); std::vector target; - for (uint j = 0; j < bounds.size(); ++j) { - uint32_t v = bounds[j]; + target.reserve(bounds.size()); + for (const auto &bound : bounds) { const SpriteGroup *t = group->default_group; - for (uint i = 0; i < ranges.size(); i++) { - if (ranges[i].low <= v && v <= ranges[i].high) { - t = ranges[i].group; + for (const auto &range : ranges) { + if (range.low <= bound && bound <= range.high) { + t = range.group; break; } } @@ -5336,21 +5300,22 @@ static void NewSpriteGroup(ByteReader *buf) if (HasBit(type, 2)) { if (feature <= GSF_AIRCRAFT) group->var_scope = VSG_SCOPE_RELATIVE; - group->count = buf->ReadByte(); + group->count = buf.ReadByte(); } - uint8_t triggers = buf->ReadByte(); + uint8_t triggers = buf.ReadByte(); group->triggers = GB(triggers, 0, 7); group->cmp_mode = HasBit(triggers, 7) ? RSG_CMP_ALL : RSG_CMP_ANY; - group->lowest_randbit = buf->ReadByte(); + group->lowest_randbit = buf.ReadByte(); - byte num_groups = buf->ReadByte(); + uint8_t num_groups = buf.ReadByte(); if (!HasExactlyOneBit(num_groups)) { GrfMsg(1, "NewSpriteGroup: Random Action 2 nrand should be power of 2"); } + group->groups.reserve(num_groups); for (uint i = 0; i < num_groups; i++) { - group->groups.push_back(GetGroupFromGroupID(setid, type, buf->ReadWord())); + group->groups.push_back(GetGroupFromGroupID(setid, type, buf.ReadWord())); } break; @@ -5372,8 +5337,8 @@ static void NewSpriteGroup(ByteReader *buf) case GSF_ROADTYPES: case GSF_TRAMTYPES: { - byte num_loaded = type; - byte num_loading = buf->ReadByte(); + uint8_t num_loaded = type; + uint8_t num_loading = buf.ReadByte(); if (!_cur.HasValidSpriteSets(feature)) { GrfMsg(0, "NewSpriteGroup: No sprite set to work on! Skipping"); @@ -5390,7 +5355,7 @@ static void NewSpriteGroup(ByteReader *buf) if (num_loaded + num_loading == 1) { /* Avoid creating 'Real' sprite group if only one option. */ - uint16_t spriteid = buf->ReadWord(); + uint16_t spriteid = buf.ReadWord(); act_group = CreateGroupFromGroupID(feature, setid, type, spriteid); GrfMsg(8, "NewSpriteGroup: one result, skipping RealSpriteGroup = subset {}", spriteid); break; @@ -5399,20 +5364,21 @@ static void NewSpriteGroup(ByteReader *buf) std::vector loaded; std::vector loading; + loaded.reserve(num_loaded); for (uint i = 0; i < num_loaded; i++) { - loaded.push_back(buf->ReadWord()); + loaded.push_back(buf.ReadWord()); GrfMsg(8, "NewSpriteGroup: + rg->loaded[{}] = subset {}", i, loaded[i]); } + loading.reserve(num_loading); for (uint i = 0; i < num_loading; i++) { - loading.push_back(buf->ReadWord()); + loading.push_back(buf.ReadWord()); GrfMsg(8, "NewSpriteGroup: + rg->loading[{}] = subset {}", i, loading[i]); } - if (std::adjacent_find(loaded.begin(), loaded.end(), std::not_equal_to<>()) == loaded.end() && - std::adjacent_find(loading.begin(), loading.end(), std::not_equal_to<>()) == loading.end() && - loaded[0] == loading[0]) - { + bool loaded_same = !loaded.empty() && std::adjacent_find(loaded.begin(), loaded.end(), std::not_equal_to<>()) == loaded.end(); + bool loading_same = !loading.empty() && std::adjacent_find(loading.begin(), loading.end(), std::not_equal_to<>()) == loading.end(); + if (loaded_same && loading_same && loaded[0] == loading[0]) { /* Both lists only contain the same value, so don't create 'Real' sprite group */ act_group = CreateGroupFromGroupID(feature, setid, type, loaded[0]); GrfMsg(8, "NewSpriteGroup: same result, skipping RealSpriteGroup = subset {}", loaded[0]); @@ -5424,11 +5390,15 @@ static void NewSpriteGroup(ByteReader *buf) group->nfo_line = _cur.nfo_line; act_group = group; + if (loaded_same && loaded.size() > 1) loaded.resize(1); + group->loaded.reserve(loaded.size()); for (uint16_t spriteid : loaded) { const SpriteGroup *t = CreateGroupFromGroupID(feature, setid, type, spriteid); group->loaded.push_back(t); } + if (loading_same && loading.size() > 1) loading.resize(1); + group->loading.reserve(loading.size()); for (uint16_t spriteid : loading) { const SpriteGroup *t = CreateGroupFromGroupID(feature, setid, type, spriteid); group->loading.push_back(t); @@ -5442,7 +5412,7 @@ static void NewSpriteGroup(ByteReader *buf) case GSF_OBJECTS: case GSF_INDUSTRYTILES: case GSF_ROADSTOPS: { - byte num_building_sprites = std::max((uint8_t)1, type); + uint8_t num_building_sprites = std::max((uint8_t)1, type); assert(TileLayoutSpriteGroup::CanAllocateItem()); TileLayoutSpriteGroup *group = new TileLayoutSpriteGroup(); @@ -5466,34 +5436,34 @@ static void NewSpriteGroup(ByteReader *buf) act_group = group; group->version = type; if (type == 0) { - group->num_input = 3; - for (uint i = 0; i < 3; i++) { - group->subtract_input[i] = (int16_t)buf->ReadWord(); // signed + group->num_input = INDUSTRY_ORIGINAL_NUM_INPUTS; + for (uint i = 0; i < INDUSTRY_ORIGINAL_NUM_INPUTS; i++) { + group->subtract_input[i] = (int16_t)buf.ReadWord(); // signed } - group->num_output = 2; - for (uint i = 0; i < 2; i++) { - group->add_output[i] = buf->ReadWord(); // unsigned + group->num_output = INDUSTRY_ORIGINAL_NUM_OUTPUTS; + for (uint i = 0; i < INDUSTRY_ORIGINAL_NUM_OUTPUTS; i++) { + group->add_output[i] = buf.ReadWord(); // unsigned } - group->again = buf->ReadByte(); + group->again = buf.ReadByte(); } else if (type == 1) { - group->num_input = 3; - for (uint i = 0; i < 3; i++) { - group->subtract_input[i] = buf->ReadByte(); + group->num_input = INDUSTRY_ORIGINAL_NUM_INPUTS; + for (uint i = 0; i < INDUSTRY_ORIGINAL_NUM_INPUTS; i++) { + group->subtract_input[i] = buf.ReadByte(); } - group->num_output = 2; - for (uint i = 0; i < 2; i++) { - group->add_output[i] = buf->ReadByte(); + group->num_output = INDUSTRY_ORIGINAL_NUM_OUTPUTS; + for (uint i = 0; i < INDUSTRY_ORIGINAL_NUM_OUTPUTS; i++) { + group->add_output[i] = buf.ReadByte(); } - group->again = buf->ReadByte(); + group->again = buf.ReadByte(); } else if (type == 2) { - group->num_input = buf->ReadByte(); + group->num_input = buf.ReadByte(); if (group->num_input > lengthof(group->subtract_input)) { GRFError *error = DisableGrf(STR_NEWGRF_ERROR_INDPROD_CALLBACK); error->data = "too many inputs (max 16)"; return; } for (uint i = 0; i < group->num_input; i++) { - byte rawcargo = buf->ReadByte(); + uint8_t rawcargo = buf.ReadByte(); CargoID cargo = GetCargoTranslation(rawcargo, _cur.grffile); if (!IsValidCargoID(cargo)) { /* The mapped cargo is invalid. This is permitted at this point, @@ -5506,16 +5476,16 @@ static void NewSpriteGroup(ByteReader *buf) return; } group->cargo_input[i] = cargo; - group->subtract_input[i] = buf->ReadByte(); + group->subtract_input[i] = buf.ReadByte(); } - group->num_output = buf->ReadByte(); + group->num_output = buf.ReadByte(); if (group->num_output > lengthof(group->add_output)) { GRFError *error = DisableGrf(STR_NEWGRF_ERROR_INDPROD_CALLBACK); error->data = "too many outputs (max 16)"; return; } for (uint i = 0; i < group->num_output; i++) { - byte rawcargo = buf->ReadByte(); + uint8_t rawcargo = buf.ReadByte(); CargoID cargo = GetCargoTranslation(rawcargo, _cur.grffile); if (!IsValidCargoID(cargo)) { /* Mark this result as invalid to use */ @@ -5526,9 +5496,9 @@ static void NewSpriteGroup(ByteReader *buf) return; } group->cargo_output[i] = cargo; - group->add_output[i] = buf->ReadByte(); + group->add_output[i] = buf.ReadByte(); } - group->again = buf->ReadByte(); + group->again = buf.ReadByte(); } else { NOT_REACHED(); } @@ -5602,10 +5572,9 @@ static bool IsValidGroupID(uint16_t groupid, const char *function) return true; } -static void VehicleMapSpriteGroup(ByteReader *buf, byte feature, uint8_t idcount) +static void VehicleMapSpriteGroup(ByteReader &buf, uint8_t feature, uint8_t idcount) { - static EngineID *last_engines; - static uint last_engines_count; + static std::vector last_engines; // Engine IDs are remembered in case the next action is a wagon override. bool wagover = false; /* Test for 'wagon override' flag */ @@ -5614,23 +5583,20 @@ static void VehicleMapSpriteGroup(ByteReader *buf, byte feature, uint8_t idcount /* Strip off the flag */ idcount = GB(idcount, 0, 7); - if (last_engines_count == 0) { + if (last_engines.empty()) { GrfMsg(0, "VehicleMapSpriteGroup: WagonOverride: No engine to do override with"); return; } - GrfMsg(6, "VehicleMapSpriteGroup: WagonOverride: {} engines, {} wagons", - last_engines_count, idcount); + GrfMsg(6, "VehicleMapSpriteGroup: WagonOverride: {} engines, {} wagons", last_engines.size(), idcount); } else { - if (last_engines_count != idcount) { - last_engines = ReallocT(last_engines, idcount); - last_engines_count = idcount; - } + last_engines.resize(idcount); } std::vector engines; + engines.reserve(idcount); for (uint i = 0; i < idcount; i++) { - Engine *e = GetNewEngine(_cur.grffile, (VehicleType)feature, buf->ReadExtendedByte()); + Engine *e = GetNewEngine(_cur.grffile, (VehicleType)feature, buf.ReadExtendedByte()); if (e == nullptr) { /* No engine could be allocated?!? Deal with it. Okay, * this might look bad. Also make sure this NewGRF @@ -5643,10 +5609,10 @@ static void VehicleMapSpriteGroup(ByteReader *buf, byte feature, uint8_t idcount if (!wagover) last_engines[i] = engines[i]; } - uint8_t cidcount = buf->ReadByte(); + uint8_t cidcount = buf.ReadByte(); for (uint c = 0; c < cidcount; c++) { - uint8_t ctype = buf->ReadByte(); - uint16_t groupid = buf->ReadWord(); + uint8_t ctype = buf.ReadByte(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "VehicleMapSpriteGroup")) continue; GrfMsg(8, "VehicleMapSpriteGroup: * [{}] Cargo type 0x{:X}, group id 0x{:02X}", c, ctype, groupid); @@ -5660,14 +5626,14 @@ static void VehicleMapSpriteGroup(ByteReader *buf, byte feature, uint8_t idcount GrfMsg(7, "VehicleMapSpriteGroup: [{}] Engine {}...", i, engine); if (wagover) { - SetWagonOverrideSprites(engine, cid, _cur.spritegroups[groupid], last_engines, last_engines_count); + SetWagonOverrideSprites(engine, cid, _cur.spritegroups[groupid], last_engines); } else { SetCustomEngineSprites(engine, cid, _cur.spritegroups[groupid]); } } } - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "VehicleMapSpriteGroup")) return; GrfMsg(8, "-- Default group id 0x{:04X}", groupid); @@ -5676,7 +5642,7 @@ static void VehicleMapSpriteGroup(ByteReader *buf, byte feature, uint8_t idcount EngineID engine = engines[i]; if (wagover) { - SetWagonOverrideSprites(engine, SpriteGroupCargo::SG_DEFAULT, _cur.spritegroups[groupid], last_engines, last_engines_count); + SetWagonOverrideSprites(engine, SpriteGroupCargo::SG_DEFAULT, _cur.spritegroups[groupid], last_engines); } else { SetCustomEngineSprites(engine, SpriteGroupCargo::SG_DEFAULT, _cur.spritegroups[groupid]); SetEngineGRF(engine, _cur.grffile); @@ -5685,18 +5651,18 @@ static void VehicleMapSpriteGroup(ByteReader *buf, byte feature, uint8_t idcount } -static void CanalMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void CanalMapSpriteGroup(ByteReader &buf, uint8_t idcount) { std::vector cfs; cfs.reserve(idcount); for (uint i = 0; i < idcount; i++) { - cfs.push_back(buf->ReadExtendedByte()); + cfs.push_back(buf.ReadExtendedByte()); } - uint8_t cidcount = buf->ReadByte(); - buf->Skip(cidcount * 3); + uint8_t cidcount = buf.ReadByte(); + buf.Skip(cidcount * 3); - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "CanalMapSpriteGroup")) return; for (auto &cf : cfs) { @@ -5711,7 +5677,7 @@ static void CanalMapSpriteGroup(ByteReader *buf, uint8_t idcount) } -static void StationMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void StationMapSpriteGroup(ByteReader &buf, uint8_t idcount) { if (_cur.grffile->stations.empty()) { GrfMsg(1, "StationMapSpriteGroup: No stations defined, skipping"); @@ -5721,13 +5687,13 @@ static void StationMapSpriteGroup(ByteReader *buf, uint8_t idcount) std::vector stations; stations.reserve(idcount); for (uint i = 0; i < idcount; i++) { - stations.push_back(buf->ReadExtendedByte()); + stations.push_back(buf.ReadExtendedByte()); } - uint8_t cidcount = buf->ReadByte(); + uint8_t cidcount = buf.ReadByte(); for (uint c = 0; c < cidcount; c++) { - uint8_t ctype = buf->ReadByte(); - uint16_t groupid = buf->ReadWord(); + uint8_t ctype = buf.ReadByte(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "StationMapSpriteGroup")) continue; ctype = TranslateCargo(GSF_STATIONS, ctype); @@ -5745,7 +5711,7 @@ static void StationMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "StationMapSpriteGroup")) return; for (auto &station : stations) { @@ -5769,7 +5735,7 @@ static void StationMapSpriteGroup(ByteReader *buf, uint8_t idcount) } -static void TownHouseMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void TownHouseMapSpriteGroup(ByteReader &buf, uint8_t idcount) { if (_cur.grffile->housespec.empty()) { GrfMsg(1, "TownHouseMapSpriteGroup: No houses defined, skipping"); @@ -5779,14 +5745,14 @@ static void TownHouseMapSpriteGroup(ByteReader *buf, uint8_t idcount) std::vector houses; houses.reserve(idcount); for (uint i = 0; i < idcount; i++) { - houses.push_back(buf->ReadExtendedByte()); + houses.push_back(buf.ReadExtendedByte()); } /* Skip the cargo type section, we only care about the default group */ - uint8_t cidcount = buf->ReadByte(); - buf->Skip(cidcount * 3); + uint8_t cidcount = buf.ReadByte(); + buf.Skip(cidcount * 3); - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "TownHouseMapSpriteGroup")) return; for (auto &house : houses) { @@ -5801,7 +5767,7 @@ static void TownHouseMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } -static void IndustryMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void IndustryMapSpriteGroup(ByteReader &buf, uint8_t idcount) { if (_cur.grffile->industryspec.empty()) { GrfMsg(1, "IndustryMapSpriteGroup: No industries defined, skipping"); @@ -5811,14 +5777,14 @@ static void IndustryMapSpriteGroup(ByteReader *buf, uint8_t idcount) std::vector industries; industries.reserve(idcount); for (uint i = 0; i < idcount; i++) { - industries.push_back(buf->ReadExtendedByte()); + industries.push_back(buf.ReadExtendedByte()); } /* Skip the cargo type section, we only care about the default group */ - uint8_t cidcount = buf->ReadByte(); - buf->Skip(cidcount * 3); + uint8_t cidcount = buf.ReadByte(); + buf.Skip(cidcount * 3); - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "IndustryMapSpriteGroup")) return; for (auto &industry : industries) { @@ -5833,7 +5799,7 @@ static void IndustryMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } -static void IndustrytileMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void IndustrytileMapSpriteGroup(ByteReader &buf, uint8_t idcount) { if (_cur.grffile->indtspec.empty()) { GrfMsg(1, "IndustrytileMapSpriteGroup: No industry tiles defined, skipping"); @@ -5843,14 +5809,14 @@ static void IndustrytileMapSpriteGroup(ByteReader *buf, uint8_t idcount) std::vector indtiles; indtiles.reserve(idcount); for (uint i = 0; i < idcount; i++) { - indtiles.push_back(buf->ReadExtendedByte()); + indtiles.push_back(buf.ReadExtendedByte()); } /* Skip the cargo type section, we only care about the default group */ - uint8_t cidcount = buf->ReadByte(); - buf->Skip(cidcount * 3); + uint8_t cidcount = buf.ReadByte(); + buf.Skip(cidcount * 3); - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "IndustrytileMapSpriteGroup")) return; for (auto &indtile : indtiles) { @@ -5865,19 +5831,19 @@ static void IndustrytileMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } -static void CargoMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void CargoMapSpriteGroup(ByteReader &buf, uint8_t idcount) { std::vector cargoes; cargoes.reserve(idcount); for (uint i = 0; i < idcount; i++) { - cargoes.push_back(buf->ReadExtendedByte()); + cargoes.push_back(buf.ReadExtendedByte()); } /* Skip the cargo type section, we only care about the default group */ - uint8_t cidcount = buf->ReadByte(); - buf->Skip(cidcount * 3); + uint8_t cidcount = buf.ReadByte(); + buf.Skip(cidcount * 3); - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "CargoMapSpriteGroup")) return; for (auto &cid : cargoes) { @@ -5892,7 +5858,7 @@ static void CargoMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } -static void ObjectMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void ObjectMapSpriteGroup(ByteReader &buf, uint8_t idcount) { if (_cur.grffile->objectspec.empty()) { GrfMsg(1, "ObjectMapSpriteGroup: No object tiles defined, skipping"); @@ -5902,13 +5868,13 @@ static void ObjectMapSpriteGroup(ByteReader *buf, uint8_t idcount) std::vector objects; objects.reserve(idcount); for (uint i = 0; i < idcount; i++) { - objects.push_back(buf->ReadExtendedByte()); + objects.push_back(buf.ReadExtendedByte()); } - uint8_t cidcount = buf->ReadByte(); + uint8_t cidcount = buf.ReadByte(); for (uint c = 0; c < cidcount; c++) { - uint8_t ctype = buf->ReadByte(); - uint16_t groupid = buf->ReadWord(); + uint8_t ctype = buf.ReadByte(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "ObjectMapSpriteGroup")) continue; /* The only valid option here is purchase list sprite groups. */ @@ -5929,7 +5895,7 @@ static void ObjectMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "ObjectMapSpriteGroup")) return; for (auto &object : objects) { @@ -5951,19 +5917,19 @@ static void ObjectMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } -static void RailTypeMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void RailTypeMapSpriteGroup(ByteReader &buf, uint8_t idcount) { std::vector railtypes; railtypes.reserve(idcount); for (uint i = 0; i < idcount; i++) { - uint16_t id = buf->ReadExtendedByte(); + uint16_t id = buf.ReadExtendedByte(); railtypes.push_back(id < RAILTYPE_END ? _cur.grffile->railtype_map[id] : INVALID_RAILTYPE); } - uint8_t cidcount = buf->ReadByte(); + uint8_t cidcount = buf.ReadByte(); for (uint c = 0; c < cidcount; c++) { - uint8_t ctype = buf->ReadByte(); - uint16_t groupid = buf->ReadWord(); + uint8_t ctype = buf.ReadByte(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "RailTypeMapSpriteGroup")) continue; if (ctype >= RTSG_END) continue; @@ -5980,24 +5946,24 @@ static void RailTypeMapSpriteGroup(ByteReader *buf, uint8_t idcount) } /* Railtypes do not use the default group. */ - buf->ReadWord(); + buf.ReadWord(); } -static void RoadTypeMapSpriteGroup(ByteReader *buf, uint8_t idcount, RoadTramType rtt) +static void RoadTypeMapSpriteGroup(ByteReader &buf, uint8_t idcount, RoadTramType rtt) { RoadType *type_map = (rtt == RTT_TRAM) ? _cur.grffile->tramtype_map : _cur.grffile->roadtype_map; std::vector roadtypes; roadtypes.reserve(idcount); for (uint i = 0; i < idcount; i++) { - uint16_t id = buf->ReadExtendedByte(); + uint16_t id = buf.ReadExtendedByte(); roadtypes.push_back(id < ROADTYPE_END ? type_map[id] : INVALID_ROADTYPE); } - uint8_t cidcount = buf->ReadByte(); + uint8_t cidcount = buf.ReadByte(); for (uint c = 0; c < cidcount; c++) { - uint8_t ctype = buf->ReadByte(); - uint16_t groupid = buf->ReadWord(); + uint8_t ctype = buf.ReadByte(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "RoadTypeMapSpriteGroup")) continue; if (ctype >= ROTSG_END) continue; @@ -6014,10 +5980,10 @@ static void RoadTypeMapSpriteGroup(ByteReader *buf, uint8_t idcount, RoadTramTyp } /* Roadtypes do not use the default group. */ - buf->ReadWord(); + buf.ReadWord(); } -static void AirportMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void AirportMapSpriteGroup(ByteReader &buf, uint8_t idcount) { if (_cur.grffile->airportspec.empty()) { GrfMsg(1, "AirportMapSpriteGroup: No airports defined, skipping"); @@ -6027,14 +5993,14 @@ static void AirportMapSpriteGroup(ByteReader *buf, uint8_t idcount) std::vector airports; airports.reserve(idcount); for (uint i = 0; i < idcount; i++) { - airports.push_back(buf->ReadExtendedByte()); + airports.push_back(buf.ReadExtendedByte()); } /* Skip the cargo type section, we only care about the default group */ - uint8_t cidcount = buf->ReadByte(); - buf->Skip(cidcount * 3); + uint8_t cidcount = buf.ReadByte(); + buf.Skip(cidcount * 3); - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "AirportMapSpriteGroup")) return; for (auto &airport : airports) { @@ -6049,7 +6015,7 @@ static void AirportMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } -static void AirportTileMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void AirportTileMapSpriteGroup(ByteReader &buf, uint8_t idcount) { if (_cur.grffile->airtspec.empty()) { GrfMsg(1, "AirportTileMapSpriteGroup: No airport tiles defined, skipping"); @@ -6059,14 +6025,14 @@ static void AirportTileMapSpriteGroup(ByteReader *buf, uint8_t idcount) std::vector airptiles; airptiles.reserve(idcount); for (uint i = 0; i < idcount; i++) { - airptiles.push_back(buf->ReadExtendedByte()); + airptiles.push_back(buf.ReadExtendedByte()); } /* Skip the cargo type section, we only care about the default group */ - uint8_t cidcount = buf->ReadByte(); - buf->Skip(cidcount * 3); + uint8_t cidcount = buf.ReadByte(); + buf.Skip(cidcount * 3); - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "AirportTileMapSpriteGroup")) return; for (auto &airptile : airptiles) { @@ -6081,7 +6047,7 @@ static void AirportTileMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } -static void RoadStopMapSpriteGroup(ByteReader *buf, uint8_t idcount) +static void RoadStopMapSpriteGroup(ByteReader &buf, uint8_t idcount) { if (_cur.grffile->roadstops.empty()) { GrfMsg(1, "RoadStopMapSpriteGroup: No roadstops defined, skipping"); @@ -6091,13 +6057,13 @@ static void RoadStopMapSpriteGroup(ByteReader *buf, uint8_t idcount) std::vector roadstops; roadstops.reserve(idcount); for (uint i = 0; i < idcount; i++) { - roadstops.push_back(buf->ReadExtendedByte()); + roadstops.push_back(buf.ReadExtendedByte()); } - uint8_t cidcount = buf->ReadByte(); + uint8_t cidcount = buf.ReadByte(); for (uint c = 0; c < cidcount; c++) { - uint8_t ctype = buf->ReadByte(); - uint16_t groupid = buf->ReadWord(); + uint8_t ctype = buf.ReadByte(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "RoadStopMapSpriteGroup")) continue; ctype = TranslateCargo(GSF_ROADSTOPS, ctype); @@ -6115,7 +6081,7 @@ static void RoadStopMapSpriteGroup(ByteReader *buf, uint8_t idcount) } } - uint16_t groupid = buf->ReadWord(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "RoadStopMapSpriteGroup")) return; for (auto &roadstop : roadstops) { @@ -6139,7 +6105,7 @@ static void RoadStopMapSpriteGroup(ByteReader *buf, uint8_t idcount) } /* Action 0x03 */ -static void FeatureMapSpriteGroup(ByteReader *buf) +static void FeatureMapSpriteGroup(ByteReader &buf) { /* <03> ... [ ]... * id-list := [] [id-list] @@ -6155,8 +6121,8 @@ static void FeatureMapSpriteGroup(ByteReader *buf) * W cid cargo ID (sprite group ID) for this type of cargo * W def-cid default cargo ID (sprite group ID) */ - uint8_t feature = buf->ReadByte(); - uint8_t idcount = buf->ReadByte(); + uint8_t feature = buf.ReadByte(); + uint8_t idcount = buf.ReadByte(); if (feature >= GSF_END) { GrfMsg(1, "FeatureMapSpriteGroup: Unsupported feature 0x{:02X}, skipping", feature); @@ -6166,8 +6132,8 @@ static void FeatureMapSpriteGroup(ByteReader *buf) /* If idcount is zero, this is a feature callback */ if (idcount == 0) { /* Skip number of cargo ids? */ - buf->ReadByte(); - uint16_t groupid = buf->ReadWord(); + buf.ReadByte(); + uint16_t groupid = buf.ReadWord(); if (!IsValidGroupID(groupid, "FeatureMapSpriteGroup")) return; GrfMsg(6, "FeatureMapSpriteGroup: Adding generic feature callback for feature 0x{:02X}", feature); @@ -6248,7 +6214,7 @@ static void FeatureMapSpriteGroup(ByteReader *buf) } /* Action 0x04 */ -static void FeatureNewName(ByteReader *buf) +static void FeatureNewName(ByteReader &buf) { /* <04> * @@ -6268,22 +6234,22 @@ static void FeatureNewName(ByteReader *buf) bool new_scheme = _cur.grffile->grf_version >= 7; - uint8_t feature = buf->ReadByte(); + uint8_t feature = buf.ReadByte(); if (feature >= GSF_END && feature != 0x48) { GrfMsg(1, "FeatureNewName: Unsupported feature 0x{:02X}, skipping", feature); return; } - uint8_t lang = buf->ReadByte(); - uint8_t num = buf->ReadByte(); + uint8_t lang = buf.ReadByte(); + uint8_t num = buf.ReadByte(); bool generic = HasBit(lang, 7); uint16_t id; if (generic) { - id = buf->ReadWord(); + id = buf.ReadWord(); } else if (feature <= GSF_AIRCRAFT) { - id = buf->ReadExtendedByte(); + id = buf.ReadExtendedByte(); } else { - id = buf->ReadByte(); + id = buf.ReadByte(); } ClrBit(lang, 7); @@ -6293,8 +6259,8 @@ static void FeatureNewName(ByteReader *buf) GrfMsg(6, "FeatureNewName: About to rename engines {}..{} (feature 0x{:02X}) in language 0x{:02X}", id, endid, feature, lang); - for (; id < endid && buf->HasData(); id++) { - const char *name = buf->ReadString(); + for (; id < endid && buf.HasData(); id++) { + const std::string_view name = buf.ReadString(); GrfMsg(8, "FeatureNewName: 0x{:04X} <- {}", id, name); switch (feature) { @@ -6323,8 +6289,8 @@ static void FeatureNewName(ByteReader *buf) if (GB(id, 0, 8) >= _cur.grffile->stations.size() || _cur.grffile->stations[GB(id, 0, 8)] == nullptr) { GrfMsg(1, "FeatureNewName: Attempt to name undefined station 0x{:X}, ignoring", GB(id, 0, 8)); } else { - StationClassID cls_id = _cur.grffile->stations[GB(id, 0, 8)]->cls_id; - StationClass::Get(cls_id)->name = AddGRFString(_cur.grffile->grfid, id, lang, new_scheme, false, name, STR_UNDEFINED); + StationClassID class_index = _cur.grffile->stations[GB(id, 0, 8)]->class_index; + StationClass::Get(class_index)->name = AddGRFString(_cur.grffile->grfid, id, lang, new_scheme, false, name, STR_UNDEFINED); } break; @@ -6369,7 +6335,7 @@ static void FeatureNewName(ByteReader *buf) * @param name Used for error warnings. * @return The number of sprites that is going to be skipped. */ -static uint16_t SanitizeSpriteOffset(uint16_t &num, uint16_t offset, int max_sprites, const char *name) +static uint16_t SanitizeSpriteOffset(uint16_t &num, uint16_t offset, int max_sprites, const std::string_view name) { if (offset >= max_sprites) { @@ -6390,23 +6356,8 @@ static uint16_t SanitizeSpriteOffset(uint16_t &num, uint16_t offset, int max_spr } -/** The type of action 5 type. */ -enum Action5BlockType { - A5BLOCK_FIXED, ///< Only allow replacing a whole block of sprites. (TTDP compatible) - A5BLOCK_ALLOW_OFFSET, ///< Allow replacing any subset by specifiing an offset. - A5BLOCK_INVALID, ///< unknown/not-implemented type -}; -/** Information about a single action 5 type. */ -struct Action5Type { - Action5BlockType block_type; ///< How is this Action5 type processed? - SpriteID sprite_base; ///< Load the sprites starting from this sprite. - uint16_t min_sprites; ///< If the Action5 contains less sprites, the whole block will be ignored. - uint16_t max_sprites; ///< If the Action5 contains more sprites, only the first max_sprites sprites will be used. - const char *name; ///< Name for error messages. -}; - /** The information about action 5 types. */ -static const Action5Type _action5_types[] = { +static constexpr auto _action5_types = std::to_array({ /* Note: min_sprites should not be changed. Therefore these constants are directly here and not in sprites.h */ /* 0x00 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x00" }, /* 0x01 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x01" }, @@ -6433,10 +6384,20 @@ static const Action5Type _action5_types[] = { /* 0x16 */ { A5BLOCK_ALLOW_OFFSET, SPR_AIRPORT_PREVIEW_BASE, 1, SPR_AIRPORT_PREVIEW_COUNT, "Airport preview graphics" }, /* 0x17 */ { A5BLOCK_ALLOW_OFFSET, SPR_RAILTYPE_TUNNEL_BASE, 1, RAILTYPE_TUNNEL_BASE_COUNT, "Railtype tunnel base" }, /* 0x18 */ { A5BLOCK_ALLOW_OFFSET, SPR_PALETTE_BASE, 1, PALETTE_SPRITE_COUNT, "Palette" }, -}; + /* 0x19 */ { A5BLOCK_ALLOW_OFFSET, SPR_ROAD_WAYPOINTS_BASE, 1, ROAD_WAYPOINTS_SPRITE_COUNT, "Road waypoints" }, +}); + +/** + * Get list of all action 5 types + * @return Read-only span of action 5 type information. + */ +std::span GetAction5Types() +{ + return _action5_types; +} /* Action 0x05 */ -static void GraphicsNew(ByteReader *buf) +static void GraphicsNew(ByteReader &buf) { /* <05> * @@ -6444,9 +6405,9 @@ static void GraphicsNew(ByteReader *buf) * E num-sprites How many sprites are in this set? * V other data Graphics type specific data. Currently unused. */ - uint8_t type = buf->ReadByte(); - uint16_t num = buf->ReadExtendedByte(); - uint16_t offset = HasBit(type, 7) ? buf->ReadExtendedByte() : 0; + uint8_t type = buf.ReadByte(); + uint16_t num = buf.ReadExtendedByte(); + uint16_t offset = HasBit(type, 7) ? buf.ReadExtendedByte() : 0; ClrBit(type, 7); // Clear the high bit as that only indicates whether there is an offset. if ((type == 0x0D) && (num == 10) && HasBit(_cur.grfconfig->flags, GCF_SYSTEM)) { @@ -6468,7 +6429,7 @@ static void GraphicsNew(ByteReader *buf) } /* Supported type? */ - if ((type >= lengthof(_action5_types)) || (_action5_types[type].block_type == A5BLOCK_INVALID)) { + if ((type >= std::size(_action5_types)) || (_action5_types[type].block_type == A5BLOCK_INVALID)) { GrfMsg(2, "GraphicsNew: Custom graphics (type 0x{:02X}) sprite block of length {} (unimplemented, ignoring)", type, num); _cur.skip_sprites = num; return; @@ -6525,13 +6486,13 @@ static void GraphicsNew(ByteReader *buf) } /* Action 0x05 (SKIP) */ -static void SkipAct5(ByteReader *buf) +static void SkipAct5(ByteReader &buf) { /* Ignore type byte */ - buf->ReadByte(); + buf.ReadByte(); /* Skip the sprites of this action */ - _cur.skip_sprites = buf->ReadExtendedByte(); + _cur.skip_sprites = buf.ReadExtendedByte(); GrfMsg(3, "SkipAct5: Skipping {} sprites", _cur.skip_sprites); } @@ -6547,7 +6508,7 @@ static void SkipAct5(ByteReader *buf) * @param grffile NewGRF querying the variable * @return true iff the variable is known and the value is returned in 'value'. */ -bool GetGlobalVariable(byte param, uint32_t *value, const GRFFile *grffile) +bool GetGlobalVariable(uint8_t param, uint32_t *value, const GRFFile *grffile) { switch (param) { case 0x00: // current date @@ -6648,7 +6609,7 @@ bool GetGlobalVariable(byte param, uint32_t *value, const GRFFile *grffile) /* case 0x1F: // locale dependent settings not implemented to avoid desync */ case 0x20: { // snow line height - byte snowline = GetSnowLine(); + uint8_t snowline = GetSnowLine(); if (_settings_game.game_creation.landscape == LT_ARCTIC && snowline <= _settings_game.construction.map_height_limit) { *value = Clamp(snowline * (grffile->grf_version >= 8 ? 1 : TILE_HEIGHT), 0, 0xFE); } else { @@ -6678,7 +6639,7 @@ bool GetGlobalVariable(byte param, uint32_t *value, const GRFFile *grffile) } } -static uint32_t GetParamVal(byte param, uint32_t *cond_val) +static uint32_t GetParamVal(uint8_t param, uint32_t *cond_val) { /* First handle variable common with VarAction2 */ uint32_t value; @@ -6723,7 +6684,7 @@ static uint32_t GetParamVal(byte param, uint32_t *cond_val) } /* Action 0x06 */ -static void CfgApply(ByteReader *buf) +static void CfgApply(ByteReader &buf) { /* <06> ... * @@ -6753,7 +6714,7 @@ static void CfgApply(ByteReader *buf) /* Get (or create) the override for the next sprite. */ GRFLocation location(_cur.grfconfig->ident.grfid, _cur.nfo_line + 1); - std::vector &preload_sprite = _grf_line_to_action6_sprite_override[location]; + std::vector &preload_sprite = _grf_line_to_action6_sprite_override[location]; /* Load new sprite data if it hasn't already been loaded. */ if (preload_sprite.empty()) { @@ -6773,12 +6734,12 @@ static void CfgApply(ByteReader *buf) bool add_value; /* Read the parameter to apply. 0xFF indicates no more data to change. */ - param_num = buf->ReadByte(); + param_num = buf.ReadByte(); if (param_num == 0xFF) break; /* Get the size of the parameter to use. If the size covers multiple * double words, sequential parameter values are used. */ - param_size = buf->ReadByte(); + param_size = buf.ReadByte(); /* Bit 7 of param_size indicates we should add to the original value * instead of replacing it. */ @@ -6786,7 +6747,7 @@ static void CfgApply(ByteReader *buf) param_size = GB(param_size, 0, 7); /* Where to apply the data to within the pseudo sprite data. */ - offset = buf->ReadExtendedByte(); + offset = buf.ReadExtendedByte(); /* If the parameter is a GRF parameter (not an internal variable) check * if it (and all further sequential parameters) has been defined. */ @@ -6833,7 +6794,7 @@ static void DisableStaticNewGRFInfluencingNonStaticNewGRFs(GRFConfig *c) /* Action 0x07 * Action 0x09 */ -static void SkipIf(ByteReader *buf) +static void SkipIf(ByteReader &buf) { /* <07/09> * @@ -6846,9 +6807,9 @@ static void SkipIf(ByteReader *buf) uint32_t mask = 0; bool result; - uint8_t param = buf->ReadByte(); - uint8_t paramsize = buf->ReadByte(); - uint8_t condtype = buf->ReadByte(); + uint8_t param = buf.ReadByte(); + uint8_t paramsize = buf.ReadByte(); + uint8_t condtype = buf.ReadByte(); if (condtype < 2) { /* Always 1 for bit tests, the given value should be ignored. */ @@ -6856,10 +6817,10 @@ static void SkipIf(ByteReader *buf) } switch (paramsize) { - case 8: cond_val = buf->ReadDWord(); mask = buf->ReadDWord(); break; - case 4: cond_val = buf->ReadDWord(); mask = 0xFFFFFFFF; break; - case 2: cond_val = buf->ReadWord(); mask = 0x0000FFFF; break; - case 1: cond_val = buf->ReadByte(); mask = 0x000000FF; break; + case 8: cond_val = buf.ReadDWord(); mask = buf.ReadDWord(); break; + case 4: cond_val = buf.ReadDWord(); mask = 0xFFFFFFFF; break; + case 2: cond_val = buf.ReadWord(); mask = 0x0000FFFF; break; + case 1: cond_val = buf.ReadByte(); mask = 0x000000FF; break; default: break; } @@ -6971,7 +6932,7 @@ static void SkipIf(ByteReader *buf) return; } - uint8_t numsprites = buf->ReadByte(); + uint8_t numsprites = buf.ReadByte(); /* numsprites can be a GOTO label if it has been defined in the GRF * file. The jump will always be the first matching label that follows @@ -7014,11 +6975,11 @@ static void SkipIf(ByteReader *buf) /* Action 0x08 (GLS_FILESCAN) */ -static void ScanInfo(ByteReader *buf) +static void ScanInfo(ByteReader &buf) { - uint8_t grf_version = buf->ReadByte(); - uint32_t grfid = buf->ReadDWord(); - const char *name = buf->ReadString(); + uint8_t grf_version = buf.ReadByte(); + uint32_t grfid = buf.ReadDWord(); + std::string_view name = buf.ReadString(); _cur.grfconfig->ident.grfid = grfid; @@ -7032,8 +6993,8 @@ static void ScanInfo(ByteReader *buf) AddGRFTextToList(_cur.grfconfig->name, 0x7F, grfid, false, name); - if (buf->HasData()) { - const char *info = buf->ReadString(); + if (buf.HasData()) { + std::string_view info = buf.ReadString(); AddGRFTextToList(_cur.grfconfig->info, 0x7F, grfid, true, info); } @@ -7042,7 +7003,7 @@ static void ScanInfo(ByteReader *buf) } /* Action 0x08 */ -static void GRFInfo(ByteReader *buf) +static void GRFInfo(ByteReader &buf) { /* <08> * @@ -7051,9 +7012,9 @@ static void GRFInfo(ByteReader *buf) * S name name of this .grf set * S info string describing the set, and e.g. author and copyright */ - uint8_t version = buf->ReadByte(); - uint32_t grfid = buf->ReadDWord(); - const char *name = buf->ReadString(); + uint8_t version = buf.ReadByte(); + uint32_t grfid = buf.ReadDWord(); + std::string_view name = buf.ReadString(); if (_cur.stage < GLS_RESERVE && _cur.grfconfig->status != GCS_UNKNOWN) { DisableGrf(STR_NEWGRF_ERROR_MULTIPLE_ACTION_8); @@ -7072,8 +7033,23 @@ static void GRFInfo(ByteReader *buf) Debug(grf, 1, "GRFInfo: Loaded GRFv{} set {:08X} - {} (palette: {}, version: {})", version, BSWAP32(grfid), name, (_cur.grfconfig->palette & GRFP_USE_MASK) ? "Windows" : "DOS", _cur.grfconfig->version); } +/** + * Check if a sprite ID range is within the GRM reversed range for the currently loading NewGRF. + * @param first_sprite First sprite of range. + * @param num_sprites Number of sprites in the range. + * @return True iff the NewGRF has reserved a range equal to or greater than the provided range. + */ +static bool IsGRMReservedSprite(SpriteID first_sprite, uint16_t num_sprites) +{ + for (const auto &grm_sprite : _grm_sprites) { + if (grm_sprite.first.grfid != _cur.grffile->grfid) continue; + if (grm_sprite.second.first <= first_sprite && grm_sprite.second.first + grm_sprite.second.second >= first_sprite + num_sprites) return true; + } + return false; +} + /* Action 0x0A */ -static void SpriteReplace(ByteReader *buf) +static void SpriteReplace(ByteReader &buf) { /* <0A> [ ...] * : @@ -7083,16 +7059,28 @@ static void SpriteReplace(ByteReader *buf) * B num-sprites How many sprites are in this set * W first-sprite First sprite number to replace */ - uint8_t num_sets = buf->ReadByte(); + uint8_t num_sets = buf.ReadByte(); for (uint i = 0; i < num_sets; i++) { - uint8_t num_sprites = buf->ReadByte(); - uint16_t first_sprite = buf->ReadWord(); + uint8_t num_sprites = buf.ReadByte(); + uint16_t first_sprite = buf.ReadWord(); GrfMsg(2, "SpriteReplace: [Set {}] Changing {} sprites, beginning with {}", i, num_sprites, first_sprite ); + if (first_sprite + num_sprites >= SPR_OPENTTD_BASE) { + /* Outside allowed range, check for GRM sprite reservations. */ + if (!IsGRMReservedSprite(first_sprite, num_sprites)) { + GrfMsg(0, "SpriteReplace: [Set {}] Changing {} sprites, beginning with {}, above limit of {} and not within reserved range, ignoring.", + i, num_sprites, first_sprite, SPR_OPENTTD_BASE); + + /* Load the sprites at the current location so they will do nothing instead of appearing to work. */ + first_sprite = _cur.spriteid; + _cur.spriteid += num_sprites; + } + } + for (uint j = 0; j < num_sprites; j++) { int load_index = first_sprite + j; _cur.nfo_line++; @@ -7108,22 +7096,22 @@ static void SpriteReplace(ByteReader *buf) } /* Action 0x0A (SKIP) */ -static void SkipActA(ByteReader *buf) +static void SkipActA(ByteReader &buf) { - uint8_t num_sets = buf->ReadByte(); + uint8_t num_sets = buf.ReadByte(); for (uint i = 0; i < num_sets; i++) { /* Skip the sprites this replaces */ - _cur.skip_sprites += buf->ReadByte(); + _cur.skip_sprites += buf.ReadByte(); /* But ignore where they go */ - buf->ReadWord(); + buf.ReadWord(); } GrfMsg(3, "SkipActA: Skipping {} sprites", _cur.skip_sprites); } /* Action 0x0B */ -static void GRFLoadError(ByteReader *buf) +static void GRFLoadError(ByteReader &buf) { /* <0B> [ 00] [] 00 [] * @@ -7157,9 +7145,9 @@ static void GRFLoadError(ByteReader *buf) STR_NEWGRF_ERROR_MSG_FATAL }; - byte severity = buf->ReadByte(); - byte lang = buf->ReadByte(); - byte message_id = buf->ReadByte(); + uint8_t severity = buf.ReadByte(); + uint8_t lang = buf.ReadByte(); + uint8_t message_id = buf.ReadByte(); /* Skip the error if it isn't valid for the current language. */ if (!CheckGrfLangID(lang, _cur.grffile->grf_version)) return; @@ -7189,7 +7177,7 @@ static void GRFLoadError(ByteReader *buf) return; } - if (buf->Remaining() <= 1) { + if (buf.Remaining() <= 1) { GrfMsg(7, "GRFLoadError: No message data supplied."); return; } @@ -7202,8 +7190,8 @@ static void GRFLoadError(ByteReader *buf) if (message_id == 0xFF) { /* This is a custom error message. */ - if (buf->HasData()) { - const char *message = buf->ReadString(); + if (buf.HasData()) { + std::string_view message = buf.ReadString(); error->custom_message = TranslateTTDPatchCodes(_cur.grffile->grfid, lang, true, message, SCC_RAW_STRING_POINTER); } else { @@ -7214,8 +7202,8 @@ static void GRFLoadError(ByteReader *buf) error->message = msgstr[message_id]; } - if (buf->HasData()) { - const char *data = buf->ReadString(); + if (buf.HasData()) { + std::string_view data = buf.ReadString(); error->data = TranslateTTDPatchCodes(_cur.grffile->grfid, lang, true, data); } else { @@ -7224,29 +7212,29 @@ static void GRFLoadError(ByteReader *buf) } /* Only two parameter numbers can be used in the string. */ - for (uint i = 0; i < error->param_value.size() && buf->HasData(); i++) { - uint param_number = buf->ReadByte(); + for (uint i = 0; i < error->param_value.size() && buf.HasData(); i++) { + uint param_number = buf.ReadByte(); error->param_value[i] = _cur.grffile->GetParam(param_number); } } /* Action 0x0C */ -static void GRFComment(ByteReader *buf) +static void GRFComment(ByteReader &buf) { /* <0C> [] * * V ignored Anything following the 0C is ignored */ - if (!buf->HasData()) return; + if (!buf.HasData()) return; - const char *text = buf->ReadString(); + std::string_view text = buf.ReadString(); GrfMsg(2, "GRFComment: {}", text); } /* Action 0x0D (GLS_SAFETYSCAN) */ -static void SafeParamSet(ByteReader *buf) +static void SafeParamSet(ByteReader &buf) { - uint8_t target = buf->ReadByte(); + uint8_t target = buf.ReadByte(); /* Writing GRF parameters and some bits of 'misc GRF features' are safe. */ if (target < 0x80 || target == 0x9E) return; @@ -7303,10 +7291,10 @@ static uint32_t GetPatchVariable(uint8_t param) * SS : combination of both X and Y, thus giving the size(log2) of the map */ case 0x13: { - byte map_bits = 0; - byte log_X = Map::LogX() - 6; // subtraction is required to make the minimal size (64) zero based - byte log_Y = Map::LogY() - 6; - byte max_edge = std::max(log_X, log_Y); + uint8_t map_bits = 0; + uint8_t log_X = Map::LogX() - 6; // subtraction is required to make the minimal size (64) zero based + uint8_t log_Y = Map::LogY() - 6; + uint8_t max_edge = std::max(log_X, log_Y); if (log_X == log_Y) { // we have a squared map, since both edges are identical SetBit(map_bits, 0); @@ -7389,7 +7377,7 @@ static uint32_t PerformGRM(uint32_t *grm, uint16_t num_ids, uint16_t count, uint /** Action 0x0D: Set parameter */ -static void ParamSet(ByteReader *buf) +static void ParamSet(ByteReader &buf) { /* <0D> [] * @@ -7413,13 +7401,13 @@ static void ParamSet(ByteReader *buf) * (source2 like in 05, and source1 as well) */ - uint8_t target = buf->ReadByte(); - uint8_t oper = buf->ReadByte(); - uint32_t src1 = buf->ReadByte(); - uint32_t src2 = buf->ReadByte(); + uint8_t target = buf.ReadByte(); + uint8_t oper = buf.ReadByte(); + uint32_t src1 = buf.ReadByte(); + uint32_t src2 = buf.ReadByte(); uint32_t data = 0; - if (buf->Remaining() >= 4) data = buf->ReadDWord(); + if (buf.Remaining() >= 4) data = buf.ReadDWord(); /* You can add 80 to the operation to make it apply only if the target * is not defined yet. In this respect, a parameter is taken to be @@ -7460,7 +7448,7 @@ static void ParamSet(ByteReader *buf) /* Reserve space at the current sprite ID */ GrfMsg(4, "ParamSet: GRM: Allocated {} sprites at {}", count, _cur.spriteid); - _grm_sprites[GRFLocation(_cur.grffile->grfid, _cur.nfo_line)] = _cur.spriteid; + _grm_sprites[GRFLocation(_cur.grffile->grfid, _cur.nfo_line)] = std::make_pair(_cur.spriteid, count); _cur.spriteid += count; } } @@ -7494,7 +7482,7 @@ static void ParamSet(ByteReader *buf) switch (op) { case 0: /* Return space reserved during reservation stage */ - src1 = _grm_sprites[GRFLocation(_cur.grffile->grfid, _cur.nfo_line)]; + src1 = _grm_sprites[GRFLocation(_cur.grffile->grfid, _cur.nfo_line)].first; GrfMsg(4, "ParamSet: GRM: Using pre-allocated sprites at {}", src1); break; @@ -7691,17 +7679,17 @@ static void ParamSet(ByteReader *buf) } /* Action 0x0E (GLS_SAFETYSCAN) */ -static void SafeGRFInhibit(ByteReader *buf) +static void SafeGRFInhibit(ByteReader &buf) { /* <0E> * * B num Number of GRFIDs that follow * D grfids GRFIDs of the files to deactivate */ - uint8_t num = buf->ReadByte(); + uint8_t num = buf.ReadByte(); for (uint i = 0; i < num; i++) { - uint32_t grfid = buf->ReadDWord(); + uint32_t grfid = buf.ReadDWord(); /* GRF is unsafe it if tries to deactivate other GRFs */ if (grfid != _cur.grfconfig->ident.grfid) { @@ -7716,17 +7704,17 @@ static void SafeGRFInhibit(ByteReader *buf) } /* Action 0x0E */ -static void GRFInhibit(ByteReader *buf) +static void GRFInhibit(ByteReader &buf) { /* <0E> * * B num Number of GRFIDs that follow * D grfids GRFIDs of the files to deactivate */ - uint8_t num = buf->ReadByte(); + uint8_t num = buf.ReadByte(); for (uint i = 0; i < num; i++) { - uint32_t grfid = buf->ReadDWord(); + uint32_t grfid = buf.ReadDWord(); GRFConfig *file = GetGRFConfig(grfid); /* Unset activation flag */ @@ -7739,7 +7727,7 @@ static void GRFInhibit(ByteReader *buf) } /** Action 0x0F - Define Town names */ -static void FeatureTownName(ByteReader *buf) +static void FeatureTownName(ByteReader &buf) { /* <0F> * @@ -7752,7 +7740,7 @@ static void FeatureTownName(ByteReader *buf) GRFTownName *townname = AddGRFTownName(grfid); - byte id = buf->ReadByte(); + uint8_t id = buf.ReadByte(); GrfMsg(6, "FeatureTownName: definition 0x{:02X}", id & 0x7F); if (HasBit(id, 7)) { @@ -7760,43 +7748,43 @@ static void FeatureTownName(ByteReader *buf) ClrBit(id, 7); bool new_scheme = _cur.grffile->grf_version >= 7; - byte lang = buf->ReadByte(); + uint8_t lang = buf.ReadByte(); StringID style = STR_UNDEFINED; do { ClrBit(lang, 7); - const char *name = buf->ReadString(); + std::string_view name = buf.ReadString(); std::string lang_name = TranslateTTDPatchCodes(grfid, lang, false, name); GrfMsg(6, "FeatureTownName: lang 0x{:X} -> '{}'", lang, lang_name); style = AddGRFString(grfid, id, lang, new_scheme, false, name, STR_UNDEFINED); - lang = buf->ReadByte(); + lang = buf.ReadByte(); } while (lang != 0); townname->styles.emplace_back(style, id); } - uint8_t parts = buf->ReadByte(); + uint8_t parts = buf.ReadByte(); GrfMsg(6, "FeatureTownName: {} parts", parts); townname->partlists[id].reserve(parts); for (uint partnum = 0; partnum < parts; partnum++) { NamePartList &partlist = townname->partlists[id].emplace_back(); - uint8_t texts = buf->ReadByte(); - partlist.bitstart = buf->ReadByte(); - partlist.bitcount = buf->ReadByte(); + uint8_t texts = buf.ReadByte(); + partlist.bitstart = buf.ReadByte(); + partlist.bitcount = buf.ReadByte(); partlist.maxprob = 0; GrfMsg(6, "FeatureTownName: part {} contains {} texts and will use GB(seed, {}, {})", partnum, texts, partlist.bitstart, partlist.bitcount); partlist.parts.reserve(texts); for (uint textnum = 0; textnum < texts; textnum++) { NamePart &part = partlist.parts.emplace_back(); - part.prob = buf->ReadByte(); + part.prob = buf.ReadByte(); if (HasBit(part.prob, 7)) { - byte ref_id = buf->ReadByte(); + uint8_t ref_id = buf.ReadByte(); if (ref_id >= GRFTownName::MAX_LISTS || townname->partlists[ref_id].empty()) { GrfMsg(0, "FeatureTownName: definition 0x{:02X} doesn't exist, deactivating", ref_id); DelGRFTownName(grfid); @@ -7806,7 +7794,7 @@ static void FeatureTownName(ByteReader *buf) part.id = ref_id; GrfMsg(6, "FeatureTownName: part {}, text {}, uses intermediate definition 0x{:02X} (with probability {})", partnum, textnum, ref_id, part.prob & 0x7F); } else { - const char *text = buf->ReadString(); + std::string_view text = buf.ReadString(); part.text = TranslateTTDPatchCodes(grfid, 0, false, text); GrfMsg(6, "FeatureTownName: part {}, text {}, '{}' (with probability {})", partnum, textnum, part.text, part.prob); } @@ -7817,14 +7805,14 @@ static void FeatureTownName(ByteReader *buf) } /** Action 0x10 - Define goto label */ -static void DefineGotoLabel(ByteReader *buf) +static void DefineGotoLabel(ByteReader &buf) { /* <10>