mirror of
https://github.com/OPSnet/Logchecker.git
synced 2026-11-08 08:12:22 -10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ca565479ed | ||
|
|
cc367c385b | ||
|
|
0498639f4a | ||
|
|
d7d80571cb | ||
|
|
132a0de557 | ||
|
|
661fb57f4e | ||
|
|
2a522aa81d | ||
|
|
1e6c9bb44a | ||
|
|
e802bc947f | ||
|
|
66d93bc78d | ||
|
|
2473bccc0a | ||
|
|
e899a7819e | ||
|
|
714d25e324 | ||
|
|
e73d0c6bf4 | ||
|
|
1cf2b6769f | ||
|
|
deaf37d5a9 | ||
|
|
7f1dbb94f4 | ||
|
|
f02d02155a | ||
|
|
9940416651 | ||
|
|
103937a6d2 | ||
|
|
7408bcced6 | ||
|
|
602f573b11 | ||
|
|
18a6064da3 | ||
|
|
083af99c49 | ||
|
|
39f516b456 | ||
|
|
76579b8b3e | ||
|
|
b7a5b84b4e | ||
|
|
ac99087b91 | ||
|
|
9854ca27cf | ||
|
|
4d910a29a8 | ||
|
|
0c7ee6268a | ||
|
|
50984cf6e1 | ||
|
|
4446bceb91 | ||
|
|
704430a94d | ||
|
|
8dfaa726a8 | ||
|
|
c8f267d4ce | ||
|
|
96f1dfbf0b | ||
|
|
9be02a44aa | ||
|
|
2923774019 | ||
|
|
487fe44f8e | ||
|
|
bffbee66c8 | ||
|
|
ecbcda3fb5 | ||
|
|
10f8f2aaac | ||
|
|
1dbc3635e6 | ||
|
|
4ef88a71f1 | ||
|
|
31541a0913 | ||
|
|
e5672ff4ca | ||
|
|
c09d929bf8 | ||
|
|
35240df211 | ||
|
|
ea2e612319 | ||
|
|
e71120ed6e | ||
|
|
b747ba5fad | ||
|
|
1eefa196ef | ||
|
|
b6752d298b | ||
|
|
859710c8c9 | ||
|
|
a48aa59d34 | ||
|
|
2631c87f8b | ||
|
|
4de0ac292e | ||
|
|
151471e9a8 | ||
|
|
446ce58d94 | ||
|
|
3f5bffcd3b | ||
|
|
e5029b9f98 | ||
|
|
c22b075614 | ||
|
|
556701da18 | ||
|
|
c0ebf46d4c | ||
|
|
fbd3fc8138 | ||
|
|
4d216b831d | ||
|
|
e67ff271cd | ||
|
|
961e156e95 | ||
|
|
0b6c0b40d8 | ||
|
|
1acb227472 | ||
|
|
a7c36306db | ||
|
|
97741692df | ||
|
|
8d97ac3b9e | ||
|
|
03133c5184 | ||
|
|
afb9fc8a4f | ||
|
|
a7bbb966a0 | ||
|
|
d34e1151af | ||
|
|
e7539b976d | ||
|
|
a1086e95cc | ||
|
|
525b5fc17d | ||
|
|
63c7d8f6b5 | ||
|
|
b30b3ddafc | ||
|
|
fada179801 | ||
|
|
2cd35da466 | ||
|
|
5f6e16d143 | ||
|
|
3b6198375d | ||
|
|
80ff156cb7 | ||
|
|
b151153db6 | ||
|
|
252f20c68e | ||
|
|
b146a8deb5 | ||
|
|
7c68e6026b | ||
|
|
8cb24a2a77 | ||
|
|
0679458f00 | ||
|
|
57a9f69fca | ||
|
|
9c9bf172f2 | ||
|
|
da72835bc3 | ||
|
|
79dfd55f18 | ||
|
|
030b586914 | ||
|
|
7e119aa8e3 | ||
|
|
f522356aae | ||
|
|
37d48fbe95 | ||
|
|
a084b8a494 | ||
|
|
fe836b646f | ||
|
|
deb198445d |
No files matched your search
@@ -0,0 +1,33 @@
|
||||
name: CI
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
testsuite:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php-version: ['8.1', '8.2', '8.3', '8.4']
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-version }}
|
||||
coverage: pcov
|
||||
|
||||
|
||||
- name: Composer install
|
||||
run: composer install
|
||||
|
||||
- run: pip3 install cchardet==2.2.0a2
|
||||
|
||||
- run: composer run lint
|
||||
|
||||
- run: composer run static-analysis
|
||||
|
||||
- run: composer run test
|
||||
|
||||
- run: bin/logchecker --version
|
||||
@@ -0,0 +1,34 @@
|
||||
name: Upload Release PHAR
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Upload Release PHAR
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.2'
|
||||
|
||||
- name: Composer install
|
||||
run: composer install
|
||||
|
||||
- run: composer global require humbug/box:^4.6
|
||||
|
||||
- name: Compile PHAR
|
||||
run: ~/.composer/vendor/bin/box compile
|
||||
|
||||
- run: php logchecker.phar --version
|
||||
|
||||
- name: Upload Release Asset
|
||||
id: upload-release-asset
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
files: logchecker.phar
|
||||
@@ -1,3 +1,12 @@
|
||||
.idea/
|
||||
vendor/
|
||||
logchecker.phar
|
||||
.DS_Store
|
||||
.vscode/
|
||||
|
||||
.phpunit.result.cache
|
||||
.phpunit.cache/
|
||||
report/
|
||||
|
||||
/tests/logs/old
|
||||
/tests/logs/*/holding
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
language: php
|
||||
sudo: true
|
||||
dist: xenial
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.cache/pip
|
||||
- $HOME/.composer/cache
|
||||
|
||||
php:
|
||||
- 7.0
|
||||
- 7.1
|
||||
- 7.2
|
||||
- 7.3
|
||||
- nightly
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
allow_failures:
|
||||
- php: nightly
|
||||
|
||||
before_install:
|
||||
- sudo apt-get install python3
|
||||
- wget https://bootstrap.pypa.io/get-pip.py
|
||||
- sudo python3 get-pip.py
|
||||
|
||||
install:
|
||||
- composer install --ansi --prefer-dist --no-interaction --optimize-autoloader --no-suggest --no-progress
|
||||
- pip3 install --user chardet xld_logchecker eac_logchecker
|
||||
|
||||
script:
|
||||
- bin/logchecker --version
|
||||
- bin/logchecker --help
|
||||
- bin/logchecker tests/logs/wgdbcm.log
|
||||
- bin/logchecker tests/logs/xld_perfect.log
|
||||
|
||||
before_deploy:
|
||||
- php -d phar.readonly=0 bin/compile
|
||||
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: jlvbD7nzOz/8vssSI75loBMJE9OosAofTu1IDMc3bfxfRaPT6c2duebJF7Bm0VCTGYWK3Wc+19wwyLpCMoueUUEtKqi6RGIUQyboQvbSEe/cje7/9PgqmFstV8LdBLNOwRVj01YcmGw/iMVc+GxPTtDZtcwVU9bzlMCwXFAlggeId0Qw6KgxN+wTbm+oS3zrIh+TnWhgeWhmMYn0/UAEUEQCsYDI+UJjGWStWdpdJqdMhidg5GQyVtomFg82ZjIw+ywYGMGgq38S4PMRBLoqbxuWs++9LPblWboxtktb4+U0xUMdHfrv/r94b8+nI2SJ1xzzUKTXS/glkk0lJAovSYew6jJiu+gsejiNyR89WNgRGwnWAUA8ZBptrM2b3sxLuZ6RuxQXP3TMpxhQQE/3aodOrACPOHa8uuct0JAj/a2p0WCIj4r76McHrXTjFzDPsbdxD1GwOQmFJGqY5EV7Vez6q++Erp/64JEZJk9/jieTv0arLe76VZPQcZ6TB488tH699MvK7Gg1cc4114FbKIEZrOKF2FOrMAZJ3husjELN0zJYeRPZUy6Y7A2PAWsqfdswlxjP9IxuDFVE/3TW8O1sVItWo4+SSkKTILzsC0qgxVL2lW9WDmyka8U5T2SAa8ye/RRZ3FJYugep49wjUsfLraRdA+Lj7KQXSaMlFa8=
|
||||
file: logchecker.phar
|
||||
skip_cleanup: true
|
||||
on:
|
||||
tags: true
|
||||
repo: OPSnet/Logchecker
|
||||
php: '7.2'
|
||||
@@ -1,10 +1,9 @@
|
||||
Logchecker
|
||||
==========
|
||||
# Logchecker
|
||||
|
||||
A CD rip logchecker, used for analyzing the generated logs for any problems that would potentially
|
||||
indicate a non-perfect rip was produced. Of course, just because a log doesn't score a perfect 100%
|
||||
does not mean that the produced rip isn't bit perfect, it's just less likely. While this library can
|
||||
largely run on both Linux and Windows, validating of checksums is only really supported for Linux.
|
||||
does not mean that the produced rip isn't bit perfect, it's just less likely. This library should work
|
||||
on any OS where PHP and Python are supported.
|
||||
|
||||
While this library will analyze most parts of a log, unfortunately it cannot properly validate the checksums
|
||||
for all types of logs. This is due to creators of these programs making their logchecker closed source
|
||||
@@ -14,82 +13,98 @@ the necessary programs, then we will just skip this external step and assume the
|
||||
setting up the necessary programs to validate the checksum, see below for the given program you care about.
|
||||
|
||||
## Requirements
|
||||
* PHP 7.0+
|
||||
|
||||
* PHP 8.1+
|
||||
|
||||
## Optional Requirements
|
||||
* Python 3.5+
|
||||
* [chardet](https://github.com/chardet/chardet)
|
||||
* [eac_logchecker.py](https://github.com/OPSnet/eac_logchecker.py)
|
||||
* [xld_logchecker.py](https://github.com/OPSnet/xld_logchecker.py)
|
||||
|
||||
```
|
||||
$ pip3 install chardet eac-logchecker xld-logchecker
|
||||
* Python 3.5+
|
||||
* [chardet](https://github.com/chardet/chardet) (or [cchardet](https://github.com/PyYoshi/cChardet))
|
||||
|
||||
```bash
|
||||
pip3 install cchardet eac-logchecker xld-logchecker
|
||||
```
|
||||
|
||||
## Standalone
|
||||
### Installation
|
||||
Go to our [releases](https://github.com/OPSnet/Logchecker/releases) and grab the logchecker.phar
|
||||
file. Download this file, and then it can executed via CLI by running `php logchecker.phar`.
|
||||
Alternatively, if you `chmod +x logchecker.phar`, it can be executed directly by doing `./logchecker.phar`.
|
||||
|
||||
To install it globally, run:
|
||||
### Installation
|
||||
|
||||
Install via composer:
|
||||
|
||||
```bash
|
||||
composer global require orpheusnet/logchecker
|
||||
```
|
||||
|
||||
Alternatively, go to our [releases](https://github.com/OPSnet/Logchecker/releases) and grab the `logchecker.phar`
|
||||
file. Download this file, and then it can executed via CLI by running `php logchecker.phar`. If you `chmod +x` the
|
||||
file, then it should be directly executable (i.e. `./logchecker.phar`). To then install it globally, run:
|
||||
|
||||
```bash
|
||||
mv logchecker.phar /usr/local/bin/logchecker
|
||||
chmod +x /usr/local/bin/logchecker
|
||||
```
|
||||
|
||||
### Usage
|
||||
```
|
||||
$ logchecker --help
|
||||
Usage:
|
||||
analyze [options] [--] <file>
|
||||
|
||||
Arguments:
|
||||
file Log file to analyze
|
||||
```text
|
||||
$ logchecker list
|
||||
Logchecker 0.11.1
|
||||
|
||||
Usage:
|
||||
command [options] [arguments]
|
||||
|
||||
Options:
|
||||
--output Print the HTML log text
|
||||
-h, --help Display this help message
|
||||
-q, --quiet Do not output any message
|
||||
-V, --version Display this application version
|
||||
--ansi Force ANSI output
|
||||
--no-ansi Disable ANSI output
|
||||
-n, --no-interaction Do not ask any interactive question
|
||||
-file, --out=OUT File to write HTML log text to
|
||||
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
|
||||
|
||||
Help:
|
||||
This command analyzes a log file
|
||||
Available commands:
|
||||
analyze [analyse] analyze log file
|
||||
decode Decodes log from whatever encoding into UTF-8
|
||||
help Displays help for a command
|
||||
list Lists commands
|
||||
translate Translates a log into english
|
||||
```
|
||||
|
||||
$ logchecker tests/logs/wgdbcm.log
|
||||
Score : 57
|
||||
Checksum: false
|
||||
Main usage is through the `analyze` command, e.g.:
|
||||
|
||||
```text
|
||||
$ logchecker analyze --no_text path/to/file.log
|
||||
Ripper : EAC
|
||||
Version : 1.0 beta 3
|
||||
Language: en
|
||||
Score : 59
|
||||
Checksum: checksum_ok
|
||||
Details :
|
||||
[Notice] Translated log from Русский (Russian) to English.
|
||||
EAC version older than 0.99 (-30 points)
|
||||
Could not verify read mode (-1 point)
|
||||
Could not verify read offset (-1 point)
|
||||
Could not verify null samples
|
||||
Could not verify gap handling (-10 points)
|
||||
Could not verify id3 tag setting (-1 point)
|
||||
Range rip detected (-30 points)
|
||||
```
|
||||
|
||||
### Code
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
$logchecker = new OrpheusNET\Logchecker\Logchecker();
|
||||
$logchecker->add_file('path/to/file.log');
|
||||
list($score, $details, $checksum, $log_text) = $logchecker->parse();
|
||||
list($score, $details, $checksum_state, $log_text) = $logchecker->parse();
|
||||
```
|
||||
|
||||
## Library Usage
|
||||
|
||||
### Installation
|
||||
```
|
||||
$ composer require orpheusnet/logchecker
|
||||
|
||||
```bash
|
||||
composer require orpheusnet/logchecker
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
@@ -98,24 +113,24 @@ require __DIR__ . '/vendor/autoload.php';
|
||||
use OrpheusNET\Logchecker\Logchecker;
|
||||
|
||||
$logchecker = new Logchecker();
|
||||
$logchecker->new_file('/path/to/log/file');
|
||||
list($score, $details, $checksum, $log_text) = $logchecker->parse();
|
||||
print('Score: ' . $score . "\n");
|
||||
print('Checksum: ' . ($checksum ? 'true' : 'false') . "\n");
|
||||
$logchecker->newFile('/path/to/log/file');
|
||||
$logchecker->parse();
|
||||
print('Ripper : ' . $logchecker->getRipper() . "\n");
|
||||
print('Version : ' . $logchecker->getRipperVersion() . "\n");
|
||||
print('Score : ' . $logchecker->getScore() . "\n");
|
||||
print('Checksum : ' . $logchecker->getChecksumState() . "\n");
|
||||
print("\nDetails:\n");
|
||||
foreach ($details as $detail) {
|
||||
foreach ($logchecker->getDetails() as $detail) {
|
||||
print(" {$detail}\n");
|
||||
}
|
||||
print("\nLog Text:\n{$log_text}");
|
||||
print("\nLog Text:\n\n{$logchecker->getLog()}");
|
||||
```
|
||||
|
||||
## Building
|
||||
|
||||
To build your own phar, you can checkout this repository, and then
|
||||
run the `bin/compile` script. To do this, run the following commands:
|
||||
```bash
|
||||
git clone https://github.com/OPSnet/Logchecker
|
||||
cd Logchecker
|
||||
composer install
|
||||
php -d phar.readonly=0 bin/compile
|
||||
```
|
||||
To build your own phar, see the `release.yml` workflow, but the gist is:
|
||||
|
||||
1. Clone this repo and enter repo
|
||||
1. Install [box](https://github.com/box-project/box)
|
||||
1. Run `box compile`
|
||||
1. Get `logchecker.phar` in root of repo
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"alias": "logchecker.phar",
|
||||
"compactors": [
|
||||
"KevinGH\\Box\\Compactor\\Json",
|
||||
"KevinGH\\Box\\Compactor\\Php"
|
||||
],
|
||||
"directories": [
|
||||
"src",
|
||||
"vendor/symfony/console/Resources"
|
||||
],
|
||||
"exclude-composer-files": false,
|
||||
"files": [
|
||||
"bin/logchecker",
|
||||
"composer.json",
|
||||
"LICENSE.md"
|
||||
],
|
||||
"finder": [
|
||||
{
|
||||
"name": "*.php",
|
||||
"exclude": [
|
||||
"File",
|
||||
"mikey179",
|
||||
"Net",
|
||||
"phpunit",
|
||||
"phpunit-test-case",
|
||||
"Tester",
|
||||
"Tests",
|
||||
"tests"
|
||||
],
|
||||
"in": "vendor"
|
||||
},
|
||||
{
|
||||
"name": "composer.json",
|
||||
"in": "."
|
||||
}
|
||||
],
|
||||
"output": "logchecker.phar"
|
||||
}
|
||||
+33
-6
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "orpheusnet/logchecker",
|
||||
"description": "Logchecker for validating logs generated from supported ripping programs (like EAC and XLD)",
|
||||
"version": "0.8.5",
|
||||
"version": "0.14.4",
|
||||
"license": "Unlicense",
|
||||
"type": "library",
|
||||
"authors": [
|
||||
@@ -16,11 +16,38 @@
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7",
|
||||
"php": "^8.1",
|
||||
"ext-iconv": "*",
|
||||
"ext-mbstring": "*",
|
||||
"symfony/console": "^3.4",
|
||||
"symfony/debug": "^3.4",
|
||||
"symfony/yaml": "^3.4"
|
||||
"phpseclib/phpseclib": "^3.0",
|
||||
"symfony/console": "^6.0|^7.0",
|
||||
"symfony/process": "^6.0|^7.0",
|
||||
"symfony/yaml": "^6.0|^7.0"
|
||||
},
|
||||
"bin": ["bin/logchecker"]
|
||||
"bin": ["bin/logchecker"],
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.12",
|
||||
"phpunit/phpunit": "^10.5",
|
||||
"squizlabs/php_codesniffer": "^3.8"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "phpunit",
|
||||
"lint": "phpcs",
|
||||
"lint:fix": "phpcbf",
|
||||
"static-analysis": "phpstan analyze src/ tests/"
|
||||
},
|
||||
"extra": {
|
||||
"hooks": {
|
||||
"pre-commit": [
|
||||
"composer run lint:fix",
|
||||
"composer run static-analysis"
|
||||
]
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "8.1"
|
||||
},
|
||||
"sort-packages": true
|
||||
}
|
||||
}
|
||||
Generated
+2602
-120
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0"?>
|
||||
<ruleset name="Gazelle Standard" namespace="Gazelle\Standard">
|
||||
<description>The OrpheusNET Standard/</description>
|
||||
<arg name="colors"/>
|
||||
<arg value="s"/>
|
||||
<arg name="extensions" value="php" />
|
||||
|
||||
<file>src</file>
|
||||
<file>tests</file>
|
||||
|
||||
<rule ref="PSR12">
|
||||
<exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace" />
|
||||
</rule>
|
||||
</ruleset>
|
||||
@@ -0,0 +1,11 @@
|
||||
parameters:
|
||||
ignoreErrors:
|
||||
-
|
||||
message: "#^Property OrpheusNET\\\\Logchecker\\\\Logchecker\\:\\:\\$ARSummary is never read, only written\\.$#"
|
||||
count: 1
|
||||
path: src/Logchecker.php
|
||||
|
||||
-
|
||||
message: "#^Property OrpheusNET\\\\Logchecker\\\\Logchecker\\:\\:\\$ARTracks is never read, only written\\.$#"
|
||||
count: 1
|
||||
path: src/Logchecker.php
|
||||
@@ -0,0 +1,5 @@
|
||||
includes:
|
||||
- phpstan-baseline.neon
|
||||
|
||||
parameters:
|
||||
level: 5
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" colors="true" bootstrap="vendor/autoload.php" cacheDirectory=".phpunit.cache">
|
||||
<coverage>
|
||||
<report>
|
||||
<html outputDirectory="report"/>
|
||||
<text outputFile="php://stdout" showUncoveredFiles="false"/>
|
||||
</report>
|
||||
</coverage>
|
||||
<testsuites>
|
||||
<testsuite name="unit">
|
||||
<directory>tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<logging/>
|
||||
<source>
|
||||
<include>
|
||||
<directory suffix=".php">src</directory>
|
||||
</include>
|
||||
<exclude/>
|
||||
</source>
|
||||
</phpunit>
|
||||
@@ -22,8 +22,49 @@ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
|
||||
$doc = new DOMDocument();
|
||||
$doc->loadHTML(curl_exec($ch), LIBXML_NOWARNING | LIBXML_NOERROR);
|
||||
curl_close($ch);
|
||||
print("Loaded AccurateRip Drive Website\n\n");
|
||||
|
||||
$rows = $doc->getElementsByTagName('table')->item(1)->getElementsByTagName('tr');
|
||||
$item = $doc->getElementsByTagName('table')->item(1);
|
||||
if ($item === null) {
|
||||
die();
|
||||
}
|
||||
|
||||
$drives = [];
|
||||
$count = $item->childNodes->count();
|
||||
for ($i = 2; $i < $count; $i++) {
|
||||
$childNode = $item->childNodes->item($i);
|
||||
if ($childNode === null) {
|
||||
continue;
|
||||
}
|
||||
if ($childNode->nodeName !== 'tr') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$drive = array_map('trim', explode("\n", ltrim(trim($childNode->textContent), "- ")));
|
||||
if (count($drive) !== 4) {
|
||||
continue;
|
||||
}
|
||||
$drive[1] = (int) $drive[1];
|
||||
$drive[3] = (int) $drive[3];
|
||||
|
||||
if ($drive[1] === '[Purged]' || $drive[3] <= 50) {
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($replacements as [$old, $new]) {
|
||||
$drive[0] = str_replace($old, $new, $drive[0]);
|
||||
}
|
||||
$drive[0] = strtolower($drive[0]);
|
||||
$drive[0] = preg_replace('/ +- +/', ' ', $drive[0]);
|
||||
$drive[0] = preg_replace('/ +/', ' ', $drive[0]);
|
||||
|
||||
//print("[" . implode(', ', array_values($drive)) . "]\n");
|
||||
|
||||
$drives[] = $drive;
|
||||
}
|
||||
file_put_contents(implode(DIRECTORY_SEPARATOR, [__DIR__, '..', 'src', 'resources', 'drives.json']), json_encode($drives));
|
||||
print("Updating " . count($drives) . " drives\n");
|
||||
/*
|
||||
$drives = [];
|
||||
for ($i = 1; $i < $rows->length; $i++) {
|
||||
$row = $rows->item($i);
|
||||
@@ -35,7 +76,7 @@ for ($i = 1; $i < $rows->length; $i++) {
|
||||
$drive = strtolower($drive);
|
||||
$drive = preg_replace('/ +- +/', ' ', $drive);
|
||||
$drive = preg_replace('/ +/', ' ', $drive);
|
||||
|
||||
|
||||
|
||||
$offset = ltrim(trim($row->childNodes->item(3)->nodeValue), '+');
|
||||
$offsets[] = $drive.','.$offset;
|
||||
@@ -45,3 +86,4 @@ for ($i = 1; $i < $rows->length; $i++) {
|
||||
file_put_contents(__DIR__.'/../src/offsets.txt', implode("\n", $offsets));
|
||||
|
||||
print("Updating ".count($offsets)." drives\n");
|
||||
*/
|
||||
+52
-25
@@ -2,47 +2,74 @@
|
||||
|
||||
namespace OrpheusNET\Logchecker;
|
||||
|
||||
use OrpheusNET\Logchecker\Exception\{FileNotFoundException};
|
||||
use OrpheusNET\Logchecker\Exception\FileNotFoundException;
|
||||
use Symfony\Component\Process\Process;
|
||||
|
||||
class Chardet {
|
||||
private $executable = null;
|
||||
/**
|
||||
* Wrapper class around the cchardet / chardet executables
|
||||
*
|
||||
* @see https://github.com/PyYoshi/cChardet
|
||||
* @see https://github.com/chardet/chardet
|
||||
*/
|
||||
class Chardet
|
||||
{
|
||||
protected static $executable = null;
|
||||
private $executables = [
|
||||
'chardet',
|
||||
'chardetect'
|
||||
'cchardetect',
|
||||
'chardetect',
|
||||
'chardet'
|
||||
];
|
||||
|
||||
public function __construct() {
|
||||
foreach ($this->executables as $executable) {
|
||||
if (Util::commandExists($executable)) {
|
||||
$this->executable = $executable;
|
||||
break;
|
||||
/**
|
||||
* Construct Chardet class. If no chardet executable is found on the system,
|
||||
* this will throw an exception.
|
||||
*
|
||||
* @throws \RuntimeException
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
if (static::$executable === null) {
|
||||
foreach ($this->executables as $executable) {
|
||||
if (Util::commandExists($executable)) {
|
||||
static::$executable = $executable;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->executable === null) {
|
||||
throw new \RuntimeException('chardet not installed');
|
||||
if (static::$executable === null) {
|
||||
throw new \RuntimeException('chardet not installed');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function analyze($filename) {
|
||||
|
||||
/**
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function analyze($filename): array
|
||||
{
|
||||
if (!file_exists($filename)) {
|
||||
throw new FileNotFoundException($filename);
|
||||
}
|
||||
|
||||
$output = shell_exec($this->executable . " " . escapeshellarg($filename));
|
||||
// Following regex:
|
||||
// matches[1] - file path
|
||||
// matches[2] - charset
|
||||
// matches[3] - confidence
|
||||
|
||||
if ((preg_match('/(.+): (.+) .+confidence:? ([^\)]+)/', $output, $matches) === 0)) {
|
||||
$process = new Process([static::$executable, $filename]);
|
||||
$process->run();
|
||||
|
||||
/**
|
||||
* General output is something like:
|
||||
* test.log: UTF-8-SIG with confidence 0.9900000095367432
|
||||
*
|
||||
* and our regex should give us the following elements:
|
||||
* matches[1] - file path
|
||||
* matches[2] - charset
|
||||
* matches[3] - confidence
|
||||
*/
|
||||
|
||||
if ((preg_match('/(.+): (.+) .+confidence:? ([^\)]+)/', strtolower($process->getOutput()), $matches) === 0)) {
|
||||
throw new \Exception('This file is not analyzed');
|
||||
}
|
||||
elseif (isset($matches[2]) && $matches[2] === 'None') {
|
||||
} elseif (isset($matches[2]) && $matches[2] === 'None') {
|
||||
throw new \Exception('Could not determine character set');
|
||||
}
|
||||
|
||||
return ['file' => $matches[1], 'charset' => strtolower($matches[2]), 'confidence' => (float) $matches[3]];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace OrpheusNET\Logchecker\Check;
|
||||
|
||||
use OrpheusNET\Logchecker\Check\Checksum\EAC;
|
||||
use OrpheusNET\Logchecker\Check\Checksum\Whipper;
|
||||
use OrpheusNET\Logchecker\Check\Checksum\XLD;
|
||||
use OrpheusNET\Logchecker\Exception\UnknownRipperException;
|
||||
|
||||
class Checksum
|
||||
{
|
||||
public const CHECKSUM_OK = 'checksum_ok';
|
||||
public const CHECKSUM_INVALID = 'checksum_invalid';
|
||||
public const CHECKSUM_MISSING = 'checksum_missing';
|
||||
|
||||
/**
|
||||
* Validates a given log, returning a string representing its state.
|
||||
* See possible values above.
|
||||
*/
|
||||
public static function validate(string $logPath, string $ripper): string
|
||||
{
|
||||
if (!file_exists($logPath)) {
|
||||
throw new \InvalidArgumentException("Log file does not exist: {$logPath}");
|
||||
}
|
||||
|
||||
if ($ripper === Ripper::WHIPPER) {
|
||||
return Whipper::validate($logPath);
|
||||
} elseif ($ripper === Ripper::EAC) {
|
||||
return EAC::validate($logPath);
|
||||
} elseif ($ripper === Ripper::XLD) {
|
||||
return XLD::validate($logPath);
|
||||
} else {
|
||||
throw new UnknownRipperException("Unknown ripper: {$ripper}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,212 @@
|
||||
<?php
|
||||
|
||||
namespace OrpheusNET\Logchecker\Check\Checksum;
|
||||
|
||||
use OrpheusNET\Logchecker\Check\Checksum;
|
||||
use phpseclib3\Crypt\Rijndael;
|
||||
|
||||
/**
|
||||
* Native PHP port of eac_logchecker.py. Validates the integrity checksum that
|
||||
* EAC appends to its logs. The checksum is a Rijndael cipher run with a 256-bit
|
||||
* block size (not standard AES, which is locked to a 128-bit block), so we rely
|
||||
* on phpseclib's configurable Rijndael implementation.
|
||||
*/
|
||||
class EAC
|
||||
{
|
||||
private const EAC_KEY = '9378716cf13e4265ae55338e940b376184da389e50647726b35f6f341ee3efd9';
|
||||
|
||||
// EAC crashes if there are more than 2^13 characters in a line.
|
||||
private const MAX_LINE_LENGTH = 8192;
|
||||
|
||||
public static function validate(string $logPath)
|
||||
{
|
||||
$data = @file_get_contents($logPath);
|
||||
if ($data === false) {
|
||||
return Checksum::CHECKSUM_MISSING;
|
||||
}
|
||||
|
||||
$logs = self::getLogs($data);
|
||||
if ($logs === null) {
|
||||
// Decode failure or line too long: matches the Python catch where a
|
||||
// log with no usable checksum is reported as missing.
|
||||
return Checksum::CHECKSUM_MISSING;
|
||||
}
|
||||
|
||||
$statuses = [];
|
||||
foreach ($logs as $log) {
|
||||
$statuses[] = self::verify($log);
|
||||
}
|
||||
|
||||
// Collapse the per-entry statuses into a single value, with BAD > NO > OK.
|
||||
if (in_array('BAD', $statuses, true)) {
|
||||
return Checksum::CHECKSUM_INVALID;
|
||||
} elseif (in_array('NO', $statuses, true)) {
|
||||
return Checksum::CHECKSUM_MISSING;
|
||||
} elseif (in_array('OK', $statuses, true)) {
|
||||
return Checksum::CHECKSUM_OK;
|
||||
}
|
||||
|
||||
return Checksum::CHECKSUM_MISSING;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode the raw log bytes (UTF-16-LE) and split them into individual log
|
||||
* entries. Returns null when the data cannot be decoded or violates EAC's
|
||||
* line-length limit.
|
||||
*
|
||||
* @return array<array{text: string, modified: bool}>|null
|
||||
*/
|
||||
private static function getLogs(string $data): ?array
|
||||
{
|
||||
$text = @iconv('UTF-16LE', 'UTF-8', $data);
|
||||
if ($text === false) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Strip off the BOM.
|
||||
if (str_starts_with($text, "\u{FEFF}")) {
|
||||
$text = substr($text, strlen("\u{FEFF}"));
|
||||
}
|
||||
|
||||
// The checksum strips newlines anyway, so normalise them for our regexes.
|
||||
$text = str_replace("\r\n", "\n", $text);
|
||||
|
||||
// Null bytes screw it up.
|
||||
$nullPos = strpos($text, "\0");
|
||||
if ($nullPos !== false) {
|
||||
$text = substr($text, 0, $nullPos);
|
||||
}
|
||||
|
||||
foreach (explode("\n", $text) as $line) {
|
||||
if (mb_strlen($line, 'UTF-8') + 1 > self::MAX_LINE_LENGTH) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
$splits = preg_split(
|
||||
'/(\n\n==== .* [A-Z0-9]+ ====)/u',
|
||||
$text,
|
||||
-1,
|
||||
PREG_SPLIT_DELIM_CAPTURE
|
||||
);
|
||||
|
||||
$segments = [];
|
||||
foreach ($splits as $split) {
|
||||
if (trim($split) !== '') {
|
||||
$segments[] = $split;
|
||||
}
|
||||
}
|
||||
|
||||
$logs = [];
|
||||
$count = count($segments);
|
||||
if ($count > 1) {
|
||||
$length = ($count % 2 === 1) ? $count - 1 : $count;
|
||||
for ($i = 0; $i < $length; $i += 2) {
|
||||
$logText = $segments[$i] . $segments[$i + 1];
|
||||
$modified = false;
|
||||
if ($i > 0) {
|
||||
$logText = preg_replace(
|
||||
'/[^-]-{60}[^-]/u',
|
||||
'',
|
||||
$logText,
|
||||
1,
|
||||
$matches
|
||||
);
|
||||
if ($matches === 0) {
|
||||
$modified = true;
|
||||
}
|
||||
}
|
||||
$logs[] = ['text' => $logText, 'modified' => $modified];
|
||||
}
|
||||
for ($i = $length; $i < $count; $i++) {
|
||||
$logs[] = ['text' => $segments[$i], 'modified' => false];
|
||||
}
|
||||
} else {
|
||||
$logs[] = ['text' => $segments[0] ?? '', 'modified' => false];
|
||||
}
|
||||
|
||||
return $logs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the status ('OK', 'NO', or 'BAD') for a single log entry.
|
||||
*
|
||||
* @param array{text: string, modified: bool} $log
|
||||
*/
|
||||
private static function verify(array $log): string
|
||||
{
|
||||
$version = null;
|
||||
$oldChecksum = null;
|
||||
$unsignedText = $log['text'];
|
||||
|
||||
if ($log['text'] !== '') {
|
||||
foreach (explode("\n", $log['text']) as $line) {
|
||||
if (str_starts_with($line, 'Exact Audio Copy')) {
|
||||
$parts = preg_split('/\s+/', trim($line));
|
||||
$version = array_slice($parts, 3, 3);
|
||||
} elseif (preg_match('/^[a-zA-Z]/', $line)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/\n\n==== (.*) ([A-Z0-9]+) ====/u', $log['text'], $match)) {
|
||||
$parts = preg_split('/\n\n==== ' . preg_quote($match[1], '/') . '/u', $log['text'], 2);
|
||||
$unsignedText = $parts[0];
|
||||
$checksumParts = preg_split('/\s+/', trim($parts[1] ?? ''));
|
||||
$oldChecksum = $checksumParts[0] ?? null;
|
||||
}
|
||||
}
|
||||
|
||||
if ($version === null || $oldChecksum === null) {
|
||||
return 'NO';
|
||||
}
|
||||
|
||||
if ($log['modified'] || $oldChecksum !== self::checksum($unsignedText)) {
|
||||
return 'BAD';
|
||||
}
|
||||
|
||||
return 'OK';
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the EAC checksum (Rijndael-256, CBC, zero IV) over the unsigned
|
||||
* portion of a log entry.
|
||||
*/
|
||||
private static function checksum(string $unsignedText): string
|
||||
{
|
||||
// Ignore newlines.
|
||||
$text = str_replace(["\r", "\n"], '', $unsignedText);
|
||||
|
||||
// Fuzzing reveals BOMs are also ignored.
|
||||
$text = str_replace(["\u{FEFF}", "\u{FFFE}"], '', $text);
|
||||
|
||||
// Encode the text as UTF-16-LE.
|
||||
$plaintext = iconv('UTF-8', 'UTF-16LE', $text);
|
||||
|
||||
// With no data there are no cipher blocks, so the checksum stays at its
|
||||
// all-zeroes initial value (the IV).
|
||||
if ($plaintext === '') {
|
||||
return str_repeat('00', 32);
|
||||
}
|
||||
|
||||
// Zero-pad to a multiple of the 32-byte block size.
|
||||
if (strlen($plaintext) % 32 !== 0) {
|
||||
$plaintext = str_pad($plaintext, intdiv(strlen($plaintext) + 31, 32) * 32, "\0");
|
||||
}
|
||||
|
||||
$cipher = new Rijndael('cbc');
|
||||
$cipher->setBlockLength(256);
|
||||
$cipher->setKeyLength(256);
|
||||
$cipher->setKey(hex2bin(self::EAC_KEY));
|
||||
// The IV is all zeroes.
|
||||
$cipher->setIV(str_repeat("\0", 32));
|
||||
$cipher->disablePadding();
|
||||
|
||||
$ciphertext = $cipher->encrypt($plaintext);
|
||||
|
||||
// The checksum is the final ciphertext block.
|
||||
$checksum = substr($ciphertext, -32);
|
||||
|
||||
return strtoupper(bin2hex($checksum));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace OrpheusNET\Logchecker\Check\Checksum;
|
||||
|
||||
use OrpheusNET\Logchecker\Check\Checksum;
|
||||
|
||||
class Whipper
|
||||
{
|
||||
public static function validate(string $logPath)
|
||||
{
|
||||
$log = trim(file_get_contents($logPath));
|
||||
preg_match('/SHA-256 hash: ([A-Z0-9]+)$/', $log, $matches);
|
||||
if (isset($matches[1])) {
|
||||
$lines = explode("\n", $log);
|
||||
$testHash = strtolower(hash('sha256', implode("\n", array_slice($lines, 0, count($lines) - 1))));
|
||||
return $testHash === strtolower($matches[1]) ? Checksum::CHECKSUM_OK : Checksum::CHECKSUM_INVALID;
|
||||
} else {
|
||||
return Checksum::CHECKSUM_MISSING;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
<?php
|
||||
|
||||
namespace OrpheusNET\Logchecker\Check\Checksum;
|
||||
|
||||
use OrpheusNET\Logchecker\Check\Checksum;
|
||||
|
||||
/**
|
||||
* Native PHP port of xld_logchecker.py. Validates the signature that XLD appends
|
||||
* to its logs. The signature is a custom SHA-256 (with a non-standard initial
|
||||
* state) over the log text, run through a bespoke "scramble" step and encoded
|
||||
* with a non-standard base64 alphabet. It is pure integer/byte math, so no
|
||||
* crypto extension is required; 32-bit unsigned arithmetic is emulated with
|
||||
* `& 0xFFFFFFFF` masking.
|
||||
*/
|
||||
class XLD
|
||||
{
|
||||
private const LOGCHECKER_MIN_VERSION = '20121027';
|
||||
|
||||
private const BEGIN_SIGNATURE = "\n-----BEGIN XLD SIGNATURE-----\n";
|
||||
private const END_SIGNATURE = "\n-----END XLD SIGNATURE-----\n";
|
||||
|
||||
private const INITIAL_STATE = [
|
||||
0x1D95E3A4, 0x06520EF5, 0x3A9CFB75, 0x6104BCAE,
|
||||
0x09CEDA82, 0xBA55E60B, 0xEAEC16C6, 0xEB19AF15,
|
||||
];
|
||||
|
||||
private const ROUND_CONSTANTS = [
|
||||
0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1,
|
||||
0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
|
||||
0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786,
|
||||
0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
|
||||
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147,
|
||||
0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
|
||||
0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B,
|
||||
0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
|
||||
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A,
|
||||
0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
|
||||
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2,
|
||||
];
|
||||
|
||||
private const MAGIC_CONSTANTS = [
|
||||
0x99036946, 0xE99DB8E7, 0xE3AE2FA7, 0x0A339740,
|
||||
0xF06EB6A9, 0x92FF9B65, 0x028F7873, 0x9070E316,
|
||||
];
|
||||
|
||||
private const STD_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
private const XLD_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._';
|
||||
|
||||
public static function validate(string $logPath)
|
||||
{
|
||||
$data = @file_get_contents($logPath);
|
||||
if ($data === false) {
|
||||
return Checksum::CHECKSUM_MISSING;
|
||||
}
|
||||
|
||||
// XLD logs are UTF-8; anything else is not a valid logfile.
|
||||
if (!mb_check_encoding($data, 'UTF-8')) {
|
||||
return Checksum::CHECKSUM_MISSING;
|
||||
}
|
||||
|
||||
[$text, $version, $oldSignature] = self::extractInfo($data);
|
||||
|
||||
if ($oldSignature === null) {
|
||||
return Checksum::CHECKSUM_MISSING;
|
||||
}
|
||||
|
||||
if ($oldSignature !== self::signature($text)) {
|
||||
return Checksum::CHECKSUM_INVALID;
|
||||
}
|
||||
|
||||
// A signature produced by a pre-20121027 XLD is considered forged.
|
||||
if ($version === null || strcmp($version, self::LOGCHECKER_MIN_VERSION) <= 0) {
|
||||
return Checksum::CHECKSUM_INVALID;
|
||||
}
|
||||
|
||||
return Checksum::CHECKSUM_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Split a log into the portion that gets signed, the XLD version, and the
|
||||
* embedded signature (or null when there is no signature block).
|
||||
*
|
||||
* @return array{0: string, 1: ?string, 2: ?string}
|
||||
*/
|
||||
private static function extractInfo(string $data): array
|
||||
{
|
||||
$firstLine = explode("\n", $data, 2)[0];
|
||||
if (str_starts_with($firstLine, 'X Lossless Decoder version')) {
|
||||
$version = preg_split('/\s+/', $firstLine)[4] ?? null;
|
||||
} else {
|
||||
$version = null;
|
||||
}
|
||||
|
||||
$pos = strpos($data, self::BEGIN_SIGNATURE);
|
||||
if ($pos === false) {
|
||||
return [$data, $version, null];
|
||||
}
|
||||
|
||||
$text = substr($data, 0, $pos);
|
||||
$remainder = substr($data, $pos + strlen(self::BEGIN_SIGNATURE));
|
||||
$signature = trim(explode(self::END_SIGNATURE, $remainder)[0]);
|
||||
|
||||
return [$text, $version, $signature];
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the XLD signature for the signable portion of a log.
|
||||
*/
|
||||
private static function signature(string $text): string
|
||||
{
|
||||
// SHA-256 with a non-standard initial state.
|
||||
$checksum = self::sha256WithState($text, self::INITIAL_STATE);
|
||||
|
||||
// A fixed version string is appended to the hex digest of the log text.
|
||||
$scrambled = self::scramble($checksum . "\nVersion=0001");
|
||||
|
||||
// Non-standard base64, with padding stripped.
|
||||
return rtrim(self::nonstandardBase64Encode($scrambled), '=');
|
||||
}
|
||||
|
||||
/**
|
||||
* SHA-256 compression function with a caller-supplied initial state.
|
||||
*
|
||||
* @param array<int> $initialState
|
||||
*/
|
||||
private static function sha256WithState(string $data, array $initialState): string
|
||||
{
|
||||
$state = $initialState;
|
||||
|
||||
// Pad with a single 1 bit, enough zeroes, and the original bit length.
|
||||
$length = 8 * strlen($data);
|
||||
$k = 0;
|
||||
while (($length + 1 + $k + 64) % 512 !== 0) {
|
||||
$k++;
|
||||
}
|
||||
$data .= "\x80" . str_repeat("\x00", intdiv($k - 7, 8)) . pack('J', $length);
|
||||
|
||||
for ($start = 0; $start < strlen($data); $start += 64) {
|
||||
$chunk = substr($data, $start, 64);
|
||||
$w = array_values(unpack('N16', $chunk));
|
||||
// Pad the schedule out to 64 words (the leading 16 are reused).
|
||||
for ($i = 16; $i < 64; $i++) {
|
||||
$w[$i] = 0;
|
||||
}
|
||||
|
||||
for ($i = 16; $i < 64; $i++) {
|
||||
$s0 = self::rotr($w[$i - 15], 7) ^ self::rotr($w[$i - 15], 18) ^ ($w[$i - 15] >> 3);
|
||||
$s1 = self::rotr($w[$i - 2], 17) ^ self::rotr($w[$i - 2], 19) ^ ($w[$i - 2] >> 10);
|
||||
$w[$i] = ($w[$i - 16] + $s0 + $w[$i - 7] + $s1) & 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
[$a, $b, $c, $d, $e, $f, $g, $h] = $state;
|
||||
|
||||
for ($i = 0; $i < 64; $i++) {
|
||||
$s0 = self::rotr($a, 2) ^ self::rotr($a, 13) ^ self::rotr($a, 22);
|
||||
$maj = ($a & $b) ^ ($a & $c) ^ ($b & $c);
|
||||
$t2 = $s0 + $maj;
|
||||
|
||||
$s1 = self::rotr($e, 6) ^ self::rotr($e, 11) ^ self::rotr($e, 25);
|
||||
$ch = ($e & $f) ^ ((~$e & 0xFFFFFFFF) & $g);
|
||||
$t1 = $h + $s1 + $ch + self::ROUND_CONSTANTS[$i] + $w[$i];
|
||||
|
||||
$h = $g;
|
||||
$g = $f;
|
||||
$f = $e;
|
||||
$e = ($d + $t1) & 0xFFFFFFFF;
|
||||
$d = $c;
|
||||
$c = $b;
|
||||
$b = $a;
|
||||
$a = ($t1 + $t2) & 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
$add = [$a, $b, $c, $d, $e, $f, $g, $h];
|
||||
foreach ($state as $i => $value) {
|
||||
$state[$i] = ($value + $add[$i]) & 0xFFFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
$digest = '';
|
||||
foreach ($state as $value) {
|
||||
$digest .= pack('N', $value);
|
||||
}
|
||||
|
||||
return bin2hex($digest);
|
||||
}
|
||||
|
||||
/**
|
||||
* XLD's bespoke scramble step over the SHA-256 digest.
|
||||
*/
|
||||
private static function scramble(string $data): string
|
||||
{
|
||||
// Split off the unaligned part.
|
||||
$unaligned = '';
|
||||
if (strlen($data) % 8 !== 0) {
|
||||
$stop = 8 * intdiv(strlen($data), 8);
|
||||
$unaligned = substr($data, $stop);
|
||||
$data = substr($data, 0, $stop) . str_repeat("\x00", 8);
|
||||
}
|
||||
|
||||
$output = [];
|
||||
|
||||
// Magic initial state.
|
||||
$x = 0x6479B873;
|
||||
$y = 0x48853AFC;
|
||||
|
||||
for ($offset = 0; $offset < strlen($data); $offset += 8) {
|
||||
$x ^= self::readUint32($data, $offset);
|
||||
$y ^= self::readUint32($data, $offset + 4);
|
||||
|
||||
for ($round = 0; $round < 4; $round++) {
|
||||
for ($i = 0; $i < 2; $i++) {
|
||||
$y ^= $x;
|
||||
|
||||
$a = (self::MAGIC_CONSTANTS[4 * $i + 0] + $y) & 0xFFFFFFFF;
|
||||
$b = ($a - 1 + self::rotl($a, 1)) & 0xFFFFFFFF;
|
||||
|
||||
$x ^= $b ^ self::rotl($b, 4);
|
||||
|
||||
$c = (self::MAGIC_CONSTANTS[4 * $i + 1] + $x) & 0xFFFFFFFF;
|
||||
$d = ($c + 1 + self::rotl($c, 2)) & 0xFFFFFFFF;
|
||||
|
||||
$e = (self::MAGIC_CONSTANTS[4 * $i + 2] + ($d ^ self::rotl($d, 8))) & 0xFFFFFFFF;
|
||||
$ff = (self::rotl($e, 1) - $e) & 0xFFFFFFFF;
|
||||
|
||||
$y ^= ($x | $ff) ^ self::rotl($ff, 16);
|
||||
|
||||
$g = (self::MAGIC_CONSTANTS[4 * $i + 3] + $y) & 0xFFFFFFFF;
|
||||
$x ^= ($g + 1 + self::rotl($g, 2)) & 0xFFFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
$output[] = pack('N', $x) . pack('N', $y);
|
||||
}
|
||||
|
||||
// Handle the unaligned last chunk differently.
|
||||
if ($unaligned !== '') {
|
||||
$last = array_pop($output);
|
||||
$xored = '';
|
||||
for ($i = 0; $i < strlen($unaligned); $i++) {
|
||||
$xored .= chr(ord($last[$i]) ^ ord($unaligned[$i]));
|
||||
}
|
||||
$output[] = $xored;
|
||||
}
|
||||
|
||||
return implode('', $output);
|
||||
}
|
||||
|
||||
private static function nonstandardBase64Encode(string $data): string
|
||||
{
|
||||
return strtr(base64_encode($data), self::STD_ALPHABET, self::XLD_ALPHABET);
|
||||
}
|
||||
|
||||
private static function readUint32(string $data, int $offset): int
|
||||
{
|
||||
return unpack('N', substr($data, $offset, 4))[1];
|
||||
}
|
||||
|
||||
private static function rotl(int $n, int $k): int
|
||||
{
|
||||
return ((($n << $k) & 0xFFFFFFFF) | ($n >> (32 - $k))) & 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
private static function rotr(int $n, int $k): int
|
||||
{
|
||||
return self::rotl($n, 32 - $k);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Check;
|
||||
|
||||
use OrpheusNET\Logchecker\Exception\UnknownRipperException;
|
||||
|
||||
class Ripper
|
||||
{
|
||||
public const UNKNOWN = 'unknown';
|
||||
public const WHIPPER = 'whipper';
|
||||
public const XLD = 'XLD';
|
||||
public const EAC = 'EAC';
|
||||
|
||||
public static function getRipper(string $log): string
|
||||
{
|
||||
if (strpos($log, "Log created by: whipper") !== false) {
|
||||
return Ripper::WHIPPER;
|
||||
} elseif (strpos($log, "X Lossless Decoder version") !== false) {
|
||||
return Ripper::XLD;
|
||||
} elseif (strpos($log, "Exact Audio Copy") !== false) {
|
||||
return Ripper::EAC;
|
||||
} else {
|
||||
$firstLine = strstr($log, "\n", true);
|
||||
if ($firstLine !== false && strpos($firstLine, "EAC") !== false) {
|
||||
return Ripper::EAC;
|
||||
} else {
|
||||
throw new UnknownRipperException("Could not determine ripper");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,103 +4,101 @@ namespace OrpheusNET\Logchecker\Command;
|
||||
|
||||
use OrpheusNET\Logchecker\Logchecker;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\{InputArgument,InputOption,InputInterface};
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\Output;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class AnalyzeCommand extends Command {
|
||||
protected function configure() {
|
||||
class AnalyzeCommand extends Command
|
||||
{
|
||||
protected function configure()
|
||||
{
|
||||
$this
|
||||
->setName('analyze')
|
||||
->setAliases(['analyse'])
|
||||
->setDescription('analyze log file')
|
||||
->setHelp('This command analyzes a log file')
|
||||
->addOption('output', null, InputOption::VALUE_NONE, 'Print the HTML log text')
|
||||
->addOption('out', 'file', InputOption::VALUE_REQUIRED, 'File to write HTML log text to')
|
||||
->addArgument('file', InputArgument::REQUIRED, 'Log file to analyze');
|
||||
->addOption('html', null, InputOption::VALUE_NONE, 'Print the HTML version of log, without color')
|
||||
->addOption('no_text', null, InputOption::VALUE_NONE, 'Do not print log text to console')
|
||||
->addArgument('file', InputArgument::REQUIRED, 'Log file to analyze')
|
||||
->addArgument('out_file', InputArgument::OPTIONAL, 'Write HTML log to outfile')
|
||||
->addArgument('details', InputArgument::OPTIONAL, 'Write details to file');
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output) {
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
$filename = $input->getArgument('file');
|
||||
if (!file_exists($filename)) {
|
||||
$output->writeln("Invalid file");
|
||||
return;
|
||||
return 1;
|
||||
}
|
||||
|
||||
$logchecker = new Logchecker();
|
||||
$logchecker->new_file($filename);
|
||||
list($score, $details, $checksum, $log_text) = $logchecker->parse();
|
||||
$output->writeln('Ripper : ' . $logchecker->get_ripper());
|
||||
$output->writeln('Version : ' . $logchecker->get_version());
|
||||
$output->writeln('Score : ' . $score);
|
||||
$output->writeln('Checksum: ' . ($checksum ? 'true' : 'false'));
|
||||
|
||||
$logchecker = new Logchecker();
|
||||
$logchecker->newFile($filename);
|
||||
$logchecker->parse();
|
||||
|
||||
if ($input->getArgument('details')) {
|
||||
file_put_contents($input->getArgument('details'), json_encode([
|
||||
"ripper" => $logchecker->getRipper(),
|
||||
"version" => $logchecker->getRipperVersion(),
|
||||
"language" => $logchecker->getLanguage(),
|
||||
"combined" => $logchecker->isCombinedLog(),
|
||||
"score" => $logchecker->getScore(),
|
||||
"checksum" => $logchecker->getChecksumState(),
|
||||
"details" => $logchecker->getDetails(),
|
||||
], JSON_PRETTY_PRINT));
|
||||
}
|
||||
if ($input->getArgument('out_file')) {
|
||||
file_put_contents($input->getArgument('out_file'), $logchecker->getLog());
|
||||
return 0;
|
||||
}
|
||||
|
||||
$output->writeln('Ripper : ' . $logchecker->getRipper());
|
||||
$output->writeln('Version : ' . $logchecker->getRipperVersion());
|
||||
$output->writeln('Language: ' . $logchecker->getLanguage());
|
||||
$output->writeln('Score : ' . $logchecker->getScore());
|
||||
$output->writeln('Checksum: ' . $logchecker->getChecksumState());
|
||||
|
||||
$details = $logchecker->getDetails();
|
||||
if (count($details) > 0) {
|
||||
$output->writeln('Details :');
|
||||
foreach ($details as $detail) {
|
||||
$output->writeln(' '.$detail);
|
||||
$output->writeln(' ' . $detail);
|
||||
}
|
||||
}
|
||||
|
||||
if ($input->getOption('output')) {
|
||||
$output->writeln('');
|
||||
$output->writeln('Log Text:');
|
||||
$output->writeln($log_text);
|
||||
if ($input->getOption('no_text')) {
|
||||
return 0;
|
||||
}
|
||||
$output->writeln('');
|
||||
$output->writeln('Log Text:');
|
||||
$output->writeln('');
|
||||
$replaces = [
|
||||
"</span>" => "</>",
|
||||
"</strong>" => "</>",
|
||||
"<span class='good'>" => "<fg=green;options=bold>",
|
||||
"<span class='bad'>" => "<fg=red;options=bold>",
|
||||
"<span class='goodish'>" => "<fg=cyan;options=bold>",
|
||||
"<span class='badish'>" => "<fg=yellow;options=bold>",
|
||||
"<span class='log1'>" => "<options=underscore>",
|
||||
"<span class='log2'>" => "<fg=yellow>",
|
||||
"<span class='log3'>" => "<fg=blue>",
|
||||
"<span class='log4'>" => "<options=bold>",
|
||||
"<span class='log5'>" => "<options=underscore>",
|
||||
"<span class='log4 log1'>" => "<options=bold>",
|
||||
"<span class='log4 log3'>" => "<fg=blue;options=bold>",
|
||||
"<span class='log4 log5'>" => "<options=bold,underscore>",
|
||||
"<strong>" => "<options=bold>",
|
||||
];
|
||||
$log = preg_replace('/<span class="([a-zA-Z0-9 ]+)">/', "<span class='$1'>", $logchecker->getLog());
|
||||
|
||||
if (!$input->getOption('html')) {
|
||||
$log = str_replace(array_keys($replaces), array_values($replaces), $log);
|
||||
}
|
||||
|
||||
if ($input->getOption('out')) {
|
||||
$html_out = <<<HTML
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Test</title>
|
||||
<meta charset="utf-8"/>
|
||||
<style>
|
||||
.log1 {
|
||||
$output->writeln($log, $input->getOption('html') ? Output::OUTPUT_RAW : Output::OUTPUT_NORMAL);
|
||||
|
||||
}
|
||||
|
||||
.log2 {
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
.log3 {
|
||||
color: #0E88C6;
|
||||
}
|
||||
|
||||
.log4 {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.log5 {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.good {
|
||||
font-weight: bold;
|
||||
color: green;
|
||||
}
|
||||
|
||||
.bad {
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.goodish {
|
||||
font-weight: bold;
|
||||
color: #35BF00;
|
||||
}
|
||||
|
||||
.badish {
|
||||
font-weight: bold;
|
||||
color: #E5B244;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre>{$log_text}</pre>
|
||||
</body>
|
||||
</html>
|
||||
HTML;
|
||||
file_put_contents($input->getOption('out'), $html_out);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace OrpheusNET\Logchecker\Command;
|
||||
|
||||
use OrpheusNET\Logchecker\Util;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class DecodeCommand extends Command
|
||||
{
|
||||
protected function configure()
|
||||
{
|
||||
$this
|
||||
->setName('decode')
|
||||
->setDescription('Decodes log from whatever encoding into UTF-8')
|
||||
->setHelp(<<<HELP
|
||||
This command decodes a log from whatever encoding into UTF-8.
|
||||
|
||||
XLD and Whipper generates logs that are in UTF-8, while EAC uses UTF-16. However, older
|
||||
EAC logs will often be in a smattering of different encoding (most popular is CP-1251, which
|
||||
is a Cyrillic code page), which are in-compatible with UTF-8 based analysis, and so require
|
||||
decoding first. Due to the difficulty of this problem, we use chardet (if installed) to give
|
||||
us the encoding if we cannot detect it via a BOM.
|
||||
|
||||
If no [out_file] is specified, the decoded log will be printed to stdout.
|
||||
HELP
|
||||
)
|
||||
->addArgument('file', InputArgument::REQUIRED, 'Log file to decode')
|
||||
->addArgument('out_file', InputArgument::OPTIONAL, 'File to write decoded log file to');
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
$filename = $input->getArgument('file');
|
||||
if (!file_exists($filename)) {
|
||||
$output->writeln("Invalid file");
|
||||
return 1;
|
||||
}
|
||||
|
||||
$log = file_get_contents($filename);
|
||||
$log = Util::decodeEncoding($log, $filename);
|
||||
|
||||
if ($input->getArgument('out_file')) {
|
||||
file_put_contents($input->getArgument('out_file'), $log);
|
||||
} else {
|
||||
$output->write($log);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace OrpheusNET\Logchecker\Command;
|
||||
|
||||
use OrpheusNET\Logchecker\Parser\EAC\Translator;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class TranslateCommand extends Command
|
||||
{
|
||||
protected function configure()
|
||||
{
|
||||
$this
|
||||
->setName('translate')
|
||||
->setDescription('Translates a log into english')
|
||||
->setHelp("Translates a log into english")
|
||||
->addOption('language', 'l', InputOption::VALUE_REQUIRED, 'Force language to use')
|
||||
->addArgument('file', InputArgument::REQUIRED, 'Log file to decode')
|
||||
->addArgument('out_file', InputArgument::OPTIONAL, 'File to write decoded log file to');
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
$filename = $input->getArgument('file');
|
||||
if (!file_exists($filename)) {
|
||||
$output->writeln("Invalid file");
|
||||
return 1;
|
||||
}
|
||||
|
||||
$log = file_get_contents($filename);
|
||||
$outFile = $input->getArgument('out_file');
|
||||
if (!is_null($outFile)) {
|
||||
$output->setVerbosity(OutputInterface::VERBOSITY_QUIET);
|
||||
}
|
||||
|
||||
if ($input->getOption('language')) {
|
||||
$code = $input->getOption('language');
|
||||
$output->writeln("Translating from {$code} to English");
|
||||
} else {
|
||||
$language = Translator::getLanguage($log);
|
||||
$code = $language['code'];
|
||||
$output->writeln("Translating from {$language['name']} ({$language['name_english']}) to English");
|
||||
}
|
||||
|
||||
$log = Translator::translate($log, $code);
|
||||
|
||||
if (!is_null($outFile)) {
|
||||
file_put_contents($outFile, $log);
|
||||
} else {
|
||||
$output->write($log);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -5,11 +5,13 @@ namespace OrpheusNET\Logchecker\Exception;
|
||||
/**
|
||||
* Thrown when a file was not found.
|
||||
*/
|
||||
class FileNotFoundException extends \RuntimeException {
|
||||
class FileNotFoundException extends \RuntimeException
|
||||
{
|
||||
/**
|
||||
* @param string $path The path to the file that was not found
|
||||
*/
|
||||
public function __construct(string $path) {
|
||||
public function __construct(string $path)
|
||||
{
|
||||
parent::__construct("The file '{$path}' does not exist");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Exception;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
class InvalidFileException extends InvalidArgumentException
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Exception;
|
||||
|
||||
class UnknownLanguageException extends \RuntimeException
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Exception;
|
||||
|
||||
class UnknownRipperException extends \RuntimeException
|
||||
{
|
||||
}
|
||||
+2117
-1441
File diff suppressed because it is too large.
Load diff
+10
-10
@@ -3,22 +3,22 @@
|
||||
namespace OrpheusNET\Logchecker;
|
||||
|
||||
use Symfony\Component\Console\Application;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class LogcheckerConsole extends Application {
|
||||
public function __construct() {
|
||||
$composer_config = json_decode(file_get_contents(__DIR__.'/../composer.json'), true);
|
||||
class LogcheckerConsole extends Application
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$composer_config = json_decode(file_get_contents(__DIR__ . '/../composer.json'), true);
|
||||
$version = $composer_config['version'];
|
||||
|
||||
parent::__construct('Logchecker by Orpheus', $version);
|
||||
parent::__construct('Logchecker', $version);
|
||||
|
||||
$analyze_command = new Command\AnalyzeCommand();
|
||||
|
||||
$this->addCommands([
|
||||
$analyze_command
|
||||
$analyze_command,
|
||||
new Command\DecodeCommand(),
|
||||
new Command\TranslateCommand()
|
||||
]);
|
||||
|
||||
$this->setDefaultCommand($analyze_command->getName(), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Parser\EAC;
|
||||
|
||||
use OrpheusNET\Logchecker\Exception\{
|
||||
InvalidFileException,
|
||||
UnknownLanguageException
|
||||
};
|
||||
|
||||
class Translator
|
||||
{
|
||||
public static function translate(string $log, string $language_code): string
|
||||
{
|
||||
if ($language_code === 'en') {
|
||||
return $log;
|
||||
}
|
||||
$lang_directory = __DIR__ . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR;
|
||||
$english = json_decode(file_get_contents($lang_directory . 'en.json'), true);
|
||||
|
||||
if (!file_exists($lang_directory . $language_code . '.json')) {
|
||||
throw new InvalidFileException('Could not find translation file for ' . $language_code . '.');
|
||||
}
|
||||
$translation = json_decode(file_get_contents($lang_directory . $language_code . '.json'), true);
|
||||
if ($translation === null) {
|
||||
throw new InvalidFileException('Could not parse translation file for ' . $language_code . '.');
|
||||
}
|
||||
|
||||
foreach ($translation as $key => $value) {
|
||||
if (empty($english[$key])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!is_array($value)) {
|
||||
$value = [$value];
|
||||
}
|
||||
foreach ($value as $vvalue) {
|
||||
// want to be case insensitive for most things, but not "No", "Yes", etc
|
||||
$flags = ($key > 16) ? 'ui' : 'u';
|
||||
$tmp_log = preg_replace('/' . preg_quote($vvalue, '/') . '/' . $flags, $english[$key], $log);
|
||||
if ($tmp_log !== null) {
|
||||
$log = $tmp_log;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $log;
|
||||
}
|
||||
|
||||
public static function getLanguage(string $log): array
|
||||
{
|
||||
$languages = json_decode(
|
||||
file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'master.json'),
|
||||
true
|
||||
);
|
||||
|
||||
foreach ($languages as $code => $lang) {
|
||||
foreach ($lang['eac_strings'] as $eac_string) {
|
||||
if (preg_match('/' . preg_quote($eac_string, "/") . '/ui', $log) === 1) {
|
||||
return [
|
||||
'code' => $code,
|
||||
'name' => $lang['name'],
|
||||
'name_english' => $lang['name_english']
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new UnknownLanguageException('Could not determine language of EAC log');
|
||||
}
|
||||
}
|
||||
Executable
+41
@@ -0,0 +1,41 @@
|
||||
EAC Languages
|
||||
=============
|
||||
|
||||
EAC has the ability to use translation files to support other languages. This affects both the
|
||||
UI as well as the files that EAC outputs, which includes the log file from a rip. The JSON
|
||||
files in this directory represent a stripped down version of the translation files that EAC uses,
|
||||
including just the strings that the logs contain/use.
|
||||
|
||||
While EAC comes with several official languages that it supports, people have created their own
|
||||
translation files for several more languages, as well as for some of the officially supported
|
||||
ones.
|
||||
|
||||
We support the following languages:
|
||||
|
||||
* bg: Bulgarian
|
||||
* cs: Czech
|
||||
* de: German
|
||||
* en: English
|
||||
* es: Spanish
|
||||
* fr: French
|
||||
* it: Italian
|
||||
* jp: Japanese
|
||||
* jp99_5: Japanese (Alternate)
|
||||
* nl: Dutch
|
||||
* pl: Polish
|
||||
* ru: Russian
|
||||
* se: Swedish
|
||||
* se_2: Swedish (Alternate)
|
||||
* sk: Slovak
|
||||
* sr: Serbian
|
||||
* zh-Hans: Chinese (Simplified)
|
||||
|
||||
Within each JSON file, the keys represent the numeric key that EAC internally uses for each phrase,
|
||||
and that points to the phrase itself. For each number in each file, there should be a corresponding
|
||||
number within the `en.json` file. The `master.json` file contains a key that represents a filename,
|
||||
and then points to the entry at key `1274`. Our logchecker loads this master file, iterates through
|
||||
until it finds a matching entry, and then if that entry is not `en`, loads the related JSON file
|
||||
and translates all strings it can from that language to English.
|
||||
|
||||
Important note: These strings should be roughly assembled from longest string to shortest or else you
|
||||
risk the potential for certain string sequences to be messed up.
|
||||
Executable
+168
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"31": "Игнориране името на файла",
|
||||
"50": "Недопустима стойност !",
|
||||
"51": "Невалидни символи !",
|
||||
"52": "Невалидно име на файл !",
|
||||
|
||||
"1200": "Отчет за състояние и грешки",
|
||||
|
||||
"2501": "Състояние и грешки на трак",
|
||||
"1203": "Възможни Грешки",
|
||||
"1204": "Създай Отчет",
|
||||
"1210": "Състояние и грешки на диапазон",
|
||||
"1211": "Избран диапазон",
|
||||
"1212": " Синхронизационен проблем ",
|
||||
"1213": " Подозрително местоположение ",
|
||||
"1214": " Липсващи семпли",
|
||||
"1215": " Твърде много семпли",
|
||||
"1216": " Грешка при запис на файл",
|
||||
"1217": " Пиково ниво ",
|
||||
"1299": " Скорост на извличане ",
|
||||
"1218": " Качество на диапазона ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Копиране OK",
|
||||
"1221": " Копирането завърши",
|
||||
"1227": " Качество на трака ",
|
||||
"1228": " Копирането отменено",
|
||||
"1269": " Име на файл ",
|
||||
"1270": " Дължина на предпразнина ",
|
||||
"1271": " Тестван CRC ",
|
||||
"1272": " Копиран CRC ",
|
||||
"1273": " Компресиране",
|
||||
"1280": " Непълно извлечен трак според AccurateRip",
|
||||
"1281": " Точно извличане (достоверност ",
|
||||
"1282": " Неточно извличане (достоверност ",
|
||||
"1283": " Тракът не е в базата данни на AccurateRip",
|
||||
"1330": " Не може да бъде потвърден като точен",
|
||||
"1337": "не може да бъде потвърден като точен",
|
||||
"1331": ", AccurateRip върна",
|
||||
"1332": "(достоверност ",
|
||||
"1333": "Траковете не могат да бъдат потвърдени като точни",
|
||||
"1334": "Може би имате различно издание от наличния(ите) в базата данни",
|
||||
"1335": "Някои тракове не могат да бъдат потвърдени като точни",
|
||||
"1336": "Всички тракове са извлечени точно",
|
||||
"1338": "Използване на нулеви семпли при CRC изчисления",
|
||||
"1339": "Трак(а) не е(са) в базата данни на AccurateRip",
|
||||
"1340": "Трак(а) точно извлечен(и)",
|
||||
"1341": "Трак(а) не се потвърждава(т) като точен(и)",
|
||||
"1342": "Трак(а) с непълно извличане според AccurateRip",
|
||||
"1343": "Трак(а) прекъснат(и)",
|
||||
"1344": "Никой от траковете не е в базата данни на AccurateRip",
|
||||
"1284": "Не всички тракове са извлечени точно",
|
||||
"1222": "Няма грешки",
|
||||
"1223": "Прегледай Диапазона",
|
||||
"1224": "Има грешки",
|
||||
"1225": "Край на отчета",
|
||||
"1321": "Няма открити, прикачени към предишния трак",
|
||||
"1322": "Прикачени към предишния трак",
|
||||
"1323": "Прикачени към следващия Трак",
|
||||
"1325": "Контролна сума от отчет",
|
||||
"1226": "Трак",
|
||||
"1230": "Индекс",
|
||||
"1229": "Преглед на Тракове",
|
||||
"1274": "Отчет на EAC за извличане, извършено на ",
|
||||
"1240": "януари",
|
||||
"1241": "февруари",
|
||||
"1242": "март",
|
||||
"1243": "април",
|
||||
"1244": "май",
|
||||
"1245": "юни",
|
||||
"1246": "юли",
|
||||
"1247": "август",
|
||||
"1248": "септември",
|
||||
"1249": "октомври",
|
||||
"1250": "ноември",
|
||||
"1251": "декември",
|
||||
"1232": "Отчет на EAC за извличане",
|
||||
"1233": "Използвано устройство : ",
|
||||
"1234": "Режим на четене",
|
||||
"1235": "Burst",
|
||||
"1236": "Бърз",
|
||||
"1237": "Параноичен",
|
||||
"1238": "Надежден БЕЗ C2 корекция, точен поток, БЕЗ изключен кеш",
|
||||
"1239": "Надежден БЕЗ C2 корекция, БЕЗ точен поток, изключен кеш",
|
||||
"1252": "Надежден с C2 корекция, точен поток, БЕЗ изключен кеш",
|
||||
"1253": "Надежден с C2 корекция, точен поток, изключен кеш",
|
||||
"1254": "Надежден БЕЗ C2 корекция, точен поток, изключен кеш",
|
||||
"1255": "Комбинирана офсет корекция при четене/запис",
|
||||
"1256": "Офсет корекция при четене",
|
||||
"1257": "Препрочитане на секторите Lead-In и Lead-Out",
|
||||
"1258": "Използван изходен формат",
|
||||
"1259": "Допълнителни конзолни опции",
|
||||
"1260": "Вътрешни правила за WAV",
|
||||
"1261": "44.100 Hz; 16 бита; Стерео",
|
||||
"1262": "Използвай офсет при компресиране",
|
||||
"1263": "Други опции : ",
|
||||
"1264": "Запълване на липсващи офсет семпли с тишина",
|
||||
"1265": "Изтриване на блокове тишина в началото и края",
|
||||
"1266": "Нормализирай до",
|
||||
"1267": "Вграден Win32 интерфейс за Win NT & 2000",
|
||||
"1268": "Външно инсталиран ASPI интерфейс",
|
||||
"1275": "AccurateRip резюме",
|
||||
"1276": "не е извлечен напълно",
|
||||
"1277": "точно извлечен (достоверност ",
|
||||
"1278": "неточно извлечен (достоверност ",
|
||||
"1279": "не е в базата данни",
|
||||
"1285": ", а трябва да е",
|
||||
"1286": "Извършване само на тестово извличане",
|
||||
"1287": "Сектори",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC на извлечения CD",
|
||||
"1290": "Трак",
|
||||
"1291": "Начало",
|
||||
"1292": "Дължина",
|
||||
"1293": "Начален сектор",
|
||||
"1294": "Краен сектор",
|
||||
"1295": "Надежден",
|
||||
"1296": "Използване на C2 показалци",
|
||||
"1297": "Използване на точен поток",
|
||||
"1298": "Изключено аудио кеширане",
|
||||
"1305": "Използван интерфейс",
|
||||
"1306": "Конзолен компресор",
|
||||
"1307": "Избран битрейт",
|
||||
"1308": "Качество",
|
||||
"1328": "Високо",
|
||||
"1329": "Ниско",
|
||||
"1309": "Добави ID3 таг",
|
||||
"1310": "Дискретен формат",
|
||||
"1320": "Управление на празнини",
|
||||
"1324": "Извадени",
|
||||
|
||||
"81700": "L3Enc MP3 Енкодер & Съвместими",
|
||||
"81701": "Fraunhofer MP3Enc MP3 Енкодер",
|
||||
"81702": "Xing X3Enc MP3 Енкодер",
|
||||
"81703": "Xing ToMPG MP3 Енкодер",
|
||||
"81704": "LAME MP3 Енкодер",
|
||||
"81705": "GOGO MP3 Енкодер",
|
||||
"81706": "MPC Енкодер",
|
||||
"81707": "Ogg Vorbis Енкодер",
|
||||
"81708": "Microsoft WMA9 Енкодер",
|
||||
"81709": "FAAC AAC Енкодер",
|
||||
"81710": "Homeboy AAC Енкодер",
|
||||
"81711": "Quartex AAC Енкодер",
|
||||
"81712": "PsyTEL AAC Енкодер",
|
||||
"81713": "MBSoft AAC Енкодер",
|
||||
"81714": "Yamaha VQF Енкодер",
|
||||
"81715": "Real Audio Енкодер",
|
||||
"81716": "Monkey Аудио Енкодер без Загуби",
|
||||
"81717": "Shorten Енкодер без Загуби",
|
||||
"81718": "RKAU Енкодер без Загуби",
|
||||
"81719": "LPAC Енкодер без Загуби",
|
||||
"81720": "Енкодер Дефиниран от Потребителя",
|
||||
|
||||
"4270": "Ниско",
|
||||
"4271": "Средно",
|
||||
"4272": "Високо",
|
||||
|
||||
"1": "Български",
|
||||
"2": "Bulgarian",
|
||||
"5": "Съобщение за грешка",
|
||||
"6": "Внимание!",
|
||||
"7": "Успешно",
|
||||
"8": "Информация",
|
||||
"10": "OK",
|
||||
"11": "Откажи",
|
||||
"12": "Приложи",
|
||||
"15": "Да",
|
||||
"16": "Не"
|
||||
}
|
||||
Executable
+184
@@ -0,0 +1,184 @@
|
||||
{
|
||||
"31": "Název souboru bude ignorován",
|
||||
"50": "Hodnota je mimo rozsah!",
|
||||
"51": "Neplatné znaky!",
|
||||
"52": "Neplatný název souboru!",
|
||||
|
||||
"1200": "Stavová a chybová hlášení",
|
||||
"2501": "Stopa - stav a chyby",
|
||||
"1203": "Možné chyby",
|
||||
"1204": "Vytvořit protokol",
|
||||
"1210": "Rozsah - stav a chyby",
|
||||
"1211": "Vybraný rozsah",
|
||||
"1212": " problém s časováním ",
|
||||
"1213": " podezřelá pozice ",
|
||||
"1214": " chybějící vzorky",
|
||||
"1215": " příliš mnoho vzorků",
|
||||
"1216": " chyba zápisu souboru",
|
||||
"1217": [
|
||||
" špičková úroveň ",
|
||||
" špičková úrověň "
|
||||
],
|
||||
"1299": " rychlost extrakce",
|
||||
"1218": " kvalita rozsahu ",
|
||||
"1219": " CRC ",
|
||||
"1220": " kopie OK",
|
||||
"1221": " kopie dokončena",
|
||||
"1227": " kvalita stopy ",
|
||||
"1228": " kopie přerušena",
|
||||
"1269": " název souboru ",
|
||||
"1270": " délka mezery ",
|
||||
"1271": " CRC testu ",
|
||||
"1272": " CRC kopie ",
|
||||
"1273": " komprimuji",
|
||||
"1280": " Stopa nebyla zcela extrahována, nelze porovnat s AccurateRip",
|
||||
"1281": " Extrahováno správně (spolehlivost ",
|
||||
"1282": " Extrahováno špatně (spolehlivost ",
|
||||
"1283": " Stopa není v AccurateRip databázi",
|
||||
"1330": " Nebylo možné ověřit jako přesné",
|
||||
"1337": "nebylo možné ověřit jako přesné",
|
||||
"1331": ", AccurateRip ",
|
||||
"1332": "(spolehlivost ",
|
||||
"1333": "Žádné stopy nemohly být ověřeny jako přesné",
|
||||
"1334": "Můžete mít jiný výlisek než jsou ty které jsou již v databázi",
|
||||
"1335": "Některé stopy nemohly být ověřeny jako přesné",
|
||||
"1336": "Všechny stopy byly extrahovány přesně",
|
||||
"1338": "Při výpočtu CRC použity nulové vzorky",
|
||||
"1339": "stopy nejsou v AccurateRip databázi",
|
||||
"1340": "stopy extrahovány přesně",
|
||||
"1341": "stopy nemohly být ověřeny jako přesné",
|
||||
"1342": "stopy nebyly extrahovány dostatečně pro vyhledání v AccurateRip",
|
||||
"1343": "stopy přeskočeny",
|
||||
"1344": "Ani jedna ze stop není v AccurateRip databázi",
|
||||
"1284": "Ne všechny stopy byly extrahovány správně",
|
||||
"1222": "Nedošlo k žádným chybám",
|
||||
"1223": "Přehled rozsahu",
|
||||
"1224": "Vyskytly se chyby",
|
||||
"1225": [
|
||||
"Konec protokolu",
|
||||
"Konec stavového hlášení"
|
||||
],
|
||||
"1321": "Nedetekovány - přidány k předchozí stopě",
|
||||
"1322": "Přidány k předchozí stopě",
|
||||
"1323": "Přidány k následující stopě",
|
||||
"1325": "Kontrolní součet protokolu",
|
||||
"1226": "Stopa",
|
||||
"1230": "Index",
|
||||
"1229": "Přehled stop",
|
||||
"1274": [
|
||||
"Protokol extrakce EAC z ",
|
||||
"Záznam extrakce EAC z "
|
||||
],
|
||||
"1240": "Leden",
|
||||
"1241": "Únor",
|
||||
"1242": "Březen",
|
||||
"1243": "Duben",
|
||||
"1244": "Květen",
|
||||
"1245": "Červen",
|
||||
"1246": "Červenec",
|
||||
"1247": "Srpen",
|
||||
"1248": "Září",
|
||||
"1249": "Říjen",
|
||||
"1250": "Listopad",
|
||||
"1251": "Prosinec",
|
||||
"1232": "Protokol extrakce EAC",
|
||||
"1233": "Použitá mechanika : ",
|
||||
"1234": "Režim čtení ",
|
||||
"1235": "Burst",
|
||||
"1236": "Rychlý",
|
||||
"1237": "Paranoidní",
|
||||
"1238": "Bezpečný bez C2, accurate stream, bez zakázání vyr. paměti",
|
||||
"1239": "Bezpečný bez C2, bez accurate stream, zakázaná vyr. paměť",
|
||||
"1252": "Bezpečný s C2, accurate stream, bez zakázání vyr. paměti",
|
||||
"1253": "Bezpečný s C2, accurate stream, zakázaná vyr. paměť",
|
||||
"1254": "Bezpečný bez C2, accurate stream, zakázaná vyr. paměť",
|
||||
"1255": "Kombinovaná korekce vychýlení čtení/zápisu: ",
|
||||
"1256": "Korekce vychýlení čtení",
|
||||
"1257": "Číst lead-in a lead-out",
|
||||
"1258": "Použitý výstupní formát",
|
||||
"1259": "Dodatečné parametry",
|
||||
"1260": "Interní WAV rutiny",
|
||||
"1261": "44.100 Hz; 16 Bit; Stereo",
|
||||
"1262": "Vychýlení komprese",
|
||||
"1263": "Ostatní volby",
|
||||
"1264": "Nahradit chybějící vzorky tichem",
|
||||
"1265": "Smazat ticho na začátku a na konci stop",
|
||||
"1266": "Normalizovat na ",
|
||||
"1267": "Integrované Win32 rozhraní pro NT/2k/XP",
|
||||
"1268": [
|
||||
"Externí ASPI rozhraní",
|
||||
"Extení ASPI rozhraní"
|
||||
],
|
||||
"_1275": "AccurateRip",
|
||||
"1276": "nekompletně extrahováno",
|
||||
"1277": "extrahováno správně (spolehlivost ",
|
||||
"1278": "extrahováno špatně (spolehlivost ",
|
||||
"1279": "není v databázi",
|
||||
"1285": ", ale mělo by být",
|
||||
"1286": "Provedena pouze testovací extrakce",
|
||||
"1287": "Sektory",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC extrahovaného CD",
|
||||
"1290": "Stopa",
|
||||
"1291": "Počátek",
|
||||
"1292": "Délka",
|
||||
"1293": "Počáteční sektor",
|
||||
"1294": "Koncový sektor",
|
||||
"1295": "Bezpečný",
|
||||
"1296": "Použít C2 ukazatele",
|
||||
"1297": "Použít accurate stream",
|
||||
"1298": "Obejít zvukovou vyr. paměť",
|
||||
"1305": "Použité rozhraní",
|
||||
"1306": "Komprimační program pro příkazový řádek",
|
||||
"1307": [
|
||||
"Zvolený datový tok",
|
||||
"Zvolený bitrate"
|
||||
],
|
||||
"1308": "Kvalita",
|
||||
"1328": "Vysoká",
|
||||
"1329": "Nízká",
|
||||
"1309": "Přidat ID3 tag",
|
||||
"1310": "Formát vzorkování",
|
||||
"1320": "Nakládání s mezerami",
|
||||
"1324": "Vynechány",
|
||||
|
||||
"81700": "L3Enc MP3 enkodér nebo kompatibilní",
|
||||
"81701": "Fraunhofer MP3Enc MP3 enkodér",
|
||||
"81702": "Xing X3Enc MP3 enkodér",
|
||||
"81703": "Xing ToMPG MP3 enkodér",
|
||||
"81704": "LAME MP3 enkodér",
|
||||
"81705": "GOGO MP3 enkodér",
|
||||
"81706": "MPC enkodér",
|
||||
"81707": "Ogg Vorbis enkodér",
|
||||
"81708": "Microsoft WMA9 enkodér",
|
||||
"81709": "FAAC AAC enkodér",
|
||||
"81710": "Homeboy AAC enkodér",
|
||||
"81711": "Quartex AAC enkodér",
|
||||
"81712": "PsyTEL AAC enkodér",
|
||||
"81713": "MBSoft AAC enkodér",
|
||||
"81714": "Yamaha VQF enkodér",
|
||||
"81715": "Real Audio enkodér",
|
||||
"81716": "Monkey's Audio lossless enkodér",
|
||||
"81717": "Shorten lossless enkodér",
|
||||
"81718": "RKAU lossless enkodér",
|
||||
"81719": "LPAC lossless enkodér",
|
||||
"81720": [
|
||||
"Uživatelsky definovaný enkodér",
|
||||
"Uživatelsky definovaný encoder"
|
||||
],
|
||||
"4270": "Nízká",
|
||||
"4271": "Střední",
|
||||
"4272": "Vysoká",
|
||||
|
||||
"1": "Čeština",
|
||||
"2": "Czech",
|
||||
"5": "Chyba",
|
||||
"6": "Upozornění",
|
||||
"7": "Úspěšně dokončeno",
|
||||
"8": "Informace",
|
||||
"10": "OK",
|
||||
"11": "Storno",
|
||||
"12": "Použít",
|
||||
"15": "Ano",
|
||||
"16": "Ne"
|
||||
}
|
||||
Executable
+170
@@ -0,0 +1,170 @@
|
||||
{
|
||||
"31": "Dateiname wird ignoriert",
|
||||
"50": "Wert außerhalb des Bereichs !",
|
||||
"51": "Ungültige Zeichen !",
|
||||
"52": "Ungültiger Dateiname !",
|
||||
|
||||
"1200": "Status und Fehlermeldungen",
|
||||
|
||||
"2501": "Track Status und Fehler",
|
||||
"1203": "Mögliche Fehler",
|
||||
"1204": "Erzeuge Log",
|
||||
"1210": "Bereichsstatus und Fehler",
|
||||
"1211": "Gewählter Bereich",
|
||||
"1212": " Timing Problem ",
|
||||
"1213": " Verdächtige Position ",
|
||||
"1214": " Fehlende Samples",
|
||||
"1215": " Zu viele Samples",
|
||||
"1216": " Datei Schreibfehler",
|
||||
"1217": " Spitzenpegel ",
|
||||
"1299": " Auslesegeschwindigkeit ",
|
||||
"1218": " Bereichsqualität ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Kopie OK",
|
||||
"1221": " Kopie beendet",
|
||||
"1227": " Track Qualität ",
|
||||
"1228": " Kopie abgebrochen",
|
||||
"1269": " Dateiname ",
|
||||
"1270": " Pausenlänge ",
|
||||
"1271": " Test CRC ",
|
||||
"1272": " Kopie CRC ",
|
||||
"1273": " Komprimiere",
|
||||
"1280": " Track wurde für AccurateRip-Vergleich nicht vollständig gelesen",
|
||||
"1281": " Akkurat gelesen (Zuversicht ",
|
||||
"1282": " Nicht akkurat gelesen (Zuversicht ",
|
||||
"1283": " Track ist nicht enthalten in der AccurateRip Datenbank",
|
||||
"1330": " Kann nicht als akkurat verifiziert werden",
|
||||
"1337": "kann nicht als akkurat verifiziert werden",
|
||||
"1331": ", AccurateRip lieferte",
|
||||
"1332": "(Zuversicht ",
|
||||
"1333": "Kein Track konnte als akkurat verifiziert werden",
|
||||
"1334": "Es könnte sich um eine andere Pressung als von der in der Datenbank vorhandenen handeln",
|
||||
"1335": "Einige Tracks konnten nicht als akkurat verifiziert werden",
|
||||
"1336": "Alle Tracks wurden akkurat gelesen",
|
||||
"1338": "Null Samples gehen in CRC Berechnungen ein",
|
||||
"1339": "Track(s) nicht in der AccurateRip Datenbank vorhanden",
|
||||
"1340": "Track(s) akkurat gelesen",
|
||||
"1341": "Track(s) nicht als akkurat verifiziert",
|
||||
"1342": "Track(s) nicht vollständig für AccurateRip-Vergleich gelesen",
|
||||
"1343": "Track(s) abgebrochen",
|
||||
"1344": "Keiner der Tracks ist in der AccurateRip Datenbank vorhanden",
|
||||
"1284": "Nicht alle Tracks wurden akkurat gelesen",
|
||||
"1222": "Keine Fehler aufgetreten",
|
||||
"1223": "Überprüfe Bereich",
|
||||
"1224": "Es sind Fehler aufgetreten",
|
||||
"1225": "Ende des Statusreports",
|
||||
"1321": "Nicht erkannt, daher hinter dem vorigen Track angehängt",
|
||||
"1322": "Hinter dem vorigen Track angehängt",
|
||||
"1323": "Vor dem folgenden Track angehängt",
|
||||
"1325": "Report Prüfsumme",
|
||||
"1226": "Track",
|
||||
"1230": "Index",
|
||||
"1229": "Überprüfe Tracks",
|
||||
"1274": "EAC Auslese-Logdatei vom ",
|
||||
"1240": "Januar",
|
||||
"1241": "Februar",
|
||||
"1242": "März",
|
||||
"1243": "April",
|
||||
"1244": "Mai",
|
||||
"1245": "Juni",
|
||||
"1246": "Juli",
|
||||
"1247": "August",
|
||||
"1248": "September",
|
||||
"1249": "Oktober",
|
||||
"1250": "November",
|
||||
"1251": "Dezember",
|
||||
"1232": "EAC Auslese-Logdatei",
|
||||
"1233": "Benutztes Laufwerk : ",
|
||||
"1234": "Lesemodus",
|
||||
"1235": "Burst",
|
||||
"1236": "Schnell",
|
||||
"1237": "Paranoid",
|
||||
"1238": "Sicher mit KEINEM C2, Accurate Stream, KEIN Puffer abgeschaltet",
|
||||
"1239": "Sicher mit KEINEM C2, KEINEM Accurate Stream, Puffer abgeschaltet",
|
||||
"1252": "Sicher mit C2, Accurate Stream, KEIN Puffer abgeschaltet",
|
||||
"1253": "Sicher mit C2, Accurate Stream, Puffer abgeschaltet",
|
||||
"1254": "Sicher mit KEINEM C2, Accurate Stream, Puffer abgeschaltet",
|
||||
"1255": "Kombinierte Lese/Schreiboffset Korrektur",
|
||||
"1256": "Leseoffset Korrektur",
|
||||
"1257": "Überlesen in das Lead-In und Lead-Out",
|
||||
"1258": "Benutztes Ausgabeformat",
|
||||
"1259": "Zusätzliche Kommandozeilenoptionen",
|
||||
"1260": "Interne WAV Routinen",
|
||||
"1261": "44.100 Hz; 16 Bit; Stereo",
|
||||
"1262": "Benutze Kompressionsoffset",
|
||||
"1263": "Andere Einstellungen : ",
|
||||
"1264": "Fülle fehlende Offsetsample mit Stille auf",
|
||||
"1265": "Lösche führende und nachfolgende stille Blöcke",
|
||||
"1266": "Normalisiere auf",
|
||||
"1267": "Natürliche Win32 Schnittstelle für Win NT/2000/XP",
|
||||
"1268": "Installierte externe ASPI Schnittstelle",
|
||||
"1275": "AccurateRip Übersicht",
|
||||
"1276": "nicht vollständig gelesen",
|
||||
"1277": "akkurat gelesen (Zuversicht ",
|
||||
"1278": "nicht akkurat gelesen (Zuversicht ",
|
||||
"1279": "nicht in Datenbank enthalten",
|
||||
"1285": ", aber sollte sein ",
|
||||
"1286": "Nur ein Test-Auslesen durchgeführt",
|
||||
|
||||
"1287": "Sektoren",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC der ausgelesenen CD",
|
||||
"1290": "Track",
|
||||
"1291": "Start",
|
||||
"1292": "Länge",
|
||||
"1293": "Startsektor",
|
||||
"1294": "Endsektor",
|
||||
"1295": "Sicher",
|
||||
"1296": "Benutze C2 Fehlerinformationen",
|
||||
"1297": "Benutze Accurate Stream",
|
||||
"1298": "Audio Puffer abgeschaltet",
|
||||
"1305": "Benutzte Schnittstelle",
|
||||
"1306": "Kommandozeilen Komprimierer",
|
||||
"1307": "Gewählte Bitrate",
|
||||
"1308": "Qualität",
|
||||
"1328": "Hohe",
|
||||
"1329": "Niedrige",
|
||||
"1309": "Füge ID3 Tag hinzu",
|
||||
"1310": "Sampleformat",
|
||||
"1320": "Pausenbehandlung",
|
||||
"1324": "Weggelassen",
|
||||
|
||||
"81700": "L3Enc MP3 Komprimierer & Kompatible",
|
||||
"81701": "Fraunhofer MP3Enc MP3 Komprimierer",
|
||||
"81702": "Xing X3Enc MP3 Komprimierer",
|
||||
"81703": "Xing ToMPG MP3 Komprimierer",
|
||||
"81704": "LAME MP3 Komprimierer",
|
||||
"81705": "GOGO MP3 Komprimierer",
|
||||
"81706": "MPC Komprimierer",
|
||||
"81707": "Ogg Vorbis Komprimierer",
|
||||
"81708": "Microsoft WMA9 Komprimierer",
|
||||
"81709": "FAAC AAC Komprimierer",
|
||||
"81710": "Homeboy AAC Komprimierer",
|
||||
"81711": "Quartex AAC Komprimierer",
|
||||
"81712": "PsyTEL AAC Komprimierer",
|
||||
"81713": "MBSoft AAC Komprimierer",
|
||||
"81714": "Yamaha VQF Komprimierer",
|
||||
"81715": "Real Audio Komprimierer",
|
||||
"81716": "Monkey's Audio Verlustloser Komprimierer",
|
||||
"81717": "Shorten Verlustloser Komprimierer",
|
||||
"81718": "RKAU Verlustloser Komprimierer",
|
||||
"81719": "LPAC Verlustloser Komprimierer",
|
||||
"81720": "Benutzerdefinierter Komprimierer",
|
||||
|
||||
"4270": "Niedrig",
|
||||
"4271": "Mittel",
|
||||
"4272": "Hoch",
|
||||
|
||||
"1": "Deutsch",
|
||||
"2": "German",
|
||||
"5": "Fehlermeldung",
|
||||
"6": "Warnung",
|
||||
"7": "Erfolg",
|
||||
"8": "Information",
|
||||
|
||||
"10": "OK",
|
||||
"11": "Abbruch",
|
||||
"12": "Übernehmen",
|
||||
"15": "Ja",
|
||||
"16": "Nein"
|
||||
}
|
||||
Executable
+171
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"31": "Filename will be ignored",
|
||||
"50": "Value out of range !",
|
||||
"51": "Invalid characters !",
|
||||
"52": "Invalid filename !",
|
||||
|
||||
"1200": "Status and Error Messages",
|
||||
"2501": "Track status and errors",
|
||||
"1203": "Possible Errors",
|
||||
"1204": "Create Log",
|
||||
"1210": "Range status and errors",
|
||||
"1211": "Selected range",
|
||||
"1212": " Timing problem ",
|
||||
"1213": " Suspicious position ",
|
||||
"1214": " Missing samples",
|
||||
"1215": " Too many samples",
|
||||
"1216": " File write error",
|
||||
"1217": " Peak level ",
|
||||
"1299": " Extraction speed ",
|
||||
"1218": " Range quality ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Copy OK",
|
||||
"1221": " Copy finished",
|
||||
"1227": " Track quality ",
|
||||
"1228": " Copy aborted",
|
||||
"1269": " Filename ",
|
||||
"1270": " Pre-gap length ",
|
||||
"1271": " Test CRC ",
|
||||
"1272": " Copy CRC ",
|
||||
"1273": " Compressing",
|
||||
"1280": " Track not fully ripped for AccurateRip lookup",
|
||||
"1281": " Accurately ripped (confidence ",
|
||||
"1282": " Not accurately ripped (confidence ",
|
||||
"1283": " Track not present in AccurateRip database",
|
||||
"1330": " Cannot be verified as accurate",
|
||||
"1337": "cannot be verified as accurate",
|
||||
"1331": ", AccurateRip returned",
|
||||
"1332": "(confidence ",
|
||||
"1333": "No tracks could be verified as accurate",
|
||||
"1334": "You may have a different pressing from the one(s) in the database",
|
||||
"1335": "Some tracks could not be verified as accurate",
|
||||
"1336": "All tracks accurately ripped",
|
||||
"1338": "Null samples used in CRC calculations",
|
||||
"1339": "track(s) not present in the AccurateRip database",
|
||||
"1340": "track(s) accurately ripped",
|
||||
"1341": "track(s) could not be verified as accurate",
|
||||
"1342": "track(s) not fully ripped for AccurateRip lookup",
|
||||
"1343": "track(s) canceled",
|
||||
"1344": "None of the tracks are present in the AccurateRip database",
|
||||
"1284": "Not all tracks ripped accurately",
|
||||
"1222": "No errors occurred",
|
||||
"1223": "Review Range",
|
||||
"1224": "There were errors",
|
||||
"1225": "End of status report",
|
||||
"1321": "Not detected, thus appended to previous track",
|
||||
"1322": "Appended to previous track",
|
||||
"1323": "Appended to next track",
|
||||
"1325": "Log checksum",
|
||||
"1226": "Track",
|
||||
"1230": "Index",
|
||||
"1229": "Review Tracks",
|
||||
"1274": "EAC extraction logfile from ",
|
||||
"1240": "January",
|
||||
"1241": "February",
|
||||
"1242": "March",
|
||||
"1243": "April",
|
||||
"1244": "May",
|
||||
"1245": "June",
|
||||
"1246": "July",
|
||||
"1247": "August",
|
||||
"1248": "September",
|
||||
"1249": "October",
|
||||
"1250": "November",
|
||||
"1251": "December",
|
||||
"1232": "EAC extraction log file",
|
||||
"1233": "Used drive : ",
|
||||
"1234": "Read mode",
|
||||
"1235": "Burst",
|
||||
"1236": "Fast",
|
||||
"1237": "Paranoid",
|
||||
"1238": "Secure with NO C2, accurate stream, NO disable cache",
|
||||
"1239": "Secure with NO C2, NO accurate stream, disable cache",
|
||||
"1252": "Secure with C2, accurate stream, NO disable cache",
|
||||
"1253": "Secure with C2, accurate stream, disable cache",
|
||||
"1254": "Secure with NO C2, accurate stream, disable cache",
|
||||
"1255": "Combined read/write offset correction",
|
||||
"1256": "Read offset correction",
|
||||
"1257": "Overread into Lead-In and Lead-Out",
|
||||
"1258": "Used output format",
|
||||
"1259": "Additional command line options",
|
||||
"1260": "Internal WAV Routines",
|
||||
"1261": "44.100 Hz; 16 Bit; Stereo",
|
||||
"1262": "Use compression offset",
|
||||
"1263": "Other options : ",
|
||||
"1264": "Fill up missing offset samples with silence",
|
||||
"1265": "Delete leading and trailing silent blocks",
|
||||
"1266": "Normalize to",
|
||||
"13303": "Native Win32 interface for XP/Vista/Win 7",
|
||||
"1267": "Native Win32 interface for Win NT & 2000",
|
||||
"1268": "Installed external ASPI interface",
|
||||
"1275": "AccurateRip summary",
|
||||
"1276": "not ripped completely",
|
||||
"1277": "accurately ripped (confidence ",
|
||||
"1278": "not ripped accurately (confidence ",
|
||||
"1279": "not present in database",
|
||||
"1285": ", but should be",
|
||||
"1286": "Performing a test extraction only",
|
||||
"1287": "Sectors",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC of the extracted CD",
|
||||
"1290": "Track",
|
||||
"1291": "Start",
|
||||
"1292": "Length",
|
||||
"1293": "Start sector",
|
||||
"1294": "End sector",
|
||||
"1295": "Secure",
|
||||
"1296": "Make use of C2 pointers",
|
||||
"1297": "Utilize accurate stream",
|
||||
"1298": "Defeat audio cache",
|
||||
"1305": "Used interface",
|
||||
"1306": "Command line compressor",
|
||||
"1307": "Selected bitrate",
|
||||
"1308": "Quality",
|
||||
"1328": "High",
|
||||
"1329": "Low",
|
||||
"1309": "Add ID3 tag",
|
||||
"1310": "Sample format",
|
||||
"1320": "Gap handling",
|
||||
"1324": "Left out",
|
||||
|
||||
"81700": "L3Enc MP3 Encoder & Compatible",
|
||||
"81701": "Fraunhofer MP3Enc MP3 Encoder",
|
||||
"81702": "Xing X3Enc MP3 Encoder",
|
||||
"81703": "Xing ToMPG MP3 Encoder",
|
||||
"81704": "LAME MP3 Encoder",
|
||||
"81705": "GOGO MP3 Encoder",
|
||||
"81706": "MPC Encoder",
|
||||
"81707": "Ogg Vorbis Encoder",
|
||||
"81708": "Microsoft WMA9 Encoder",
|
||||
"81709": "FAAC AAC Encoder",
|
||||
"81710": "Homeboy AAC Encoder",
|
||||
"81711": "Quartex AAC Encoder",
|
||||
"81712": "PsyTEL AAC Encoder",
|
||||
"81713": "MBSoft AAC Encoder",
|
||||
"81714": "Yamaha VQF Encoder",
|
||||
"81715": "Real Audio Encoder",
|
||||
"81716": "Monkey's Audio Lossless Encoder",
|
||||
"81717": "Shorten Lossless Encoder",
|
||||
"81718": "RKAU Lossless Encoder",
|
||||
"81719": "LPAC Lossless Encoder",
|
||||
"81720": "User Defined Encoder",
|
||||
|
||||
"1000000": "for disc",
|
||||
|
||||
"4270": "Low",
|
||||
"4271": "Medium",
|
||||
"4272": "High",
|
||||
|
||||
"1": "English",
|
||||
"2": "English",
|
||||
|
||||
"5": "Error Message",
|
||||
"6": "Warning",
|
||||
"7": "Success",
|
||||
"8": "Information",
|
||||
"10": "OK",
|
||||
"11": "Cancel",
|
||||
"12": "Apply",
|
||||
"15": "Yes",
|
||||
"16": "No"
|
||||
}
|
||||
Executable
+169
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"31": "El nombre del archivo será ignorado",
|
||||
"50": "Valor fuera del rango !",
|
||||
"51": "Caracteres inválidos !",
|
||||
"52": "Nombre de archivo inválido !",
|
||||
|
||||
"1200": "Mensajes de Error y Estado",
|
||||
|
||||
"2501": "Anotar estado y errores",
|
||||
"1203": "Errores posibles",
|
||||
"1204": "Crear Log",
|
||||
"1210": "Gama de estados y errores",
|
||||
"1211": "Seleccionar gama",
|
||||
"1212": " Problema de Sincronización ",
|
||||
"1213": " Posición Sospechosa ",
|
||||
"1214": " Muestras desaparecidas",
|
||||
"1215": " Demasiadas Muestras",
|
||||
"1216": " Error de Escritura en Archivo",
|
||||
"1217": " Nivel Pico ",
|
||||
"1299": " Velocidad de extracción ",
|
||||
"1218": " Gama de Calidad ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Copia OK",
|
||||
"1221": " Copia terminada",
|
||||
"1227": " Calidad de Pista ",
|
||||
"1228": " Copia Abortada",
|
||||
"1269": " Nombre de Archivo ",
|
||||
"1270": " Longitud Pre-gap ",
|
||||
"1271": " Comprobación CRC ",
|
||||
"1272": " Copiar CRC ",
|
||||
"1273": " Comprimiendo",
|
||||
"1280": " Pista sin extraer completamente por Accuraterip",
|
||||
"1281": " Extraida con precisión (confidencia ",
|
||||
"1282": " Extraida sin precisión (confidencia ",
|
||||
"1283": " Pista sin datos en Accuraterip",
|
||||
"1330": " No se puede verificar como precisa",
|
||||
"1337": "No se puede verificar como precisa",
|
||||
"1331": ", AccurateRip devuelto",
|
||||
"1332": "(confidencia ",
|
||||
"1333": "Ninguna pista puede ser verificada como precisa",
|
||||
"1334": "Tu puedes tener un prensado diferente de los encontrados en la base de datos",
|
||||
"1335": "Algunas pistas no pueden ser verificadas como precisas",
|
||||
"1336": "Todas las pistas extraidas con precisión",
|
||||
"1338": "Muestras nulas usadas en los calculos de CRC ",
|
||||
"1339": "pista(s) sin datos en AccurateRip",
|
||||
"1340": "pista(s) extraidas con precisión",
|
||||
"1341": "pista(s) no puede ser verificada como precisa",
|
||||
"1342": "pista(s) sin extraer completamente por AccurateRip lookup",
|
||||
"1343": "pista(s) cancelada",
|
||||
"1344": "Ninguna pista tiene datos en AccurateRip",
|
||||
"1284": "No todas las pistas extraidas con precisión",
|
||||
"1222": "Sin Errores",
|
||||
"1223": "Ver gama",
|
||||
"1224": "Hubo Errores",
|
||||
"1225": "Final del Informe",
|
||||
"1321": "No se detectó, por lo que anexa a la pista anterior",
|
||||
"1322": "Anexada a la pista anterior",
|
||||
"1323": "Anexada a la pista siguiente",
|
||||
"1325": "Log checksum",
|
||||
"1226": "Pista",
|
||||
"1230": "Índice",
|
||||
"1229": "Revisar Pistas",
|
||||
"1274": "Archivo Log de extracciones desde ",
|
||||
"1240": "Enero",
|
||||
"1241": "Febrero",
|
||||
"1242": "Marzo",
|
||||
"1243": "Abril",
|
||||
"1244": "Mayo",
|
||||
"1245": "Junio",
|
||||
"1246": "Julio",
|
||||
"1247": "Agosto",
|
||||
"1248": "Septiembre",
|
||||
"1249": "Octubre",
|
||||
"1250": "Noviembre",
|
||||
"1251": "Diciembre",
|
||||
"1232": "Archivo Log de extracciones para el CD",
|
||||
"1233": "Usar unidad : ",
|
||||
"1234": "Modo de Lectura",
|
||||
"1235": "Explosivo",
|
||||
"1236": "Rápido",
|
||||
"1237": "Paranoico",
|
||||
"1238": "Seguro SIN C2, CON 'Corriente Exacta', SIN desactivar cache",
|
||||
"1239": "Seguro SIN C2, SIN 'Corriente Exacta', CON caché desactivada",
|
||||
"1252": "Seguro CON C2, CON 'Corriente Exacta', SIN desactivar cache",
|
||||
"1253": "Seguro CON C2, CON 'Corriente Exacta', CON caché desactivada",
|
||||
"1254": "Seguro SIN C2, CON 'Corriente Exacta', CON caché desactivada",
|
||||
"1255": "Corrección de Desplazamiento de Lectura/Escritura combinadas : ",
|
||||
"1256": "Corrección de Desplazamiento de Lectura : ",
|
||||
"1257": "Sobreleer tanto en Lead-In como en Lead-Out",
|
||||
"1258": "Formato de Salida utilizado : ",
|
||||
"1259": "Opciones adicionales en línea de comandos : ",
|
||||
"1260": "Rutinas WAV Internas",
|
||||
"1261": "44.100 Hz; 16 Bit; Estéreo",
|
||||
"1262": "Usar desplazamiento de compresión : ",
|
||||
"1263": "Otras opciones : ",
|
||||
"1264": "Rellenar las muestras faltantes con silencios",
|
||||
"1265": "Eliminar silencios inicial y final",
|
||||
"1266": "Normalizar a ",
|
||||
"1267": "Interfaz propio de Win32 para Windowns NT y 2000",
|
||||
"1268": "Interfaz ASPI externo instalado",
|
||||
"1275": "Sumario AccurateRip",
|
||||
"1276": "sin extraer completamente",
|
||||
"1277": "extraido con precisión (confidencia ",
|
||||
"1278": "extraido sin precisión (confidencia ",
|
||||
"1279": "sin datos",
|
||||
"1285": ", pero debe ser",
|
||||
"1286": "Realizando solo prueba de extracción",
|
||||
"1287": "Sectores",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC extraídos del CD",
|
||||
"1290": "Pista",
|
||||
"1291": "Inicio",
|
||||
"1292": "Longitud",
|
||||
"1293": "Inicio del sector",
|
||||
"1294": "Fin del sector",
|
||||
"1295": "Seguro",
|
||||
"1296": "Utilizar los punteros C2",
|
||||
"1297": "Utilizar corriente precisa",
|
||||
"1298": "Caché de audio por defecto",
|
||||
"1305": "Interfaz usada",
|
||||
"1306": "linea de comandos del compresor",
|
||||
"1307": "Velocidad de bits seleccionada",
|
||||
"1308": "Calidad",
|
||||
"1328": "Alta",
|
||||
"1329": "Baja",
|
||||
"1309": "Añadir ID3 tag",
|
||||
"1310": "Formato de muestra",
|
||||
"1320": "Manejo de huecos",
|
||||
"1324": "Left out",
|
||||
|
||||
"81700": "Compresor MP3 L3Enc y Compatibles",
|
||||
"81701": "Compresor MP3 Fraunhofer MP3Enc",
|
||||
"81702": "Compresor MP3 Xing X3Enc",
|
||||
"81703": "Compresor MP3 Xing ToMPG",
|
||||
"81704": "Compresor MP3 LAME",
|
||||
"81705": "Compresor MP3 GOGO",
|
||||
"81706": "Compresor MPC",
|
||||
"81707": "Compresor Ogg Vorbis",
|
||||
"81708": "Compresor Microsoft WMA9",
|
||||
"81709": "Compresor FAAC AAC",
|
||||
"81710": "Compresor Homeboy AAC",
|
||||
"81711": "Compresor Quartex AAC",
|
||||
"81712": "Compresor PsyTEL AAC",
|
||||
"81713": "Compresor MBSoft AAC",
|
||||
"81714": "Compresor Yamaha VQF",
|
||||
"81715": "Compresor Real Audio",
|
||||
"81716": "Compresor sin pérdida Monkey's Audio Lossless",
|
||||
"81717": "Compresor sin pérdida Shorten",
|
||||
"81718": "Compresor sin pérdida RKAU",
|
||||
"81719": "Compresor sin pérdida LPAC",
|
||||
"81720": "Compresor definido por el Usuario",
|
||||
|
||||
"4270": "Baja",
|
||||
"4271": "Media",
|
||||
"4272": "Alta",
|
||||
|
||||
"1": "Español",
|
||||
"2": "Spanish",
|
||||
"5": "Error",
|
||||
"6": "Atención",
|
||||
"7": "Éxito",
|
||||
"8": "Información",
|
||||
|
||||
"10": "OK",
|
||||
"11": "Cancelar",
|
||||
"12": "Aplicar",
|
||||
"15": "Sí",
|
||||
"16": "No"
|
||||
}
|
||||
Executable
+170
@@ -0,0 +1,170 @@
|
||||
{
|
||||
"31": "Les Noms de Fichiers seront ignorés",
|
||||
"50": "Valeur hors de portée !",
|
||||
"51": "Caractères invalides !",
|
||||
"52": "Nom de fichier invalide !",
|
||||
|
||||
"1200": "Messages d'État et d'Erreur",
|
||||
|
||||
"2501": "États et Erreurs Piste",
|
||||
"1203": "Erreurs possibles",
|
||||
"1204": "Créer un journal",
|
||||
"1210": "Propriétés États et Erreurs",
|
||||
"1211": "Gammes sélectionnées",
|
||||
"1212": " problème calcul ",
|
||||
"1213": " position suspecte ",
|
||||
"1214": " samples manquants",
|
||||
"1215": " Trop de samples",
|
||||
"1216": " erreur d'écriture fichier",
|
||||
"1217": " Niveau max ",
|
||||
"1299": " Vitesse d'extraction ",
|
||||
"1218": " qualité intervalle ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Copie Ok",
|
||||
"1221": " Copie terminée",
|
||||
"1227": " Qualité Piste ",
|
||||
"1228": " Copie annulée",
|
||||
"1269": " Nom fichier ",
|
||||
"1270": " Durée PREGAP ",
|
||||
"1271": " Test CRC ",
|
||||
"1272": " Copie CRC ",
|
||||
"1273": " Compression",
|
||||
"1280": " Piste non complètement extraite pour la recherche AccurateRip",
|
||||
"1281": " Extraction exacte (confiance ",
|
||||
"1282": " Extraction non exacte (confiance \n",
|
||||
"1283": " Piste absente de la base AccurateRip",
|
||||
"1330": " Ne peut pas être vérifiée comme exacte",
|
||||
"1337": "ne peut pas être vérifié comme exact",
|
||||
"1331": ", AccurateRip en retour\n",
|
||||
"1332": "(confiance ",
|
||||
"1333": "Aucune des pistes ne peut être vérifiée comme exacte",
|
||||
"1334": "Vous pouvez en avoir une autre parmi celle(s) de la base",
|
||||
"1335": "Certaines pistes n'ont pas pu être vérifiées comme exactes",
|
||||
"1336": "Toutes pistes extraites exactement",
|
||||
"1338": "Échantillons null utilisés dans les calculs CRC",
|
||||
"1339": "piste(s) absente(s) de la base AccurateRip",
|
||||
"1340": "piste(s) extraites exactement",
|
||||
"1341": "piste(s) ne pouvant pas être vérifiée(s) comme exacte(s)",
|
||||
"1342": "piste(s) pas complètement extraite(s) pour la recherche AccurateRip",
|
||||
"1343": "piste(s) annulée(s)",
|
||||
"1344": "Aucune des pistes n'est présente dans la base AccurateRip",
|
||||
"1284": "Toutes les pistes ne sont pas extraites avec exactitude",
|
||||
"1222": "Pas d'erreur apparue",
|
||||
"1223": "Revoir gamme",
|
||||
"1224": "Il y avait des erreurs",
|
||||
"1225": "Fin du rapport d'état",
|
||||
"1321": "Non détecté, ajouté à la piste précédente",
|
||||
"1322": "Ajouté à la piste précédente",
|
||||
"1323": "Ajouté à la piste suivante",
|
||||
"1325": "Checksum de log",
|
||||
"1226": "Piste",
|
||||
"1230": "Index",
|
||||
"1229": "Revoir Pistes",
|
||||
"1274": "Journal d'extraction EAC depuis ",
|
||||
"1240": "Janvier",
|
||||
"1241": "Février",
|
||||
"1242": "Mars",
|
||||
"1243": "Avril",
|
||||
"1244": "Mai",
|
||||
"1245": "Juin",
|
||||
"1246": "Juillet",
|
||||
"1247": "Août",
|
||||
"1248": "Septembre",
|
||||
"1249": "Octobre",
|
||||
"1250": "Novembre",
|
||||
"1251": "Décembre",
|
||||
"1232": "EAC extraction logfile for CD",
|
||||
"1233": "Lecteur utilisé : ",
|
||||
"1234": "Mode lecture ",
|
||||
"1235": "Explosif",
|
||||
"1236": "Rapide",
|
||||
"1237": "Sécurisé SANS C2, SANS flux précis, SANS cache désactivé",
|
||||
"1238": "Sécurisé SANS C2, flux précis, SANS cache désactivé",
|
||||
"1239": "Sécurisé SANS C2, SANS Flux précis, cache désactivé",
|
||||
"1252": "Sécurisé AVEC C2, flux précis, SANS cache désactivé",
|
||||
"1253": "Sécurisé AVEC C2, flux précis, cache désactivé",
|
||||
"1254": "Sécurisé SANS C2, flux précis, cache désactivé",
|
||||
"1255": "Correction offset combiné lecture/écriture : ",
|
||||
"1256": "Correction offset écriture : ",
|
||||
"1257": "Lecture étendue en lead-in et lead-out",
|
||||
"1258": "Format de sortie utilisé : ",
|
||||
"1259": "Options de commande additionnelle : ",
|
||||
"1260": "Routines WAV interne",
|
||||
"1261": "44.100 Hz; 16 Bit; Stéréo",
|
||||
"1262": "Utilisé offset de compression : ",
|
||||
"1263": "Autres options : ",
|
||||
"1264": "Remplacer les samples manquants par du silence",
|
||||
"1265": "Effacer les blocs silencieux situés en début et fin",
|
||||
"1266": "Normaliser à ",
|
||||
"1267": "Interface native Win32 pour Win NT & 2000",
|
||||
"1268": "Interface ASPI externe installée",
|
||||
"1275": "Résumé AccurateRip",
|
||||
"1276": "pas extrait complètement",
|
||||
"1277": "extrait avec exactitude (confiance ",
|
||||
"1278": "pas extrait avec exactitude (confiance ",
|
||||
"1279": "absent de la base",
|
||||
"1285": ", mais peut être",
|
||||
"1286": "Exécution d'un test d'extraction seulement",
|
||||
"1287": "Secteurs",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC du CD extrait",
|
||||
"1290": "Track",
|
||||
"1291": "Démarrer",
|
||||
"1292": "Longueur",
|
||||
"1293": "Secteur de début",
|
||||
"1294": "Secteur de fin",
|
||||
"1295": "Vérouiller",
|
||||
"1296": "Utiliser les pointeurs C2",
|
||||
"1297": "Utiliser flux précis",
|
||||
"1298": "Vider le cache audio",
|
||||
"1305": "Interface utilisée",
|
||||
"1306": "Ligne de commande du compresseur",
|
||||
"1307": "Débit choisi",
|
||||
"1308": "Qualité",
|
||||
"1328": "Haute",
|
||||
"1329": "Basse",
|
||||
"1309": "Ajouter ID3 tag",
|
||||
"1310": "Format d'échantillon",
|
||||
"1320": "Traitement des intervalles",
|
||||
"1324": "Exclu",
|
||||
|
||||
"81700": "Encodeur L3Enc MP3 & Compatible",
|
||||
"81701": "Encodeur Fraunhofer MP3Enc MP3",
|
||||
"81702": "Encodeur Xing X3Enc MP3 ",
|
||||
"81703": "Encodeur Xing ToMPG MP3 ",
|
||||
"81704": "Encodeur LAME MP3 ",
|
||||
"81705": "Encodeur GOGO MP3 ",
|
||||
"81706": "Encodeur MPC ",
|
||||
"81707": "Encodeur Ogg Vorbis ",
|
||||
"81708": "Encodeur Microsoft WMA9 ",
|
||||
"81709": "Encodeur FAAC AAC ",
|
||||
"81710": "Encodeur Homeboy AAC ",
|
||||
"81711": "Encodeur Quartex AAC ",
|
||||
"81712": "Encodeur PsyTEL AAC ",
|
||||
"81713": "Encodeur MBSoft AAC ",
|
||||
"81714": "Encodeur Yamaha VQF ",
|
||||
"81715": "Encodeur Real Audio ",
|
||||
"81716": "Encodeur Monkey's Audio Lossless ",
|
||||
"81717": "Encodeur Shorten Lossless ",
|
||||
"81718": "Encodeur RKAU Lossless ",
|
||||
"81719": "Encodeur LPAC Lossless ",
|
||||
"81720": "Encodeur défini par l'utilisateur ",
|
||||
|
||||
"4270": "Bas",
|
||||
"4271": "Moyen",
|
||||
"4272": "Haut",
|
||||
|
||||
"1": "Français",
|
||||
"2": "French",
|
||||
|
||||
"5": "Message d'erreur",
|
||||
"6": "Attention",
|
||||
"7": "Réussi",
|
||||
"8": "Information",
|
||||
|
||||
"10": "OK",
|
||||
"11": "Annuler",
|
||||
"12": "Appliquer",
|
||||
"15": "Oui",
|
||||
"16": "Non"
|
||||
}
|
||||
Executable
+182
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"31": "Il nome del file sarà ignorato",
|
||||
"50": "Valore fuori dall'intervallo!",
|
||||
"51": "Caratteri non validi!",
|
||||
"52": "Nome del file non valido!",
|
||||
|
||||
"1200": "Messaggi di stato e di errore",
|
||||
|
||||
"2501": "Stato traccia ed errori",
|
||||
"1203": "Errori Possibili",
|
||||
"1204": "Crea Log",
|
||||
"1210": "Stato intervallo ed errori",
|
||||
"1211": "Intervallo selezionato",
|
||||
"1212": " Problema di timing ",
|
||||
"1213": " Posizione sospetta ",
|
||||
"1214": " Sample mancanti",
|
||||
"1215": " Troppi sample",
|
||||
"1216": " Errore di scrittura file",
|
||||
"1217": " Livello di picco ",
|
||||
"1299": " Velocità estrazione ",
|
||||
"1218": " Qualità intervallo ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Copia corretta",
|
||||
"1221": " Copia completata con successo",
|
||||
"1227": " Qualità traccia ",
|
||||
"1228": " Copia annullata",
|
||||
"1269": " Nome file ",
|
||||
"1270": " Durata Pre-Gap ",
|
||||
"1271": " Verifica CRC ",
|
||||
"1272": " Copia CRC ",
|
||||
"1273": " Compressione in corso...",
|
||||
"1280": " Traccia non estratta completamente per controllo Accuraterip",
|
||||
"1281": " Estratta accuratamente (Confidence ",
|
||||
"1282": " Non estratta accuratamente (Confidence ",
|
||||
"1283": " Traccia non presente nel database Accuraterip",
|
||||
"1330": " Non può essere verificata come accuratata",
|
||||
"1337": "non può essere verificata come accuratata",
|
||||
"1331": ", AccurateRip risulta",
|
||||
"1332": "(confidence ",
|
||||
"1333": "Nessuna traccia può essere verificata come accurata",
|
||||
"1334": "Tu potresti avere una differente edizione rispetto a quelle presenti nel database",
|
||||
"1335": "Alcune tracce non possono essere verificate come accurate",
|
||||
"1336": "Tutte le tracce sono state estratte accuratamente",
|
||||
"1338": "Usa i sample nulli nel calcolo CRC",
|
||||
"1339": "Traccia(e) non presente nel database AccurateRip",
|
||||
"1340": "Traccia(e) estratta accuratamente",
|
||||
"1341": "Traccia(e) non possono essere verificate come accurate",
|
||||
"1342": "Traccia(e) non completamente estratte per una controllo AccurateRip",
|
||||
"1343": "Traccia(e) cancellata",
|
||||
"1344": "Nessuna delle tracce è presente nel database AccurateRip",
|
||||
"1284": "Non tutte le tracce sono state estratte accuratamente",
|
||||
"1222": "Non sono stati riscontrati errori",
|
||||
"1223": "Esamina Intervallo",
|
||||
"1224": "Sono stati riscontrati errori",
|
||||
"1225": "Fine del resoconto di stato",
|
||||
"1321": "Non rilevato, così aggiunto a traccia precedente",
|
||||
"1322": "Aggiunto a traccia precedente",
|
||||
"1323": "Aggiunto a traccia successiva",
|
||||
"1325": "Checksum del log",
|
||||
"1226": "Traccia",
|
||||
"1230": "Indice",
|
||||
"1229": "Esamina Tracce",
|
||||
"1274": [
|
||||
"File di log EAC per l'estrazione del ",
|
||||
"Estrazione file di log EAC da "
|
||||
],
|
||||
"1240": "Gennaio",
|
||||
"1241": "Febbraio",
|
||||
"1242": "Marzo",
|
||||
"1243": "Aprile",
|
||||
"1244": "Maggio",
|
||||
"1245": "Giugno",
|
||||
"1246": "Luglio",
|
||||
"1247": "Agosto",
|
||||
"1248": "Settembre",
|
||||
"1249": "Ottobre",
|
||||
"1250": "Novembre",
|
||||
"1251": "Dicembre",
|
||||
"1232": "File di log EAC per l'estrazione CD",
|
||||
"1233": [
|
||||
"Unità predefinita : ",
|
||||
"Unità predefinita: "
|
||||
],
|
||||
"1234": "Modalità di lettura",
|
||||
"1235": "Burst",
|
||||
"1236": "Rapida",
|
||||
"1237": "Paranoica",
|
||||
"1238": "Sicuro con NO C2, Lettura accurata, Disattiva cache: NO",
|
||||
"1239": "Sicuro con NO C2, Lettura accurata: NO, Disattiva cache",
|
||||
"1252": "Sicuro con C2, Lettura accurata, Disattiva cache: NO",
|
||||
"1253": "Sicuro con C2, Lettura accurata, Disattiva cache",
|
||||
"1254": "Sicuro con NO C2, Lettura accurata, Disattiva cache",
|
||||
"1255": "Correzione offset combinata Lettura/Scrittura",
|
||||
"1256": "Correzione offset di lettura",
|
||||
"1257": [
|
||||
"Compensa lettura nel Lead-In e nel Lead-Out",
|
||||
"Sovrascrivi anche nel Lead-In e Lead-Out"
|
||||
],
|
||||
"1258": "Formato di destinazione scelto",
|
||||
"1259": "Parametri aggiuntivi da riga di comando",
|
||||
"1260": "Routine Interne WAV",
|
||||
"1261": "44.100 Hz; 16 Bit; Stereo",
|
||||
"1262": "Usa offset di compressione",
|
||||
"1263": "Altre opzioni : ",
|
||||
"1264": "Riempi sample offset mancanti con silenzio",
|
||||
"1265": [
|
||||
"Rimuovi blocchi di silenzio ad inizio e fine traccia",
|
||||
"Rimuovi blocchi di silezio ad inizio e fine"
|
||||
],
|
||||
"1266": "Normalizza al",
|
||||
"1267": "Interfaccia nativa Win32 Per Windows XP/Vista/Win 7",
|
||||
"1268": "Interfaccia esterna ASPI (Installata)",
|
||||
"1275": "Sommario Accuraterip",
|
||||
"1276": "Non estratta completamente",
|
||||
"1277": "Estratta accuratamente (Confidence ",
|
||||
"1278": "Non estratta accuratamente (Confidence ",
|
||||
"1279": "Non presente nel database",
|
||||
"1285": ", ma dovrebbe essere",
|
||||
"1286": "Effettua un'estrazione solo di prova",
|
||||
"1287": "Settori",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC del CD estratto",
|
||||
"1290": "Traccia",
|
||||
"1291": "Inizio",
|
||||
"1292": "Lunghezza",
|
||||
"1293": "Inizio settore",
|
||||
"1294": "Fine settore",
|
||||
"1295": "Sicura",
|
||||
"1296": "Rileva errori lettura C2",
|
||||
"1297": "Utilizza lettura accurata",
|
||||
"1298": "Disattiva cache audio",
|
||||
"1305": "Interfaccia usata",
|
||||
"1306": "Compressore a riga di comando",
|
||||
"1307": "Bitrate selezionato ",
|
||||
"1308": "Qualità",
|
||||
"1328": "Alta",
|
||||
"1329": "Bassa",
|
||||
"1309": "Aggiungi tag ID3",
|
||||
"1310": "Formato Sample",
|
||||
"1320": "Gestione Gap",
|
||||
"1324": "Left out",
|
||||
|
||||
"81700": "Encoder MP3 L3Enc e compatibili",
|
||||
"81701": "Encoder MP3 Fraunhofer MP3Enc",
|
||||
"81702": "Encoder MP3 Xing X3Enc",
|
||||
"81703": "Encoder MP3 Xing ToMPG",
|
||||
"81704": "Encoder MP3Encoder LAME",
|
||||
"81705": "Encoder MP3 GOGO",
|
||||
"81706": "Encoder MPC",
|
||||
"81707": "Encoder Ogg Vorbis",
|
||||
"81708": "Encoder Microsoft WMA9",
|
||||
"81709": "Encoder FAAC AAC",
|
||||
"81710": "Encoder Homeboy AAC",
|
||||
"81711": "Encoder Quartex AAC",
|
||||
"81712": "Encoder PsyTEL AAC",
|
||||
"81713": "Encoder MBSoft AAC",
|
||||
"81714": "Encoder Yamaha VQF",
|
||||
"81715": "Encoder Real Audio",
|
||||
"81716": "Encoder Monkey's Audio Lossless",
|
||||
"81717": "Encoder Shorten Lossless",
|
||||
"81718": "Encoder RKAU Lossless",
|
||||
"81719": "Encoder LPAC Lossless",
|
||||
"81720": "Usa Encoder Definito Da Utente",
|
||||
|
||||
"4270": "Bassa",
|
||||
"4271": "Media",
|
||||
"4272": "Alta",
|
||||
|
||||
"1": "Italiano",
|
||||
"2": "Italian",
|
||||
|
||||
"5": "Messaggio di errore",
|
||||
"6": "Attenzione",
|
||||
"7": "Completato",
|
||||
"8": "Informazioni",
|
||||
|
||||
"10": "OK",
|
||||
"11": "Annulla",
|
||||
"12": "Applica",
|
||||
"15": "Sì",
|
||||
"16": "No"
|
||||
}
|
||||
Executable
+512
@@ -0,0 +1,512 @@
|
||||
{
|
||||
"31": [
|
||||
"指定されたファイル名は無視されます"
|
||||
],
|
||||
"50": [
|
||||
"範囲外です !"
|
||||
],
|
||||
"51": [
|
||||
"無効な文字です !"
|
||||
],
|
||||
"52": [
|
||||
"無効なファイル名です !"
|
||||
],
|
||||
"1200": [
|
||||
"ステータスとエラー メッセージ"
|
||||
],
|
||||
"2501": [
|
||||
"トラックステータスとエラー"
|
||||
],
|
||||
"1203": [
|
||||
"考えられるエラー"
|
||||
],
|
||||
"1204": [
|
||||
"ログ作成"
|
||||
],
|
||||
"1210": [
|
||||
"展開範囲ステータスとエラー",
|
||||
"範囲取り込みステータス & エラー"
|
||||
],
|
||||
"1211": [
|
||||
"選択された範囲"
|
||||
],
|
||||
"1212": [
|
||||
" タイミングプロブレム "
|
||||
],
|
||||
"1213": [
|
||||
" 疑わしい位置 "
|
||||
],
|
||||
"1214": [
|
||||
" 消失サンプル"
|
||||
],
|
||||
"1215": [
|
||||
" 過剰サンプル"
|
||||
],
|
||||
"1216": [
|
||||
" ファイル書き込みエラー"
|
||||
],
|
||||
"1217": [
|
||||
" ピークレベル "
|
||||
],
|
||||
"1218": [
|
||||
" 選択範囲品質 "
|
||||
],
|
||||
"1219": [
|
||||
" CRC "
|
||||
],
|
||||
"1220": [
|
||||
" コピー OK"
|
||||
],
|
||||
"1221": [
|
||||
" コピー完了"
|
||||
],
|
||||
"1227": [
|
||||
" トラック品質 "
|
||||
],
|
||||
"1228": [
|
||||
" コピー中止"
|
||||
],
|
||||
"1269": [
|
||||
" ファイル名 "
|
||||
],
|
||||
"1270": [
|
||||
" プリギャップ長 "
|
||||
],
|
||||
"1271": [
|
||||
" テスト CRC ",
|
||||
" テストCRC "
|
||||
],
|
||||
"1272": [
|
||||
" コピー CRC ",
|
||||
" コピーCRC "
|
||||
],
|
||||
"1273": [
|
||||
" エンコード中"
|
||||
],
|
||||
"1280": [
|
||||
" Track not fully ripped for AccurateRip lookup"
|
||||
],
|
||||
"1281": [
|
||||
" Accurately ripped (confidence "
|
||||
],
|
||||
"1282": [
|
||||
" Not accurately ripped (confidence "
|
||||
],
|
||||
"1283": [
|
||||
" AccurateRipのデーターベースに存在しません"
|
||||
],
|
||||
"1330": [
|
||||
" Cannot be verified as accurate"
|
||||
],
|
||||
"1337": [
|
||||
"cannot be verified as accurate"
|
||||
],
|
||||
"1331": [
|
||||
", AccurateRip returned"
|
||||
],
|
||||
"1332": [
|
||||
"(confidence "
|
||||
],
|
||||
"1333": [
|
||||
"No tracks could be verified as accurate"
|
||||
],
|
||||
"1334": [
|
||||
"You may have a different pressing from the one(s) in the database"
|
||||
],
|
||||
"1335": [
|
||||
"Some tracks could not be verified as accurate"
|
||||
],
|
||||
"1336": [
|
||||
"All tracks accurately ripped"
|
||||
],
|
||||
"1338": [
|
||||
"CRC計算で無音のサンプルを使用するか"
|
||||
],
|
||||
"1339": [
|
||||
"track(s) not present in the AccurateRip database"
|
||||
],
|
||||
"1340": [
|
||||
"track(s) accurately ripped"
|
||||
],
|
||||
"1341": [
|
||||
"track(s) could not be verified as accurate"
|
||||
],
|
||||
"1342": [
|
||||
"track(s) not fully ripped for AccurateRip lookup"
|
||||
],
|
||||
"1343": [
|
||||
"track(s) canceled"
|
||||
],
|
||||
"1344": [
|
||||
"どのTrackもAccurateRipのデーターベースに存在しません",
|
||||
"どのトラックもAccurateRipのデーターベースに存在しません"
|
||||
],
|
||||
"1284": [
|
||||
"Not all tracks ripped accurately"
|
||||
],
|
||||
"1222": [
|
||||
"エラーは検出されませんでした",
|
||||
"エラーは発生しませんでした"
|
||||
],
|
||||
"1223": [
|
||||
"選択範囲再調査"
|
||||
],
|
||||
"1224": [
|
||||
"エラーがありました"
|
||||
],
|
||||
"1225": [
|
||||
"ステータスの報告終了",
|
||||
"ステータス報告完了"
|
||||
],
|
||||
"1229": [
|
||||
"トラック再調査"
|
||||
],
|
||||
"1230": [
|
||||
"インデックス"
|
||||
],
|
||||
"1274": [
|
||||
"EAC 展開 ログファイル 日付: ",
|
||||
"EAC 取り込みログファイル 日付"
|
||||
],
|
||||
"1249": [
|
||||
"10月"
|
||||
],
|
||||
"1250": [
|
||||
"11月"
|
||||
],
|
||||
"1251": [
|
||||
"12月"
|
||||
],
|
||||
"1240": [
|
||||
"1月"
|
||||
],
|
||||
"1241": [
|
||||
"2月"
|
||||
],
|
||||
"1242": [
|
||||
"3月"
|
||||
],
|
||||
"1243": [
|
||||
"4月"
|
||||
],
|
||||
"1244": [
|
||||
"5月"
|
||||
],
|
||||
"1245": [
|
||||
"6月"
|
||||
],
|
||||
"1246": [
|
||||
"7月"
|
||||
],
|
||||
"1247": [
|
||||
"8月"
|
||||
],
|
||||
"1248": [
|
||||
"9月"
|
||||
],
|
||||
"1231": [
|
||||
" for CD"
|
||||
],
|
||||
"1232": [
|
||||
"EAC 展開状況 ログファイル for CD"
|
||||
],
|
||||
"1233": [
|
||||
"使用ドライブ"
|
||||
],
|
||||
"1234": [
|
||||
"読み込みモード"
|
||||
],
|
||||
"1235": [
|
||||
"バースト"
|
||||
],
|
||||
"1236": [
|
||||
"ファスト"
|
||||
],
|
||||
"1237": [
|
||||
"セキュア(C2 : NO / 正確なデータ転送力 : NO / キャッシュ無効 : NO)"
|
||||
],
|
||||
"1238": [
|
||||
"セキュア(C2 : NO / 正確なデータ転送力 : YES / キャッシュ無効 : NO)"
|
||||
],
|
||||
"1239": [
|
||||
"セキュア(C2 : NO / 正確なデータ転送力 : NO / キャッシュ無効 : YES)"
|
||||
],
|
||||
"1252": [
|
||||
"セキュア(C2 : YES / 正確なデータ転送力 : YES / キャッシュ無効 : NO)"
|
||||
],
|
||||
"1253": [
|
||||
"セキュア(C2 : YES / 正確なデータ転送力 : YES / キャッシュ無効 : YES)"
|
||||
],
|
||||
"1254": [
|
||||
"セキュア(C2 : NO / 正確なデータ転送力 : YES / キャッシュ無効 : YES)"
|
||||
],
|
||||
"1255": [
|
||||
"読み込み・書き込みオフセット訂正値"
|
||||
],
|
||||
"1256": [
|
||||
"読み込みオフセット訂正値",
|
||||
"読み込みサンプルオフセット訂正値"
|
||||
],
|
||||
"1257": [
|
||||
"リードインとリードアウトをオーバーリードする",
|
||||
"リードイン・リードアウトをオーバーリードする"
|
||||
],
|
||||
"1258": [
|
||||
"使用出力フォーマット",
|
||||
"使用出力モード"
|
||||
],
|
||||
"1259": [
|
||||
"追加コマンドラインオプション"
|
||||
],
|
||||
"1260": [
|
||||
"内部 WAV ルーチン",
|
||||
"内蔵WAV出力ルーチン"
|
||||
],
|
||||
"1261": [
|
||||
"44.100 Hz; 16 Bit; ステレオ"
|
||||
],
|
||||
"1262": [
|
||||
"使用エンコードオフセット値"
|
||||
],
|
||||
"1263": [
|
||||
"その他のオプション : ",
|
||||
"その他のオプション"
|
||||
],
|
||||
"1264": [
|
||||
"消失したオフセットサンプルを無音に置き換える",
|
||||
"欠落したオフセットサンプルを無音で補完する"
|
||||
],
|
||||
"1265": [
|
||||
"曲の先頭と末尾の無音部を削除する",
|
||||
"曲の先頭と末端の無音領域を削除する"
|
||||
],
|
||||
"1266": [
|
||||
"ノーマライズ"
|
||||
],
|
||||
"13303": [
|
||||
"XP/Vista/Win 7のWin32標準インターフェイス"
|
||||
],
|
||||
"1267": [
|
||||
"標準 Win32 の Win NT & 2000 用"
|
||||
],
|
||||
"1268": [
|
||||
"インストール済み外部 ASPI インターフェイス"
|
||||
],
|
||||
"81700": [
|
||||
"L3Enc MP3 Encoder & Compatible"
|
||||
],
|
||||
"81701": [
|
||||
"Fraunhofer MP3Enc MP3 Encoder"
|
||||
],
|
||||
"81702": [
|
||||
"Xing X3Enc MP3 Encoder"
|
||||
],
|
||||
"81703": [
|
||||
"Xing ToMPG MP3 Encoder"
|
||||
],
|
||||
"81704": [
|
||||
"LAME MP3 Encoder"
|
||||
],
|
||||
"81705": [
|
||||
"GOGO MP3 Encoder"
|
||||
],
|
||||
"81706": [
|
||||
"MPC Encoder"
|
||||
],
|
||||
"81707": [
|
||||
"Ogg Vorbis Encoder"
|
||||
],
|
||||
"81708": [
|
||||
"Microsoft WMA9 Encoder"
|
||||
],
|
||||
"81709": [
|
||||
"FAAC AAC Encoder"
|
||||
],
|
||||
"81710": [
|
||||
"Homeboy AAC Encoder"
|
||||
],
|
||||
"81711": [
|
||||
"Quartex AAC Encoder"
|
||||
],
|
||||
"81712": [
|
||||
"PsyTEL AAC Encoder"
|
||||
],
|
||||
"81713": [
|
||||
"MBSoft AAC Encoder"
|
||||
],
|
||||
"81714": [
|
||||
"Yamaha VQF Encoder"
|
||||
],
|
||||
"81715": [
|
||||
"Real Audio Encoder"
|
||||
],
|
||||
"81716": [
|
||||
"Monkey's Audio Lossless Encoder"
|
||||
],
|
||||
"81717": [
|
||||
"Shorten Lossless Encoder"
|
||||
],
|
||||
"81718": [
|
||||
"RKAU Lossless Encoder"
|
||||
],
|
||||
"81719": [
|
||||
"LPAC Lossless Encoder"
|
||||
],
|
||||
"81720": [
|
||||
"ユーザー定義のエンコーダ",
|
||||
"ユーザー定義 エンコーダー"
|
||||
],
|
||||
"4270": [
|
||||
"低"
|
||||
],
|
||||
"4271": [
|
||||
"中"
|
||||
],
|
||||
"4272": [
|
||||
"高"
|
||||
],
|
||||
"1": [
|
||||
"日本語"
|
||||
],
|
||||
"2": [
|
||||
"Japanese"
|
||||
],
|
||||
"5": [
|
||||
"エラーメッセージ"
|
||||
],
|
||||
"6": [
|
||||
"警告"
|
||||
],
|
||||
"7": [
|
||||
"成功"
|
||||
],
|
||||
"10": [
|
||||
"OK"
|
||||
],
|
||||
"11": [
|
||||
"キャンセル"
|
||||
],
|
||||
"12": [
|
||||
"適用"
|
||||
],
|
||||
"15": [
|
||||
"Yes",
|
||||
"はい"
|
||||
],
|
||||
"16": [
|
||||
"No",
|
||||
"いいえ"
|
||||
],
|
||||
"1299": [
|
||||
" 取り込みスピード",
|
||||
" 範囲取り込み品質 "
|
||||
],
|
||||
"1290": [
|
||||
"Track"
|
||||
],
|
||||
"1322": [
|
||||
"前のトラックに追加する"
|
||||
],
|
||||
"1323": [
|
||||
"Appended to next track"
|
||||
],
|
||||
"1321": [
|
||||
"検出されませんでした。前のトラックに追加します",
|
||||
"Not detected, thus appended to previous track"
|
||||
],
|
||||
"1226": [
|
||||
"トラック"
|
||||
],
|
||||
"1325": [
|
||||
"Log checksum"
|
||||
],
|
||||
"1275": [
|
||||
"AccurateRip summary"
|
||||
],
|
||||
"1276": [
|
||||
"not ripped completely"
|
||||
],
|
||||
"1277": [
|
||||
"accurately ripped (confidence "
|
||||
],
|
||||
"1278": [
|
||||
"not ripped accurately (confidence "
|
||||
],
|
||||
"1279": [
|
||||
"not present in database"
|
||||
],
|
||||
"1285": [
|
||||
", but should be"
|
||||
],
|
||||
"1286": [
|
||||
"Performing a test extraction only"
|
||||
],
|
||||
"1287": [
|
||||
"Sectors"
|
||||
],
|
||||
"1288": [
|
||||
"Exact Audio Copy"
|
||||
],
|
||||
"1289": [
|
||||
"TOC情報を抜き出します"
|
||||
],
|
||||
"1291": [
|
||||
"スタート"
|
||||
],
|
||||
"1292": [
|
||||
"長さ"
|
||||
],
|
||||
"1293": [
|
||||
"始めのセクター"
|
||||
],
|
||||
"1294": [
|
||||
"最終セクター"
|
||||
],
|
||||
"1295": [
|
||||
"セキュアモード"
|
||||
],
|
||||
"1296": [
|
||||
"C2エラー情報を検出する"
|
||||
],
|
||||
"1297": [
|
||||
"ドライブが正確なデータ転送能力を持つ"
|
||||
],
|
||||
"1298": [
|
||||
"オーディオキャッシュを使用できる"
|
||||
],
|
||||
"1305": [
|
||||
"使用インターフェース"
|
||||
],
|
||||
"1306": [
|
||||
"エンコーダ",
|
||||
"Command line compressor"
|
||||
],
|
||||
"1307": [
|
||||
"ビットレートの指定",
|
||||
"Selected bitrate"
|
||||
],
|
||||
"1308": [
|
||||
"品質",
|
||||
"Quality"
|
||||
],
|
||||
"1328": [
|
||||
"High"
|
||||
],
|
||||
"1329": [
|
||||
"Low"
|
||||
],
|
||||
"1309": [
|
||||
"ID3 タグを追加する",
|
||||
"Add ID3 tag"
|
||||
],
|
||||
"1310": [
|
||||
"サンプルフォーマット"
|
||||
],
|
||||
"1320": [
|
||||
"ギャップ情報を取得する",
|
||||
"Gap handling"
|
||||
],
|
||||
"1324": [
|
||||
"Left out"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"31": "Filename will be ignored",
|
||||
"50": "Value out of range !",
|
||||
"51": "Invalid characters !",
|
||||
"52": "Invalid filename !",
|
||||
|
||||
"1200": "Status and Error Messages",
|
||||
"2501": "Track status and errors",
|
||||
"1203": "Possible Errors",
|
||||
"1204": "Create Log",
|
||||
"1210": "Range status and errors",
|
||||
"1211": "Selected range",
|
||||
"1212": " Timing problem ",
|
||||
"1213": " Suspicious position ",
|
||||
"1214": " Missing samples",
|
||||
"1215": " Too many samples",
|
||||
"1216": " File write error",
|
||||
"1217": " 피크 레벨 ",
|
||||
"1299": " Extraction speed ",
|
||||
"1218": " Range quality ",
|
||||
"1219": " CRC ",
|
||||
"1220": " 복사 OK",
|
||||
"1221": " Copy finished",
|
||||
"1227": " 트랙 품질 ",
|
||||
"1228": " Copy aborted",
|
||||
"1269": " 파일 이름 ",
|
||||
"1270": " 이전 공간 길이 ",
|
||||
"1271": " 검사 CRC ",
|
||||
"1272": " 복사 CRC ",
|
||||
"1273": " Compressing",
|
||||
"1280": " Track not fully ripped for AccurateRip lookup",
|
||||
"1281": " Accurately ripped (confidence ",
|
||||
"1282": " Not accurately ripped (confidence ",
|
||||
"1283": " Track not present in AccurateRip database",
|
||||
"1330": " Cannot be verified as accurate",
|
||||
"1337": "cannot be verified as accurate",
|
||||
"1331": ", AccurateRip returned",
|
||||
"1332": "(confidence ",
|
||||
"1333": "No tracks could be verified as accurate",
|
||||
"1334": "You may have a different pressing from the one(s) in the database",
|
||||
"1335": "Some tracks could not be verified as accurate",
|
||||
"1336": "All tracks accurately ripped",
|
||||
"1338": "Null samples used in CRC calculations",
|
||||
"1339": "track(s) not present in the AccurateRip database",
|
||||
"1340": "track(s) accurately ripped",
|
||||
"1341": "track(s) could not be verified as accurate",
|
||||
"1342": "track(s) not fully ripped for AccurateRip lookup",
|
||||
"1343": "track(s) canceled",
|
||||
"1344": "None of the tracks are present in the AccurateRip database",
|
||||
"1284": "Not all tracks ripped accurately",
|
||||
"1222": "오류 발생 없었음",
|
||||
"1223": "Review Range",
|
||||
"1224": "There were errors",
|
||||
"1225": "상태 보고서의 끝",
|
||||
"1321": "Not detected, thus appended to previous track",
|
||||
"1322": "Appended to previous track",
|
||||
"1323": "Appended to next track",
|
||||
"1325": "Log checksum",
|
||||
"1226": "Track",
|
||||
"1230": "Index",
|
||||
"1229": "Review Tracks",
|
||||
"1274": "EAC 추출 로그 파일 from ",
|
||||
"1240": "1월",
|
||||
"1241": "2월",
|
||||
"1242": "3월",
|
||||
"1243": "4월",
|
||||
"1244": "5월",
|
||||
"1245": "6월",
|
||||
"1246": "7월",
|
||||
"1247": "8월",
|
||||
"1248": "9월",
|
||||
"1249": "10월",
|
||||
"1250": "11월",
|
||||
"1251": "12월",
|
||||
"1232": "EAC extraction log file",
|
||||
"1233": "사용된 드라이브 : ",
|
||||
"1234": "읽기 방식",
|
||||
"1235": "Burst",
|
||||
"1236": "Fast",
|
||||
"1237": "Paranoid",
|
||||
"1238": "Secure with NO C2, accurate stream, NO disable cache",
|
||||
"1239": "Secure with NO C2, NO accurate stream, disable cache",
|
||||
"1252": "Secure with C2, accurate stream, NO disable cache",
|
||||
"1253": "안전 (C2 가능, 정밀한 전송 가능, 캐쉬 무효 가능)",
|
||||
"1254": "Secure with NO C2, accurate stream, disable cache",
|
||||
"1255": "Combined read/write offset correction",
|
||||
"1256": "읽기 오프셋 교정",
|
||||
"1257": "리드-인과 리드-아웃으로 오버리드",
|
||||
"1258": "사용된 출력 형식",
|
||||
"1259": "추가 명령줄 설정",
|
||||
"1260": "Internal WAV Routines",
|
||||
"1261": "44.100 Hz; 16 Bit; Stereo",
|
||||
"1262": "Use compression offset",
|
||||
"1263": "그 밖의 설정 : ",
|
||||
"1264": "손실된 오프셋 샘플을 무음으로 대치",
|
||||
"1265": "처음과 끝 부분의 무음 블락 삭제",
|
||||
"1266": "Normalize to",
|
||||
"13303": "Native Win32 interface for XP/Vista/Win 7",
|
||||
"1267": "윈도우즈 NT & 2000을 위한 표준 Win32 인터페이스",
|
||||
"1268": "Installed external ASPI interface",
|
||||
"1275": "AccurateRip summary",
|
||||
"1276": "not ripped completely",
|
||||
"1277": "accurately ripped (confidence ",
|
||||
"1278": "not ripped accurately (confidence ",
|
||||
"1279": "not present in database",
|
||||
"1285": ", but should be",
|
||||
"1286": "Performing a test extraction only",
|
||||
"1287": "Sectors",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC of the extracted CD",
|
||||
"1290": "트랙",
|
||||
"1291": "Start",
|
||||
"1292": "Length",
|
||||
"1293": "Start sector",
|
||||
"1294": "End sector",
|
||||
"1295": "Secure",
|
||||
"1296": "Make use of C2 pointers",
|
||||
"1297": "Utilize accurate stream",
|
||||
"1298": "Defeat audio cache",
|
||||
"1305": "Used interface",
|
||||
"1306": "Command line compressor",
|
||||
"1307": "Selected bitrate",
|
||||
"1308": "Quality",
|
||||
"1328": "High",
|
||||
"1329": "Low",
|
||||
"1309": "Add ID3 tag",
|
||||
"1310": "Sample format",
|
||||
"1320": "Gap handling",
|
||||
"1324": "Left out",
|
||||
|
||||
"81700": "L3Enc MP3 Encoder & Compatible",
|
||||
"81701": "Fraunhofer MP3Enc MP3 Encoder",
|
||||
"81702": "Xing X3Enc MP3 Encoder",
|
||||
"81703": "Xing ToMPG MP3 Encoder",
|
||||
"81704": "LAME MP3 Encoder",
|
||||
"81705": "GOGO MP3 Encoder",
|
||||
"81706": "MPC Encoder",
|
||||
"81707": "Ogg Vorbis Encoder",
|
||||
"81708": "Microsoft WMA9 Encoder",
|
||||
"81709": "FAAC AAC Encoder",
|
||||
"81710": "Homeboy AAC Encoder",
|
||||
"81711": "Quartex AAC Encoder",
|
||||
"81712": "PsyTEL AAC Encoder",
|
||||
"81713": "MBSoft AAC Encoder",
|
||||
"81714": "Yamaha VQF Encoder",
|
||||
"81715": "Real Audio Encoder",
|
||||
"81716": "Monkey's Audio Lossless Encoder",
|
||||
"81717": "Shorten Lossless Encoder",
|
||||
"81718": "RKAU Lossless Encoder",
|
||||
"81719": "LPAC Lossless Encoder",
|
||||
"81720": "사용자 정의 인코더",
|
||||
|
||||
"1000000": "for CD",
|
||||
|
||||
"4270": "Low",
|
||||
"4271": "Medium",
|
||||
"4272": "High",
|
||||
|
||||
"1": "한국어",
|
||||
"2": "Korean",
|
||||
|
||||
"5": "Error Message",
|
||||
"6": "Warning",
|
||||
"7": "Success",
|
||||
"8": "Information",
|
||||
"10": "OK",
|
||||
"11": "Cancel",
|
||||
"12": "Apply",
|
||||
"15": "예",
|
||||
"16": "아니오"
|
||||
}
|
||||
Executable
+120
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"bg": {
|
||||
"eac_strings": [
|
||||
"Отчет на EAC за извличане, извършено на "
|
||||
],
|
||||
"name": "Български",
|
||||
"name_english": "Bulgarian"
|
||||
},
|
||||
"cs": {
|
||||
"eac_strings": [
|
||||
"Protokol extrakce EAC z ",
|
||||
"Záznam extrakce EAC z "
|
||||
],
|
||||
"name": "Čeština",
|
||||
"name_english": "Czech"
|
||||
},
|
||||
"de": {
|
||||
"eac_strings": [
|
||||
"EAC Auslese-Logdatei vom "
|
||||
],
|
||||
"name": "Deutsch",
|
||||
"name_english": "German"
|
||||
},
|
||||
"en": {
|
||||
"eac_strings": [
|
||||
"EAC extraction logfile from "
|
||||
],
|
||||
"name": "English",
|
||||
"name_english": "English"
|
||||
},
|
||||
"es": {
|
||||
"eac_strings": [
|
||||
"Archivo Log de extracciones desde "
|
||||
],
|
||||
"name": "Español",
|
||||
"name_english": "Spanish"
|
||||
},
|
||||
"fr": {
|
||||
"eac_strings": [
|
||||
"Journal d'extraction EAC depuis "
|
||||
],
|
||||
"name": "Français",
|
||||
"name_english": "French"
|
||||
},
|
||||
"it": {
|
||||
"eac_strings": [
|
||||
"File di log EAC per l'estrazione del ",
|
||||
"Estrazione file di log EAC da "
|
||||
],
|
||||
"name": "Italiano",
|
||||
"name_english": "Italian"
|
||||
},
|
||||
"jp": {
|
||||
"eac_strings": [
|
||||
"EAC 展開 ログファイル 日付: ",
|
||||
"EAC 取り込みログファイル 日付"
|
||||
],
|
||||
"name": "日本語",
|
||||
"name_english": "Japanese"
|
||||
},
|
||||
"ko": {
|
||||
"eac_strings": [
|
||||
"EAC 추출 로그 파일 from "
|
||||
],
|
||||
"name": "한국어",
|
||||
"name_english": "Korean"
|
||||
},
|
||||
"nl": {
|
||||
"eac_strings": [
|
||||
"EAC uitlezen log bestand van "
|
||||
],
|
||||
"name": "Nederlands",
|
||||
"name_english": "Dutch"
|
||||
},
|
||||
"pl": {
|
||||
"eac_strings": [
|
||||
"Sprawozdanie ze zgrywania programem EAC z ",
|
||||
"Plik sprawozdania ze zgrywania programem EAC z "
|
||||
],
|
||||
"name": "Polski",
|
||||
"name_english": "Polish"
|
||||
},
|
||||
"ru": {
|
||||
"eac_strings": [
|
||||
"Отчёт EAC об извлечении, выполненном "
|
||||
],
|
||||
"name": "Русский",
|
||||
"name_english": "Russian"
|
||||
},
|
||||
"se": {
|
||||
"eac_strings": [
|
||||
"EAC extraheringsloggfil frĺn ",
|
||||
"EAC extraheringsloggfil från "
|
||||
],
|
||||
"name": "Svenska",
|
||||
"name_english": "Swedish"
|
||||
},
|
||||
"sk": {
|
||||
"eac_strings": [
|
||||
"EAC log súbor extrakcie z "
|
||||
],
|
||||
"name": "Slovenský",
|
||||
"name_english": "Slovak"
|
||||
},
|
||||
"sr": {
|
||||
"eac_strings": [
|
||||
"EAC-ov fajl dnevnika ekstrakcije iz "
|
||||
],
|
||||
"name": "Srpski",
|
||||
"name_english": "Serbian"
|
||||
},
|
||||
"zh": {
|
||||
"eac_strings": [
|
||||
"EAC 抓取日志文件从",
|
||||
"EAC日志文件创建时间"
|
||||
],
|
||||
"name": "中文",
|
||||
"name_english": "Chinese"
|
||||
}
|
||||
}
|
||||
Executable
+170
@@ -0,0 +1,170 @@
|
||||
{
|
||||
"31": "Bestands naam wordt genegeerd",
|
||||
"50": "Waarde buiten bereik!",
|
||||
"51": "Ongeldig teken!",
|
||||
"52": "Ongeldige bestands naam!",
|
||||
|
||||
"1200": "Status en Foutmeldingen",
|
||||
|
||||
"2501": "Track status en fouten",
|
||||
"1203": "Mogelijke Fouten",
|
||||
"1204": "Log Aanmaken",
|
||||
"1210": "Bereikstatus en fouten",
|
||||
"1211": "Geselecteerd bereik",
|
||||
"1212": " Timing probleem ",
|
||||
"1213": " Twijfelachtige positie ",
|
||||
"1214": " Ontbrekende samples",
|
||||
"1215": " Te veel samples",
|
||||
"1216": " Bestand schrijffout",
|
||||
"1217": " Piek niveau ",
|
||||
"1299": " Uitlees snelheid ",
|
||||
"1218": " Bereikskwaliteit ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Kopie OK",
|
||||
"1221": " Kopie klaar",
|
||||
"1227": " Track kwaliteit ",
|
||||
"1228": " Kopie beëindigd",
|
||||
"1269": " Bestands naam ",
|
||||
"1270": " Pauze lengte ",
|
||||
"1271": " Test CRC ",
|
||||
"1272": " Kopie CRC ",
|
||||
"1273": " Comprimering",
|
||||
"1280": " Track werd voor AccurateRip vergelijk niet volledig gelezen ",
|
||||
"1281": " Accuraat gelezen (vertrouwelijk ",
|
||||
"1282": " Niet accuraat gelezen (vertrouwelijk ",
|
||||
"1283": " Track niet aanwezig in AccurateRip database",
|
||||
"1330": " Kan niet als accuraat vergeleken worden",
|
||||
"1337": "kan niet als accuraat vergeleken worden",
|
||||
"1331": ", AccurateRip resulteerde",
|
||||
"1332": "(vertrouwelijk ",
|
||||
"1333": "Geen tracks kunnen als accuraat vergeleken worden",
|
||||
"1334": "Het kan zich om een andere persing als van deze in de database voorhanden",
|
||||
"1335": "Sommige tracks kunnen niet als accuraat vergeleken worden",
|
||||
"1336": "Alle tracks werden accuraat gelezen",
|
||||
"1338": "Nul samples gebruikt in CRC berekeningen",
|
||||
"1339": "track(s) niet aanwezig in de AccurateRip database",
|
||||
"1340": "track(s) accuraat gelezen",
|
||||
"1341": "track(s) kan niet als accuraat vergeleken worden",
|
||||
"1342": "track(s) niet volledig gelezen voor AccurateRip vergelijk",
|
||||
"1343": "track(s) afgebroken",
|
||||
"1344": "Geen enkele Track aanwezig in AccurateRip database",
|
||||
"1284": "Niet alle tracks accuraat gelezen",
|
||||
"1222": "Geen fouten opgetreden",
|
||||
"1223": "Controleer bereik",
|
||||
"1224": "Er zijn fouten",
|
||||
"1225": "Einde status report",
|
||||
"1321": "Niet herkend, daarom achter de volgende track bijgevoegd",
|
||||
"1322": "Achter de volgende track bijgevoegd",
|
||||
"1323": "Vóór de volgende track bijgevoegd",
|
||||
"1325": "Log proefsom",
|
||||
"1226": "Track",
|
||||
"1230": "Index",
|
||||
"1229": "Controleren Tracks",
|
||||
"1274": "EAC uitlezen log bestand van ",
|
||||
"1240": "Januari",
|
||||
"1241": "Februari",
|
||||
"1242": "Maart",
|
||||
"1243": "April",
|
||||
"1244": "Mei",
|
||||
"1245": "Juni",
|
||||
"1246": "Juli",
|
||||
"1247": "Augustus",
|
||||
"1248": "September",
|
||||
"1249": "Oktober",
|
||||
"1250": "November",
|
||||
"1251": "December",
|
||||
"1232": "EAC uitlezen log bestand voor CD",
|
||||
"1233": "gebruikt loopwerk : ",
|
||||
"1234": "Lees mode ",
|
||||
"1235": "Burst",
|
||||
"1236": "Snel",
|
||||
"1237": "Paranoid",
|
||||
"1238": "Veilig met NO C2, accurate stream, GEEN buffer uitgeschakeld",
|
||||
"1239": "Veilig met NO C2, GEEN accurate stream, buffer uitgeschakeld ",
|
||||
"1252": "Veilig met C2, accurate stream, GEEN buffer uitgeschakeld ",
|
||||
"1253": "Veilig met C2, accurate stream, buffer uitgeschakeld ",
|
||||
"1254": "Veilig met NO C2, accurate stream, buffer uitgeschakeld ",
|
||||
"1255": "Gecombineerde lees-/schrijf- offset correctie : ",
|
||||
"1256": "Lees-offset correctie : ",
|
||||
"1257": "Overlees in Lead-In en Lead-Out",
|
||||
"1258": "Gebruik uitgave formaat : ",
|
||||
"1259": "Bijkomende commandolijn instellingen : ",
|
||||
"1260": "Interne WAV Routines",
|
||||
"1261": "44.100 Hz; 16 Bit; Stereo",
|
||||
"1262": "Gebruik compressie-offset : ",
|
||||
"1263": "Andere Instellingen : ",
|
||||
"1264": "Vul ontbrekende offset samples met stiltes aan",
|
||||
"1265": "Wis stilte blokken aan het begin en einde",
|
||||
"1266": "Normaliseer op ",
|
||||
"1267": "Native Win32 interface voor Win NT & 2000",
|
||||
"1268": "Geïnstalleerde externe ASPI interface",
|
||||
"1275": "AccurateRip samenvatting",
|
||||
"1276": "niet volledig gelezen",
|
||||
"1277": "accuraat gelezen (vertrouwelijk ",
|
||||
"1278": "niet accuraat gelezen (vertrouwelijk ",
|
||||
"1279": "niet aanwezig in database",
|
||||
"1285": ", maar zal zijn ",
|
||||
"1286": "Enkel een testuitlezing uitgevoerd",
|
||||
|
||||
"1287": "Sectors",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC van de uitgelezen CD",
|
||||
"1290": "Track",
|
||||
"1291": "Start",
|
||||
"1292": "Lengte",
|
||||
"1293": "Start sector",
|
||||
"1294": "Eind sector",
|
||||
"1295": "Veilig",
|
||||
"1296": "Maak gebruik van C2 pointers",
|
||||
"1297": "Gebruik accurate stream",
|
||||
"1298": "Audio buffer uitgeschakeld",
|
||||
"1305": "Gebruikte interface",
|
||||
"1306": "Commandolijn comprimeerder",
|
||||
"1307": "Selecteerde bitrate",
|
||||
"1308": "Kwaliteit",
|
||||
"1328": "Hoog",
|
||||
"1329": "Laag",
|
||||
"1309": "ID3 tag toevoegen",
|
||||
"1310": "Sample formaat",
|
||||
"1320": "Pauzebehandeling",
|
||||
"1324": "Weggelaten",
|
||||
|
||||
"81700": "L3Enc MP3 Encoder & Compatibele",
|
||||
"81701": "Fraunhofer MP3Enc MP3 Encoder",
|
||||
"81702": "Xing X3Enc MP3 Encoder",
|
||||
"81703": "Xing ToMPG MP3 Encoder",
|
||||
"81704": "LAME MP3 Encoder",
|
||||
"81705": "GOGO MP3 Encoder",
|
||||
"81706": "MPC Encoder",
|
||||
"81707": "Ogg Vorbis Encoder",
|
||||
"81708": "Microsoft WMA9 Encoder",
|
||||
"81709": "FAAC AAC Encoder",
|
||||
"81710": "Homeboy AAC Encoder",
|
||||
"81711": "Quartex AAC Encoder",
|
||||
"81712": "PsyTEL AAC Encoder",
|
||||
"81713": "MBSoft AAC Encoder",
|
||||
"81714": "Yamaha VQF Encoder",
|
||||
"81715": "Real Audio Encoder",
|
||||
"81716": "Monkey's Audio Lossless Encoder",
|
||||
"81717": "Shorten Lossless Encoder",
|
||||
"81718": "RKAU Lossless Encoder",
|
||||
"81719": "LPAC Lossless Encoder",
|
||||
"81720": "Door Gebruiker Bepaalde Encoder",
|
||||
|
||||
"4270": "Laag",
|
||||
"4271": "Midden",
|
||||
"4272": "Hoog",
|
||||
|
||||
"1": "Nederlands",
|
||||
"2": "Dutch",
|
||||
"5": "Foutmelding",
|
||||
"6": "Waarschuwing",
|
||||
"7": "Afloop",
|
||||
"8": "Informatie",
|
||||
|
||||
"10": "OK",
|
||||
"11": "Annuleer",
|
||||
"12": "Toepassen",
|
||||
"15": "Ja",
|
||||
"16": "Neen"
|
||||
}
|
||||
Executable
+191
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"31": "Nazwa pliku będzie ignorowana",
|
||||
"50": "Wartość poza zakresem!",
|
||||
"51": "Nieprawidłowy znak!",
|
||||
"52": "Nieprawidłowa nazwa pliku!",
|
||||
|
||||
"1200": "Komunikaty błędów i stanu",
|
||||
|
||||
"2501": "Stan i błędy nagrań",
|
||||
"1203": "Możliwe błędy",
|
||||
"1204": "Zapisz raport",
|
||||
"1210": [
|
||||
"Stan i błędy zakresu",
|
||||
"Stan i błędy zakresu"
|
||||
],
|
||||
"1211": "Wybrany zakres",
|
||||
"1212": " Problem z taktowaniem ",
|
||||
"1213": " Podejrzane miejsce ",
|
||||
"1214": " Brakuje próbek ",
|
||||
"1215": " Za dużo próbek ",
|
||||
"1216": " Błąd zapisu pliku ",
|
||||
"1217": " Poziom wysterowania ",
|
||||
"1299": " Szybkość zgrywania",
|
||||
"1218": " Jakość zakresu",
|
||||
"1219": " Suma kontrolna ",
|
||||
"1220": [
|
||||
" Kopia bezbłędna",
|
||||
" Kopia doskonała"
|
||||
],
|
||||
"1221": " Zgrywanie zakończone",
|
||||
"1227": " Jakość nagrania ",
|
||||
"1228": " Zgrywanie anulowane",
|
||||
"1269": " Ścieżka pliku ",
|
||||
"1270": " Długość przerwy ",
|
||||
"1271": " CRC testowana ",
|
||||
"1272": " CRC kopii ",
|
||||
"1273": " Kompresowanie ",
|
||||
"1280": " Nagranie nie w pełni zgrane, nie wyszukiwane w AccurateRip",
|
||||
"1281": " Zgrane akuratnie (wiarygodność ",
|
||||
"1282": " Zgrane niedokładnie (wiarygodność ",
|
||||
"1283": " Nagrania nie ma w bazie danych AccurateRip",
|
||||
"1330": " Nie mozna uznać za akuratne",
|
||||
"1337": "nie można uznać za akuratne",
|
||||
"1331": ", według AccurateRip",
|
||||
"1332": "(wiarygodność ",
|
||||
"1333": "Nie można potwierdzić akuratności żadnego nagrania",
|
||||
"1334": "Prawdopodobnie to jest inne tłoczenie płyty od znajdującego się w bazie danych",
|
||||
"1335": "Niektóre nagrania nie można zweryfikować jako akuratne",
|
||||
"1336": "Wszystkie nagrania zostały zgrane akuratnie",
|
||||
"1338": "Do przeliczenia sumy kontrolnej CRC użyto próbek zerowych",
|
||||
"1339": "nie ma w bazie danych AccurateRip",
|
||||
"1340": "akuratnie zgrane",
|
||||
"1341": "nie można uzanć za akuratne",
|
||||
"1342": "nie w pełni zgrane, nie wyszukiwane w AccurateRip",
|
||||
"1343": "zgrywanie anulowane",
|
||||
"1344": "Żadnego nagrania nie ma w bazie danych AccurateRip",
|
||||
"1284": "Nie wszystkie nagrania zostały zgrane akuratnie",
|
||||
"1222": "Nie było błędów",
|
||||
"1223": "Przeglądnij zakres",
|
||||
"1224": "Były błędy",
|
||||
"1225": "Koniec raportu",
|
||||
"1321": "Nie wykryte, zatem dodawane do poprzedniego nagrania",
|
||||
"1322": "Dodane do poprzedniego nagrania",
|
||||
"1323": "Dodane do następnego nagrania",
|
||||
"1325": "Suma kontrola sprawozdania",
|
||||
"1226": "Nagranie",
|
||||
"1230": "Indeks",
|
||||
"1229": "Zobacz nagrania",
|
||||
"1274": [
|
||||
"Sprawozdanie ze zgrywania programem EAC z ",
|
||||
"Plik sprawozdania ze zgrywania programem EAC z "
|
||||
],
|
||||
"1240": "Stycznia",
|
||||
"1241": "Lutego",
|
||||
"1242": "Marca",
|
||||
"1243": "Kwietnia",
|
||||
"1244": "Maja",
|
||||
"1245": "Czerwca",
|
||||
"1246": "Lipca",
|
||||
"1247": "Sierpnia",
|
||||
"1248": "Września",
|
||||
"1249": "Października",
|
||||
"1250": "Listopada",
|
||||
"1251": "Grudnia",
|
||||
"1232": "Plik sprawozdania ze zgrywania",
|
||||
"1233": "Użyty napęd: ",
|
||||
"1234": "Tryb odczytu",
|
||||
"1235": "Ciągły",
|
||||
"1236": "Szybki",
|
||||
"1237": "Paranoidalny",
|
||||
"1238": [
|
||||
"Pewny BEZ C2, z dokładnym strumieniem, WŁĄCZONE buforowanie",
|
||||
"Pewny BEZ C2, z dokładnym strumieniem, BEZ wyłączenia buforowania"
|
||||
],
|
||||
"1239": "Pewny BEZ C2, BEZ dokładnego strumienia, WYŁĄCZONE buforowanie",
|
||||
"1252": "Pewny z C2, z dokładnym strumieniem, WŁĄCZONE buforowanie",
|
||||
"1253": "Pewny z C2, z dokładnym strumieniem, WYŁĄCZONE buforowanie",
|
||||
"1254": "Pewny BEZ C2, z dokładnym strumieniem, WYŁĄCZONE buforowanie",
|
||||
"1255": "Wspólna dla odczytu/zapisu korekta położenia",
|
||||
"1256": "Korekta położenia dla odczytu",
|
||||
"1257": "Nadczytywanie w obszarach LeadIn i LeadOut",
|
||||
"1258": "Użyty format wyjściowy",
|
||||
"1259": "Dodatkowe opcje linii poleceń",
|
||||
"1260": "Wewnętrzne procedury WAV",
|
||||
"1261": "44.100 Hz; 16 bitów; stereo",
|
||||
"1262": "Użyte przesunięcie położenia dla kompresji",
|
||||
"1263": [
|
||||
"Inne opcje : ",
|
||||
"Inne opcje:"
|
||||
],
|
||||
"1264": [
|
||||
"Dopełnianie ciszą brakujących próbek",
|
||||
"Dopełnienie ciszą brakujących przesuniętych próbek"
|
||||
],
|
||||
"1265": "Usuwanie początkowych i końcowych bloków ciszy",
|
||||
"1266": "Normalizacja do ",
|
||||
"1267": "Wewnętrzny interfejs Win32 dla Windows NT i 2000",
|
||||
"1268": [
|
||||
"Zainstalowane zewnętrzne sterowniki ASPI",
|
||||
"Zainstalowane zewnętrzne sterowniki ASPA"
|
||||
],
|
||||
"1275": "Podsumowanie AccurateRip",
|
||||
"1276": "nie w pełni zgrane",
|
||||
"1277": "zgrane bezbłędnie (wiarygodność ",
|
||||
"1278": "zgrane niedokładnie (wiarygodność ",
|
||||
"1279": "nie występuje w bazie danych",
|
||||
"1285": ", ale powinno być",
|
||||
"1286": "Wykonuje tylko testowe zgrywanie",
|
||||
"1287": "Sektory",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC zgranej płyty",
|
||||
"1290": "Utwór",
|
||||
"1291": "Początek",
|
||||
"1292": "Długość",
|
||||
"1293": "Sektor początkowy",
|
||||
"1294": "Sektor końcowy",
|
||||
"1295": "Bezpieczny",
|
||||
"1296": "Zwracanie błędów C2",
|
||||
"1297": "Dokładny strumień",
|
||||
"1298": "Neutralizacja bufora napędu",
|
||||
"1305": "Interfejs",
|
||||
"1306": "Kompresor linii poleceń",
|
||||
"1307": "Wybrana przepływność bitów",
|
||||
"1308": "Jakość",
|
||||
"1328": "Wysoka",
|
||||
"1329": "Niska",
|
||||
"1309": "Dodawanie znaczników ID3",
|
||||
"1310": "Format próbki",
|
||||
"1320": "Przerwy",
|
||||
"1324": "Pominięte",
|
||||
|
||||
"81700": "Koder MP3 L3Enc i zgodne",
|
||||
"81701": "Koder MP3 Fraunhofer MP3Enc",
|
||||
"81702": "Koder MP3 Xing X3Enc",
|
||||
"81703": "Koder MP3 Xing ToMPG",
|
||||
"81704": "Koder MP3 LAME",
|
||||
"81705": "Koder MP3 GOGO",
|
||||
"81706": "Koder MPC",
|
||||
"81707": "Koder Ogg Vorbis",
|
||||
"81708": "Koder Microsoft WMA9",
|
||||
"81709": "Koder FAAC AAC",
|
||||
"81710": "Koder Homeboy AAC",
|
||||
"81711": "Koder Quartex AAC",
|
||||
"81712": "Koder PsyTEL AAC",
|
||||
"81713": "Koder MBSoft AAC",
|
||||
"81714": "Koder Yamaha VQF",
|
||||
"81715": "Koder Real Audio",
|
||||
"81716": "Koder bezstratny Monkey's Audio",
|
||||
"81717": "Koder bezstratny Shorten",
|
||||
"81718": "Koder bezstratny RKAU",
|
||||
"81719": "Koder bezstratny LPAC",
|
||||
"81720": "Koder użytkownika",
|
||||
|
||||
"4270": "Niska",
|
||||
"4271": "Średnia",
|
||||
"4272": "Wysoka",
|
||||
|
||||
"1": "Polski",
|
||||
"2": "Polish",
|
||||
|
||||
"5": "Komunikat błędu",
|
||||
"6": "Ostrzeżenie",
|
||||
"7": "Sukces",
|
||||
"8": "Informacja",
|
||||
|
||||
"10": "OK",
|
||||
"11": "Anuluj",
|
||||
"12": "Zastosuj",
|
||||
"15": "Tak",
|
||||
"16": "Nie"
|
||||
}
|
||||
Executable
+173
@@ -0,0 +1,173 @@
|
||||
{
|
||||
"31": "Имя файла игнорируется",
|
||||
"50": "Значение вне диапазона.",
|
||||
"51": "Недопустимые символы.",
|
||||
"52": "Недопустимое имя файла.",
|
||||
|
||||
"1200": "Информационное окно",
|
||||
"2501": "Характеристики треков и сообщения об ошибках",
|
||||
"1203": "Возможные ошибки",
|
||||
"1204": "Создать отчёт",
|
||||
"1210": "Характеристики диапазона извлечения и сообщения об ошибках",
|
||||
"1211": "Выбранный диапазон",
|
||||
"1212": " Проблемы синхронизации ",
|
||||
"1213": " Подозрительная позиция ",
|
||||
"1214": " Пропущены сэмплы",
|
||||
"1215": " Слишком много сэмплов",
|
||||
"1216": " Ошибка записи файла",
|
||||
"1217": " Пиковый уровень ",
|
||||
"1299": " Скорость извлечения ",
|
||||
"1218": " Качество диапазона ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Копирование... OK",
|
||||
"1221": " Копирование завершено",
|
||||
"1227": " Качество трека ",
|
||||
"1228": " Копирование прервано",
|
||||
"1269": " Имя файла ",
|
||||
"1270": " Длина предзазора ",
|
||||
"1271": " CRC теста ",
|
||||
"1272": " CRC копии ",
|
||||
"1273": " Сжатие",
|
||||
"1280": " Трек не полностью извлечён для поиска в базе AccurateRip",
|
||||
"1281": " Точное извлечение (достоверность ",
|
||||
"1282": " Неточное извлечение (достоверность ",
|
||||
"1283": " Трек не обнаружен в базе AccurateRip",
|
||||
"1330": " Точность не определена",
|
||||
"1337": "точность не определена",
|
||||
"1331": ", AccurateRip вернул",
|
||||
"1332": "(достоверность ",
|
||||
"1333": "Ни один трек не прошёл проверки на точность",
|
||||
"1334": "В вашей базе может быть иной вариант штамповки диска",
|
||||
"1335": "Некоторые треки не прошли проверку на точность",
|
||||
"1336": "Все треки извлечены точно",
|
||||
"1338": "При вычислениях CRC использовались нулевые сэмплы",
|
||||
"1339": "трек(и) не содержатся в базе AccurateRip",
|
||||
"1340": "трек(и) скопированы точно",
|
||||
"1341": "трек(и) не удалось проверить на точность",
|
||||
"1342": "трек(и) не полностью извлечены для поиска в базе AccurateRip",
|
||||
"1343": "трек(и) отменены",
|
||||
"1344": "Ни одного трека нет в базе AccurateRip",
|
||||
"1284": "Не все треки извлечены точно",
|
||||
"1222": "Ошибок не произошло",
|
||||
"1223": "Просмотр диапазона",
|
||||
"1224": "Были ошибки",
|
||||
"1225": "Конец отчёта",
|
||||
"1321": "Не обнаружено, добавлено к предыдущему треку",
|
||||
"1322": "Добавлено к предыдущему треку",
|
||||
"1323": "Добавлено к следующему треку",
|
||||
"1325": "Контрольная сумма отчёта",
|
||||
"1226": "Трек",
|
||||
"1230": "Индекс",
|
||||
"1229": "Просмотр треков",
|
||||
"1274": "Отчёт EAC об извлечении, выполненном ",
|
||||
"1240": "января",
|
||||
"1241": "февраля",
|
||||
"1242": "марта",
|
||||
"1243": "апреля",
|
||||
"1244": "мая",
|
||||
"1245": "июня",
|
||||
"1246": "июля",
|
||||
"1247": "августа",
|
||||
"1248": "сентября",
|
||||
"1249": "октября",
|
||||
"1250": "ноября",
|
||||
"1251": "декабря",
|
||||
"1232": "Отчёт EAC об извлечении",
|
||||
"1233": "Дисковод: ",
|
||||
"1234": "Режим чтения",
|
||||
"1235": "Скоростной",
|
||||
"1236": "Быстрый",
|
||||
"1237": "Параноидальный",
|
||||
"1238": "Достоверный (C2: нет, Точный поток: да, Отключение кэша: нет)",
|
||||
"1239": "Достоверный (C2: нет, Точный поток: нет, Отключение кэша: да)",
|
||||
"1252": "Достоверный (C2: да, Точный поток: да, Отключение кэша: нет)",
|
||||
"1253": "Достоверный (C2: да, Точный поток: да, Отключение кэша: да)",
|
||||
"1254": "Достоверный (C2: нет, Точный поток: да, Отключение кэша: да)",
|
||||
"1255": "Комбинированное смещение чтения/записи",
|
||||
"1256": "Коррекция смещения при чтении",
|
||||
"1257": "Способность читать области Lead-in и Lead-out",
|
||||
"1258": "Выходной формат",
|
||||
"1259": "Дополнительные параметры",
|
||||
"1260": "Внутренние WAV-операции",
|
||||
"1261": "44.100 Гц; 16 бит; стерео",
|
||||
"1262": "Смещение при сжатии",
|
||||
"1263": "Другие параметры: ",
|
||||
"1264": "Заполнение пропущенных сэмплов тишиной",
|
||||
"1265": "Удаление блоков с тишиной в начале и конце",
|
||||
"1266": "Нормализовать до ",
|
||||
"1267": "Встроенный Win32-интерфейс для Win NT/2000",
|
||||
"1268": "Установленный внешний ASPI-интерфейс",
|
||||
"1275": "AccurateRip: сводка",
|
||||
"1276": ": извлечено не полностью",
|
||||
"1277": ": извлечено точно (доверие ",
|
||||
"1278": ": извлечено неточно (доверие ",
|
||||
"1279": "отсутствует в базе данных",
|
||||
"1285": ", но должно быть",
|
||||
"1286": "Только тест извлечения",
|
||||
"1287": "Секторы",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC извлечённого CD",
|
||||
"1290": "Трек",
|
||||
"1291": "Старт",
|
||||
"1292": "Длительность",
|
||||
"1293": "Начальный сектор",
|
||||
"1294": "Конечный сектор",
|
||||
"1295": "Достоверность",
|
||||
"1296": "Использование указателей C2",
|
||||
"1297": "Использование точного потока",
|
||||
"1298": "Отключение кэша аудио",
|
||||
"1305": "Интерфейс",
|
||||
"1306": "Утилита сжатия",
|
||||
"1307": "Выбранный битрейт",
|
||||
"1308": "Качество",
|
||||
"1328": "Высокое",
|
||||
"1329": "Низкое",
|
||||
"1309": [
|
||||
"Добавление ID3-тега",
|
||||
"Добавление ID3-тэга"
|
||||
],
|
||||
"1310": "Формат сэмплов",
|
||||
"1320": "Обработка зазоров",
|
||||
"1324": "Исключено",
|
||||
|
||||
"81700": "MP3: L3Enc и совместимые",
|
||||
"81701": "MP3: Fraunhofer MP3Enc",
|
||||
"81702": "MP3: Xing X3Enc",
|
||||
"81703": "MP3: Xing ToMPG",
|
||||
"81704": "MP3: LAME",
|
||||
"81705": "MP3: GOGO",
|
||||
"81706": "MPC",
|
||||
"81707": "Ogg Vorbis",
|
||||
"81708": "Microsoft WMA 9",
|
||||
"81709": "AAC: FAAC",
|
||||
"81710": "AAC: Homeboy",
|
||||
"81711": "AAC: Quartex",
|
||||
"81712": "AAC: PsyTEL",
|
||||
"81713": "AAC: MBSoft",
|
||||
"81714": "VQF: Yamaha",
|
||||
"81715": "Real Audio",
|
||||
"81716": "Monkey's Audio (без потерь)",
|
||||
"81717": "Shorten (без потерь)",
|
||||
"81718": "RKAU (без потерь)",
|
||||
"81719": "LPAC (без потерь)",
|
||||
"81720": "Пользовательский кодировщик",
|
||||
|
||||
"1000000": "для диска",
|
||||
|
||||
"4270": "Низкий",
|
||||
"4271": "Средний",
|
||||
"4272": "Высокий",
|
||||
|
||||
"1": "Русский",
|
||||
"2": "Russian",
|
||||
"5": "Ошибка",
|
||||
"6": "Внимание",
|
||||
"7": "Готово",
|
||||
|
||||
"8": "Информация",
|
||||
"10": "OK",
|
||||
"11": "Отмена",
|
||||
"12": "Применить",
|
||||
"15": "Да",
|
||||
"16": "Нет"
|
||||
}
|
||||
Executable
+609
@@ -0,0 +1,609 @@
|
||||
{
|
||||
"31": [
|
||||
"Filename will be ignored",
|
||||
"Filnamnet kommer att ignoreras"
|
||||
],
|
||||
"50": [
|
||||
"Value out of range !",
|
||||
"Värdet är utom valt område !"
|
||||
],
|
||||
"51": [
|
||||
"Invalid characters !",
|
||||
"Felaktiga tecken !"
|
||||
],
|
||||
"52": [
|
||||
"Invalid filename !",
|
||||
"Felaktigt filnamn !"
|
||||
],
|
||||
"1200": [
|
||||
"Status and Error Messages",
|
||||
"Status och Fel Meddelanden"
|
||||
],
|
||||
"2501": [
|
||||
"Track status and errors",
|
||||
"Spårstatus och fel"
|
||||
],
|
||||
"1203": [
|
||||
"Possible Errors",
|
||||
"Möjliga fel"
|
||||
],
|
||||
"1204": [
|
||||
"Create Log",
|
||||
"Skapa Logg"
|
||||
],
|
||||
"1210": [
|
||||
"Range status and errors",
|
||||
"Områdets status och fel"
|
||||
],
|
||||
"1211": [
|
||||
"Selected range",
|
||||
"Utvalt område"
|
||||
],
|
||||
"1212": [
|
||||
" Timing problem ",
|
||||
" Timing-problem "
|
||||
],
|
||||
"1213": [
|
||||
" Suspicious position ",
|
||||
" Misstänkt position "
|
||||
],
|
||||
"1214": [
|
||||
" Missing samples",
|
||||
" Saknade samplingar"
|
||||
],
|
||||
"1215": [
|
||||
" Too many samples",
|
||||
" För många samplingar"
|
||||
],
|
||||
"1216": [
|
||||
" File write error",
|
||||
" Fil-skrivfel"
|
||||
],
|
||||
"1217": [
|
||||
" Peak-nivĺ ",
|
||||
" Peak-nivå "
|
||||
],
|
||||
"1299": [
|
||||
" Extraction speed ",
|
||||
" Extraheringshastighet "
|
||||
],
|
||||
"1218": [
|
||||
" Range quality ",
|
||||
" Områdets kvalité "
|
||||
],
|
||||
"1219": [
|
||||
" CRC "
|
||||
],
|
||||
"1220": [
|
||||
" Kopia OK"
|
||||
],
|
||||
"1221": [
|
||||
" Copy finished",
|
||||
" Kopia färdig"
|
||||
],
|
||||
"1227": [
|
||||
" Spĺrkvalité ",
|
||||
" Spårkvalité "
|
||||
],
|
||||
"1228": [
|
||||
" Copy aborted",
|
||||
" Kopia avbruten"
|
||||
],
|
||||
"1269": [
|
||||
" Filnamn "
|
||||
],
|
||||
"1270": [
|
||||
" Pre-gap length ",
|
||||
" För-gap längd "
|
||||
],
|
||||
"1271": [
|
||||
" Testar CRC "
|
||||
],
|
||||
"1272": [
|
||||
" Kopiera CRC "
|
||||
],
|
||||
"1273": [
|
||||
" Compressing",
|
||||
" Komprimerar"
|
||||
],
|
||||
"1280": [
|
||||
" Track not fully ripped for AccurateRip lookup",
|
||||
" Spåret är inte fullständigt kopierat så att det kan sökas i AccurateRip"
|
||||
],
|
||||
"1281": [
|
||||
" Accurately ripped (konfidens ",
|
||||
" Korrekt kopierat (konfidens "
|
||||
],
|
||||
"1282": [
|
||||
" Kan ej verifieras som korrekt (konfidens ",
|
||||
" Ej korrekt kopierat (konfidens "
|
||||
],
|
||||
"1283": [
|
||||
" Track not present in AccurateRip database",
|
||||
" Spåret finns inte i AccurateRip's databas"
|
||||
],
|
||||
"1330": [
|
||||
" Cannot be verified as accurate",
|
||||
" Kan inte verifieras som korrekt"
|
||||
],
|
||||
"1337": [
|
||||
"cannot be verified as accurate",
|
||||
"kan inte verifieras som korrekt"
|
||||
],
|
||||
"1331": [
|
||||
", AccurateRip returnerade",
|
||||
", AccurateRip återsände"
|
||||
],
|
||||
"1332": [
|
||||
"(konfidens ",
|
||||
"(Konfidens "
|
||||
],
|
||||
"1333": [
|
||||
"Inga spĺr kunde verifieras som korrekta",
|
||||
"Inga spår kunde verifieras som korrekta"
|
||||
],
|
||||
"1334": [
|
||||
"Du kan ha en annan pressning än de(n) som finns i databasen"
|
||||
],
|
||||
"1335": [
|
||||
"Some tracks could not be verified as accurate",
|
||||
"Några spår kunde inte verifieras som korrekta"
|
||||
],
|
||||
"1336": [
|
||||
"All tracks accurately ripped",
|
||||
"Alla spår korrekt kopierade"
|
||||
],
|
||||
"1338": [
|
||||
"Nollsamplingar har använts i CRC beräkningarna",
|
||||
"Nollsamplingar används i CRC-beräkningarna"
|
||||
],
|
||||
"1339": [
|
||||
"track(s) not present in the AccurateRip database",
|
||||
"spåret(en) finns inte i AccurateRip databasen"
|
||||
],
|
||||
"1340": [
|
||||
"track(s) accurately ripped",
|
||||
"spåret(en) korrekt kopierat"
|
||||
],
|
||||
"1341": [
|
||||
"track(s) could not be verified as accurate",
|
||||
"spåret(en) kunde inte verifieras som korrekt"
|
||||
],
|
||||
"1342": [
|
||||
"track(s) not fully ripped for AccurateRip lookup",
|
||||
"spåret(en) är inte fullständigt kopierat så att det kan sökas i AccurateRip"
|
||||
],
|
||||
"1343": [
|
||||
"track(s) canceled",
|
||||
"spåret(en) avbrutet"
|
||||
],
|
||||
"1344": [
|
||||
"None of the tracks are present in the AccurateRip database",
|
||||
"Inget av spåren finns i AccurateRip's databas"
|
||||
],
|
||||
"1284": [
|
||||
"Not all tracks ripped accurately",
|
||||
"Alla spår kopierades inte korrekt"
|
||||
],
|
||||
"1222": [
|
||||
"Inga fel uppstod"
|
||||
],
|
||||
"1223": [
|
||||
"Review Range",
|
||||
"Granska Område"
|
||||
],
|
||||
"1224": [
|
||||
"There were errors",
|
||||
"Det fanns fel"
|
||||
],
|
||||
"1225": [
|
||||
"Slut pĺ status rapport",
|
||||
"Slut på status rapport"
|
||||
],
|
||||
"1321": [
|
||||
"Ej pĺvisat, alltsĺ tillagt till föregĺende spĺr",
|
||||
"Hittades inte, därigenom tillagt till föregående spår"
|
||||
],
|
||||
"1322": [
|
||||
"Appended to previous track",
|
||||
"Lägg till föregående spår"
|
||||
],
|
||||
"1323": [
|
||||
"Appended to next track",
|
||||
"Lägg till nästa spår"
|
||||
],
|
||||
"1325": [
|
||||
"Log checksum",
|
||||
"Logg-kontrollsumma"
|
||||
],
|
||||
"1226": [
|
||||
"Track",
|
||||
"Spår"
|
||||
],
|
||||
"1230": [
|
||||
"Index"
|
||||
],
|
||||
"1229": [
|
||||
"Review Tracks",
|
||||
"Granska Spår"
|
||||
],
|
||||
"1274": [
|
||||
"EAC extraheringsloggfil frĺn ",
|
||||
"EAC extraheringsloggfil från "
|
||||
],
|
||||
"1240": [
|
||||
"January",
|
||||
"januari"
|
||||
],
|
||||
"1241": [
|
||||
"February",
|
||||
"februari"
|
||||
],
|
||||
"1242": [
|
||||
"March",
|
||||
"mars"
|
||||
],
|
||||
"1243": [
|
||||
"April",
|
||||
"april"
|
||||
],
|
||||
"1244": [
|
||||
"May",
|
||||
"maj"
|
||||
],
|
||||
"1245": [
|
||||
"June",
|
||||
"juni"
|
||||
],
|
||||
"1246": [
|
||||
"July",
|
||||
"juli"
|
||||
],
|
||||
"1247": [
|
||||
"August",
|
||||
"augusti"
|
||||
],
|
||||
"1248": [
|
||||
"September",
|
||||
"september"
|
||||
],
|
||||
"1249": [
|
||||
"October",
|
||||
"oktober"
|
||||
],
|
||||
"1250": [
|
||||
"November",
|
||||
"november"
|
||||
],
|
||||
"1251": [
|
||||
"December",
|
||||
"december"
|
||||
],
|
||||
"1232": [
|
||||
"EAC extraction log file",
|
||||
"EAC extraheringsloggfil"
|
||||
],
|
||||
"1233": [
|
||||
"Använd enhet : "
|
||||
],
|
||||
"1234": [
|
||||
"Läsmetod"
|
||||
],
|
||||
"1235": [
|
||||
"Burst"
|
||||
],
|
||||
"1236": [
|
||||
"Fast",
|
||||
"Snabb"
|
||||
],
|
||||
"1237": [
|
||||
"Paranoid"
|
||||
],
|
||||
"1238": [
|
||||
"Secure with NO C2, accurate stream, NO disable cache",
|
||||
"Säker UTAN C2, accurate stream, EJ bortkopplad cache"
|
||||
],
|
||||
"1239": [
|
||||
"Secure with NO C2, NO accurate stream, disable cache",
|
||||
"Säker UTAN C2, EJ accurate stream, bortkopplad cache"
|
||||
],
|
||||
"1252": [
|
||||
"Secure with C2, accurate stream, NO disable cache",
|
||||
"Säker MED C2, accurate stream, EJ bortkopplad cache"
|
||||
],
|
||||
"1253": [
|
||||
"Secure with C2, accurate stream, disable cache",
|
||||
"Säker MED C2, accurate stream, bortkopplad cache"
|
||||
],
|
||||
"1254": [
|
||||
"Secure with NO C2, accurate stream, disable cache",
|
||||
"Säker UTAN C2, accurate stream, bortkopplad cache"
|
||||
],
|
||||
"1255": [
|
||||
"Combined read/write offset correction",
|
||||
"Kombinerad läs/skriv offset-korrigering"
|
||||
],
|
||||
"1256": [
|
||||
"Läs-offset-korrigering"
|
||||
],
|
||||
"1257": [
|
||||
"Läs in i Lead-In och Lead-Out"
|
||||
],
|
||||
"1258": [
|
||||
"Använt output format"
|
||||
],
|
||||
"1259": [
|
||||
"Ytterligare kommandoradsinställningar"
|
||||
],
|
||||
"1260": [
|
||||
"Internal WAV Routines",
|
||||
"Interna WAV Rutiner"
|
||||
],
|
||||
"1261": [
|
||||
"44.100 Hz; 16 Bit; Stereo"
|
||||
],
|
||||
"1262": [
|
||||
"Use compression offset",
|
||||
"Använd komprimerings-offset"
|
||||
],
|
||||
"1263": [
|
||||
"Other options : ",
|
||||
"Andra inställningar : "
|
||||
],
|
||||
"1264": [
|
||||
"Fyll upp saknade offset-samplingar med tystnad"
|
||||
],
|
||||
"1265": [
|
||||
"Radera inledande och eftersläpande tysta block"
|
||||
],
|
||||
"1266": [
|
||||
"Normalize to",
|
||||
"Normalisera till "
|
||||
],
|
||||
"1267": [
|
||||
"Native Win32 interface for Win NT & 2000",
|
||||
"Native Win32 gränssnitt för Win NT & 2000"
|
||||
],
|
||||
"1268": [
|
||||
"Installerat externt ASPI gränssnitt"
|
||||
],
|
||||
"1275": [
|
||||
"AccurateRip summary",
|
||||
"AccurateRip summering"
|
||||
],
|
||||
"1276": [
|
||||
"not ripped completely",
|
||||
"inte fullständigt kopierat"
|
||||
],
|
||||
"1277": [
|
||||
"accurately ripped (confidence ",
|
||||
"korrekt kopierat (konfidens "
|
||||
],
|
||||
"1278": [
|
||||
"not ripped accurately (confidence ",
|
||||
"inte korrekt kopierat (konfidens "
|
||||
],
|
||||
"1279": [
|
||||
"not present in database",
|
||||
"finns inte i databas"
|
||||
],
|
||||
"1285": [
|
||||
", but should be",
|
||||
", men borde vara"
|
||||
],
|
||||
"1286": [
|
||||
"Performing a test extraction only",
|
||||
"Utför en test-extrahering enbart"
|
||||
],
|
||||
"1287": [
|
||||
"Sectors",
|
||||
"Sektorer"
|
||||
],
|
||||
"1288": [
|
||||
"Exact Audio Copy"
|
||||
],
|
||||
"1289": [
|
||||
"TOC pĺ den extraherade CD'n",
|
||||
"TOC på den extraherade CD'n"
|
||||
],
|
||||
"1309": [
|
||||
"Lägg till ID3 taggar",
|
||||
"Lägg till ID3 tag"
|
||||
],
|
||||
"1310": [
|
||||
"Sample format",
|
||||
"Samplingsformat"
|
||||
],
|
||||
"1320": [
|
||||
"Gap hantering",
|
||||
"Gap-hantering"
|
||||
],
|
||||
"1324": [
|
||||
"Left out",
|
||||
"Utelämnat"
|
||||
],
|
||||
"81700": [
|
||||
"L3Enc MP3 Encoder & Compatible",
|
||||
"L3Enc MP3 Kodare & Kompatibla"
|
||||
],
|
||||
"81701": [
|
||||
"Fraunhofer MP3Enc MP3 Encoder",
|
||||
"Fraunhofer MP3Enc MP3 Kodare"
|
||||
],
|
||||
"81702": [
|
||||
"Xing X3Enc MP3 Encoder",
|
||||
"Xing X3Enc MP3 Kodare"
|
||||
],
|
||||
"81703": [
|
||||
"Xing ToMPG MP3 Encoder",
|
||||
"Xing ToMPG MP3 Kodare"
|
||||
],
|
||||
"81704": [
|
||||
"LAME MP3 Encoder",
|
||||
"LAME MP3 Kodare"
|
||||
],
|
||||
"81705": [
|
||||
"GOGO MP3 Encoder",
|
||||
"GOGO MP3 Kodare"
|
||||
],
|
||||
"81706": [
|
||||
"MPC Encoder",
|
||||
"MPC Kodare"
|
||||
],
|
||||
"81707": [
|
||||
"Ogg Vorbis Encoder",
|
||||
"Ogg Vorbis Kodare"
|
||||
],
|
||||
"81708": [
|
||||
"Microsoft WMA9 Encoder",
|
||||
"Microsoft WMA9 Kodare"
|
||||
],
|
||||
"81709": [
|
||||
"FAAC AAC Encoder",
|
||||
"FAAC AAC Kodare"
|
||||
],
|
||||
"81710": [
|
||||
"Homeboy AAC Encoder",
|
||||
"Homeboy AAC Kodare"
|
||||
],
|
||||
"81711": [
|
||||
"Quartex AAC Encoder",
|
||||
"Quartex AAC Kodare"
|
||||
],
|
||||
"81712": [
|
||||
"PsyTEL AAC Encoder",
|
||||
"PsyTEL AAC Kodare"
|
||||
],
|
||||
"81713": [
|
||||
"MBSoft AAC Encoder",
|
||||
"MBSoft AAC Kodare"
|
||||
],
|
||||
"81714": [
|
||||
"Yamaha VQF Encoder",
|
||||
"Yamaha VQF Kodare"
|
||||
],
|
||||
"81715": [
|
||||
"Real Audio Encoder",
|
||||
"Real Audio Kodare"
|
||||
],
|
||||
"81716": [
|
||||
"Monkey's Audio Lossless Encoder",
|
||||
"Monkey's Audio Förlustfri Kodare"
|
||||
],
|
||||
"81717": [
|
||||
"Shorten Lossless Encoder",
|
||||
"Shorten Förlustfri Kodare"
|
||||
],
|
||||
"81718": [
|
||||
"RKAU Lossless Encoder",
|
||||
"RKAU Förlustfri Kodare"
|
||||
],
|
||||
"81719": [
|
||||
"LPAC Lossless Encoder",
|
||||
"LPAC Förlustfri Kodare"
|
||||
],
|
||||
"81720": [
|
||||
"Användardefinierad kodare",
|
||||
"Användardefinierad Kodare"
|
||||
],
|
||||
"1000000": [
|
||||
"for disc"
|
||||
],
|
||||
"1290": [
|
||||
"Spĺr",
|
||||
"Spår"
|
||||
],
|
||||
"1291": [
|
||||
"Start"
|
||||
],
|
||||
"1292": [
|
||||
"Längd"
|
||||
],
|
||||
"1293": [
|
||||
"Startsektor"
|
||||
],
|
||||
"1294": [
|
||||
"Slutsektor"
|
||||
],
|
||||
"1295": [
|
||||
"Säker"
|
||||
],
|
||||
"1296": [
|
||||
"Använd C2 pekare"
|
||||
],
|
||||
"1297": [
|
||||
"Utnyttja accurate stream"
|
||||
],
|
||||
"1298": [
|
||||
"Bekämpa ljudcache ",
|
||||
"Motverka ljud-cache"
|
||||
],
|
||||
"1305": [
|
||||
"Änvänt interface",
|
||||
"Använt gränssnitt"
|
||||
],
|
||||
"1306": [
|
||||
"Kommandolinjekompressor",
|
||||
"Kommandolinjekomprimerare"
|
||||
],
|
||||
"1307": [
|
||||
"Vald bitrate",
|
||||
"Vald bit-hastighet"
|
||||
],
|
||||
"1308": [
|
||||
"Kvalite",
|
||||
"Kvalité"
|
||||
],
|
||||
"1328": [
|
||||
"Hög"
|
||||
],
|
||||
"1329": [
|
||||
"Låg"
|
||||
],
|
||||
"4270": [
|
||||
"Låg"
|
||||
],
|
||||
"4271": [
|
||||
"Medium"
|
||||
],
|
||||
"4272": [
|
||||
"Hög"
|
||||
],
|
||||
"1": [
|
||||
"Svenska"
|
||||
],
|
||||
"2": [
|
||||
"Swedish"
|
||||
],
|
||||
"5": [
|
||||
"Error Message",
|
||||
"Felmeddelande"
|
||||
],
|
||||
"6": [
|
||||
"Varning"
|
||||
],
|
||||
"7": [
|
||||
"Framgång",
|
||||
"Framgångsrik"
|
||||
],
|
||||
"8": [
|
||||
"Information"
|
||||
],
|
||||
"10": [
|
||||
"OK"
|
||||
],
|
||||
"11": [
|
||||
"Annullera",
|
||||
"Avbryt"
|
||||
],
|
||||
"12": [
|
||||
"Tillämpa",
|
||||
"Verkställ"
|
||||
],
|
||||
"15": [
|
||||
"Ja"
|
||||
],
|
||||
"16": [
|
||||
"Nej"
|
||||
]
|
||||
}
|
||||
Executable
+171
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"31": "Názov súboru bude ignorovaný",
|
||||
"50": "Hodnota je mimo rozsah !",
|
||||
"51": "Nesprávne znaky !",
|
||||
"52": "Neplatný názov súboru !",
|
||||
|
||||
"1200": "Správy o stave a chybách",
|
||||
|
||||
"2501": "Stav a chyby stopy",
|
||||
"1203": "Možné chyby",
|
||||
"1204": "Vytvoriť log",
|
||||
"1210": "Stav a chyby rozsahu",
|
||||
"1211": "Vybraný rozsah",
|
||||
"1212": " Časový problém ",
|
||||
"1213": " Podozrivá pozícia ",
|
||||
"1214": " Chýbajúce vzorky",
|
||||
"1215": " Príliš veľa vzoriek",
|
||||
"1216": " Chyba zápisu súboru",
|
||||
"1217": " Špičková úroveň ",
|
||||
"1299": " Rýchlosť extrakcie ",
|
||||
"1218": " Kvalita rozsahu ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Kópia OK",
|
||||
"1221": " Kopírovanie ukončené",
|
||||
"1227": " Kvalita stopy ",
|
||||
"1228": " Kopírovanie prerušené",
|
||||
"1269": " Názov súboru",
|
||||
"1270": " Dĺžka medzery pred stopou ",
|
||||
"1271": " CRC testu",
|
||||
"1272": " CRC kópie ",
|
||||
"1273": " Kompresia",
|
||||
"1280": " Stopa nebola kompletná extrahovaná pre kontrolu cez AccurateRip",
|
||||
"1281": " Extrahovaná presne (spoľahlivosť ",
|
||||
"1282": " Extrahovaná nepresne (spoľahlivosť ",
|
||||
"1283": " Stopa nie je v AccurateRip databáze",
|
||||
"1330": " Nedá sa overiť ako presná",
|
||||
"1337": "nedá sa overiť ako presná",
|
||||
"1331": ", AccurateRip vrátil",
|
||||
"1332": "(spoľahlivosť ",
|
||||
"1333": "Žiadne stopy nemohli byť overené ako presné",
|
||||
"1334": "Môžete mať iný výlisok než tie, ktoré sú uvedené v databáze",
|
||||
"1335": "Niektoré stopy nemôžu byť overené ako presné",
|
||||
"1336": "Všetky stopy boli extrahované presne",
|
||||
"1338": "Pri výpočte CRC boli použité nulové vzorky",
|
||||
"1339": "stopy sa nenachádzajú v AccurateRip databáze",
|
||||
"1340": "stopy extrahované presne",
|
||||
"1341": "stopy nemôžu byť overené ako presné",
|
||||
"1342": "Stopy neboli extrahované kompletné pre kontrolu cez AccurateRip",
|
||||
"1343": "stopy zrušené",
|
||||
"1344": "Žiadna zo stôp sa nenachádza v AccurateRip databáze",
|
||||
"1284": "Nie všetky stopy boli extrahované presne",
|
||||
"1222": "Neobjavili sa žiadne chyby",
|
||||
"1223": "Prezretie rozsahu",
|
||||
"1224": "Vyskytli sa chyby",
|
||||
"1225": "Koniec stavovej správy",
|
||||
"1321": "Nedetekované a pridané k predchádzajúcej stope",
|
||||
"1322": "Pridané k predchádzajúcej stope",
|
||||
"1323": "Pridané k nasledujúcej stope",
|
||||
"1325": "Kontrolný súčet logu",
|
||||
"1226": "Stopa",
|
||||
"1230": "Index",
|
||||
"1229": "Prezretie stôp",
|
||||
"1274": "EAC log súbor extrakcie z ",
|
||||
"1240": "Januára",
|
||||
"1241": "Februára",
|
||||
"1242": "Marca",
|
||||
"1243": "Apríla",
|
||||
"1244": "Mája",
|
||||
"1245": "Júna",
|
||||
"1246": "Júla",
|
||||
"1247": "Augusta",
|
||||
"1248": "Septembra",
|
||||
"1249": "Októbra",
|
||||
"1250": "Novembra",
|
||||
"1251": "Decembra",
|
||||
"1232": "EAC log súbor extrakcie",
|
||||
"1233": "Použitá mechanika : ",
|
||||
"1234": "Spôsob čítania ",
|
||||
"1235": "Burst",
|
||||
"1236": "Rýchly",
|
||||
"1237": "Paranoidný",
|
||||
"1238": "Bezpečný: C2 - nie, accurate stream - áno, cache vypnutá - nie",
|
||||
"1239": "Bezpečný: C2 - nie, accurate stream - nie, cache vypnutá - áno",
|
||||
"1252": "Bezpečný: C2 - áno, accurate stream - áno, cache vypnutá - nie",
|
||||
"1253": "Bezpečný: C2 - áno, accurate stream - áno, cache vypnutá - áno",
|
||||
"1254": "Bezpečný: C2 - nie, accurate stream - áno, cache vypnutá - áno",
|
||||
"1255": "Kombinovaná offsetová korekcia pre čítanie/zápis : ",
|
||||
"1256": "Offsetová korekcia pre čítanie : ",
|
||||
"1257": "Nadčítanie Lead-In a Lead-Out",
|
||||
"1258": "Použitý výstupný formát : ",
|
||||
"1259": "Dodatočné voľby príkazového riadku : ",
|
||||
"1260": "Interné WAV operácie",
|
||||
"1261": "44.100 Hz; 16 Bit; Stereo",
|
||||
"1262": "Použitý offset komprimácie : ",
|
||||
"1263": "Iné nastavenia : ",
|
||||
"1264": "Vyplniť chýbajúce vzorky offsetu tichom",
|
||||
"1265": "Zmazať bloky s tichom na začiatku a na konci",
|
||||
"1266": "Normalizovať na ",
|
||||
"1267": "Pôvodné rozhranie Win32 pre Win NT a 2000",
|
||||
"1268": "Nainštalované externé ASPI rozhranie",
|
||||
"1275": "AccurateRip súhrn",
|
||||
"1276": "extrahovaných nekompletne",
|
||||
"1277": "extrahovaných presne (spoľahlivosťt ",
|
||||
"1278": "extrahovaných nepresne (spoľahlivosť ",
|
||||
"1279": "nie je v databáze",
|
||||
"1285": ", ale malo by byť",
|
||||
"1286": "Prebieha len testovacia extrakcia",
|
||||
"1287": "Sektory",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC extrahovaného CD",
|
||||
"1290": "Stopa",
|
||||
"1291": "Začiatok",
|
||||
"1292": "Dĺžka",
|
||||
"1293": "Počiatočný sektor",
|
||||
"1294": "Koncový sektor",
|
||||
"1295": "Bezpečný",
|
||||
"1296": "Použiť C2 smerníky",
|
||||
"1297": "Použiť accurate stream",
|
||||
"1298": "Obísť zvukovú keš pamäť",
|
||||
"1305": "Použité rozhranie",
|
||||
"1306": "Kompresor pre príkazový riadok",
|
||||
"1307": "Zvolený bitrate",
|
||||
"1308": "Kvalita",
|
||||
"1328": "Vysoká",
|
||||
"1329": "Nízka",
|
||||
"1309": "Pridať ID3 tag",
|
||||
"1310": "Formát vzorkovania",
|
||||
"1320": "Spracovnie medzier",
|
||||
"1324": "Vynechané",
|
||||
|
||||
"81700": "L3Enc MP3 kóder a kompatibilné",
|
||||
"81701": "Fraunhofer MP3Enc MP3 kóder",
|
||||
"81702": "Xing X3Enc MP3 kóder",
|
||||
"81703": "Xing ToMPG MP3 kóder",
|
||||
"81704": "LAME MP3 kóder",
|
||||
"81705": "GOGO MP3 kóder",
|
||||
"81706": "MPC kóder",
|
||||
"81707": "Ogg Vorbis kóder",
|
||||
"81708": "Microsoft WMA9 kóder",
|
||||
"81709": "FAAC AAC kóder",
|
||||
"81710": "Homeboy AAC kóder",
|
||||
"81711": "Quartex AAC kóder",
|
||||
"81712": "PsyTEL AAC kóder",
|
||||
"81713": "MBSoft AAC kóder",
|
||||
"81714": "Yamaha VQF kóder",
|
||||
"81715": "Real Audio kóder",
|
||||
"81716": "Monkey's Audio bezstratový kóder",
|
||||
"81717": "Shorten bezstratový kóder",
|
||||
"81718": "RKAU bezstratový kóder",
|
||||
"81719": "LPAC bezstratový kóder",
|
||||
"81720": "Používateľom definovaný kóder",
|
||||
|
||||
|
||||
"4270": "Nízka",
|
||||
"4271": "Stredná",
|
||||
"4272": "Vysoká",
|
||||
|
||||
"1": "Slovenský",
|
||||
"2": "Slovak",
|
||||
|
||||
"5": "Chyba",
|
||||
"6": "Varovanie",
|
||||
"7": "Úspech",
|
||||
"8": "Informácia",
|
||||
|
||||
"10": "OK",
|
||||
"11": "Zrušiť",
|
||||
"12": "Použiť",
|
||||
"15": "Áno",
|
||||
"16": "Nie"
|
||||
}
|
||||
Executable
+169
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"31": "Ime datoteke se ignoriše",
|
||||
"50": "Vrednost van opsega !",
|
||||
"51": "Nedozvoljeni karakteri !",
|
||||
"52": "Nedozvoljeno ime datoteke !",
|
||||
|
||||
"1200": "Statusne i poruke o greškama",
|
||||
|
||||
"2501": "Track status i greške",
|
||||
"1203": "Moguće greške",
|
||||
"1204": "Kreiraj dnevnik",
|
||||
"1210": "Status i greške opsega",
|
||||
"1211": "Izabrani opseg",
|
||||
"1212": " Problem u tajmingu ",
|
||||
"1213": " Sumnjiva pozicija ",
|
||||
"1214": " Nedostaju semplovi",
|
||||
"1215": " Previše semplova",
|
||||
"1216": " Greška pri snimanju fajla",
|
||||
"1217": " Vršni nivo ",
|
||||
"1299": " Brzina ekstrakcije ",
|
||||
"1218": " Kvalitet opsega ",
|
||||
"1219": " CRC ",
|
||||
"1220": " Kopija OK",
|
||||
"1221": " Kopiranje završeno",
|
||||
"1227": " Kvalitet track-a ",
|
||||
"1228": " Kopiranje prekinuto",
|
||||
"1269": " Ime fajla ",
|
||||
"1270": " Pre-gap dužina ",
|
||||
"1271": " Testiran CRC ",
|
||||
"1272": " CRC kopije ",
|
||||
"1273": " Kompresovanje",
|
||||
"1280": " Track nije u potpunosti ripovan za AccurateRip upit",
|
||||
"1281": " Tačno ripovan (pouzdanost ",
|
||||
"1282": " Nije tačno ripovan (pouzdanost ",
|
||||
"1283": " Track nije u AccurateRip bazi podataka",
|
||||
"1330": " Ne može biti potvrđena tačnost",
|
||||
"1337": "ne može biti potvrđeno kao tačno",
|
||||
"1331": ", AccurateRip je vratio",
|
||||
"1332": "(pouzdanost ",
|
||||
"1333": "Nijedan track ne može biti potvrđen kao tačan",
|
||||
"1334": "Možda imate CD otisak (otiske) drugačiji od onoga u bazi podataka",
|
||||
"1335": "Neki track-ovi ne mogu biti potvrđeni kao tačni",
|
||||
"1336": "Svi track-ovi su tačno ripovani",
|
||||
"1338": "Null semplovi su korišćeni u CRC izračunavanjima",
|
||||
"1339": "track(ovi) se ne nalazi u AccurateRip bazi podataka",
|
||||
"1340": "track(ovi) tačno ripovan",
|
||||
"1341": "track(ovi) nije mogao biti verifikovan kao tačan",
|
||||
"1342": "track(ovi) nije potpuno ripovan za AccurateRip upit",
|
||||
"1343": "track(ovi) poništen",
|
||||
"1344": "Nijedan od track-ova nije prisutan u AccurateRip bazi podataka",
|
||||
"1284": "Nisu svi track-ovi ripovani tačno",
|
||||
"1222": "Nije bilo grešaka",
|
||||
"1223": "Preispitivanje opsega",
|
||||
"1224": "Bilo je grešaka",
|
||||
"1225": "Kraj statusnog izveštaja",
|
||||
"1321": "Nije detektovano, stoga pripojeno prethodnom track-u",
|
||||
"1322": "Pripojeno prethodnom track-u",
|
||||
"1323": "Pripojeno sledećem track-u",
|
||||
"1325": "Kontrolna suma log fajla",
|
||||
"1226": "Track",
|
||||
"1230": "Index",
|
||||
"1229": "Preispitivanje track-ova",
|
||||
"1274": "EAC-ov fajl dnevnika ekstrakcije iz ",
|
||||
"1240": "januara",
|
||||
"1241": "februara",
|
||||
"1242": "marta",
|
||||
"1243": "aprila",
|
||||
"1244": "maja",
|
||||
"1245": "juna",
|
||||
"1246": "jula",
|
||||
"1247": "avgusta",
|
||||
"1248": "septembra",
|
||||
"1249": "oktobra",
|
||||
"1250": "novembra",
|
||||
"1251": "decembra",
|
||||
"1232": "EAC-ov fajl dnevnika za CD",
|
||||
"1233": "Korišćen drajv : ",
|
||||
"1234": "Mod čitanja",
|
||||
"1235": "Burst",
|
||||
"1236": "Brzi",
|
||||
"1237": "Paranoid",
|
||||
"1238": "Sigurnosni BEZ C2, accurate stream, SA uključenim kešom",
|
||||
"1239": "Sigurnosni BEZ C2, BEZ accurate stream-a, isključen keš",
|
||||
"1252": "Sigurnosni sa C2, accurate stream, SA uključenim kešom",
|
||||
"1253": "Sigurnosni sa C2, accurate stream, isključen keš",
|
||||
"1254": "Sigurnosni BEZ C2, accurate stream, isključen keš",
|
||||
"1255": "Korekcija kombinovanog offset-a za čitanje/rezanje",
|
||||
"1256": "Korekcija offset-a kod čitanja",
|
||||
"1257": "Overread u Lead-In i Lead-Out",
|
||||
"1258": "Korišćen izlazni format",
|
||||
"1259": "Dodatne opcije komandne linije",
|
||||
"1260": "Interne WAV rutine",
|
||||
"1261": "44.100 Hz; 16 Bit; Stereo",
|
||||
"1262": "Koristi offset za kompresiju",
|
||||
"1263": "Ostale opcije : ",
|
||||
"1264": "Popuni nedostajuće offset semplove tišinom",
|
||||
"1265": "Obriši Blokove tišine na početku i kraju",
|
||||
"1266": "Normalizuj na",
|
||||
"1267": "Native Win32 interfejs za Win NT & 2000",
|
||||
"1268": "Instaliran eksterni ASPI interfejs",
|
||||
"1275": "AccurateRip izveštaj",
|
||||
"1276": "nije kompletno ripovano",
|
||||
"1277": "tačno ripovanih (pouzdanost ",
|
||||
"1278": "nije tačno ripovano (pouzdanost ",
|
||||
"1279": "nije u bazi podataka",
|
||||
"1285": ", ali bi trebalo",
|
||||
"1286": "Izvršavam samo test ekstrakciju",
|
||||
"1287": "Sektora",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": "TOC ekstrahovanog CD",
|
||||
"1290": "Track",
|
||||
"1291": "Start",
|
||||
"1292": "Dužina",
|
||||
"1293": "Početni sektor",
|
||||
"1294": "Krajnji sektor",
|
||||
"1295": "Sigurno",
|
||||
"1296": "Koristi C2 pointere",
|
||||
"1297": "Koristi accurate stream",
|
||||
"1298": "Zaobiđi audio keš",
|
||||
"1305": "Korišćeni interfejs",
|
||||
"1306": "Kompresor iz komandne linije",
|
||||
"1307": "Izabrani bitski protok",
|
||||
"1308": "Kvalitet",
|
||||
"1328": "Visok",
|
||||
"1329": "Nizak",
|
||||
"1309": "Dodaj ID3 tag",
|
||||
"1310": "Format sempla",
|
||||
"1320": "Upravljanje pauzama",
|
||||
"1324": "Izostavljeno",
|
||||
|
||||
"81700": "L3Enc MP3 Encoder & kompatibilni",
|
||||
"81701": "Fraunhofer MP3Enc MP3 Encoder",
|
||||
"81702": "Xing X3Enc MP3 Encoder",
|
||||
"81703": "Xing ToMPG MP3 Encoder",
|
||||
"81704": "LAME MP3 Encoder",
|
||||
"81705": "GOGO MP3 Encoder",
|
||||
"81706": "MPC Encoder",
|
||||
"81707": "Ogg Vorbis Encoder",
|
||||
"81708": "Microsoft WMA9 Encoder",
|
||||
"81709": "FAAC AAC Encoder",
|
||||
"81710": "Homeboy AAC Encoder",
|
||||
"81711": "Quartex AAC Encoder",
|
||||
"81712": "PsyTEL AAC Encoder",
|
||||
"81713": "MBSoft AAC Encoder",
|
||||
"81714": "Yamaha VQF Encoder",
|
||||
"81715": "Real Audio Encoder",
|
||||
"81716": "Monkey's Audio Lossless Encoder",
|
||||
"81717": "Shorten Lossless Encoder",
|
||||
"81718": "RKAU Lossless Encoder",
|
||||
"81719": "LPAC Lossless Encoder",
|
||||
"81720": "Korisnički definisan enkoder",
|
||||
|
||||
"4270": "Nizak",
|
||||
"4271": "Srednji",
|
||||
"4272": "Visok",
|
||||
|
||||
"1": "Srpski",
|
||||
"2": "Serbian",
|
||||
"5": "Poruka o greški",
|
||||
"6": "Upozorenje",
|
||||
"7": "Uspeh",
|
||||
"8": "Informacije",
|
||||
|
||||
"10": "OK",
|
||||
"11": "Poništi",
|
||||
"12": "Primeni",
|
||||
"15": "Da",
|
||||
"16": "Ne"
|
||||
}
|
||||
Executable
+236
@@ -0,0 +1,236 @@
|
||||
{
|
||||
"31": "文件名将被忽略",
|
||||
"50": "超出数值范围!",
|
||||
"51": "无效的字符!",
|
||||
"52": "无效的文件名!",
|
||||
|
||||
"1200": "状态及错误信息",
|
||||
|
||||
"2501": "音轨状态及错误",
|
||||
"1203": "可能的错误",
|
||||
"1204": "创建日志",
|
||||
"1210": [
|
||||
"范围状态及错误",
|
||||
"===以下为抓取选定区域的结果报告==="
|
||||
],
|
||||
"1211": [
|
||||
"已选择范围",
|
||||
"选定区域为(空白为全盘镜像)"
|
||||
],
|
||||
"1212": [
|
||||
" 计时问题 ",
|
||||
" 计时问题"
|
||||
],
|
||||
"1213": " 可疑位置 ",
|
||||
"1214": " 缺失采样",
|
||||
"1215": " 过多采样",
|
||||
"1216": " 文件写入错误",
|
||||
"1217": [
|
||||
" 峰值电平 ",
|
||||
" 峰值电平"
|
||||
],
|
||||
"1299": [
|
||||
" 抓取速度 ",
|
||||
" 抓轨速度"
|
||||
],
|
||||
"1218": " 范围质量 ",
|
||||
"1219": " CRC ",
|
||||
"1220": " 复制成功",
|
||||
"1221": " 复制结束",
|
||||
"1227": " 音轨质量 ",
|
||||
"1228": " 复制被中止",
|
||||
"1269": [
|
||||
" 文件名 ",
|
||||
" 抓轨文件"
|
||||
],
|
||||
"1270": " 前间隙长度 ",
|
||||
"1271": " 测试 CRC ",
|
||||
"1272": [
|
||||
" 复制 CRC ",
|
||||
" 复制CRC"
|
||||
],
|
||||
"1273": " 正在压缩",
|
||||
"1280": " 音轨未被完整抓取(经 AccurateRip 核查)",
|
||||
"1281": " 精确校准地抓取 ",
|
||||
"1282": " 无精确校准抓取 ",
|
||||
"1283": " 音轨在 AccurateRip 数据库中无记录",
|
||||
"1330": " 不能准确地校验",
|
||||
"1337": "不能准确地校验",
|
||||
"1331": ", 返回 AccurateRip",
|
||||
"1332": "(确认 ",
|
||||
"1333": "没有音轨被准确核实",
|
||||
"1334": "你的版本可能与数据库的版本不同",
|
||||
"1335": "一些音轨不能准确地校验",
|
||||
"1336": "所有音轨精确校准抓取",
|
||||
"1338": [
|
||||
" 在CRC 计算中使用了空样本",
|
||||
"校验和计算中使用空白采样"
|
||||
],
|
||||
"1339": "音轨在 AccurateRip 数据库中无记录",
|
||||
"1340": "音轨精确校准抓取",
|
||||
"1341": "音轨不能准确校验",
|
||||
"1342": "音轨未被完整抓取(经 AccurateRip 核查)",
|
||||
"1343": "音轨已取消",
|
||||
"1344": "没有任何音轨在 AccurateRip 数据库中有记录",
|
||||
"1284": "并非所有的音轨都准确地校准抓取",
|
||||
"1222": "没有错误发生",
|
||||
"1223": "重新检查范围",
|
||||
"1224": "出现错误",
|
||||
"1225": [
|
||||
"状态报告结尾",
|
||||
"日志文件结束"
|
||||
],
|
||||
"1321": "没检测到,因此追加到上一曲目",
|
||||
"1322": "追加到上一曲目",
|
||||
"1323": "追加到下一曲目",
|
||||
"1325": "记录校验日志",
|
||||
"1226": "音轨",
|
||||
"1230": "索引",
|
||||
"1229": "重新检查音轨",
|
||||
"1274": [
|
||||
"EAC 抓取日志文件从",
|
||||
"EAC日志文件创建时间"
|
||||
],
|
||||
"1251": "十二月",
|
||||
"1250": "十一月",
|
||||
"1240": "一月",
|
||||
"1241": "二月",
|
||||
"1242": "三月",
|
||||
"1243": "四月",
|
||||
"1244": "五月",
|
||||
"1245": "六月",
|
||||
"1246": "七月",
|
||||
"1247": "八月",
|
||||
"1248": "九月",
|
||||
"1249": "十月",
|
||||
"1232": "EAC 抓取日志文件",
|
||||
"1233": [
|
||||
"使用驱动器 :",
|
||||
"光驱型号"
|
||||
],
|
||||
"1234": [
|
||||
"读取模式",
|
||||
"抓轨模式"
|
||||
],
|
||||
"1235": "暴发",
|
||||
"1236": "快速",
|
||||
"1237": "过激",
|
||||
"1238": "不使用 C2, 使用精确流,不禁用缓存的安全模式",
|
||||
"1239": "不使用 C2, 不使用精确流,禁用缓存的安全模式",
|
||||
"1252": "使用 C2,使用精确流,不禁用缓存的安全模式",
|
||||
"1253": "使用 C2, 使用精确流,禁用缓存的安全模式",
|
||||
"1254": "不使用 C2,使用精确流, 禁用缓存的安全模式",
|
||||
"1255": "组合读写偏移校正:",
|
||||
"1256": [
|
||||
"读取偏移校正:",
|
||||
"读取偏移校正"
|
||||
],
|
||||
"1257": [
|
||||
"读取 Lead-In 和 Lead-Out",
|
||||
"通读Lead-In和Lead-Out"
|
||||
],
|
||||
"1258": [
|
||||
"所用输出模式:",
|
||||
"输出格式"
|
||||
],
|
||||
"1259": "附加命令行参数:",
|
||||
"1260": [
|
||||
"内部 WAV 函数",
|
||||
"内部WAV例程"
|
||||
],
|
||||
"1261": "44.100 Hz; 16 Bit; 立体声",
|
||||
"1262": "使用压缩偏移:",
|
||||
"1263": "其他选项 :",
|
||||
"1264": [
|
||||
"用静音填充抓取中丢失偏移的采样",
|
||||
"用静音填充丢失的偏移采样"
|
||||
],
|
||||
"1265": [
|
||||
"去除首尾静音块",
|
||||
"删除开始与结尾的静音部分"
|
||||
],
|
||||
"1266": "标准化至 ",
|
||||
"1267": [
|
||||
"Win NT 及 2000 本地 Win32 接口",
|
||||
"Win NT & 2000 的本地Win32接口"
|
||||
],
|
||||
"1268": "已安装外部 ASPI 接口",
|
||||
"1275": "AccurateRip 摘要",
|
||||
"1276": "未完整地校准抓取",
|
||||
"1277": "精确地校准抓取 ",
|
||||
"1278": "无精确地校准抓取 ",
|
||||
"1279": "在数据库中不存在",
|
||||
"1285": ",或可能",
|
||||
"1286": "只执行抓取测试",
|
||||
"1287": "扇区",
|
||||
"1288": "Exact Audio Copy",
|
||||
"1289": [
|
||||
"已抓取 CD 的 TOC",
|
||||
"CD内容目录(TOC)"
|
||||
],
|
||||
"1290": "音轨",
|
||||
"1291": "起始",
|
||||
"1292": "长度",
|
||||
"1293": "起始扇区",
|
||||
"1294": "结束扇区",
|
||||
"1295": "可靠Secure",
|
||||
"1296": "使用 C2 指示器",
|
||||
"1297": "使用精确流",
|
||||
"1298": "清空音频缓存",
|
||||
"1305": [
|
||||
"已用接口",
|
||||
"使用的接口"
|
||||
],
|
||||
"1306": "命令行压缩器",
|
||||
"1307": "已选比特率",
|
||||
"1308": "质量",
|
||||
"1328": "高",
|
||||
"1329": "低",
|
||||
"1309": "添加 ID3 标签",
|
||||
"1310": [
|
||||
"样本格式",
|
||||
"采样格式"
|
||||
],
|
||||
"1320": "间隙处理",
|
||||
"1324": "忽略",
|
||||
|
||||
"81700": "L3Enc MP3 兼容编码器",
|
||||
"81701": "Fraunhofer MP3Enc MP3 编码器",
|
||||
"81702": "Xing X3Enc MP3 编码器",
|
||||
"81703": "Xing ToMPG MP3 编码器",
|
||||
"81704": "LAME MP3 编码器",
|
||||
"81705": "GOGO MP3 编码器",
|
||||
"81706": "MPC 编码器",
|
||||
"81707": "Ogg Vorbis 编码器",
|
||||
"81708": "Microsoft WMA9 编码器",
|
||||
"81709": "FAAC AAC 编码器",
|
||||
"81710": "Homeboy AAC 编码器",
|
||||
"81711": "Quartex AAC 编码器",
|
||||
"81712": "PsyTEL AAC 编码器",
|
||||
"81713": "MBSoft AAC 编码器",
|
||||
"81714": "Yamaha VQF 编码器",
|
||||
"81715": "Real Audio 编码器",
|
||||
"81716": "Monkey's Audio 无损编码器",
|
||||
"81717": "Shorten 无损编码器",
|
||||
"81718": "RKAU 无损编码器",
|
||||
"81719": "LPAC 无损编码器",
|
||||
"81720": "用户定义的编码器",
|
||||
|
||||
"1": "中文",
|
||||
"2": "Chinese",
|
||||
|
||||
"4270": "低",
|
||||
"4271": "中",
|
||||
"4272": "高",
|
||||
|
||||
"5": "错误信息",
|
||||
"6": "警告",
|
||||
"7": "成功",
|
||||
"8": "信息",
|
||||
|
||||
"10": "确定",
|
||||
"11": "取消",
|
||||
"12": "应用",
|
||||
"15": "是",
|
||||
"16": "否"
|
||||
}
|
||||
+68
-7
@@ -2,20 +2,81 @@
|
||||
|
||||
namespace OrpheusNET\Logchecker;
|
||||
|
||||
class Util {
|
||||
public static function commandExists(string $cmd) {
|
||||
const MAPPINGS = [
|
||||
'macroman' => 'macintosh',
|
||||
'maccentraleurope' => 'mac-centraleurope',
|
||||
'maccyrillic' => 'mac-cyrillic',
|
||||
'macis' => 'mac-is',
|
||||
'macsami' => 'mac-sami',
|
||||
'macuk' => 'mac-uk',
|
||||
];
|
||||
|
||||
class Util
|
||||
{
|
||||
public static function commandExists(string $cmd)
|
||||
{
|
||||
$where = substr(strtolower(PHP_OS), 0, 3) === 'win' ? 'where' : 'command -v';
|
||||
|
||||
exec("{$where} {$cmd} 2>/dev/null", $output, $return_var);
|
||||
return $return_var === 0;
|
||||
}
|
||||
|
||||
public static function strposArray(string $haystack, array $needles) {
|
||||
foreach ($needles as $needle) {
|
||||
if (($pos = strpos($haystack, $needle)) !== false) {
|
||||
return $pos;
|
||||
public static function decodeEncoding(string $log, string $logPath): string
|
||||
{
|
||||
try {
|
||||
$chardet = new Chardet();
|
||||
} catch (\RuntimeException $exc) {
|
||||
$chardet = null;
|
||||
}
|
||||
|
||||
// Whipper uses UTF-8 so we don't need to bother checking, especially as it's
|
||||
// possible a log may be falsely detected as a different encoding by chardet
|
||||
if (strpos($log, "Log created by: whipper") !== false) {
|
||||
return $log;
|
||||
}
|
||||
// To parse the log, we want to deal with the log in UTF-8. EAC by default should
|
||||
// always output to UTF-16 and XLD to UTF-8, but sometimes people view the log and
|
||||
// re-encode them to something else (like Windows-1251), and we need to use chardet
|
||||
// to detect this so we can then convert it to UTF-8.
|
||||
if (ord($log[0]) . ord($log[1]) == 0xFF . 0xFE) {
|
||||
$log = mb_convert_encoding(substr($log, 2), 'UTF-8', 'UTF-16LE');
|
||||
} elseif (ord($log[0]) . ord($log[1]) == 0xFE . 0xFF) {
|
||||
$log = mb_convert_encoding(substr($log, 2), 'UTF-8', 'UTF-16BE');
|
||||
} elseif (ord($log[0]) == 0xEF && ord($log[1]) == 0xBB && ord($log[2]) == 0xBF) {
|
||||
$log = substr($log, 3);
|
||||
} elseif ($chardet !== null) {
|
||||
$results = $chardet->analyze($logPath);
|
||||
if ($results['charset'] !== 'utf-8') {
|
||||
if ($results['confidence'] > 0.6) {
|
||||
if (isset(MAPPINGS[$results['charset']])) {
|
||||
$results['charset'] = MAPPINGS[$results['charset']];
|
||||
}
|
||||
// ideally we'd be able to use mb_convert_encoding as it has more widespread
|
||||
// support vs iconv, but it does not support as many encodings as iconv, such
|
||||
// as Windows-1250 (along with others) which is a common encoding for range logs
|
||||
// coming from rutracker
|
||||
// $log = mb_convert_encoding($log, 'UTF-8', $results['charset']);
|
||||
$tmp = @iconv($results['charset'], 'UTF-8', $log);
|
||||
|
||||
// depending on your iconv version, some encodings may be represented
|
||||
// with prefix of mac-* or mac (like maccentraleurope vs mac-centraleurope)
|
||||
if ($tmp === false && substr($results['charset'], 0, 3) === 'mac') {
|
||||
$tmp = @iconv('mac-' . substr($results['charset'], 3), 'UTF-8', $log);
|
||||
}
|
||||
$log = $tmp;
|
||||
if ($log === false) {
|
||||
throw new \RuntimeException('Could not properly decode log encoding');
|
||||
}
|
||||
} elseif ($results['charset'] !== 'utf-8' && $results['confidence'] > 0.3) {
|
||||
// If we've got a poor confidence on our decoding, we just use a generic
|
||||
// ISO-8859-1 as that covers a decent range of things that people would
|
||||
// inadvertently re-encode a log into. I seriously cannot express how
|
||||
// much I hate how EAC does not use always UTF-8.
|
||||
$log = iconv('ISO-8859-1', 'UTF-8', $log);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
return $log;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
-4302
File diff suppressed because it is too large.
Load diff
Executable
+1
@@ -0,0 +1 @@
|
||||
[["16x12 dvd dual",91,"10",100],["16x16 dvd dual",91,"5",100],["16x52x32x52combo",738,"8",100],["16x8 dvd dual",91,"13",100],["24x10x40 cd-rw",97,"9",100],["32x12x48 cd-rw",97,"2",100],["36x cd-rom",12,"2",100],["40x cd-rom",12,"3",100],["40x12x48 cd-rw",97,"7",100],["48x12x50 cd-rw",97,"6",100],["52x cd-rom",12,"3",100],["52x24x52 cd-rw",97,"7",100],["52x32combo",738,"5",100],["52x32x52 cd-rw",97,"15",100],["52x32xcombo",738,"1",100],["54x cd-rom",12,"4",100],["56x cd-rom",12,"12",100],["asus drw-24f1",6,"1",100],["atapi cdrom 48x",691,"4",100],["atapi cdrom 52x",691,"8",100],["atapi cdrom.40x",12,"1",100],["atapi cdrom.48x",12,"11",100],["atapi cdrom.52x",12,"1",100],["atapi dvdrom 16x",12,"15",100],["atapi dvdrom-f",704,"4",100],["atapi dvdrom",704,"1",100],["bd-c26ss-a",6,"1",100],["bd-combo-t01",6,"1",100],["bdrom-400",618,"1",100],["bpn-km52x16",6,"4",100],["cb-5216a",6,"2",100],["cd-r-rw rw7060s",685,"1",100],["cd-r-rw rw7083a",97,"2",100],["cd-r-rw rw7120a",97,"1",100],["cd-r-rw rw7200a",97,"2",100],["cd-r-rw rw8080a",685,"1",100],["cd-s520b",6,"1",100],["combo-52x16",6,"1",100],["combo-52x16c",6,"16",100],["cq5252pro",97,"4",100],["crw-5224a",6,"3",100],["crw-5232as",-582,"1",100],["crw9624",685,"1",100],["dride1648",594,"3",100],["drw-1608p2",48,"2",100],["drw-1608p2s",48,"5",100],["drw-1608p",48,"4",100],["drw-24b1st a",6,"1",100],["drw-24b1st c",6,"1",100],["dvd rw dvr-mcc",48,"30",100],["dvd rw tp2",6,"1",100],["dvd rw",6,"154",100],["dvd writer 1260v",6,"1",100],["dvd+rw rw5120",120,"1",100],["dvd+rw rw5125",120,"9",100],["dvd+rw rw5240",91,"22",100],["dvd+rw rw8160",91,"14",100],["dvd+rw rw8165",91,"4",100],["dvd-cdrw rw9120",690,"1",100],["dvd-e616a",6,"14",100],["dvd-e616p2",738,"3",100],["dvdr px-891sa",6,"10",100],["dvdrom go-d1600b",12,"1",100],["dvdrw drp160",48,"1",100],["hp dvdrw g",6,"1",100],["ihas324 c",6,"1",100],["lg electronics bd-re",667,"1",100],["lg electronics dvd+--r",48,"4",100],["lg electronics dvdrw-b",102,"1",100],["optiarc bd rw bd",48,"1",100],["optiarc dvd rw a",48,"2",100],["panasonic dvd+--r",6,"5",60],["panasonic dvd-ram",138,"1",100],["panasonicbd-cmb u",103,"37",100],["panasonicbd-mlt u",103,"9",100],["pioneer dvd-rw d",6,"11",100],["plds dvd+--rw ds",6,"1",100],["plds dvd+--rw du",6,"4",100],["plds dvd-rw ds8a",6,"5",100],["rw-201040",97,"2",100],["rw-241040",97,"5",100],["rw8240a",685,"1",100],["slimtype bd e",6,"7",100],["slimtype dvd a",6,"19",100],["teclast dhb16x2",6,"2",100],["tsstcorp bddvdw",6,"3",100],["tsstcorp cddvdw",6,"41",100],["tsstcorp dvd+--r",6,"3",100],["tsstcorp dvdwbd",6,"3",100],["vom-12e48x",12,"24",100],["16x dvd-rom",738,"4",100],["24x sata dvdrw",6,"1",100],["52xatapi cd-rom",108,"1",100],["900 40x cd-rom drive",12,"1",100],["actima cd-rw crw4012a",685,"4",100],["addonics usb3.1-sata brid",6,"1",100],["aleratec dvdrw 20a1h",6,"1",100],["anq c5enkher",116,"1",100],["aopen 12x dvd-rom-amh",691,"4",100],["aopen 12x dvd-rom-ash",564,"4",100],["aopen 12xdvd-rom drive",691,"2",100],["aopen 12xdvd-rom-amh",691,"1",100],["aopen 16xdvd-rom-amh",102,"17",100],["aopen 8x8 dvd dual aan",48,"7",100],["aopen 8x8 dvd dual app",48,"2",100],["aopen cd-rw crw1232 a",97,"4",100],["aopen cd-rw crw1232pro",97,"8",100],["aopen cd-rw crw1632",97,"2",100],["aopen cd-rw crw2040",97,"1",100],["aopen cd-rw crw2440",97,"33",100],["aopen cd-rw crw3248",97,"11",100],["aopen cd-rw crw4048",97,"17",100],["aopen cd-rw crw4850",97,"9",100],["aopen cd-rw crw4852",97,"9",100],["aopen cd-rw crw5224",97,"52",100],["aopen cd-rw crw5232",97,"34",100],["aopen com4824-aah",738,"3",100],["aopen com4824",6,"6",100],["aopen com5232-aah pro",738,"37",100],["aopen com5232-aah sl",738,"1",100],["aopen com5232-aah",738,"14",100],["aopen crs446u",1161,"1",100],["aopen crw1232",97,"6",100],["aopen crw5232-aao pro",738,"16",100],["aopen crw5232-aao sl",738,"3",100],["aopen crw5232-aao",1336,"1",100],["aopen drw4410",91,"4",100],["aopen duw1608-12x",91,"7",100],["aopen duw1608-arr",91,"83",100],["aopen duw1616-arr",91,"41",100],["aopen dvd rw isu8424e",1292,"5",100],["aopen dvd rw isu8484g",1292,"2",100],["aopen dvd-9632",691,"3",100],["aopen dvd1648-aap pro",738,"85",100],["aopen dvd1648-aap",738,"79",100],["aopen dvd1648-lky",12,"10",100],["aopen dvrw2412pro",120,"5",100],["archos minicdrw xs8432",-436,"1",100],["ark cd-dvd vd8 a",48,"1",100],["artec bkm-52x16",6,"10",100],["artec wra-oa40",97,"1",100],["artec wra-wa48",97,"10",100],["artec wrr-4048",97,"4",100],["artec wrr-4848",97,"10",100],["artec wrr-52x",97,"12",100],["artec wrr-52z",97,"27",100],["artec wsm-52x",6,"1",100],["artec wsm-yg52",12,"2",100],["asmedia asm105x",6,"34",100],["asus drw-24b1st",6,"2",100],["asus bc-06b1st",6,"7",100],["asus bc-08b1lt",6,"17",100],["asus bc-08b1st",6,"57",100],["asus bc-1205pt",667,"15",100],["asus bc-12b1lt",702,"20",100],["asus bc-12b1st a",667,"46",100],["asus bc-12b1st b",6,"185",100],["asus bc-12b1st",702,"266",100],["asus bc-12d1st",667,"28",100],["asus bc-12d2ht",6,"565",100],["asusLine truncated
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Check\Checksum;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use OrpheusNET\Logchecker\Check\Checksum;
|
||||
|
||||
class EACTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @return array<array{string, string}>
|
||||
*/
|
||||
public static function logDataProvider(): array
|
||||
{
|
||||
return [
|
||||
['01.log', Checksum::CHECKSUM_OK],
|
||||
['02.log', Checksum::CHECKSUM_OK],
|
||||
['03.log', Checksum::CHECKSUM_MISSING],
|
||||
['04.log', Checksum::CHECKSUM_MISSING],
|
||||
['05.log', Checksum::CHECKSUM_OK],
|
||||
['06.log', Checksum::CHECKSUM_MISSING],
|
||||
['07.log', Checksum::CHECKSUM_MISSING],
|
||||
['08.log', Checksum::CHECKSUM_INVALID],
|
||||
['09.log', Checksum::CHECKSUM_MISSING],
|
||||
['10.log', Checksum::CHECKSUM_MISSING],
|
||||
['11.log', Checksum::CHECKSUM_MISSING],
|
||||
['12.log', Checksum::CHECKSUM_OK],
|
||||
['13.log', Checksum::CHECKSUM_OK],
|
||||
['14.log', Checksum::CHECKSUM_MISSING],
|
||||
['15.log', Checksum::CHECKSUM_INVALID],
|
||||
['16.log', Checksum::CHECKSUM_INVALID],
|
||||
['17.log', Checksum::CHECKSUM_MISSING],
|
||||
['18.log', Checksum::CHECKSUM_OK],
|
||||
['19.log', Checksum::CHECKSUM_MISSING],
|
||||
['20.log', Checksum::CHECKSUM_MISSING],
|
||||
['21.log', Checksum::CHECKSUM_MISSING],
|
||||
['22.log', Checksum::CHECKSUM_MISSING],
|
||||
['23.log', Checksum::CHECKSUM_MISSING],
|
||||
['24.log', Checksum::CHECKSUM_MISSING],
|
||||
['25.log', Checksum::CHECKSUM_MISSING],
|
||||
['26.log', Checksum::CHECKSUM_INVALID],
|
||||
['27.log', Checksum::CHECKSUM_INVALID],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider logDataProvider
|
||||
*/
|
||||
public function testValidate(string $logFile, string $expected): void
|
||||
{
|
||||
$logPath = __DIR__ . '/../../logs/eac/checksum/' . $logFile;
|
||||
$this->assertSame($expected, EAC::validate($logPath));
|
||||
}
|
||||
|
||||
public function testValidateMissingFile(): void
|
||||
{
|
||||
$this->assertSame(Checksum::CHECKSUM_MISSING, EAC::validate('/does/not/exist.log'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Check\Checksum;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use OrpheusNET\Logchecker\Check\Checksum;
|
||||
|
||||
class XLDTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @return array<array{string, string}>
|
||||
*/
|
||||
public static function logDataProvider(): array
|
||||
{
|
||||
return [
|
||||
['01.log', Checksum::CHECKSUM_OK],
|
||||
['02.log', Checksum::CHECKSUM_OK],
|
||||
['03.log', Checksum::CHECKSUM_INVALID],
|
||||
['04.log', Checksum::CHECKSUM_MISSING],
|
||||
['05.log', Checksum::CHECKSUM_OK],
|
||||
['06.log', Checksum::CHECKSUM_OK],
|
||||
['07.log', Checksum::CHECKSUM_MISSING],
|
||||
['08.log', Checksum::CHECKSUM_OK],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider logDataProvider
|
||||
*/
|
||||
public function testValidate(string $logFile, string $expected): void
|
||||
{
|
||||
$logPath = __DIR__ . '/../../logs/xld/checksum/' . $logFile;
|
||||
$this->assertSame($expected, XLD::validate($logPath));
|
||||
}
|
||||
|
||||
public function testValidateMissingFile(): void
|
||||
{
|
||||
$this->assertSame(Checksum::CHECKSUM_MISSING, XLD::validate('/does/not/exist.log'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Check;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use OrpheusNET\Logchecker\Exception\UnknownRipperException;
|
||||
|
||||
class ChecksumTest extends TestCase
|
||||
{
|
||||
public function testValidateInvalidRipper(): void
|
||||
{
|
||||
$this->expectException(UnknownRipperException::class);
|
||||
$this->expectExceptionMessage('Unknown ripper: invalid');
|
||||
Checksum::validate(__FILE__, 'invalid');
|
||||
}
|
||||
|
||||
public function testValidateMissingFile(): void
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Log file does not exist: nonexistent.log');
|
||||
Checksum::validate('nonexistent.log', Ripper::EAC);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Check;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use OrpheusNET\Logchecker\Exception\UnknownRipperException;
|
||||
|
||||
class RipperTest extends TestCase
|
||||
{
|
||||
public static function ripperDataProvider()
|
||||
{
|
||||
return [
|
||||
[
|
||||
"Exact Audio Copy V1.3 from 2. September 2016\n\nEAC extraction logfile from 11. December 2016, 0:14",
|
||||
Ripper::EAC
|
||||
],
|
||||
[
|
||||
"EAC 展開 ログファイル 日付: 24. 12月 2005, 18:37 for CD\nTest",
|
||||
Ripper::EAC
|
||||
],
|
||||
[
|
||||
"Отчёт EAC об извлечении, выполненном 15. января 2010, 16:06 для диска:\n" .
|
||||
"Girls Against Boys / Cruise Yourself",
|
||||
Ripper::EAC
|
||||
],
|
||||
[
|
||||
"Log created by: whipper 0.7.0 (internal logger)\nLog creation date: 2018-11-23T15:19:21Z",
|
||||
Ripper::WHIPPER
|
||||
],
|
||||
[
|
||||
"X Lossless Decoder version 20161007 (149.3)\n\nXLD extraction logfile from 2017-01-04 18:59:53 -0500",
|
||||
Ripper::XLD
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider ripperDataProvider
|
||||
*/
|
||||
public function testGetRipper($testString, $ripper)
|
||||
{
|
||||
$this->assertSame($ripper, Ripper::getRipper($testString));
|
||||
}
|
||||
|
||||
public function testInvalidRipper()
|
||||
{
|
||||
$this->expectException(UnknownRipperException::class);
|
||||
$this->expectExceptionMessage('Could not determine ripper');
|
||||
Ripper::getRipper('invalid invalid invalid');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace OrpheusNET\Logchecker;
|
||||
|
||||
use FilesystemIterator;
|
||||
use OrpheusNET\Logchecker\Check\Checksum;
|
||||
use OrpheusNET\Logchecker\Check\Ripper;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class LogcheckerTest extends TestCase
|
||||
{
|
||||
public static function logDataProvider(): array
|
||||
{
|
||||
$return = [];
|
||||
foreach ([Ripper::EAC, Ripper::XLD, Ripper::WHIPPER] as $ripper) {
|
||||
$basePath = implode(DIRECTORY_SEPARATOR, [__DIR__, 'logs', strtolower($ripper)]);
|
||||
foreach (new FilesystemIterator($basePath . DIRECTORY_SEPARATOR . 'originals') as $entry) {
|
||||
$return[] = [$ripper, $entry->getPathname(), $entry->getFilename()];
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider logDataProvider
|
||||
*/
|
||||
public function testLogchecker(string $ripper, string $filePath, string $fileName): void
|
||||
{
|
||||
$basePath = implode(DIRECTORY_SEPARATOR, [__DIR__, 'logs', strtolower($ripper)]);
|
||||
|
||||
$detailsFile = implode(DIRECTORY_SEPARATOR, [$basePath, 'details', str_replace('.log', '.json', $fileName)]);
|
||||
if (!file_exists($detailsFile)) {
|
||||
$this->markTestIncomplete("Missing details file:\n- " . $detailsFile . "\n- " . $filePath);
|
||||
}
|
||||
$htmlFile = implode(DIRECTORY_SEPARATOR, [$basePath, 'html', $fileName]);
|
||||
if (!file_exists($htmlFile)) {
|
||||
$this->markTestIncomplete("Missing html file:\n- " . $htmlFile . "\n- " . $filePath);
|
||||
}
|
||||
|
||||
$logchecker = new Logchecker();
|
||||
$logchecker->newFile($filePath);
|
||||
$logchecker->parse();
|
||||
$actual = [
|
||||
'ripper' => $logchecker->getRipper(),
|
||||
'version' => $logchecker->getRipperVersion(),
|
||||
'language' => $logchecker->getLanguage(),
|
||||
'combined' => $logchecker->isCombinedLog(),
|
||||
'score' => $logchecker->getScore(),
|
||||
'checksum' => $logchecker->getChecksumState(),
|
||||
'details' => $logchecker->getDetails()
|
||||
];
|
||||
|
||||
$this->assertEquals(json_decode(file_get_contents($detailsFile), true), $actual);
|
||||
$this->assertStringEqualsFile($htmlFile, $logchecker->getLog());
|
||||
}
|
||||
|
||||
public function testGetAcceptValues(): void
|
||||
{
|
||||
$this->assertSame(".txt,.TXT,.log,.LOG", Logchecker::getAcceptValues());
|
||||
}
|
||||
|
||||
public function testGetLogcheckerVersion(): void
|
||||
{
|
||||
$composer = json_decode(
|
||||
file_get_contents(implode(DIRECTORY_SEPARATOR, [__DIR__, '..', 'composer.json'])),
|
||||
true
|
||||
);
|
||||
$this->assertSame($composer['version'], Logchecker::getLogcheckerVersion());
|
||||
}
|
||||
|
||||
public function testCheckUnknownLog(): void
|
||||
{
|
||||
$logchecker = new Logchecker();
|
||||
$logchecker->newFile(implode(DIRECTORY_SEPARATOR, [__DIR__, 'LogcheckerTest.php']));
|
||||
$logchecker->parse();
|
||||
|
||||
$this->assertSame(Ripper::UNKNOWN, $logchecker->getRipper());
|
||||
$this->assertNull($logchecker->getRipperVersion());
|
||||
$this->assertSame(0, $logchecker->getScore());
|
||||
$this->assertSame('en', $logchecker->getLanguage());
|
||||
$this->assertSame(['Unknown log file, could not determine ripper.'], $logchecker->getDetails());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker\Parser\EAC;
|
||||
|
||||
use FilesystemIterator;
|
||||
use OrpheusNET\Logchecker\Exception\UnknownLanguageException;
|
||||
use OrpheusNET\Logchecker\Util;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class TranslatorTest extends TestCase
|
||||
{
|
||||
public static function foreignLogDataProvider()
|
||||
{
|
||||
$logs = [];
|
||||
$logPath = implode(DIRECTORY_SEPARATOR, [__DIR__, '..', '..', 'logs', 'eac', 'utf8']);
|
||||
foreach (new FilesystemIterator($logPath, FilesystemIterator::SKIP_DOTS) as $dir) {
|
||||
if ($dir->isFile()) {
|
||||
continue;
|
||||
}
|
||||
foreach (new FilesystemIterator($dir->getPathname(), FilesystemIterator::SKIP_DOTS) as $logFiles) {
|
||||
if (preg_match("/[0-9]+\.log/", $logFiles->getFilename())) {
|
||||
$logs[] = [$dir->getFilename(), $logFiles->getPathname()];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $logs;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider foreignLogDataProvider
|
||||
*/
|
||||
public function testTranslateLog($language, $logPath)
|
||||
{
|
||||
$log = file_get_contents($logPath);
|
||||
$translatedLogPath = str_replace('.log', '_en.log', $logPath);
|
||||
$langDetails = Translator::getLanguage($log);
|
||||
$this->assertSame($language, $langDetails['code']);
|
||||
$this->assertNotNull($langDetails['name']);
|
||||
$this->assertNotNull($langDetails['name_english']);
|
||||
$this->assertStringEqualsFile($translatedLogPath, Translator::translate($log, $language));
|
||||
}
|
||||
|
||||
public function testInvalidLanguage()
|
||||
{
|
||||
$this->expectException(UnknownLanguageException::class);
|
||||
$this->expectExceptionMessage('Could not determine language of EAC log');
|
||||
Translator::getLanguage(
|
||||
file_get_contents(
|
||||
implode(DIRECTORY_SEPARATOR, [__DIR__, '..', '..', 'logs', 'xld', 'originals', 'xld_perfect.log'])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public static function englishLogProvider()
|
||||
{
|
||||
return array_map(
|
||||
function ($file) {
|
||||
return [$file];
|
||||
},
|
||||
array_filter(
|
||||
scandir(implode(DIRECTORY_SEPARATOR, [__DIR__, '..', '..', 'logs', 'eac', 'originals'])),
|
||||
function ($file) {
|
||||
return substr($file, 0, 2) === 'en';
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider englishLogProvider
|
||||
*/
|
||||
public function testEnglishLanguage(string $file)
|
||||
{
|
||||
$logPath = implode(DIRECTORY_SEPARATOR, [__DIR__, '..', '..', 'logs', 'eac', 'originals', $file]);
|
||||
$log = file_get_contents($logPath);
|
||||
$log = Util::decodeEncoding($log, $logPath);
|
||||
$langDetails = Translator::getLanguage($log);
|
||||
$this->assertSame('en', $langDetails['code']);
|
||||
$this->assertSame('English', $langDetails['name']);
|
||||
$this->assertSame('English', $langDetails['name_english']);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OrpheusNET\Logchecker;
|
||||
|
||||
use FilesystemIterator;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class UtilTest extends TestCase
|
||||
{
|
||||
public static function commandExistsDataProvider(): array
|
||||
{
|
||||
return [
|
||||
['cd', true],
|
||||
['totallyfakecommandthatdefinitelydoesnotexist', false]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider commandExistsDataProvider
|
||||
*/
|
||||
public function testCommandExists(string $command, bool $exists): void
|
||||
{
|
||||
$this->assertSame($exists, Util::commandExists($command));
|
||||
}
|
||||
|
||||
public static function decodeLogDataProvider(): array
|
||||
{
|
||||
$eacPath = implode(DIRECTORY_SEPARATOR, [__DIR__, 'logs', 'eac', 'originals']);
|
||||
$return = [];
|
||||
foreach (new FilesystemIterator($eacPath) as $file) {
|
||||
[$language, $logName] = explode('_', $file->getFilename());
|
||||
$expectedFile = implode(DIRECTORY_SEPARATOR, [$eacPath, '..', 'utf8', $language, $logName]);
|
||||
if (file_exists($expectedFile)) {
|
||||
$return[] = [$file->getPathname(), $expectedFile];
|
||||
}
|
||||
}
|
||||
|
||||
$xldPath = implode(DIRECTORY_SEPARATOR, [__DIR__, 'logs', 'xld', 'originals']);
|
||||
foreach (new FilesystemIterator($xldPath) as $file) {
|
||||
$expectedFile = implode(DIRECTORY_SEPARATOR, [$xldPath, '..', 'utf8', $file->getFilename()]);
|
||||
if (file_exists($expectedFile)) {
|
||||
$return[] = [$file->getPathname(), $expectedFile];
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider decodeLogDataProvider
|
||||
*/
|
||||
public function testDecodeLog(string $logPath, string $expectedFile): void
|
||||
{
|
||||
$this->assertStringEqualsFile($expectedFile, Util::decodeEncoding(file_get_contents($logPath), $logPath));
|
||||
}
|
||||
}
|
||||
File renamed without changes.
Binary file not shown.
File renamed without changes.
File renamed without changes.
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "0.99 prebeta 1",
|
||||
"language": "en",
|
||||
"combined": true,
|
||||
"score": 70,
|
||||
"checksum": "checksum_missing",
|
||||
"details": [
|
||||
"Combined Log (8)",
|
||||
"\"Defeat audio cache\" should be yes (-10 points)",
|
||||
"Could not verify null samples",
|
||||
"Gap handling should be appended to previous track (-10 points)",
|
||||
"Test and copy was not used (-10 points)",
|
||||
"Could not verify id3 tag setting",
|
||||
"Track 02 (1): Could not verify filename, too long",
|
||||
"Track 05 (1): Could not verify filename, too long",
|
||||
"Track 07 (1): Could not verify filename, too long"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "1.6",
|
||||
"language": "en",
|
||||
"combined": true,
|
||||
"score": 100,
|
||||
"checksum": "checksum_ok",
|
||||
"details": [
|
||||
"Combined Log (3)"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "0.99 prebeta 5",
|
||||
"language": "en",
|
||||
"combined": true,
|
||||
"score": 100,
|
||||
"checksum": "checksum_missing",
|
||||
"details": [
|
||||
"Combined Log (2)",
|
||||
"Track 12 (1): Could not verify filename, too long"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "0.99 prebeta 5",
|
||||
"language": "en",
|
||||
"combined": true,
|
||||
"score": 100,
|
||||
"checksum": "checksum_missing",
|
||||
"details": [
|
||||
"Combined Log (2)",
|
||||
"Track 12 (1): Could not verify filename, too long"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "1.5",
|
||||
"language": "en",
|
||||
"combined": true,
|
||||
"score": 100,
|
||||
"checksum": "checksum_invalid",
|
||||
"details": [
|
||||
"Combined Log (2)",
|
||||
"Skipping Log (2), MP3 Rip"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "1.4",
|
||||
"language": "en",
|
||||
"combined": true,
|
||||
"score": 100,
|
||||
"checksum": "checksum_ok",
|
||||
"details": [
|
||||
"Combined Log (2)",
|
||||
"Skipping Log (2), MP3 Rip"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "0.99 prebeta 4",
|
||||
"language": "cs",
|
||||
"combined": false,
|
||||
"score": 100,
|
||||
"checksum": "checksum_missing",
|
||||
"details": [
|
||||
"[Notice] Translated log from Čeština (Czech) to English."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": null,
|
||||
"language": "en",
|
||||
"combined": false,
|
||||
"score": 60,
|
||||
"checksum": "checksum_missing",
|
||||
"details": [
|
||||
"EAC version older than 0.99 (-30 points)",
|
||||
"Could not verify null samples",
|
||||
"Could not verify gap handling (-10 points)",
|
||||
"Could not verify id3 tag setting"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": null,
|
||||
"language": "en",
|
||||
"combined": false,
|
||||
"score": 60,
|
||||
"checksum": "checksum_missing",
|
||||
"details": [
|
||||
"EAC version older than 0.99 (-30 points)",
|
||||
"Could not verify null samples",
|
||||
"Could not verify gap handling (-10 points)",
|
||||
"Could not verify id3 tag setting"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "1.3",
|
||||
"language": "en",
|
||||
"combined": false,
|
||||
"score": 100,
|
||||
"checksum": "checksum_ok",
|
||||
"details": []
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "1.0 beta 3",
|
||||
"language": "en",
|
||||
"combined": false,
|
||||
"score": 89,
|
||||
"checksum": "checksum_ok",
|
||||
"details": [
|
||||
"\"Defeat audio cache\" should be yes (-10 points)",
|
||||
"ID3 tags should not be added to FLAC files - they are mainly for MP3 files. FLACs should have vorbis comments for tags instead. (-1 point)"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "1.0 beta 6",
|
||||
"language": "en",
|
||||
"combined": false,
|
||||
"score": 100,
|
||||
"checksum": "checksum_ok",
|
||||
"details": []
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "0.99 prebeta 5",
|
||||
"language": "en",
|
||||
"combined": false,
|
||||
"score": 100,
|
||||
"checksum": "checksum_missing",
|
||||
"details": []
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "1.0 beta 3",
|
||||
"language": "en",
|
||||
"combined": false,
|
||||
"score": 60,
|
||||
"checksum": "checksum_ok",
|
||||
"details": [
|
||||
"Could not verify gap handling (-10 points)",
|
||||
"Could not verify id3 tag setting",
|
||||
"Range rip detected (-30 points)"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ripper": "EAC",
|
||||
"version": "1.0 beta 3",
|
||||
"language": "en",
|
||||
"combined": false,
|
||||
"score": 100,
|
||||
"checksum": "checksum_ok",
|
||||
"details": []
|
||||
}
|
||||
Loaded 100 of 240 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user