mirror of
https://github.com/dualshock-tools/dualshock-tools.github.io.git
synced 2026-07-18 05:34:06 +03:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
346add9b3e | ||
|
|
580df44de5 | ||
|
|
7b13ccdd18 | ||
|
|
d67e5003df |
300
core.js
300
core.js
@@ -23,6 +23,7 @@ var available_langs = {
|
||||
"ru_ru": { "name": "Русский", "file": "ru_ru.json"},
|
||||
"tr_tr": { "name": "Türkçe", "file": "tr_tr.json"},
|
||||
"zh_cn": { "name": "中文", "file": "zh_cn.json"},
|
||||
"zh_tw": { "name": "中文(繁)", "file": "zh_tw.json"},
|
||||
};
|
||||
|
||||
function buf2hex(buffer) {
|
||||
@@ -780,7 +781,7 @@ async function disconnect() {
|
||||
device.close();
|
||||
device = null;
|
||||
disable_btn = false;
|
||||
|
||||
reset_circularity();
|
||||
$("#offlinebar").show();
|
||||
$("#onlinebar").hide();
|
||||
$("#mainmenu").hide();
|
||||
@@ -845,6 +846,8 @@ function gboot() {
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
lang_init();
|
||||
welcome_modal();
|
||||
$("#checkCircularity").on('change', on_circ_check_change);
|
||||
on_circ_check_change();
|
||||
});
|
||||
|
||||
if (!("hid" in navigator)) {
|
||||
@@ -873,6 +876,286 @@ function alloc_req(id, data=[]) {
|
||||
return out;
|
||||
}
|
||||
|
||||
var last_lx = 0, last_ly = 0, last_rx = 0, last_ry = 0;
|
||||
var ll_updated = false;
|
||||
|
||||
var ll_data=new Array(48);
|
||||
var rr_data=new Array(48);
|
||||
var enable_circ_test = false;
|
||||
|
||||
function reset_circularity() {
|
||||
for(i=0;i<ll_data.length;i++) ll_data[i] = 0;
|
||||
for(i=0;i<rr_data.length;i++) rr_data[i] = 0;
|
||||
enable_circ_test = false;
|
||||
ll_updated = false;
|
||||
$("#checkCircularity").prop('checked', false);
|
||||
refresh_stick_pos();
|
||||
}
|
||||
|
||||
function refresh_stick_pos() {
|
||||
var c = document.getElementById("stickCanvas");
|
||||
var ctx = c.getContext("2d");
|
||||
var sz = 60;
|
||||
var hb = 20 + sz;
|
||||
var yb = 15 + sz;
|
||||
var w = c.width;
|
||||
ctx.clearRect(0, 0, c.width, c.height);
|
||||
ctx.lineWidth = 1;
|
||||
ctx.fillStyle = '#ffffff';
|
||||
ctx.strokeStyle = '#000000';
|
||||
|
||||
// Left circle
|
||||
ctx.beginPath();
|
||||
ctx.arc(hb, yb, sz, 0, 2 * Math.PI);
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
ctx.stroke();
|
||||
|
||||
// Right circle
|
||||
ctx.beginPath();
|
||||
ctx.arc(w - hb, yb, sz, 0, 2 * Math.PI);
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
ctx.stroke();
|
||||
|
||||
function cc_to_color(cc) {
|
||||
var dd = Math.sqrt(Math.pow((1.0 - cc), 2));
|
||||
if(cc <= 1.0)
|
||||
hh = 220 - 220 * Math.min(1.0, Math.max(0, (dd - 0.05)) / 0.1);
|
||||
else
|
||||
hh = (245 + (360-245) * Math.min(1.0, Math.max(0, (dd - 0.05)) / 0.15)) % 360;
|
||||
return hh;
|
||||
}
|
||||
|
||||
if(enable_circ_test) {
|
||||
var MAX_N = ll_data.length;
|
||||
|
||||
for(i=0;i<MAX_N;i++) {
|
||||
var kd = ll_data[i];
|
||||
var kd1 = ll_data[(i+1) % ll_data.length];
|
||||
if (kd === undefined || kd1 === undefined) continue;
|
||||
var ka = i * Math.PI * 2 / MAX_N;
|
||||
var ka1 = ((i+1)%MAX_N) * 2 * Math.PI / MAX_N;
|
||||
|
||||
var kx = Math.cos(ka) * kd;
|
||||
var ky = Math.sin(ka) * kd;
|
||||
var kx1 = Math.cos(ka1) * kd1;
|
||||
var ky1 = Math.sin(ka1) * kd1;
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(hb, yb);
|
||||
ctx.lineTo(hb+kx*sz, yb+ky*sz);
|
||||
ctx.lineTo(hb+kx1*sz, yb+ky1*sz);
|
||||
ctx.lineTo(hb, yb);
|
||||
ctx.closePath();
|
||||
|
||||
var cc = (kd + kd1) / 2;
|
||||
var hh = cc_to_color(cc);
|
||||
ctx.fillStyle = 'hsla(' + parseInt(hh) + ', 100%, 50%, 0.5)';
|
||||
ctx.fill();
|
||||
}
|
||||
|
||||
for(i=0;i<MAX_N;i++) {
|
||||
var kd = rr_data[i];
|
||||
var kd1 = rr_data[(i+1) % rr_data.length];
|
||||
if (kd === undefined || kd1 === undefined) continue;
|
||||
var ka = i * Math.PI * 2 / MAX_N;
|
||||
var ka1 = ((i+1)%MAX_N) * 2 * Math.PI / MAX_N;
|
||||
|
||||
var kx = Math.cos(ka) * kd;
|
||||
var ky = Math.sin(ka) * kd;
|
||||
var kx1 = Math.cos(ka1) * kd1;
|
||||
var ky1 = Math.sin(ka1) * kd1;
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(w-hb, yb);
|
||||
ctx.lineTo(w-hb+kx*sz, yb+ky*sz);
|
||||
ctx.lineTo(w-hb+kx1*sz, yb+ky1*sz);
|
||||
ctx.lineTo(w-hb, yb);
|
||||
ctx.closePath();
|
||||
|
||||
var cc = (kd + kd1) / 2;
|
||||
var hh = cc_to_color(cc);
|
||||
ctx.fillStyle = 'hsla(' + parseInt(hh) + ', 100%, 50%, 0.5)';
|
||||
ctx.fill();
|
||||
}
|
||||
}
|
||||
|
||||
ctx.strokeStyle = '#aaaaaa';
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(hb-sz, yb);
|
||||
ctx.lineTo(hb+sz, yb);
|
||||
ctx.closePath();
|
||||
ctx.stroke();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(w-hb-sz, yb);
|
||||
ctx.lineTo(w-hb+sz, yb);
|
||||
ctx.closePath();
|
||||
ctx.stroke();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(hb, yb-sz);
|
||||
ctx.lineTo(hb, yb+sz);
|
||||
ctx.closePath();
|
||||
ctx.stroke();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(w-hb, yb-sz);
|
||||
ctx.lineTo(w-hb, yb+sz);
|
||||
ctx.closePath();
|
||||
ctx.stroke();
|
||||
|
||||
var plx = last_lx;
|
||||
var ply = last_ly;
|
||||
var prx = last_rx;
|
||||
var pry = last_ry;
|
||||
|
||||
if(enable_circ_test) {
|
||||
var pld = Math.sqrt(plx*plx + ply*ply);
|
||||
var pla = (parseInt(Math.round(Math.atan2(ply, plx) * MAX_N / 2.0 / Math.PI)) + MAX_N) % MAX_N;
|
||||
var old = ll_data[pla];
|
||||
if(old === undefined) old = 0;
|
||||
ll_data[pla] = Math.max(old, pld);
|
||||
|
||||
var prd = Math.sqrt(prx*prx + pry*pry);
|
||||
var pra = (parseInt(Math.round(Math.atan2(pry, prx) * MAX_N / 2.0 / Math.PI)) + MAX_N) % MAX_N;
|
||||
var old = rr_data[pra];
|
||||
if(old === undefined) old = 0;
|
||||
rr_data[pra] = Math.max(old, prd);
|
||||
}
|
||||
|
||||
ctx.fillStyle = '#000000';
|
||||
ctx.strokeStyle = '#000000';
|
||||
ctx.beginPath();
|
||||
ctx.arc(hb+plx*sz,yb+ply*sz,4, 0, 2*Math.PI);
|
||||
ctx.fill();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(hb, yb);
|
||||
ctx.lineTo(hb+plx*sz, yb+ply*sz);
|
||||
ctx.stroke();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.arc(w-hb+prx*sz, yb+pry*sz,4, 0, 2*Math.PI);
|
||||
ctx.fill();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(w-hb, yb);
|
||||
ctx.lineTo(w-hb+prx*sz, yb+pry*sz);
|
||||
ctx.stroke();
|
||||
|
||||
var lbl = "", lbx = "";
|
||||
$("#lx-lbl").text(float_to_str(plx));
|
||||
$("#ly-lbl").text(float_to_str(ply));
|
||||
$("#rx-lbl").text(float_to_str(prx));
|
||||
$("#ry-lbl").text(float_to_str(pry));
|
||||
|
||||
if(enable_circ_test) {
|
||||
var ofl = 0, ofr = 0, lcounter = 0, rcounter = 0;
|
||||
ofl = 0; ofr = 0;
|
||||
for (i=0;i<ll_data.length;i++)
|
||||
if(ll_data[i] > 0.2) {
|
||||
lcounter += 1;
|
||||
ofl += Math.pow(ll_data[i] - 1, 2);
|
||||
}
|
||||
for (i=0;i<rr_data.length;i++) {
|
||||
if(ll_data[i] > 0.2) {
|
||||
rcounter += 1;
|
||||
ofr += Math.pow(rr_data[i] - 1, 2);
|
||||
}
|
||||
}
|
||||
if(lcounter > 0)
|
||||
ofl = Math.sqrt(ofl / lcounter) * 100;
|
||||
if(rcounter > 0)
|
||||
ofr = Math.sqrt(ofr / rcounter) * 100;
|
||||
|
||||
el = ofl.toFixed(2) + "%";
|
||||
er = ofr.toFixed(2) + "%";
|
||||
$("#el-lbl").text(el);
|
||||
$("#er-lbl").text(er);
|
||||
}
|
||||
}
|
||||
|
||||
function circ_checked() { return $("#checkCircularity").is(':checked') }
|
||||
|
||||
function on_circ_check_change() {
|
||||
enable_circ_test = circ_checked();
|
||||
for(i=0;i<ll_data.length;i++) ll_data[i] = 0;
|
||||
for(i=0;i<rr_data.length;i++) rr_data[i] = 0;
|
||||
|
||||
if(enable_circ_test) {
|
||||
$("#circ-data").show();
|
||||
} else {
|
||||
$("#circ-data").hide();
|
||||
}
|
||||
refresh_stick_pos();
|
||||
}
|
||||
|
||||
function float_to_str(f) {
|
||||
if(f < 0.004 && f >= -0.004) return "+0.00";
|
||||
return (f<0?"":"+") + f.toFixed(2);
|
||||
}
|
||||
|
||||
var on_delay = false;
|
||||
|
||||
function timeout_ok() {
|
||||
on_delay = false;
|
||||
if(ll_updated)
|
||||
refresh_stick_pos();
|
||||
}
|
||||
|
||||
function refresh_sticks() {
|
||||
if(on_delay)
|
||||
return;
|
||||
|
||||
refresh_stick_pos();
|
||||
on_delay = true;
|
||||
setTimeout(timeout_ok, 20);
|
||||
}
|
||||
|
||||
function process_ds4_input(data) {
|
||||
var lx = data.data.getUint8(0);
|
||||
var ly = data.data.getUint8(1);
|
||||
var rx = data.data.getUint8(2);
|
||||
var ry = data.data.getUint8(3);
|
||||
|
||||
var new_lx = Math.round((lx - 127.5) / 128 * 100) / 100;
|
||||
var new_ly = Math.round((ly - 127.5) / 128 * 100) / 100;
|
||||
var new_rx = Math.round((rx - 127.5) / 128 * 100) / 100;
|
||||
var new_ry = Math.round((ry - 127.5) / 128 * 100) / 100;
|
||||
|
||||
if(last_lx != new_lx || last_ly != new_ly || last_rx != new_rx || last_ry != new_ry) {
|
||||
last_lx = new_lx;
|
||||
last_ly = new_ly;
|
||||
last_rx = new_rx;
|
||||
last_ry = new_ry;
|
||||
ll_updated = true;
|
||||
refresh_sticks();
|
||||
}
|
||||
}
|
||||
|
||||
function process_ds_input(data) {
|
||||
var lx = data.data.getUint8(0);
|
||||
var ly = data.data.getUint8(1);
|
||||
var rx = data.data.getUint8(2);
|
||||
var ry = data.data.getUint8(3);
|
||||
|
||||
var new_lx = Math.round((lx - 127.5) / 128 * 100) / 100;
|
||||
var new_ly = Math.round((ly - 127.5) / 128 * 100) / 100;
|
||||
var new_rx = Math.round((rx - 127.5) / 128 * 100) / 100;
|
||||
var new_ry = Math.round((ry - 127.5) / 128 * 100) / 100;
|
||||
|
||||
if(last_lx != new_lx || last_ly != new_ly || last_rx != new_rx || last_ry != new_ry) {
|
||||
last_lx = new_lx;
|
||||
last_ly = new_ly;
|
||||
last_rx = new_rx;
|
||||
last_ry = new_ry;
|
||||
ll_updated = true;
|
||||
refresh_sticks();
|
||||
}
|
||||
}
|
||||
|
||||
async function continue_connection(report) {
|
||||
try {
|
||||
device.oninputreport = null;
|
||||
@@ -894,18 +1177,21 @@ async function continue_connection(report) {
|
||||
connected = true;
|
||||
mode = 1;
|
||||
devname = l("Sony DualShock 4 V1");
|
||||
device.oninputreport = process_ds4_input;
|
||||
}
|
||||
} else if(device.productId == 0x09cc) {
|
||||
if(await ds4_info()) {
|
||||
connected = true;
|
||||
mode = 1;
|
||||
devname = l("Sony DualShock 4 V2");
|
||||
device.oninputreport = process_ds4_input;
|
||||
}
|
||||
} else if(device.productId == 0x0ce6) {
|
||||
if(await ds5_info()) {
|
||||
connected = true;
|
||||
mode = 2;
|
||||
devname = l("Sony DualSense");
|
||||
device.oninputreport = process_ds_input;
|
||||
}
|
||||
} else if(device.productId == 0x0df2) {
|
||||
if(await ds5_info()) {
|
||||
@@ -962,6 +1248,7 @@ async function continue_connection(report) {
|
||||
|
||||
async function connect() {
|
||||
gj = crypto.randomUUID();
|
||||
reset_circularity();
|
||||
la("begin");
|
||||
try {
|
||||
$("#btnconnect").prop("disabled", true);
|
||||
@@ -1059,9 +1346,10 @@ async function multi_calib_sticks_begin(pc) {
|
||||
|
||||
async function multi_calib_sticks_end(pc) {
|
||||
if(mode == 1)
|
||||
return ds4_calibrate_sticks_end(pc);
|
||||
await ds4_calibrate_sticks_end(pc);
|
||||
else
|
||||
return ds5_calibrate_sticks_end(pc);
|
||||
await ds5_calibrate_sticks_end(pc);
|
||||
on_circ_check_change();
|
||||
}
|
||||
|
||||
async function multi_calib_sticks_sample() {
|
||||
@@ -1092,9 +1380,10 @@ async function multi_calibrate_range(perm_ch) {
|
||||
|
||||
async function multi_calibrate_range_on_close() {
|
||||
if(mode == 1)
|
||||
ds4_calibrate_range_end(last_perm_ch);
|
||||
await ds4_calibrate_range_end(last_perm_ch);
|
||||
else
|
||||
ds5_calibrate_range_end(last_perm_ch);
|
||||
await ds5_calibrate_range_end(last_perm_ch);
|
||||
on_circ_check_change();
|
||||
}
|
||||
|
||||
|
||||
@@ -1391,4 +1680,5 @@ function lang_translate(target_file, target_lang) {
|
||||
}
|
||||
$("#curLang").html(available_langs[target_lang]["name"]);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
57
index.html
57
index.html
@@ -112,16 +112,67 @@
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<div class="col-md-6 col-sm-12" style="min-width: 330px;">
|
||||
<div class="vstack gap-2 p-2">
|
||||
<button id="btnmcs2" type="button" class="btn btn-primary ds-btn ds-i18n" onclick="calib_open()">Calibrate stick center</button>
|
||||
<div class="hstack gap-2">
|
||||
<button type="button" class="btn btn-primary ds-btn ds-i18n" onclick="multi_calibrate_range(true)">Calibrate stick range (permanent)</button>
|
||||
<button type="button" class="btn btn-primary ds-btn ds-i18n" onclick="multi_calibrate_range(false)">Calibrate stick range (temporary)</button>
|
||||
<button type="button" class="ms-auto btn btn-primary ds-btn ds-i18n" onclick="multi_calibrate_range(false)">Calibrate stick range (temporary)</button>
|
||||
</div>
|
||||
<button type="button" class="btn btn-danger ds-btn ds-i18n" onclick="multi_reset()" id="resetBtn">Reset controller</button>
|
||||
|
||||
<div class="card text-bg-light" >
|
||||
<div class="card-header ds-i18n">Joystick Info</div>
|
||||
<div class="vstack px-2">
|
||||
<center>
|
||||
<canvas id="stickCanvas" width="300" height="150"></canvas>
|
||||
</center>
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<div class="hstack">
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>LX:</span>
|
||||
<pre id="lx-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>LY:</span>
|
||||
<pre id="ly-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>RX:</span>
|
||||
<pre id="rx-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>RY:</span>
|
||||
<pre id="ry-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<center>
|
||||
<input class="form-check-input" type="checkbox" value="" id="checkCircularity">
|
||||
<label class="form-check-label ds-i18n" for="checkCircularity">Check circularity</label>
|
||||
<div class="hstack" id="circ-data">
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span class="ds-i18n">Err R:</span>
|
||||
<pre id="el-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span class="ds-i18n">Err L:</span>
|
||||
<pre id="er-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@@ -457,7 +508,7 @@
|
||||
<div class="container">
|
||||
<footer>
|
||||
<div class="d-flex flex-column flex-sm-row justify-content-between py-4 my-4 border-top" id="footbody">
|
||||
<p><span class="ds-i18n">Version</span> 1.1 (2024-06-02) - <a href="#" class="ds-i18n" onclick="show_donate_modal();">Support this project</a> <span id="authorMsg"></span></p>
|
||||
<p><span class="ds-i18n">Version</span> 1.3 (2024-06-21) - <a href="#" class="ds-i18n" onclick="show_donate_modal();">Support this project</a> <span id="authorMsg"></span></p>
|
||||
|
||||
<ul class="list-unstyled d-flex">
|
||||
<li class="ms-3"><a class="link-body-emphasis" href="mailto:ds4@the.al" target="_blank"><svg class="bi" width="24" height="24"><use xlink:href="#mail"/></svg></a></li>
|
||||
|
||||
@@ -155,14 +155,17 @@
|
||||
"Translate this website in your language": "Преведете този уебсайт на ваш език",
|
||||
", to help more people like you!": ", за да помогнете на повече хора като вас!",
|
||||
"This website uses analytics to improve the service.": "Този уебсайт използва анализи за подобряване на услугата.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
"Board Model:": "Модел на платката:",
|
||||
"This feature is experimental.": "Тази функция е експериментална.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Моля, уведомете ме, ако моделът на платката на вашия контролер не е разпознат правилно.",
|
||||
"Board model detection thanks to": "Разпознаване на модела на платката благодарение на",
|
||||
"Please connect the device using a USB cable.": "Моля, свържете устройството с USB кабел.",
|
||||
"This DualSense controller has outdated firmware.": "Този контролер DualSense има остарял фърмуер.",
|
||||
"Please update the firmware and try again.": "Моля, актуализирайте фърмуера и опитайте отново.",
|
||||
"Joystick Info": "Информация за джойстика",
|
||||
"Err R:": "Грешка Д:",
|
||||
"Err L:": "Грешка Л:",
|
||||
"Check circularity": "Проверка на кръговостта",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -155,14 +155,17 @@
|
||||
"Translate this website in your language": "Übersetzen Sie diese Website in Ihre Sprache",
|
||||
", to help more people like you!": ", um mehr Menschen wie Sie zu helfen!",
|
||||
"This website uses analytics to improve the service.": "Diese Website verwendet Analytics, um den Service zu verbessern.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
"Board Model:": "Platinentyp:",
|
||||
"This feature is experimental.": "Diese Funktion ist experimentell.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Bitte lassen Sie mich wissen, wenn das Platinentyp Ihres Controllers nicht korrekt erkannt wird.",
|
||||
"Board model detection thanks to": "Platinentyp-Erkennung dank",
|
||||
"Please connect the device using a USB cable.": "Bitte verbinden Sie das Gerät mit einem USB-Kabel.",
|
||||
"This DualSense controller has outdated firmware.": "Dieser DualSense-Controller hat eine veraltete Firmware.",
|
||||
"Please update the firmware and try again.": "Bitte aktualisieren Sie die Firmware und versuchen Sie es erneut.",
|
||||
"Joystick Info": "Joystick-Informationen",
|
||||
"Err R:": "Fehler R:",
|
||||
"Err L:": "Fehler L:",
|
||||
"Check circularity": "Kreisförmigkeit prüfen",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -155,14 +155,17 @@
|
||||
"Translate this website in your language": "Traduz esta web en tu idioma",
|
||||
", to help more people like you!": ", para que ayude mas personas como tu!",
|
||||
"This website uses analytics to improve the service.": "Este sitio web utiliza análisis para mejorar el servicio.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
"Board Model:": "Modelo de la placa:",
|
||||
"This feature is experimental.": "Esta función es experimental.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Por favor, avísame si el modelo de la placa de tu controlador no se detecta correctamente.",
|
||||
"Board model detection thanks to": "Detección del modelo de la placa gracias a",
|
||||
"Please connect the device using a USB cable.": "Por favor, conecta el dispositivo usando un cable USB.",
|
||||
"This DualSense controller has outdated firmware.": "Este controlador DualSense tiene un firmware desactualizado.",
|
||||
"Please update the firmware and try again.": "Por favor, actualiza el firmware y vuelve a intentarlo.",
|
||||
"Joystick Info": "Información del joystick",
|
||||
"Err R:": "Error D:",
|
||||
"Err L:": "Error I:",
|
||||
"Check circularity": "Comprobar circularidad",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -114,55 +114,55 @@
|
||||
"Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "Avant de procéder à un calibrage permanent, essayez de manière temporaire afin de vous assurer que tout fonctionne bien.",
|
||||
"Understood": "Compris",
|
||||
"Version": "Version",
|
||||
|
||||
"Frequently Asked Questions": "",
|
||||
"Close": "",
|
||||
"Welcome to the F.A.Q. section! Below, you'll find answers to some of the most commonly asked questions about this website. If you have any other inquiries or need further assistance, feel free to reach out to me directly. Your feedback and questions are always welcome!": "",
|
||||
"How does it work?": "",
|
||||
"Behind the scenes, this website is the culmination of one year of dedicated effort in reverse-engineering DualShock controllers for fun/hobby from a random guy on the internet.": "",
|
||||
"Through": "",
|
||||
"this research": "",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": "",
|
||||
"While the primary focus of this research wasn't initially centered on recalibration, it became apparent that a service offering this capability could greatly benefit numerous individuals. And thus, here we are.": "",
|
||||
"Does the calibration remain effective during gameplay on PS4/PS5?": "",
|
||||
"Yes, if you tick the checkbox \"Write changes permanently in the controller\". In that case, the calibration is flashed directly in the controller firmware. This ensures that it remains in place regardless of the console it's connected to.": "",
|
||||
"Is this an officially endorsed service?": "",
|
||||
"No, this service is simply a creation by a DualShock enthusiast.": "",
|
||||
"Does this website detects if a controller is a clone?": "",
|
||||
"Yes, only DualShock4 at the moment. This happened because I accidentally purchased some clones, spent time identifying the differences and added this functionality to prevent future deception.": "",
|
||||
"Unfortunately, the clones cannot be calibrated anyway, because they only clone the behavior of a DualShock4 during a normal gameplay, not all the undocumented functionalities.": "",
|
||||
"If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "",
|
||||
"What development is in plan?": "",
|
||||
|
||||
"I maintain two separate to-do lists for this project, although the priority has yet to be established.": "",
|
||||
"The first list is about enhancing support for DualShock4 and DualSense controllers:": "",
|
||||
"Implement calibration of L2/R2 triggers.": "",
|
||||
"Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "",
|
||||
"Enhance user interface (e.g. provide additional controller information)": "",
|
||||
"Add support for recalibrating IMUs.": "",
|
||||
"Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "",
|
||||
"The second list contains new controllers I aim to support:": "",
|
||||
"DualSense Edge": "",
|
||||
"DualShock 3": "",
|
||||
"XBox Controllers": "",
|
||||
"Each of these tasks presents both immense interest and significant time investment. To provide context, supporting a new controller typically demands 6-12 months of full-time research, alongside a stroke of good fortune.": "",
|
||||
"I love this service, it helped me! How can I contribute?": "",
|
||||
"I'm glad to hear that you found this helpful! If you're interested in contributing, here are a few ways you can help me:": "",
|
||||
"Consider making a": "",
|
||||
"donation": "",
|
||||
"to support my late-night caffeine-fueled reverse-engineering efforts.": "",
|
||||
"Ship me a controller you would love to add (send me an email for organization).": "",
|
||||
"Translate this website in your language": "",
|
||||
", to help more people like you!": "",
|
||||
"Frequently Asked Questions": "Foire Aux Questions",
|
||||
"Close": "Fermer",
|
||||
"Welcome to the F.A.Q. section! Below, you'll find answers to some of the most commonly asked questions about this website. If you have any other inquiries or need further assistance, feel free to reach out to me directly. Your feedback and questions are always welcome!": "Bienvenue dans la section FAQ ! Vous trouverez ci-dessous les réponses aux questions les plus fréquemment posées sur ce site. Si vous avez d'autres questions ou besoin d'aide, n'hésitez pas à me contacter directement. Vos commentaires et questions sont toujours les bienvenus !",
|
||||
"How does it work?": "Comment ça fonctionne ?",
|
||||
"Behind the scenes, this website is the culmination of one year of dedicated effort in reverse-engineering DualShock controllers for fun/hobby from a random guy on the internet.": "En coulisses, ce site est le fruit d'une année d'efforts dédiés au rétro-engineering des manettes DualShock par un passionné anonyme sur Internet.",
|
||||
"Through": "Grâce à",
|
||||
"this research": "cette recherche",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": ", il a été découvert qu'il existe des commandes non documentées sur les manettes DualShock qui peuvent être envoyées via USB et utilisées lors du processus d'assemblage en usine. Si ces commandes sont envoyées, la manette commence la recalibration des sticks analogiques.",
|
||||
"While the primary focus of this research wasn't initially centered on recalibration, it became apparent that a service offering this capability could greatly benefit numerous individuals. And thus, here we are.": "Bien que le but principal de cette recherche n'était pas initialement axé sur la recalibration, il est devenu évident qu'un service offrant cette capacité pourrait grandement bénéficier à de nombreuses personnes. Et nous y voilà.",
|
||||
"Does the calibration remain effective during gameplay on PS4/PS5?": "La calibration reste-t-elle efficace pendant le jeu sur PS4/PS5 ?",
|
||||
"Yes, if you tick the checkbox \"Write changes permanently in the controller\". In that case, the calibration is flashed directly in the controller firmware. This ensures that it remains in place regardless of the console it's connected to.": "Oui, si vous cochez la case \"Écrire les modifications de manière permanente dans la manette\". Dans ce cas, la calibration est directement enregistrée dans le firmware de la manette. Cela garantit qu'elle reste en place, quelle que soit la console à laquelle elle est connectée.",
|
||||
"Is this an officially endorsed service?": "S'agit-il d'un service officiellement approuvé ?",
|
||||
"No, this service is simply a creation by a DualShock enthusiast.": "Non, ce service est simplement une création d'un passionné de DualShock.",
|
||||
"Does this website detects if a controller is a clone?": "Ce site détecte-t-il si une manette est un clone ?",
|
||||
"Yes, only DualShock4 at the moment. This happened because I accidentally purchased some clones, spent time identifying the differences and added this functionality to prevent future deception.": "Oui, uniquement la DualShock4 pour le moment. Cela est arrivé parce que j'ai accidentellement acheté des clones, j'ai passé du temps à identifier les différences et j'ai ajouté cette fonctionnalité pour éviter les futures déceptions.",
|
||||
"Unfortunately, the clones cannot be calibrated anyway, because they only clone the behavior of a DualShock4 during a normal gameplay, not all the undocumented functionalities.": "Malheureusement, les clones ne peuvent pas être calibrés de toute façon, car ils ne copient que le comportement d'une DualShock4 pendant un jeu normal, pas toutes les fonctionnalités non documentées.",
|
||||
"If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "Si vous souhaitez étendre cette fonctionnalité de détection à la DualSense, veuillez m'envoyer une fausse DualSense et vous la verrez dans quelques semaines.",
|
||||
"What development is in plan?": "Quels développements sont prévus?",
|
||||
"I maintain two separate to-do lists for this project, although the priority has yet to be established.": "Je maintiens deux listes de tâches séparées pour ce projet, bien que la priorité n'ait pas encore été établie.",
|
||||
"The first list is about enhancing support for DualShock4 and DualSense controllers:": "La première liste concerne l'amélioration du support pour les manettes DualShock4 et DualSense :",
|
||||
"Implement calibration of L2/R2 triggers.": "Mettre en œuvre la calibration des gâchettes L2/R2.",
|
||||
"Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "Améliorer la détection des clones, particulièrement bénéfique pour ceux qui cherchent à acheter des manettes d'occasion avec une assurance d'authenticité.",
|
||||
"Enhance user interface (e.g. provide additional controller information)": "Améliorer l'interface utilisateur (par exemple, fournir des informations supplémentaires sur la manette)",
|
||||
"Add support for recalibrating IMUs.": "Ajouter le support pour recalibrer les IMU.",
|
||||
"Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "De plus, explorer la possibilité de réanimer les manettes DualShock non fonctionnelles (discussion supplémentaire disponible sur Discord pour les parties intéressées).",
|
||||
"The second list contains new controllers I aim to support:": "La deuxième liste contient les nouvelles manettes que je vise à supporter:",
|
||||
"DualSense Edge": "DualSense Edge",
|
||||
"DualShock 3": "DualShock 3",
|
||||
"XBox Controllers": "Manettes XBox",
|
||||
"Each of these tasks presents both immense interest and significant time investment. To provide context, supporting a new controller typically demands 6-12 months of full-time research, alongside a stroke of good fortune.": "Chacune de ces tâches présente un immense intérêt et un investissement de temps significatif. Pour donner un contexte, supporter une nouvelle manette nécessite généralement 6 à 12 mois de recherche à plein temps, avec un peu de chance.",
|
||||
"I love this service, it helped me! How can I contribute?": "J'adore ce service, il m'a aidé! Comment puis-je contribuer?",
|
||||
"I'm glad to hear that you found this helpful! If you're interested in contributing, here are a few ways you can help me:": "Je suis ravi d'apprendre que vous avez trouvé cela utile ! Si vous êtes intéressé à contribuer, voici quelques façons dont vous pouvez m'aider:",
|
||||
"Consider making a": "Envisagez de faire un",
|
||||
"donation": "don",
|
||||
"to support my late-night caffeine-fueled reverse-engineering efforts.": "pour soutenir mes efforts de rétro-engineering alimentés par la caféine tard dans la nuit.",
|
||||
"Ship me a controller you would love to add (send me an email for organization).": "Envoyez-moi une manette que vous aimeriez ajouter (envoyez-moi un e-mail pour l'organisation).",
|
||||
"Translate this website in your language": "Traduisez ce site dans votre langue",
|
||||
", to help more people like you!": ", pour aider plus de gens comme vous !",
|
||||
"This website uses analytics to improve the service.": "Ce site utilise des analyses pour améliorer le service.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
|
||||
"Board Model:": "Modèle de carte:",
|
||||
"This feature is experimental.": "Cette fonctionnalité est expérimentale.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Veuillez me faire savoir si le modèle de la carte de votre manette n'est pas détecté correctement.",
|
||||
"Board model detection thanks to": "Détection du modèle de la carte grâce à",
|
||||
"Please connect the device using a USB cable.": "Veuillez connecter l'appareil à l'aide d'un câble USB.",
|
||||
"This DualSense controller has outdated firmware.": "Cette manette DualSense a un firmware obsolète.",
|
||||
"Please update the firmware and try again.": "Veuillez mettre à jour le firmware et réessayer.",
|
||||
"Joystick Info": "Infos Joystick",
|
||||
"Err R:": "Err D:",
|
||||
"Err L:": "Err G:",
|
||||
"Check circularity": "Vérifier la circularité",
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -155,14 +155,16 @@
|
||||
"Translate this website in your language": "Fordítsd le ezt a webhelyet a saját nyelvedre",
|
||||
", to help more people like you!": ", hogy több hozzád hasonló embernek segítsen!",
|
||||
"This website uses analytics to improve the service.": "Ez a weboldal analitikát használ a szolgáltatás javításához.",
|
||||
|
||||
"Board Model:": "Alaplap verzió",
|
||||
"This feature is experimental.": "Ez egy kisérleti funkció",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Kérlek értesítsd a fejlesztőt, ha az alaplap verziója nem egyezik meg a felimert verzióval!",
|
||||
"Board model detection thanks to": "Az alaplapfelismerési funkciőért köszönet neki:",
|
||||
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
"Please connect the device using a USB cable.": "Kérjük, csatlakoztassa az eszközt USB-kábellel.",
|
||||
"This DualSense controller has outdated firmware.": "Ennek a DualSense vezérlőnek elavult a firmware-e.",
|
||||
"Please update the firmware and try again.": "Kérjük, frissítse a firmware-t, és próbálja újra.",
|
||||
"Joystick Info": "Joystick Információ",
|
||||
"Err R:": "Hiba J:",
|
||||
"Err L:": "Hiba B:",
|
||||
"Check circularity": "Ellenőrizze a körkörösséget",
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -155,7 +155,6 @@
|
||||
"Translate this website in your language": "Traduci questo sito web nella tua lingua",
|
||||
", to help more people like you!": ", per aiutare più persone come te!",
|
||||
"This website uses analytics to improve the service.": "Questo sito web utilizza analytics per migliorare il servizio.",
|
||||
|
||||
"Board Model:": "Modello scheda:",
|
||||
"This feature is experimental.": "Questa funzionalità è sperimentale.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Scrivimi se il modello della scheda del tuo controller non viene riconosciuto correttamente.",
|
||||
@@ -163,6 +162,10 @@
|
||||
"Please connect the device using a USB cable.": "Connetti il controller usando un cavo USB.",
|
||||
"This DualSense controller has outdated firmware.": "Questo controller DualSense ha un firmware non aggiornato.",
|
||||
"Please update the firmware and try again.": "Aggiorna il firmware e riprova.",
|
||||
"Joystick Info": "Informazioni sui Joystick",
|
||||
"Err R:": "Err Dx:",
|
||||
"Err L:": "Err Sx:",
|
||||
"Check circularity": "Controlla circolarità",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -156,14 +156,17 @@
|
||||
", to help more people like you!": "、あなたのような多くの人々を助けるために!",
|
||||
"This website uses analytics to improve the service.": "このウェブサイトはサービスを向上させるためにアナリティクスを使用しています。",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
|
||||
"Board Model:": "基板モデル:",
|
||||
"This feature is experimental.": "この機能は実験的です。",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "コントローラーの基板モデルが正しく検出されない場合はお知らせください。",
|
||||
"Board model detection thanks to": "基板モデルの検出には感謝します",
|
||||
"Please connect the device using a USB cable.": "デバイスをUSBケーブルで接続してください。",
|
||||
"This DualSense controller has outdated firmware.": "このDualSenseコントローラーのファームウェアは古くなっています。",
|
||||
"Please update the firmware and try again.": "ファームウェアを更新してから再試行してください。",
|
||||
"Joystick Info": "ジョイスティック情報",
|
||||
"Err R:": "エラー 右:",
|
||||
"Err L:": "エラー 左:",
|
||||
"Check circularity": "円形を確認",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -161,9 +161,13 @@
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Proszę daj mi znać jaki model płytki kontrolera nie został wykryty poprawnie",
|
||||
"Board model detection thanks to": "Podziękowania dla osoby która wykryła model płytki",
|
||||
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Please connect the device using a USB cable.": "Proszę podłącz urządzenie przy pomocy kabla USB.",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
"Joystick Info": "",
|
||||
"Err R:": "",
|
||||
"Err L:": "",
|
||||
"Check circularity": "",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -156,14 +156,17 @@
|
||||
", to help more people like you!": ", para ajudar mais pessoas como você!",
|
||||
"This website uses analytics to improve the service.": "Este site utiliza análises para melhorar o serviço.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
|
||||
"Board Model:": "Modelo da Placa:",
|
||||
"This feature is experimental.": "Esta funcionalidade é experimental.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Por favor, avise-me se o modelo da placa do seu controle não for detectado corretamente.",
|
||||
"Board model detection thanks to": "Detecção do modelo da placa graças a",
|
||||
"Please connect the device using a USB cable.": "Por favor, conecte o dispositivo usando um cabo USB.",
|
||||
"This DualSense controller has outdated firmware.": "Este controle DualSense possui um firmware desatualizado.",
|
||||
"Please update the firmware and try again.": "Por favor, atualize o firmware e tente novamente.",
|
||||
"Joystick Info": "Informações do Joystick",
|
||||
"Err R:": "Erro D:",
|
||||
"Err L:": "Erro E:",
|
||||
"Check circularity": "Verificar circularidade",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -156,14 +156,17 @@
|
||||
", to help more people like you!": ", чтобы помочь большему числу людей, подобных вам!",
|
||||
"This website uses analytics to improve the service.": "Этот сайт использует аналитику для улучшения сервиса.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
|
||||
"Board Model:": "Модель платы:",
|
||||
"This feature is experimental.": "Эта функция экспериментальная.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Пожалуйста, дайте знать, если модель платы вашего контроллера определена неправильно.",
|
||||
"Board model detection thanks to": "Определение модели платы благодаря",
|
||||
"Please connect the device using a USB cable.": "Пожалуйста, подключите устройство с помощью USB-кабеля.",
|
||||
"This DualSense controller has outdated firmware.": "Прошивка этого контроллера DualSense устарела.",
|
||||
"Please update the firmware and try again.": "Пожалуйста, обновите прошивку и попробуйте снова.",
|
||||
"Joystick Info": "Информация о джойстике",
|
||||
"Err R:": "Ошибка П:",
|
||||
"Err L:": "Ошибка Л:",
|
||||
"Check circularity": "Проверить округлость",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -156,14 +156,17 @@
|
||||
", to help more people like you!": ", sizin gibi daha fazla insanın faydalanması için!",
|
||||
"This website uses analytics to improve the service.": "Bu web sitesi hizmeti iyileştirmek için analiz kullanıyor.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
|
||||
"Board Model:": "Kart Modeli:",
|
||||
"This feature is experimental.": "Bu özellik deneysel.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Denetleyicinizin kart modeli doğru tespit edilmezse lütfen bana bildirin.",
|
||||
"Board model detection thanks to": "Kart modeli tespiti sayesinde",
|
||||
"Please connect the device using a USB cable.": "Lütfen cihazı bir USB kablosu kullanarak bağlayın.",
|
||||
"This DualSense controller has outdated firmware.": "Bu DualSense denetleyicisinin yazılımı güncel değil.",
|
||||
"Please update the firmware and try again.": "Lütfen yazılımı güncelleyin ve tekrar deneyin.",
|
||||
"Joystick Info": "Joystick Bilgisi",
|
||||
"Err R:": "Hata D:",
|
||||
"Err L:": "Hata S:",
|
||||
"Check circularity": "Daireselliği kontrol et",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -161,9 +161,13 @@
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "如果您的手柄的主板型号没有被正确检测,请告诉我。",
|
||||
"Board model detection thanks to": "主板型号检测功能需要感谢",
|
||||
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
"Please connect the device using a USB cable.": "请使用USB线连接设备。",
|
||||
"This DualSense controller has outdated firmware.": "该DualSense手柄的固件已过时。",
|
||||
"Please update the firmware and try again.": "请更新固件后重试。",
|
||||
"Joystick Info": "摇杆信息",
|
||||
"Err R:": "右摇杆错误率",
|
||||
"Err L:": "左摇杆错误率",
|
||||
"Check circularity": "检查摇杆外圈圆度。",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
166
lang/zh_tw.json
Normal file
166
lang/zh_tw.json
Normal file
@@ -0,0 +1,166 @@
|
||||
{
|
||||
".authorMsg": "- 中文(繁體)翻譯由 JEFF 提供",
|
||||
"DualShock Calibration GUI": "手把校準界面",
|
||||
"Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "不支持的瀏覽器。請使用支持 WebHID 的瀏覽器 (例如 Chrome)。",
|
||||
"Connect a DualShock 4 or a DualSense controller to your computer and press Connect.": "將 DualShock 4 或 DualSense 手把連結到您的電腦,然後按下連結。",
|
||||
"Connect": "連結",
|
||||
"Connected to:": "連結至:",
|
||||
"Disconnect": "斷開連結",
|
||||
"Firmware Info": "韌體資訊",
|
||||
"Calibrate stick center": "校準搖桿中心",
|
||||
"Calibrate stick range (permanent)": "校準搖桿外圈 (永久)",
|
||||
"Calibrate stick range (temporary)": "校準搖桿外圈 (臨時)",
|
||||
"Reset controller": "重置手把",
|
||||
"Sections below are not useful, just some debug infos or manual commands": "以下部分沒有用處,只是一些除錯資訊或手動命令",
|
||||
"NVS Status": "NVS 狀態",
|
||||
"Unknown": "未知",
|
||||
"BD Addr": "BD 地址",
|
||||
"Debug buttons": "除錯按钮",
|
||||
"Query NVS status": "查詢 NVS 狀態",
|
||||
"NVS unlock": "解鎖 NVS",
|
||||
"NVS lock": "鎖定 NVS",
|
||||
"Get BDAddr": "獲取 BD 地址",
|
||||
"Fast calibrate stick center (OLD)": "快速校準搖桿中心 (舊版)",
|
||||
"Stick center calibration": "搖桿中心校準",
|
||||
"Welcome": "歡迎",
|
||||
"Step 1": "步驟 1",
|
||||
"Step 2": "步驟 2",
|
||||
"Step 3": "步驟 3",
|
||||
"Step 4": "步驟 4",
|
||||
"Completed": "已完成",
|
||||
"Welcome to the stick center-calibration wizard!": "歡迎使用搖桿中心校準嚮導!",
|
||||
"This tool will guide you in re-centering the analog sticks of your controller. It consists in four steps: you will be asked to move both sticks in a direction and release them.": "此工具將指導您重新定位手把的模擬搖桿。 它包括四個步驟:您將被要求將兩個搖桿移動到一個方向並釋放它們。",
|
||||
"Please be aware that, <i>once the calibration is running, it cannot be canceled</i>. Do not close this page or disconnect your controller until is completed.": "請注意,<i>一旦校準开始,就無法取消</i>。 在完成之前,請不要關閉此頁面或斷開手把的連結。",
|
||||
"Calibration storage": "校準儲存",
|
||||
"By default the calibration is only saved in a volatile storage, so that if you (or this tool) mess something up, a reset of the controller is enough to make it work again.": "默認情況下,校準僅保存在隨機存取記憶體中,因此,如果您(或此工具)出錯,重新設置手把就足以使其再次工作。",
|
||||
"If you wish to store the calibration permanently in the controller, tick the checkbox below:": "如果您希望永久保存校準數據到手把中,請在下方的複選框中打勾:",
|
||||
"Write changes permanently in the controller": "將變更永久寫入手把中",
|
||||
"<small>Warning: <font color=\"red\">Do not store the calibration permanently if the controller battery is low or disconnected. It will damage your controller.</font></small>": "<small>警告:<font color='red'>如果手把電池電量低或斷開連結,請勿永久儲存校準數據。這將損壞您的手把。</font></small>",
|
||||
"Press <b>Start</b> to begin calibration.": "按 <b>開始</b> 開始校準。",
|
||||
"Please move both sticks to the <b>top-left corner</b> and release them.": "請將兩個搖桿移到 <b>左上角</b> 並釋放它們。",
|
||||
"When the sticks are back in the center, press <b>Continue</b>.": "當搖桿回到中心位置時,按 <b>繼續</b>。",
|
||||
"Please move both sticks to the <b>top-right corner</b> and release them.": "請將兩個搖桿移到 <b>右上角</b> 並釋放它們。",
|
||||
"Please move both sticks to the <b>bottom-left corner</b> and release them.": "請將兩個搖桿移到 <b>左下角</b> 並釋放它們。",
|
||||
"Please move both sticks to the <b>bottom-right corner</b> and release them.": "請將兩個搖桿移到 <b>右下角</b> 並釋放它們。",
|
||||
"Calibration completed successfully!": "校準成功完成!",
|
||||
"Next": "下一步",
|
||||
"Recentering the controller sticks. ": "重新定位手把摇杆。 ",
|
||||
"Please do not close this window and do not disconnect your controller. ": "請不要關閉此窗口,也不要斷開手把的連接。 ",
|
||||
"Range calibration": "摇杆外圈校準",
|
||||
"<b>The controller is now sampling data!</b>": "<b>手把現在正在採樣數據!</b>",
|
||||
"Rotate the sticks slowly to cover the whole range. Press \"Done\" when completed.": "緩慢轉動搖桿以覆蓋整個範圍。 完成後按 \"完成\"。",
|
||||
"Done": "完成",
|
||||
"Hi, thank you for using this software.": "嗨,感謝您使用此軟體。",
|
||||
"If you're finding it helpful and you want to support my efforts, feel free to": "如果您覺得有幫助,想支持我的努力,請隨時",
|
||||
"buy me a coffee": "請我喝咖啡",
|
||||
"! :)": "! :)",
|
||||
"Do you have any suggestion or issue? Drop me a message via email or discord.": "您有任何建議或問題嗎?透過電子郵件或 Discord 給我留言。",
|
||||
"Cheers!": "乾杯!",
|
||||
"Support this project": "支持此項目",
|
||||
"unknown": "未知設備",
|
||||
"original": "原廠正品",
|
||||
"clone": "克隆盜版",
|
||||
"locked": "已鎖定",
|
||||
"unlocked": "已解鎖",
|
||||
"error": "錯誤",
|
||||
"Build Date:": "建置日期:",
|
||||
"HW Version:": "硬體版本:",
|
||||
"SW Version:": "軟體版本:",
|
||||
"Device Type:": "設備類型:",
|
||||
"Firmware Type:": "韌體類型:",
|
||||
"SW Series:": "軟體系列:",
|
||||
"HW Info:": "硬件資訊:",
|
||||
"SW Version:": "軟體版本:",
|
||||
"UPD Version:": "更新版本:",
|
||||
"FW Version1:": "韌體版本1:",
|
||||
"FW Version2:": "韌體版本2:",
|
||||
"FW Version3:": "韌體版本3:",
|
||||
"Range calibration completed": "搖桿外圈校準已完成",
|
||||
"Range calibration failed: ": "搖桿外圈校準失敗: ",
|
||||
"Cannot unlock NVS": "無法解鎖 NVS",
|
||||
"Cannot relock NVS": "無法重新鎖定 NVS",
|
||||
"Error 1": "錯誤 1",
|
||||
"Error 2": "錯誤 2",
|
||||
"Error 3": "錯誤 3",
|
||||
"Stick calibration failed: ": "摇杆校準失敗: ",
|
||||
"Stick calibration completed": "摇杆校準完成",
|
||||
"NVS Lock failed: ": "NVS 鎖定失敗: ",
|
||||
"NVS Unlock failed: ": "NVS 解鎖失敗: ",
|
||||
"Please connect only one controller at time.": "請一次只連接一個手把。",
|
||||
"Sony DualShock 4 V1": "Sony DualShock 4 V1",
|
||||
"Sony DualShock 4 V2": "Sony DualShock 4 V2",
|
||||
"Sony DualSense": "Sony DualSense",
|
||||
"Sony DualSense Edge": "Sony DualSense Edge",
|
||||
"Connected invalid device: ": "連接了無效設備: ",
|
||||
"Calibration of the DualSense Edge is not currently supported.": "目前不支援對 DualSense Edge 的校準。",
|
||||
"The device appears to be a DS4 clone. All functionalities are disabled.": "該設備似乎是 DS4 盜版。所有功能均已停用。",
|
||||
"Error: ": "錯誤: ",
|
||||
"My handle on discord is: the_al": "我的 Discord 用戶名是: the_al",
|
||||
"Initializing...": "初始化...",
|
||||
"Storing calibration...": "正在儲存校準...",
|
||||
"Sampling...": "採樣中...",
|
||||
"Calibration in progress": "校準進行中",
|
||||
"Start": "開始",
|
||||
"Continue": "繼續",
|
||||
"You can check the calibration with the": "您可以透過以下方式檢查校準",
|
||||
"Have a nice day :)": "祝您有美好的一天! :)",
|
||||
"Welcome to the Calibration GUI": "歡迎使用校準 GUI",
|
||||
"Just few things to know before you can start:": "在開始之前,有幾件事情要了解:",
|
||||
"This website is not affiliated with Sony, PlayStation & co.": "此網站與 Sony、PlayStation 等無關。",
|
||||
"This service is provided without warranty. Use at your own risk.": "此服務不附帶任何保固。使用需自負風險。",
|
||||
"Keep the internal battery of the controller connected and ensure it is well charged. If the battery dies during operations, the controller will be damaged and rendered unusable.": "保持手把的內部電池連接,並確保其充電充足。如果在操作過程中電池電量耗盡,手把將受損並無法使用。",
|
||||
"Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "在進行永久校準之前,先嘗試臨時校準以確保一切正常。",
|
||||
"Understood": "知道了",
|
||||
"Version": "版本",
|
||||
"Frequently Asked Questions": "常見問題",
|
||||
"Close": "關閉",
|
||||
"Welcome to the F.A.Q. section! Below, you'll find answers to some of the most commonly asked questions about this website. If you have any other inquiries or need further assistance, feel free to reach out to me directly. Your feedback and questions are always welcome!": "歡迎來到常見問題的解答部分!在下面,您將找到關於本網站常見問題的答案。如果您有任何其他疑問或需要進一步協助,請隨時直接與我聯繫。您的回饋和問題都是受歡迎的!",
|
||||
"How does it work?": "它是如何工作的?",
|
||||
"Behind the scenes, this website is the culmination of one year of dedicated effort in reverse-engineering DualShock controllers for fun/hobby from a random guy on the internet.": "在幕後,這個網站是一個來自網路上一個普通人花了一年時間來為了娛樂和愛好而逆向DualShock手把的努力結晶。",
|
||||
"Through": "通過",
|
||||
"this research": "這項研究",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": "透過這項研究,發現DualShock手把上存在一些未記錄的命令,可以透過USB發送,並在工廠組裝過程中使用。如果發送了這些命令,手把將開始重新校準模擬搖桿。",
|
||||
"While the primary focus of this research wasn't initially centered on recalibration, it became apparent that a service offering this capability could greatly benefit numerous individuals. And thus, here we are.": "雖然最初這項研究的主要焦點並不是集中在重新校準上,但很明顯,提供這種能力的服務可以極大地惠及許多人。顯而易見,我們也在這其中。",
|
||||
"Does the calibration remain effective during gameplay on PS4/PS5?": "在PS4/PS5上使用時,校準是否仍然有效?",
|
||||
"Yes, if you tick the checkbox \"Write changes permanently in the controller\". In that case, the calibration is flashed directly in the controller firmware. This ensures that it remains in place regardless of the console it's connected to.": "是的,如果您勾選了「在手把中永久寫入變更」複選框。在這種情況下,校準直接刷新到手把韌體中。這確保了它無論連接到哪個遊戲機都會生效。",
|
||||
"Is this an officially endorsed service?": "這是官方認可的工具嗎?",
|
||||
"No, this service is simply a creation by a DualShock enthusiast.": "不,這個工具只是一個DualShock愛好者的創作。",
|
||||
"Does this website detects if a controller is a clone?": "這個網站能偵測到手把是否是正品嗎?",
|
||||
"Yes, only DualShock4 at the moment. This happened because I accidentally purchased some clones, spent time identifying the differences and added this functionality to prevent future deception.": "是的,目前只有DualShock4。這是因為我不小心買到了一些盜版,因此花了一些時間鑑別了它們的差異,並添加了這個功能以防止未來被騙。",
|
||||
"Unfortunately, the clones cannot be calibrated anyway, because they only clone the behavior of a DualShock4 during a normal gameplay, not all the undocumented functionalities.": "不幸的是,盜版無論如何都不能進行校準,因為它們只複製了在正常遊戲過程中DualShock4的功能部分,而不是所有未記錄的功能。",
|
||||
"If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "如果您想將此檢測功能擴展到DualSense,請寄給我一個假的DualSense,您將在幾週內看到結果。",
|
||||
"What development is in plan?": "有什麼發展計畫嗎?",
|
||||
"I maintain two separate to-do lists for this project, although the priority has yet to be established.": "我為這個項目維護兩個單獨的待辦事項列表,儘管優先順序尚未確定。",
|
||||
"The first list is about enhancing support for DualShock4 and DualSense controllers:": "第一個清單是關於增強對DualShock4和DualSense手把的支援:",
|
||||
"Implement calibration of L2/R2 triggers.": "實現L2/R2扳機的校準。",
|
||||
"Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "改進盜版的檢測,對那些希望購買原廠正品的二手手把的人特別有益。",
|
||||
"Enhance user interface (e.g. provide additional controller information)": "增強使用者資訊介面(例如提供額外的手把資訊)",
|
||||
"Add support for recalibrating IMUs.": "新增支援重新校準IMU(陀螺儀)。",
|
||||
"Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "此外,探討復活不工作的DualShock手把的可能性(對此有興趣的人可在Discord上進一步的討論)。",
|
||||
"The second list contains new controllers I aim to support:": "第二個清單包含我打算支援的新手把:",
|
||||
"DualSense Edge": "DualSense Edge",
|
||||
"DualShock 3": "DualShock 3",
|
||||
"XBox Controllers": "XBox 手把",
|
||||
"Each of these tasks presents both immense interest and significant time investment. To provide context, supporting a new controller typically demands 6-12 months of full-time research, alongside a stroke of good fortune.": "每項任務都需要巨大的興趣和顯著的時間投入。為了提供支持,相容於新的手把通常需要6-12個月的全職研究,同時還需要一點好運才能做到。",
|
||||
"I love this service, it helped me! How can I contribute?": "我喜歡這個工具,它幫助了我!我如何做出貢獻?",
|
||||
"I'm glad to hear that you found this helpful! If you're interested in contributing, here are a few ways you can help me:": "很高興聽到本工具對您有幫助!如果您有興趣做出貢獻,以下是您可以幫助我的幾種方式:",
|
||||
"Consider making a": "考慮完成一項",
|
||||
"donation": "捐贈",
|
||||
"to support my late-night caffeine-fueled reverse-engineering efforts.": "以支持我的深夜因一杯咖啡而激發對逆向工程努力。",
|
||||
"Ship me a controller you would love to add (send me an email for organization).": "給我寄一個您想添加的手把(發送電子郵件給我進行安排)。",
|
||||
"Translate this website in your language": "將這個網站翻譯成您的語言",
|
||||
", to help more people like you!": "以幫助更多像您一樣的人!",
|
||||
"This website uses analytics to improve the service.": "該網站使用分析工具來改善服務。",
|
||||
"Board Model:": "主機板型號",
|
||||
"This feature is experimental.": "此功能為實驗性質。",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "如果您的手把的主機板型號沒有被正確檢測,請告訴我。",
|
||||
"Board model detection thanks to": "主機板型號檢測功能需要感謝",
|
||||
"Please connect the device using a USB cable.": "請使用USB線連接設備。",
|
||||
"This DualSense controller has outdated firmware.": "該DualSense手把的韌體已過時。",
|
||||
"Please update the firmware and try again.": "請更新韌體後重試。",
|
||||
"Joystick Info": "搖桿資訊",
|
||||
"Err R:": "右搖桿錯誤率",
|
||||
"Err L:": "左搖桿錯誤率",
|
||||
"Check circularity": "檢查搖桿外圈圓度。",
|
||||
"": ""
|
||||
}
|
||||
Reference in New Issue
Block a user