From 74e32216717f948067a04989fcd89686029f937b Mon Sep 17 00:00:00 2001 From: ronso0 Date: Sat, 31 May 2025 23:06:32 +0200 Subject: [PATCH 01/19] Traktor Kontrol S4 Mk3: fix tempo fader offset (multiply with ticks/mm) --- res/controllers/Traktor-Kontrol-S4-MK3.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/controllers/Traktor-Kontrol-S4-MK3.js b/res/controllers/Traktor-Kontrol-S4-MK3.js index 3ced6d5f0ca1..4a966e72d521 100644 --- a/res/controllers/Traktor-Kontrol-S4-MK3.js +++ b/res/controllers/Traktor-Kontrol-S4-MK3.js @@ -82,7 +82,7 @@ const TempoFaderTicksPerMm = 4096 / 77; // 53.1948.. const TempoCenterRangeTicks = TempoFaderTicksPerMm * TempoCenterRangeMm; // Value center may be off the labeled center. // Use this setting to compensate per device. -const TempoCenterValueOffset = engine.getSetting("tempoCenterOffsetMm") || 0.0; +const TempoCenterValueOffset = (engine.getSetting("tempoCenterOffsetMm") || 0.0) * TempoFaderTicksPerMm; const TempoCenterUpper = (4096 / 2) + (TempoCenterRangeTicks / 2) + TempoCenterValueOffset; const TempoCenterLower = (4096 / 2) - (TempoCenterRangeTicks / 2) + TempoCenterValueOffset; From 8442a167455231da4a47e86374e6288dd464d976 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Sat, 31 May 2025 23:16:43 +0200 Subject: [PATCH 02/19] Traktor Kontrol S4 Mk3: add per-deck tempo fader offset --- .../Traktor Kontrol S4 MK3.hid.xml | 35 +++++++++++------ res/controllers/Traktor-Kontrol-S4-MK3.js | 38 ++++++++++++------- 2 files changed, 49 insertions(+), 24 deletions(-) diff --git a/res/controllers/Traktor Kontrol S4 MK3.hid.xml b/res/controllers/Traktor Kontrol S4 MK3.hid.xml index dceb9eb79b63..69d65c1037b3 100644 --- a/res/controllers/Traktor Kontrol S4 MK3.hid.xml +++ b/res/controllers/Traktor Kontrol S4 MK3.hid.xml @@ -183,17 +183,30 @@ Defines the center range in mm where the rate snaps to 0. - + + + + diff --git a/res/controllers/Traktor-Kontrol-S4-MK3.js b/res/controllers/Traktor-Kontrol-S4-MK3.js index 4a966e72d521..d717e731b1ae 100644 --- a/res/controllers/Traktor-Kontrol-S4-MK3.js +++ b/res/controllers/Traktor-Kontrol-S4-MK3.js @@ -82,9 +82,12 @@ const TempoFaderTicksPerMm = 4096 / 77; // 53.1948.. const TempoCenterRangeTicks = TempoFaderTicksPerMm * TempoCenterRangeMm; // Value center may be off the labeled center. // Use this setting to compensate per device. -const TempoCenterValueOffset = (engine.getSetting("tempoCenterOffsetMm") || 0.0) * TempoFaderTicksPerMm; -const TempoCenterUpper = (4096 / 2) + (TempoCenterRangeTicks / 2) + TempoCenterValueOffset; -const TempoCenterLower = (4096 / 2) - (TempoCenterRangeTicks / 2) + TempoCenterValueOffset; +const TempoCenterValueOffsetLeft = (engine.getSetting("tempoCenterOffsetMmLeft") || 0.0) * TempoFaderTicksPerMm; +const TempoCenterValueOffsetRright = (engine.getSetting("tempoCenterOffsetMmRight") || 0.0) * TempoFaderTicksPerMm; +const TempoCenterUpperLeft = (4096 / 2) + (TempoCenterRangeTicks / 2) + TempoCenterValueOffsetLeft; +const TempoCenterLowerLeft = (4096 / 2) - (TempoCenterRangeTicks / 2) + TempoCenterValueOffsetLeft; +const TempoCenterUpperRight = (4096 / 2) + (TempoCenterRangeTicks / 2) + TempoCenterValueOffsetRright; +const TempoCenterLowerRight = (4096 / 2) - (TempoCenterRangeTicks / 2) + TempoCenterValueOffsetRright; // Define whether or not to keep LED that have only one color (reverse, flux, play, shift) dimmed if they are inactive. // 'true' will keep them dimmed, 'false' will turn them off. Default: true @@ -425,7 +428,7 @@ class ComponentContainer extends Component { /* eslint no-redeclare: "off" */ class Deck extends ComponentContainer { - constructor(decks, colors) { + constructor(decks, colors, settings) { super(); if (typeof decks === "number") { this.group = Deck.groupForNumber(decks); @@ -443,6 +446,7 @@ class Deck extends ComponentContainer { } this.color = colors[0]; } + this.settings = settings; this.secondDeckModes = null; } toggleDeck() { @@ -1582,8 +1586,8 @@ class S4Mk3EffectUnit extends ComponentContainer { } class S4Mk3Deck extends Deck { - constructor(decks, colors, effectUnit, mixer, inReports, outReport, io) { - super(decks, colors); + constructor(decks, colors, settings, effectUnit, mixer, inReports, outReport, io) { + super(decks, colors, settings); this.playButton = new PlayButton({ output: InactiveLightsAlwaysBacklit ? undefined : Button.prototype.uncoloredOutput @@ -1643,19 +1647,21 @@ class S4Mk3Deck extends Deck { } : undefined, }); this.tempoFader = new Pot({ + deck: this, inKey: "rate", outKey: "rate", appliedValue: null, - + tempoCenterUpper: this.settings.tempoCenterUpper, + tempoCenterLower: this.settings.tempoCenterLower, input: function(value) { const receivingFirstValue = this.appliedValue === null; - if (value < TempoCenterLower) { + if (value < this.tempoCenterLower) { // scale input for lower range - this.appliedValue = script.absoluteLin(value, -1, 0, 0, TempoCenterLower); - } else if (value > TempoCenterUpper) { + this.appliedValue = script.absoluteLin(value, -1, 0, 0, this.tempoCenterLower); + } else if (value > this.tempoCenterUpper) { // scale input for upper range - this.appliedValue = script.absoluteLin(value, 0, 1, TempoCenterUpper, 4096); + this.appliedValue = script.absoluteLin(value, 0, 1, this.tempoCenterUpper, 4096); } else { // reset rate in center region this.appliedValue = 0; @@ -3006,7 +3012,10 @@ class S4MK3 { // so every single components' IO needs to be specified individually // for both decks. this.leftDeck = new S4Mk3Deck( - [1, 3], [DeckColors[0], DeckColors[2]], this.effectUnit1, this.mixer, + [1, 3], [DeckColors[0], DeckColors[2]], { + tempoCenterLower: TempoCenterLowerLeft, + tempoCenterUpper: TempoCenterUpperLeft, + }, this.effectUnit1, this.mixer, this.inReports, this.outReports[128], { playButton: {inByte: 4, inBit: 0, outByte: 55}, @@ -3056,7 +3065,10 @@ class S4MK3 { ); this.rightDeck = new S4Mk3Deck( - [2, 4], [DeckColors[1], DeckColors[3]], this.effectUnit2, this.mixer, + [2, 4], [DeckColors[1], DeckColors[3]], { + tempoCenterLower: TempoCenterLowerRight, + tempoCenterUpper: TempoCenterUpperRight, + }, this.effectUnit2, this.mixer, this.inReports, this.outReports[128], { playButton: {inByte: 12, inBit: 0, outByte: 66}, From 1ba18076409888dbd7b85922f0a95eceee8c23b8 Mon Sep 17 00:00:00 2001 From: "Antoine C." Date: Tue, 24 Jun 2025 18:40:58 +0000 Subject: [PATCH 03/19] chore: remove bare assert --- .../renderers/allshader/waveformrenderertextured.cpp | 2 +- src/waveform/vsyncthread.cpp | 8 ++++---- src/waveform/waveformwidgetfactory.cpp | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/waveform/renderers/allshader/waveformrenderertextured.cpp b/src/waveform/renderers/allshader/waveformrenderertextured.cpp index 142ebe2584c4..9d198aef383f 100644 --- a/src/waveform/renderers/allshader/waveformrenderertextured.cpp +++ b/src/waveform/renderers/allshader/waveformrenderertextured.cpp @@ -23,7 +23,7 @@ QString WaveformRendererTextured::fragShaderForType(WaveformRendererTextured::Ty default: break; } - assert(false); + DEBUG_ASSERT(!"unsupported WaveformWidgetType"); return QString(); } diff --git a/src/waveform/vsyncthread.cpp b/src/waveform/vsyncthread.cpp index 6351b4f0b3b2..1676545f20b6 100644 --- a/src/waveform/vsyncthread.cpp +++ b/src/waveform/vsyncthread.cpp @@ -64,13 +64,13 @@ void VSyncThread::run() { runTimer(); break; default: - assert(false); + DEBUG_ASSERT(!"unsupported sync mode"); break; } } void VSyncThread::runFree() { - assert(m_vSyncMode == ST_FREE); + DEBUG_ASSERT(m_vSyncMode == ST_FREE); while (m_bDoRendering) { // for benchmark only! @@ -87,7 +87,7 @@ void VSyncThread::runFree() { } void VSyncThread::runPLL() { - assert(m_vSyncMode == ST_PLL); + DEBUG_ASSERT(m_vSyncMode == ST_PLL); qint64 offsetAdjustedAt = 0; qint64 offset = 0; qint64 nextSwapMicros = 0; @@ -180,7 +180,7 @@ void VSyncThread::runPLL() { } void VSyncThread::runTimer() { - assert(m_vSyncMode == ST_TIMER); + DEBUG_ASSERT(m_vSyncMode == ST_TIMER); while (m_bDoRendering) { emit vsyncRender(); // renders the new waveform. diff --git a/src/waveform/waveformwidgetfactory.cpp b/src/waveform/waveformwidgetfactory.cpp index 003c264587f0..24cf8239b97e 100644 --- a/src/waveform/waveformwidgetfactory.cpp +++ b/src/waveform/waveformwidgetfactory.cpp @@ -1432,7 +1432,7 @@ Qt::Alignment WaveformWidgetFactory::toUntilMarkAlign(int index) { case 2: return Qt::AlignBottom; } - assert(false); + DEBUG_ASSERT(!"unsupported align"); return Qt::AlignVCenter; } // static @@ -1447,7 +1447,7 @@ int WaveformWidgetFactory::toUntilMarkAlignIndex(Qt::Alignment align) { default: break; } - assert(false); + DEBUG_ASSERT(!"unsupported align index"); return 1; } // static @@ -1458,7 +1458,7 @@ float WaveformWidgetFactory::toUntilMarkTextHeightLimit(int index) { case 1: return 1.f; } - assert(false); + DEBUG_ASSERT(!"unsupported height limit"); return 0.33f; } // static @@ -1469,6 +1469,6 @@ int WaveformWidgetFactory::toUntilMarkTextHeightLimitIndex(float value) { if (value == 1.f) { return 1; } - assert(false); + DEBUG_ASSERT(!"unsupported height limit"); return 0; } From 97f2eb27a5cccdc73114f647d9a0cc1a47d95893 Mon Sep 17 00:00:00 2001 From: Joerg Date: Fri, 18 Apr 2025 17:42:33 +0200 Subject: [PATCH 04/19] Switch GitHub runner to Windows-2022 --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1664a5be0bdd..66cb3ba0192a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -85,8 +85,8 @@ jobs: artifacts_path: build/*.dmg artifacts_slug: macos-macosarm qt_qpa_platform: offscreen - - name: Windows 2019 (MSVC) - os: windows-2019 + - name: Windows 2022 (MSVC) + os: windows-2022 # TODO: Re-enable FFmpeg after licensing issues have been clarified # Attention: If you change the cmake_args for the Windows CI build, # also adjust the for the local Windows build setup in From 24bad870bb276fcc34d8bc88045d956a85edaee2 Mon Sep 17 00:00:00 2001 From: Joerg Date: Fri, 18 Apr 2025 18:45:53 +0200 Subject: [PATCH 05/19] Disabled 2 .aac.m4a test files on Windows, that always fail due to Win11 bug #11094 --- src/test/soundproxy_test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/soundproxy_test.cpp b/src/test/soundproxy_test.cpp index 22754a396216..44a768ac5210 100644 --- a/src/test/soundproxy_test.cpp +++ b/src/test/soundproxy_test.cpp @@ -50,8 +50,13 @@ class SoundSourceProxyTest : public MixxxTest, SoundSourceProviderRegistration { // was not correctly handled. The actual FFmpeg version // that fixed this bug is unknown. << "-itunes-12.3.0-aac.m4a" +#ifndef __WINDOWS__ + // These tests always fail on Windows11/Windows Server 2022, + // due to a bug in the MediaFoundation AAC decoder shipped with Windows. + // See https://bugs.mixxx.org/issues/11094 << "-itunes-12.7.0-aac.m4a" << "-ffmpeg-aac.m4a" +#endif #if defined(__FFMPEG__) || defined(__COREAUDIO__) << "-itunes-12.7.0-alac.m4a" #endif From ef1739b8b2756cba76327814b41126477ca46f28 Mon Sep 17 00:00:00 2001 From: Joerg Date: Sat, 19 Apr 2025 13:53:44 +0200 Subject: [PATCH 06/19] Add a check, if the MSVC toolset version is new enough --- CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 676e3ce7a5ba..e3287cb04b14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -289,6 +289,16 @@ if(MSVC) # Remove unreferenced code and data # Since c++11 they can safely be removed to speed up linking. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:inline") + + if(NOT DEFINED MSVC_TOOLSET_VERSION OR MSVC_TOOLSET_VERSION VERSION_LESS 143) + message( + FATAL_ERROR + "MSVC_TOOLSET_VERSION is ${MSVC_TOOLSET_VERSION}.\n" + "Mixxx requires the Microsoft Visual C++ Redistributable toolset of version 143 (VS2022) or greater, " + "as the VCPKG buildenv is built with this version.\n" + "Please use the Visual Studio 2022 toolset therefore!" + ) + endif() endif() # Speed up builds on HDDs and prevent wearing of SDDs From e0f368e0d0f559adceada42f30c39531516c21c0 Mon Sep 17 00:00:00 2001 From: Joerg Date: Sat, 19 Apr 2025 14:55:40 +0200 Subject: [PATCH 07/19] Updated README.md to VS2022 and made the name of the special shell bold --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ce618e5ce1af..6c583fbddcca 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,8 @@ Read [CONTRIBUTING](CONTRIBUTING.md) for more information. ## Building Mixxx -First, open a terminal (on Windows, use "x64 Native Tools Command Prompt for -[VS 2019][visualstudio2019]"), download the mixxx +First, open a terminal (on Windows, use "**x64 Native Tools Command Prompt for +[VS 2022][visualstudio2022]**"), download the mixxx source code and navigate to it: $ git clone https://github.com/mixxxdj/mixxx.git @@ -104,7 +104,7 @@ license. [blog]: https://mixxx.org/news/ [manual]: https://manual.mixxx.org/ [wiki]: https://github.com/mixxxdj/mixxx/wiki -[visualstudio2019]: https://docs.microsoft.com/visualstudio/install/install-visual-studio?view=vs-2019 +[visualstudio2022]: https://docs.microsoft.com/visualstudio/install/install-visual-studio?view=vs-2022 [easybugs]: https://github.com/mixxxdj/mixxx/issues?q=is%3Aopen+is%3Aissue+label%3Aeasy [creating skins]: https://mixxx.org/wiki/doku.php/Creating-Skins [help translate content]: https://www.transifex.com/projects/p/mixxxdj From 655f235723ac737ba8eeb4b4e3d63823e15575dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 26 Jun 2025 23:03:37 +0200 Subject: [PATCH 08/19] Update Translation template. Found 3119 source text(s) (0 new and 3119 already existing) --- res/translations/mixxx.ts | 112 +++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/res/translations/mixxx.ts b/res/translations/mixxx.ts index 5adbaede4e1e..4857382d24de 100644 --- a/res/translations/mixxx.ts +++ b/res/translations/mixxx.ts @@ -380,7 +380,7 @@ - + Type @@ -425,7 +425,7 @@ - + Played @@ -7238,137 +7238,137 @@ The loudness target is approximate and assumes track pregain and main output lev DlgPrefSound - + %1 Hz - + Default (long delay) - + Experimental (no delay) - + Disabled (short delay) - + Soundcard Clock - + Network Clock - + Direct monitor (recording and broadcasting only) - + Disabled - + Enabled - + Stereo - + Mono - + To enable Realtime scheduling (currently disabled), see the %1. - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. - + Mixxx DJ Hardware Guide - + auto (<= 1024 frames/period) - + 2048 frames/period - + 4096 frames/period - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. - + Refer to the Mixxx User Manual for details. - + Configured latency has changed. - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. - + Realtime scheduling is enabled. - + Main output only - + Main and booth outputs - + %1 ms - + Configuration error @@ -7386,126 +7386,126 @@ The loudness target is approximate and assumes track pregain and main output lev - + Sample Rate - + Audio Buffer - + Engine Clock - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. - + Main Mix - + Main Output Mode - + Microphone Monitor Mode - + Microphone Latency Compensation - - - - + + + + ms milliseconds - + 20 ms - + Buffer Underflow Count - + 0 - + Keylock/Pitch-Bending Engine - + Multi-Soundcard Synchronization - + Output - + Input - + System Reported Latency - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. - + Main Output Delay - + Headphone Output Delay - + Booth Output Delay - + Hints and Diagnostics - + Downsize your audio buffer to improve Mixxx's responsiveness. - + Query Devices From 748f8b38b6a571591a08405fec6547f02bf87ce1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 26 Jun 2025 23:09:17 +0200 Subject: [PATCH 09/19] Pull latest translations from https://www.transifex.com/mixxx-dj-software/mixxxdj/mixxx2-5/. Compile QM files out of TS files that are used by the localized app --- res/translations/mixxx_es.qm | Bin 473875 -> 473767 bytes res/translations/mixxx_es.ts | 227 +- res/translations/mixxx_es_419.qm | Bin 471698 -> 471590 bytes res/translations/mixxx_es_419.ts | 227 +- res/translations/mixxx_es_AR.qm | Bin 471695 -> 471587 bytes res/translations/mixxx_es_AR.ts | 227 +- res/translations/mixxx_es_CO.qm | Bin 471695 -> 471587 bytes res/translations/mixxx_es_CO.ts | 227 +- res/translations/mixxx_es_ES.qm | Bin 469379 -> 469271 bytes res/translations/mixxx_es_ES.ts | 227 +- res/translations/mixxx_es_MX.qm | Bin 471695 -> 471587 bytes res/translations/mixxx_es_MX.ts | 227 +- res/translations/mixxx_fr.qm | Bin 491800 -> 491802 bytes res/translations/mixxx_fr.ts | 519 +++-- res/translations/mixxx_vi.qm | Bin 189546 -> 193983 bytes res/translations/mixxx_vi.ts | 2088 ++++++++++--------- res/translations/mixxx_zh.qm | Bin 303572 -> 303646 bytes res/translations/mixxx_zh.ts | 511 +++-- res/translations/mixxx_zh_CN.ts | 509 +++-- res/translations/mixxx_zh_HK.qm | Bin 303505 -> 303642 bytes res/translations/mixxx_zh_HK.ts | 513 +++-- res/translations/mixxx_zh_TW.qm | Bin 303796 -> 303933 bytes res/translations/mixxx_zh_TW.ts | 513 +++-- res/translations/source_copy_allow_list.tsv | 1 + 24 files changed, 3024 insertions(+), 2992 deletions(-) diff --git a/res/translations/mixxx_es.qm b/res/translations/mixxx_es.qm index 90b8888d66b4bc8b49ff46b04945f0a8121458a0..9c250f784d058ae89f6b815c6429aa9cbb81d412 100644 GIT binary patch delta 1131 zcmW-ge@xVM7{{OI`QCjH#z`Q00ToZi3JMz=`Ml1Ai%0V!C;?Ez_WHsB-lKM4DGOAv!IToLHN^>R2c1F@O|mri3E z&oAAIF>DJ;!b({YbPeP7;tqQfXm+Mz;f@IqE;|;5x&x+~%z8E!aU(m!GBAbPefKEOgq4S#QiA>* z0{U^K64Go3&6UlH{(KpT-;gW9C&NmWoT@s&&{QR7>=fYg2a4V808t;p2O=z3%7#To@BcjsMAtm~t|`t*zulP(FBHdwkPtfHfW3 zF z#XyU!jb9;X;2yWXRBzfNx>6EBI}s_QpB?C}K_RE707q|%Zbt}+0V9{LF2^A0T|I&{ ze2d$Y_xL~K_u}|P5dAyYU_KGh@x(9hxjqn{N$xgZqSHUi(v&_Vp5|!F2>me1^OkB% z(##SmixL@`ecAfe_gDt z3pBI6y4bq2AjVI#A-|70FG+8{ud9)r1*&Pc?tFAG(BT%{7oL|vq+QTmJoFf}NB+=# zwfF{z8w>0yI7r`krERM~>K^9&Z5j9;*KS*&zA0I?eJRm}+p=kA5z?4PE*9F6z8qj% zQ8SG$@=THH3vDiL^Un?%bT;@Nj`(h|1tZu{a?Ll&yCqhv{?N3m(zFYGkPpR&#)r1o Vv`ef#(R+MOBrWNkdL$Av{|Bb@n>+vj delta 1207 zcmZ9LZA{a55XbL+ZGS-5!pf=@=y=#rhI1$rEntBmNR?qLtU)KW$R4sRt7UOuGwiY_ z5-@S%JVam}0;1?NBK#O^3qi<=hKUc8Lc_x3#aP^wfo7<02-`or*o$5A`F@kTdvTZC zwLj9+WBt)^Rsx;+9>xYXlaHCOg!Hm@^a`)ckN7}%6ekhg!WiJfn0ZM3Lk7@O0cpdP zz_YAiN@@XllpjoWwZO+Zg)guXc~K4UBkRebG~f@^rcCA6q(t2@F{!M=pxdzTZ2|ns zR&uB;=n;LY48;4ipuUTBG#$JXtz-;Yi@ym+$W@H@;%@U=kQXJRZTAH5hHucW^@2S4 zHWs&}gQ95^_r7rhc-KR+X`TdCVpVh)@ESSULM`|wT?jRykLE*nYFcr))I72F(osH}uhtABJ4AiG{;X{$MA`bBY*}^jL zOY%s1hbF^ZVFR*|Ux$GWJ}(PxGK0J?U#2_l1b%A|Il`x;YVP6VfZAkP?)WjlW%p!e zuLbxCC%qM6z%R%X5y`%eqP~bI9Hz;L9(L^|s?{6tlo-*w5KAdLa*^HKA+npVEZ>xeSKw!WKJ=?Bp`aTNTN^Din@YE*5iL zQAG(L`}7k<^{aaTk9H`kFPQ+M|6X$5s3v*51?$Ng-^6;;Xg+=w`!1XGt4%ROij&*l z1ypZTG@Dj}tfOto;e+L{J z<=vK0-~(>5Cc5xFF_L%#*>wYX*1r?v2zb$d4*2CBQY9TxUMdPGc(z}^$evf5>&HQZqRi8O7f!CERycCs^SnodqdvUbzsUH?9PXnvnHKy8iFY=YnGih z3S+j3;eM*jDb{?TY?yEY)Z3K}i-&+;=%)D`KX%fHDGomq^OB-p=(iaV2g#b7!0Ho3 zW$rk#x(Kr6jk7CHQPTE}tW!sh?KRj%3z9w(hs|*^tfKDxDSSY+1qrO|m?< ztZy^$)HCXH6^o$w=oj_*g*SnZ7Ld2_0P9H>#+@A5w=Yokt_&Qb%3Y7yTjzLUV7L-2 SQ2zfeOZk6YA3os;S^olwD5yaI diff --git a/res/translations/mixxx_es.ts b/res/translations/mixxx_es.ts index e8566a1e1759..f0bfbb6ab7da 100644 --- a/res/translations/mixxx_es.ts +++ b/res/translations/mixxx_es.ts @@ -294,12 +294,12 @@ BaseSqlTableModel - + # # - + Timestamp Marca de tiempo @@ -315,137 +315,137 @@ BaseTrackTableModel - + Album Álbum - + Album Artist Artista del álbum - + Artist Artista - + Bitrate Tasa de bits - + BPM BPM - + Channels Canales - + Color Color - + Comment Comentario - + Composer Compositor - + Cover Art Carátula - + Date Added Fecha añadida - + Last Played Última reproducción - + Duration Duración - + Type Tipo - + Genre Género - + Grouping Grupo - + Key Clave - + Location Ubicación - + Preview Preescucha - + Rating Puntuación - + ReplayGain Ganancia de reproducción - + Samplerate Muestra - + Played Reproducido - + Title Título - + Track # Pista n.º - + Year Año - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk Recuperando imagen... @@ -3867,12 +3867,12 @@ trace - Lo anterior + mensajes de perfilaje/rendimiento Contribuyentes anteriores - + Official Website Sitio web oficial - + Donate Donar @@ -3928,7 +3928,7 @@ trace - Lo anterior + mensajes de perfilaje/rendimiento - + Analyze Analizar @@ -3973,17 +3973,17 @@ trace - Lo anterior + mensajes de perfilaje/rendimiento Ejecuta el análisis de cuadrícula de tempo, clave musical y ReplayGain en las pistas seleccionadas. No genera formas de onda para las pistas seleccionadas para ahorrar espacio en disco. - + Stop Analysis Detener análisis - + Analyzing %1% %2/%3 Analizando %1% %2/%3 - + Analyzing %1/%2 Analizando %1/%2 @@ -7309,138 +7309,137 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y DlgPrefSound - + %1 Hz %1 Hz - + Default (long delay) Por Defecto (mas retardo) - + Experimental (no delay) Experimental (sin retardo) - + Disabled (short delay) Desactivado (poco retardo) - + Soundcard Clock Reloj de la tarjeta de sonido - + Network Clock Reloj de red - + Direct monitor (recording and broadcasting only) Monitorización directa (solo grabación y emisión en vivo) - + Disabled Desactivado - + Enabled Activado - + Stereo Estéreo - + Mono Mono - + To enable Realtime scheduling (currently disabled), see the %1. Para activar el Planificador en tiempo real (actualmente desactivado), mira %1. - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 muestra una lista de tarjetas de sonido y controladores que podrías considerar para utilizar con Mixxx - + Mixxx DJ Hardware Guide Guía de Hardware DJ de Mixxx - + auto (<= 1024 frames/period) auto (<= 1024 fotogramas/período) - + 2048 frames/period 2048 fotogramas/período - + 4096 frames/period 4096 fotogramas/período - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. La entrada de micrófono está desincronizada respecto la grabación y emisión comparado con la señal que se oye. - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Mide la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - - + Refer to the Mixxx User Manual for details. Para más detalles, lea el manual de usuario de Mixxx. - + Configured latency has changed. La latencia configurada ha cambiado. - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Vuelve a medir la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - + Realtime scheduling is enabled. La planificación en Tiempo Real está activada. - + Main output only Solo Salida principal - + Main and booth outputs Salidas principal y de cabina - + %1 ms %1 ms - + Configuration error Error de configuración @@ -7458,126 +7457,126 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y API de sonido - + Sample Rate Frecuencia de muestreo - + Audio Buffer Búfer de audio - + Engine Clock Relog del motor - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. Usa el reloj de la tarjeta de sonido para emitir a un público presente y para la menor latencia. <br>Usa el reloj de red para emitir en vivo sin un público presente. - + Main Mix Mezcla principal - + Main Output Mode Modo de Salida principal - + Microphone Monitor Mode Modo de monitorización del micrófono - + Microphone Latency Compensation Compensación de latencia del micrófono - - - - + + + + ms milliseconds ms - + 20 ms 20 ms - + Buffer Underflow Count Contador de vaciado del búfer - + 0 0 - + Keylock/Pitch-Bending Engine Bloqueo tonal/Motor de Pitch-bend - + Multi-Soundcard Synchronization Sincronización con Múltiples Tarjetas de Sonido - + Output Salida - + Input Entrada - + System Reported Latency Latencia reportada por el sistema - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. Aumente su búfer de audio si el contador de desbordamiento está aumentando o escuchas chasquidos durante la reproducción. - + Main Output Delay Retardo Salida Principal - + Headphone Output Delay Retraso/delay de la Salida de auriculares - + Booth Output Delay Retraso/delay de la salida de cabina - + Hints and Diagnostics Diagnóstico y sugerencias - + Downsize your audio buffer to improve Mixxx's responsiveness. Disminuya su búfer de audio para mejorar la velocidad de respuesta de Mixxx. - + Query Devices Consultar aparatos @@ -11764,54 +11763,54 @@ pueden introducir un efecto de "bombeo" y/o distorsión. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists Listas de reproducción - + Folders Carpetas - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: - + Hot cues Accesos Directos - + Loops (only the first loop is currently usable in Mixxx) Bucles (solo el primer bucle es utilizable en Mixxx) - + Check for attached Rekordbox USB / SD devices (refresh) Buscar dispositivos de almacenamiento Rekordbox (refrescar) - + Beatgrids Grillas de pulsos - + Memory cues Cues en memoria - + (loading) Rekordbox (cargando) Rekordbox @@ -15963,12 +15962,12 @@ Carpeta: %2 Intro - Intro + Outro - Outro + @@ -16513,52 +16512,52 @@ Carpeta: %2 mixxx::CoreServices - + fonts tipos de letra - + database base de datos - + effects efectos - + audio interface interface de sonido - + decks platos - + library Biblioteca - + Choose music library directory Elija el directorio de la biblioteca de la música - + controllers Controladores - + Cannot open database No se puede abrir la base de datos - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_es_419.qm b/res/translations/mixxx_es_419.qm index 408b5674094b7ea592e9e9ac68ba903770c19edd..24be5a94433efce2320d9be57ecfb77ce9949d7b 100644 GIT binary patch delta 976 zcmWNPT}+#09L1mWw0)^>C}7zr6{Hg42{$hN*>;_&vyY;7pqObsJqFLKOHBHrki1X+C0|}dtJ%n;GiS-G zuY#Gb>FwA~+IW|K=phycLX4I9un>BiNmoteji1JAl)Y^QaUyPe6>x$)3DdBV*-(pC z@)@e|5rqv+I3*m3Y2Y7kk=Izvr+%b>(Wb<17@Le0s@U5Lj8Fci()T)g4-5+P^9kUC z*M+s%4#n@Y*-$~(Y^^9FN691JKS9>gDpZTMQl-;Da+j^6ML1q4=R7n@{_-0Axh1*h zRs&-fzLb0ZYiH8u|90Ac;@_`P#Gb}K`C;6V4#bFziahX{P4euupk4U)D(@Yn`pRWg zQpr9GJmlTi!N>pZbe@Al_?_u0#L?tSD=47uY75?_`RYboBa`O3rC*<;;I8Xcx^Z5|I_Caq@< oDhhjwka}8I*Q%?70#{Hes1-CpU7fVi65M%TvS@>C>yljdKNodn4*&oF delta 1053 zcmZ9KUrdu{6vp4@Eqv5(BCIl?!k{bz3X1~K0TMX-g!$f>H0FcHrMd65)s&J08aL7S>e5V zXmyK)pLv0bqq5K;Tv3zAXuzSGEEZNfizA2bGO2qX>SOM(uWLTOuF_S*|+-PCtb`E zn#Nx;0YhYt_2WE6$Jy|RTyZ9>P$13?ugH&21OI3{*|kOd#t!mm4a(LBTDR7%in=$= zxbIJu=0Xh%6Dz8?VF!~YL*&}F1UH!zVtH38H74Ytj64a+_?`kvZ>9$c69`a$VlJP_ z74wNFz(0$jilpawBr1|6@K3jrS+|3Ky@%R#PP9-+m&@m@q)&M&-_nE)IC`0M^B19e zrHJ#}1;YO78gPfqX-S+QTxo8OW3;MI##K^h)bNi>$(k{U-)KD}9eE~2WBWfFNir>&FkdBbZX6aVw_g<4Ok@o?m_%TQ@cmu5UmBB;MY@0 zT{wyc@)cV67!%QN#DWj&guciKMei~gFickr?dYfc;-`E_L;4aEz7(w`il?urqI3-p zMSfX1=kwvzR$i|;n<)?6buiZVg*@=jhfKP7kV54@^T{%rGN$pK?IL7M2abvO%3SbU zb!6U~g=NvUR|)e^WUX3&m$Iv~aE8bN$R0QgjJ3T36wit1g`Yp*=CZENP zdz5|PIc6!_YCt2otbgOaXgnCjm4jLj+ko3*@rV+}o20KF#1opTFXvZH6m7dCj~k=D zYwB0RuA+b~m;Wf!x@{6U6tEZK8zREcYnT>3A+s(rEm diff --git a/res/translations/mixxx_es_419.ts b/res/translations/mixxx_es_419.ts index 57f8f85d3114..35ba7e3a95f2 100644 --- a/res/translations/mixxx_es_419.ts +++ b/res/translations/mixxx_es_419.ts @@ -294,12 +294,12 @@ BaseSqlTableModel - + # # - + Timestamp Marca de tiempo @@ -315,137 +315,137 @@ BaseTrackTableModel - + Album Album - + Album Artist Artista del Album - + Artist Artista - + Bitrate Tasa de bits - + BPM BPM - + Channels Canales - + Color Color - + Comment Comentario - + Composer Compositor - + Cover Art Portada - + Date Added Fecha de Agregado - + Last Played Última reproducción - + Duration Duración - + Type Tipo - + Genre Genero - + Grouping Agrupación - + Key Clave - + Location Ubicación - + Preview Preescucha - + Rating Calificación - + ReplayGain Reproducir otra vez - + Samplerate Tasa de muestreo - + Played Reproducido - + Title Título - + Track # Pista n.º - + Year Año - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk Recuperando imagen... @@ -3867,12 +3867,12 @@ trace - Arriba + Perfilar mensajes Antiguos colaboradores - + Official Website Sitio web oficial - + Donate Donar @@ -3928,7 +3928,7 @@ trace - Arriba + Perfilar mensajes - + Analyze Analizar @@ -3973,17 +3973,17 @@ trace - Arriba + Perfilar mensajes Ejecuta el análisis de cuadrícula de tempo, clave musical y ReplayGain en las pistas seleccionadas. No genera formas de onda para las pistas seleccionadas para ahorrar espacio en disco. - + Stop Analysis Detener análisis - + Analyzing %1% %2/%3 Analizando %1% %2/%3 - + Analyzing %1/%2 Analizando %1/%2 @@ -7291,138 +7291,137 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y DlgPrefSound - + %1 Hz %1 Hz - + Default (long delay) Por Defecto (mas retardo) - + Experimental (no delay) Experimental (sin retardo) - + Disabled (short delay) Desactivado (poco retardo) - + Soundcard Clock Reloj de la tarjeta de sonido - + Network Clock Reloj de red - + Direct monitor (recording and broadcasting only) Monitorización directa (solo grabación y emisión en vivo) - + Disabled Desactivado - + Enabled Habilitado - + Stereo Estéreo - + Mono Mono - + To enable Realtime scheduling (currently disabled), see the %1. Para activar el Planificador en tiempo real (actualmente desactivado), mira %1. - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 muestra una lista de tarjetas de sonido y controladores que podrías considerar para utilizar con Mixxx - + Mixxx DJ Hardware Guide Guía de Hardware DJ de Mixxx - + auto (<= 1024 frames/period) auto (<= 1024 fotogramas/período) - + 2048 frames/period 2048 fotogramas/período - + 4096 frames/period 4096 fotogramas/período - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. La entrada de micrófono está desincronizada respecto la grabación y emisión comparado con la señal que se oye. - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Mide la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - - + Refer to the Mixxx User Manual for details. Para más detalles, lea el manual de usuario de Mixxx. - + Configured latency has changed. La latencia configurada ha cambiado. - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Vuelve a medir la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - + Realtime scheduling is enabled. La planificación en Tiempo Real está activada. - + Main output only Solo Salida principal - + Main and booth outputs Salidas principal y de cabina - + %1 ms %1 ms - + Configuration error Error de configuración @@ -7440,126 +7439,126 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y API de sonido - + Sample Rate Frecuencia de muestreo - + Audio Buffer Búfer de audio - + Engine Clock Relog del motor - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. Usa el reloj de la tarjeta de sonido para emitir a un público presente y para la menor latencia. <br>Usa el reloj de red para emitir en vivo sin un público presente. - + Main Mix Mezcla principal - + Main Output Mode Modo de Salida principal - + Microphone Monitor Mode Modo de monitorización del micrófono - + Microphone Latency Compensation Compensación de latencia del micrófono - - - - + + + + ms milliseconds ms - + 20 ms 20 ms - + Buffer Underflow Count Contador de vaciado del búfer - + 0 0 - + Keylock/Pitch-Bending Engine Bloqueo tonal/Motor de Pitch-bend - + Multi-Soundcard Synchronization Sincronización con Múltiples Tarjetas de Sonido - + Output Salida - + Input Entrada - + System Reported Latency Latencia reportada por el sistema - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. Aumente su búfer de audio si el contador de desbordamiento está aumentando o escuchas chasquidos durante la reproducción. - + Main Output Delay Retardo Salida Principal - + Headphone Output Delay Retraso/delay de la Salida de auriculares - + Booth Output Delay Retraso/delay de la salida de cabina - + Hints and Diagnostics Diagnóstico y sugerencias - + Downsize your audio buffer to improve Mixxx's responsiveness. Disminuya su búfer de audio para mejorar la velocidad de respuesta de Mixxx. - + Query Devices Consultar aparatos @@ -11746,54 +11745,54 @@ pueden introducir un efecto de "bombeo" y/o distorsión. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists Listas de reproducción - + Folders Carpetas - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: - + Hot cues Accesos Directos - + Loops (only the first loop is currently usable in Mixxx) Bucles (solo el primer bucle es utilizable en Mixxx) - + Check for attached Rekordbox USB / SD devices (refresh) Buscar dispositivos de almacenamiento Rekordbox (refrescar) - + Beatgrids Grillas de pulsos - + Memory cues Cues en memoria - + (loading) Rekordbox (cargando) Rekordbox @@ -15945,12 +15944,12 @@ Carpeta: %2 Intro - Intro + Outro - Outro + @@ -16495,52 +16494,52 @@ Carpeta: %2 mixxx::CoreServices - + fonts tipos de letra - + database base de datos - + effects efectos - + audio interface interface de sonido - + decks platos - + library Biblioteca - + Choose music library directory Elija el directorio de la biblioteca de la música - + controllers Controladores - + Cannot open database No se puede abrir la base de datos - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_es_AR.qm b/res/translations/mixxx_es_AR.qm index b34045dd69102ea8944f7b374d2f1e3d98239e72..49c686517583d6a8e5401d0a34a473cf050b954e 100644 GIT binary patch delta 977 zcmWNPUrbwN7{7d{BcOyIhP)o*|?c>Tu9ww zQVrI+pcH+bY}1SZZa6j8?PF^eHybv!A;Xebuo^p(Rwa^&vWzU&GRHr z;&#>CuT_)PxOrAialA%Z?&q=JNH)#GBr>Kf5E0WwC%`|xDiliuXrNSaHD6v4+2Z4% zgVt?mr=+!6+_lEAVIzBSuVB*UI7Mwe{EJ_NZc_j^*-KaWd#kiw8sLY2pkBKdbs}od zpw@(4Jzi$+%VPJgTTGh#1EKP-nR&|yw3#+m^!_LY_FQMuCruRIc+dLzHN@R6CcQCE zVMi~jDeX{EMwYUGU zyA*ve2N!9T6?`H?kxC!RDOo9FKk0^6P`)ySJv3j{$gkZLxvEj{nF|!GE+8g?vIPFY zdD7fZ@bjybaEIZfg1eD__c!?-TC*-Ln2!w~VbbC&!uxO==U09d;YaeoKGJGr%!z1C zgu_Pbn`H#ZS=+oDRb8}?Z*erkCvdxl9D{v>&8V#BPZZ_`&yT0TIjtx1fCp>1j4L-P1^9H4dI z1i!vS@uo2PX}w9oA@XgX22pl<68DLC^91;%3^`kpFj1x@h*=@GR)BwWMfloO80S$% zfl6s5j%HGyT;nGf$k*PBXGFZ+NED=CM;>EBeag?dK2HgM$dOpK9=kQn*p%V_9cI$p zKUDC4&%a%vtXjk0(M3V^05;)yx)FTw9%-Fk#6_ahSnn(ib!E{>O1Bpw3U^QNbAM5x zI|08)^mt4trPPibd^FYP#X-vSg>jU8&!$~(l|1TfVC?7i5>MATW?l)Dc#fQ8lKwc^ z`_tGV^nRn~^i|RVDvD`7AR|thKm<`zf(3+0*{Q%v(VgpfRYab%bE8rGc@5YrR(Bgy ze1UwSX}nF@ke`dYBx|RwXYbg**?*KtXHJo>HS!yuk!2tQkUr1?_n2)kZX1LFH!vBP X4T@5>L1`_P+Po@xi&L?@WbODL$B|_N delta 1053 zcmZ9KQA}HP6vqGGzvUL1VOb?~9mqxJxC4wG8B(?&6>u~xgPSpJ=eBT((Xp6~8*$LM zEaAb7sxdG;V~8>9*aR}8spD^~TZEgTrsCK-A6&QStP2y+2kL{77ec)cK6#Sgc{urU z@|~0K(!-*`-;2%^WBH04r-o*P0NVZHu6LCut7#ESO^Wc|d;j@K+L5gJ;^P3GK znf)Q8LxW5@y-d2@3!NtIyQCZDV8Aa@_Aqjev*WJ{CQUDpzM++0@d;yt4>(1c+(kaz zNK20d_`5meb9m4%bVnRz8VpLvQRZlAd}MZo4fg*)6z9+-%-IOYfVTMMEs`-4CNEG#g zUv!ecID-emFH7JbZ6vkiY5rv+^_A#&gVH6{{8oUJ$5-sLdDhXcVJ2O_E958YIRBhf5Uog>jC&&#myWJW}dad@4fqrXxZA#xzpG`+O7Uw=LAy)b2d9 z%|3dsi?NY;`{?>RO!_!T>83k8-av7GDSy90r2PtTRJfX}!Drh@-Q&T6=-Xpv`8Eaj zCNV*t77wnG)-u4wiE!q4OhW^jW%2Yfg}`hiva zB067kaPy+jAq}`Ll84PG8l<#G@CU`)oA?(k^wf`H$JOs>R_U zqoWq5-dgJjuXVtLn^;V&CRwqy4r%4|re@Z~POxsKXEU=TldR^h6W#jA&|Rq@_UEGH X$=+;dD(m^bO6~bil^=7bC41w)#`Ax9 diff --git a/res/translations/mixxx_es_AR.ts b/res/translations/mixxx_es_AR.ts index d5d347da64dd..3730272e2093 100644 --- a/res/translations/mixxx_es_AR.ts +++ b/res/translations/mixxx_es_AR.ts @@ -294,12 +294,12 @@ BaseSqlTableModel - + # # - + Timestamp Marca de tiempo @@ -315,137 +315,137 @@ BaseTrackTableModel - + Album Album - + Album Artist Artista del Album - + Artist Artista - + Bitrate Tasa de bits - + BPM BPM - + Channels Canales - + Color Color - + Comment Comentario - + Composer Compositor - + Cover Art Portada - + Date Added Fecha de Agregado - + Last Played Última reproducción - + Duration Duración - + Type Tipo - + Genre Genero - + Grouping Agrupación - + Key Clave - + Location Ubicación - + Preview Preescucha - + Rating Calificación - + ReplayGain Reproducir otra vez - + Samplerate Tasa de muestreo - + Played Reproducido - + Title Título - + Track # Pista n.º - + Year Año - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk Recuperando imagen... @@ -3867,12 +3867,12 @@ trace - Arriba + Perfilar mensajes Antiguos colaboradores - + Official Website Sitio web oficial - + Donate Donar @@ -3928,7 +3928,7 @@ trace - Arriba + Perfilar mensajes - + Analyze Analizar @@ -3973,17 +3973,17 @@ trace - Arriba + Perfilar mensajes Ejecuta el análisis de cuadrícula de tempo, clave musical y ReplayGain en las pistas seleccionadas. No genera formas de onda para las pistas seleccionadas para ahorrar espacio en disco. - + Stop Analysis Detener análisis - + Analyzing %1% %2/%3 Analizando %1% %2/%3 - + Analyzing %1/%2 Analizando %1/%2 @@ -7291,138 +7291,137 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y DlgPrefSound - + %1 Hz %1 Hz - + Default (long delay) Por Defecto (mas retardo) - + Experimental (no delay) Experimental (sin retardo) - + Disabled (short delay) Desactivado (poco retardo) - + Soundcard Clock Reloj de la tarjeta de sonido - + Network Clock Reloj de red - + Direct monitor (recording and broadcasting only) Monitorización directa (solo grabación y emisión en vivo) - + Disabled Desactivado - + Enabled Habilitado - + Stereo Estéreo - + Mono Mono - + To enable Realtime scheduling (currently disabled), see the %1. Para activar el Planificador en tiempo real (actualmente desactivado), mira %1. - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 muestra una lista de tarjetas de sonido y controladores que podrías considerar para utilizar con Mixxx - + Mixxx DJ Hardware Guide Guía de Hardware DJ de Mixxx - + auto (<= 1024 frames/period) auto (<= 1024 fotogramas/período) - + 2048 frames/period 2048 fotogramas/período - + 4096 frames/period 4096 fotogramas/período - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. La entrada de micrófono está desincronizada respecto la grabación y emisión comparado con la señal que se oye. - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Mide la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - - + Refer to the Mixxx User Manual for details. Para más detalles, lea el manual de usuario de Mixxx. - + Configured latency has changed. La latencia configurada ha cambiado. - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Vuelve a medir la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - + Realtime scheduling is enabled. La planificación en Tiempo Real está activada. - + Main output only Solo Salida principal - + Main and booth outputs Salidas principal y de cabina - + %1 ms %1 ms - + Configuration error Error de configuración @@ -7440,126 +7439,126 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y API de sonido - + Sample Rate Frecuencia de muestreo - + Audio Buffer Búfer de audio - + Engine Clock Relog del motor - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. Usa el reloj de la tarjeta de sonido para emitir a un público presente y para la menor latencia. <br>Usa el reloj de red para emitir en vivo sin un público presente. - + Main Mix Mezcla principal - + Main Output Mode Modo de Salida principal - + Microphone Monitor Mode Modo de monitorización del micrófono - + Microphone Latency Compensation Compensación de latencia del micrófono - - - - + + + + ms milliseconds ms - + 20 ms 20 ms - + Buffer Underflow Count Contador de vaciado del búfer - + 0 0 - + Keylock/Pitch-Bending Engine Bloqueo tonal/Motor de Pitch-bend - + Multi-Soundcard Synchronization Sincronización con Múltiples Tarjetas de Sonido - + Output Salida - + Input Entrada - + System Reported Latency Latencia reportada por el sistema - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. Aumente su búfer de audio si el contador de desbordamiento está aumentando o escuchas chasquidos durante la reproducción. - + Main Output Delay Retardo Salida Principal - + Headphone Output Delay Retraso/delay de la Salida de auriculares - + Booth Output Delay Retraso/delay de la salida de cabina - + Hints and Diagnostics Diagnóstico y sugerencias - + Downsize your audio buffer to improve Mixxx's responsiveness. Disminuya su búfer de audio para mejorar la velocidad de respuesta de Mixxx. - + Query Devices Consultar aparatos @@ -11746,54 +11745,54 @@ pueden introducir un efecto de "bombeo" y/o distorsión. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists Listas de reproducción - + Folders Carpetas - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: - + Hot cues Accesos Directos - + Loops (only the first loop is currently usable in Mixxx) Bucles (solo el primer bucle es utilizable en Mixxx) - + Check for attached Rekordbox USB / SD devices (refresh) Buscar dispositivos de almacenamiento Rekordbox (refrescar) - + Beatgrids Grillas de pulsos - + Memory cues Cues en memoria - + (loading) Rekordbox (cargando) Rekordbox @@ -15945,12 +15944,12 @@ Carpeta: %2 Intro - Intro + Outro - Outro + @@ -16495,52 +16494,52 @@ Carpeta: %2 mixxx::CoreServices - + fonts tipos de letra - + database base de datos - + effects efectos - + audio interface interface de sonido - + decks platos - + library Biblioteca - + Choose music library directory Elija el directorio de la biblioteca de la música - + controllers Controladores - + Cannot open database No se puede abrir la base de datos - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_es_CO.qm b/res/translations/mixxx_es_CO.qm index ca11a8d5307c86f7659c3b7ae698d1a61e06dab6..f5cc3a5f8edc8fc1a12598947e80ca55e0686408 100644 GIT binary patch delta 977 zcmWNPUrbwN7{7d{BcOyIhP)o*|?c>Tu9ww zQVrI+pcH+bY}1SZZa6j8?PF^eHybv!A;Xebuo^p(Rwa^&vWzU&GRHr z;&#>CuT_)PxOrAialA%Z?&q=JNH)#GBr>Kf5E0WwC%`|xDiliuXrNSaHD6v4+2Z4% zgVt?mr=+!6+_lEAVIzBSuVB*UI7Mwe{EJ_NZc_j^*-KaWd#kiw8sLY2pkBKdbs}od zpw@(4Jzi$+%VPJgTTGh#1EKP-nR&|yw3#+m^!_LY_FQMuCruRIc+dLzHN@R6CcQCE zVMi~jDeX{EMwYUGU zyA*ve2N!9T6?`H?kxC!RDOo9FKk0^6P`)ySJv3j{$gkZLxvEj{nF|!GE+8g?vIPFY zdD7fZ@bjybaEIZfg1eD__c!?-TC*-Ln2!w~VbbC&!uxO==U09d;YaeoKGJGr%!z1C zgu_Pbn`H#ZS=+oDRb8}?Z*erkCvdxl9D{v>&8V#BPZZ_`&yT0TIjtx1fCp>1j4L-P1^9H4dI z1i!vS@uo2PX}w9oA@XgX22pl<68DLC^91;%3^`kpFj1x@h*=@GR)BwWMfloO80S$% zfl6s5j%HGyT;nGf$k*PBXGFZ+NED=CM;>EBeag?dK2HgM$dOpK9=kQn*p%V_9cI$p zKUDC4&%a%vtXjk0(M3V^05;)yx)FTw9%-Fk#6_ahSnn(ib!E{>O1Bpw3U^QNbAM5x zI|08)^mt4trPPibd^FYP#X-vSg>jU8&!$~(l|1TfVC?7i5>MATW?l)Dc#fQ8lKwc^ z`_tGV^nRn~^i|RVDvD`7AR|thKm<`zf(3+0*{Q%v(VgpfRYab%bE8rGc@5YrR(Bgy ze1UwSX}nF@ke`dYBx|RwXYbg**?*KtXHJo>HS!yuk!2tQkUr1?_n2)kZX1LFH!vBP X4T@5>L1`_P+Po@xi&L?@WbODL$B|_N delta 1053 zcmZ9KQA}HP6vqGGzvUL1VOb?~9mqxJxC4wG8B(?&6>u~xgPSpJ=eBT((Xp6~8*$LM zEaAb7sxdG;V~8>9*aR}8spD^~TZEgTrsCK-A6&QStP2y+2kL{77ec)cK6#Sgc{urU z@|~0K(!-*`-;2%^WBH04r-o*P0NVZHu6LCut7#ESO^Wc|d;j@K+L5gJ;^P3GK znf)Q8LxW5@y-d2@3!NtIyQCZDV8Aa@_Aqjev*WJ{CQUDpzM++0@d;yt4>(1c+(kaz zNK20d_`5meb9m4%bVnRz8VpLvQRZlAd}MZo4fg*)6z9+-%-IOYfVTMMEs`-4CNEG#g zUv!ecID-emFH7JbZ6vkiY5rv+^_A#&gVH6{{8oUJ$5-sLdDhXcVJ2O_E958YIRBhf5Uog>jC&&#myWJW}dad@4fqrXxZA#xzpG`+O7Uw=LAy)b2d9 z%|3dsi?NY;`{?>RO!_!T>83k8-av7GDSy90r2PtTRJfX}!Drh@-Q&T6=-Xpv`8Eaj zCNV*t77wnG)-u4wiE!q4OhW^jW%2Yfg}`hiva zB067kaPy+jAq}`Ll84PG8l<#G@CU`)oA?(k^wf`H$JOs>R_U zqoWq5-dgJjuXVtLn^;V&CRwqy4r%4|re@Z~POxsKXEU=TldR^h6W#jA&|Rq@_UEGH X$=+;dD(m^bO6~bil^=7bC41w)#`Ax9 diff --git a/res/translations/mixxx_es_CO.ts b/res/translations/mixxx_es_CO.ts index 21c2d8c5b802..d0eb7ac575c3 100644 --- a/res/translations/mixxx_es_CO.ts +++ b/res/translations/mixxx_es_CO.ts @@ -294,12 +294,12 @@ BaseSqlTableModel - + # # - + Timestamp Marca de tiempo @@ -315,137 +315,137 @@ BaseTrackTableModel - + Album Album - + Album Artist Artista del Album - + Artist Artista - + Bitrate Tasa de bits - + BPM BPM - + Channels Canales - + Color Color - + Comment Comentario - + Composer Compositor - + Cover Art Portada - + Date Added Fecha de Agregado - + Last Played Última reproducción - + Duration Duración - + Type Tipo - + Genre Genero - + Grouping Agrupación - + Key Clave - + Location Ubicación - + Preview Preescucha - + Rating Calificación - + ReplayGain Reproducir otra vez - + Samplerate Tasa de muestreo - + Played Reproducido - + Title Título - + Track # Pista n.º - + Year Año - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk Recuperando imagen... @@ -3867,12 +3867,12 @@ trace - Arriba + Perfilar mensajes Antiguos colaboradores - + Official Website Sitio web oficial - + Donate Donar @@ -3928,7 +3928,7 @@ trace - Arriba + Perfilar mensajes - + Analyze Analizar @@ -3973,17 +3973,17 @@ trace - Arriba + Perfilar mensajes Ejecuta el análisis de cuadrícula de tempo, clave musical y ReplayGain en las pistas seleccionadas. No genera formas de onda para las pistas seleccionadas para ahorrar espacio en disco. - + Stop Analysis Detener análisis - + Analyzing %1% %2/%3 Analizando %1% %2/%3 - + Analyzing %1/%2 Analizando %1/%2 @@ -7291,138 +7291,137 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y DlgPrefSound - + %1 Hz %1 Hz - + Default (long delay) Por Defecto (mas retardo) - + Experimental (no delay) Experimental (sin retardo) - + Disabled (short delay) Desactivado (poco retardo) - + Soundcard Clock Reloj de la tarjeta de sonido - + Network Clock Reloj de red - + Direct monitor (recording and broadcasting only) Monitorización directa (solo grabación y emisión en vivo) - + Disabled Desactivado - + Enabled Habilitado - + Stereo Estéreo - + Mono Mono - + To enable Realtime scheduling (currently disabled), see the %1. Para activar el Planificador en tiempo real (actualmente desactivado), mira %1. - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 muestra una lista de tarjetas de sonido y controladores que podrías considerar para utilizar con Mixxx - + Mixxx DJ Hardware Guide Guía de Hardware DJ de Mixxx - + auto (<= 1024 frames/period) auto (<= 1024 fotogramas/período) - + 2048 frames/period 2048 fotogramas/período - + 4096 frames/period 4096 fotogramas/período - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. La entrada de micrófono está desincronizada respecto la grabación y emisión comparado con la señal que se oye. - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Mide la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - - + Refer to the Mixxx User Manual for details. Para más detalles, lea el manual de usuario de Mixxx. - + Configured latency has changed. La latencia configurada ha cambiado. - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Vuelve a medir la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - + Realtime scheduling is enabled. La planificación en Tiempo Real está activada. - + Main output only Solo Salida principal - + Main and booth outputs Salidas principal y de cabina - + %1 ms %1 ms - + Configuration error Error de configuración @@ -7440,126 +7439,126 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y API de sonido - + Sample Rate Frecuencia de muestreo - + Audio Buffer Búfer de audio - + Engine Clock Relog del motor - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. Usa el reloj de la tarjeta de sonido para emitir a un público presente y para la menor latencia. <br>Usa el reloj de red para emitir en vivo sin un público presente. - + Main Mix Mezcla principal - + Main Output Mode Modo de Salida principal - + Microphone Monitor Mode Modo de monitorización del micrófono - + Microphone Latency Compensation Compensación de latencia del micrófono - - - - + + + + ms milliseconds ms - + 20 ms 20 ms - + Buffer Underflow Count Contador de vaciado del búfer - + 0 0 - + Keylock/Pitch-Bending Engine Bloqueo tonal/Motor de Pitch-bend - + Multi-Soundcard Synchronization Sincronización con Múltiples Tarjetas de Sonido - + Output Salida - + Input Entrada - + System Reported Latency Latencia reportada por el sistema - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. Aumente su búfer de audio si el contador de desbordamiento está aumentando o escuchas chasquidos durante la reproducción. - + Main Output Delay Retardo Salida Principal - + Headphone Output Delay Retraso/delay de la Salida de auriculares - + Booth Output Delay Retraso/delay de la salida de cabina - + Hints and Diagnostics Diagnóstico y sugerencias - + Downsize your audio buffer to improve Mixxx's responsiveness. Disminuya su búfer de audio para mejorar la velocidad de respuesta de Mixxx. - + Query Devices Consultar aparatos @@ -11746,54 +11745,54 @@ pueden introducir un efecto de "bombeo" y/o distorsión. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists Listas de reproducción - + Folders Carpetas - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: - + Hot cues Accesos Directos - + Loops (only the first loop is currently usable in Mixxx) Bucles (solo el primer bucle es utilizable en Mixxx) - + Check for attached Rekordbox USB / SD devices (refresh) Buscar dispositivos de almacenamiento Rekordbox (refrescar) - + Beatgrids Grillas de pulsos - + Memory cues Cues en memoria - + (loading) Rekordbox (cargando) Rekordbox @@ -15945,12 +15944,12 @@ Carpeta: %2 Intro - Intro + Outro - Outro + @@ -16495,52 +16494,52 @@ Carpeta: %2 mixxx::CoreServices - + fonts tipos de letra - + database base de datos - + effects efectos - + audio interface interface de sonido - + decks platos - + library Biblioteca - + Choose music library directory Elija el directorio de la biblioteca de la música - + controllers Controladores - + Cannot open database No se puede abrir la base de datos - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_es_ES.qm b/res/translations/mixxx_es_ES.qm index fbd58c3fdb9dfe6eb9990afa6df602f6f862aa12..f9f3a131eeb4289d2ab7b076e82e70e18856a280 100644 GIT binary patch delta 921 zcmWlXU2Icz7{<@@cAU~~+H@dwYwf9vS;vg4bB+Rz9SEk!EUq2X^ynPxVxl#1lnWyb zH;zeTGZ}R7I?7O2foLV-D*R{I9q`lPC!-_hT9 zU6K#QIAq^Ir>}C(W4< zsH_iyM!sil!xcKVz-C7T9*#PKl)BA%$39Bj5Wc&;zzeL`sd$mob)EF(G?(h)xWJ)$ z2Oi*P{f~7CQ`gvp1p7~>uBBrV*0Cx0RY;OYAL5A9k9JNw-E`yz=bZ`;bICbFm;U9H z%a4~t!4(H~vFg4Jk5Cme(8HR?hgUi7iP6~$yz23ziIscHmQdAXY(kPRIfSD@CB%h( z-yfjyA6RQtP%om5F`^H%TxxRDp>Mg;6hc318#7RNb)y%JY-`rAhxKMReRNI4n{6`O zoP02iw^?ab5N5SC4xh-k76CIS+oG0$`To*bNzRRPr7dOIX70V`iX_ifbL!z~I{dRx z+w=b`E1Qa_=7RqSeO+OFbBrd+T-dDQE;et;!pgZV)AZg4BC<6FJj>-ra+u;whmLKc z(%}Gh3tOiKL#?ZwbY_Lq>T5K1o|WxogxIztNJp=U$c_cj>x=B$S%zCEk7mg3w@zM< zNz(B)>*TFbNq*}%7Xu}Xa8~moAc~qB^m$g4AM*o8+1u4Zqkjp#s|4J^zQ>p7;!QSp zx6nKPu)jNnH$|=bl)gQ@@GfCyfvTYzu2R z!+Kaj1INR0qx^E%SkB57y^}tBm;Fzb;S}DdZDiQ>KNA61r2CDhoxH`XyQgUGGA9Q# zjB#-wYf0GVhE7QG>Fqom*+hlEIUkwD5XT2QFqEF{F}c(8-=XH<@?dg#5C&vmGN>|G blV2W`ZyrdGeIwWBt5@WRIe+38`B(Kn9{*L= delta 996 zcmZ9KU2Icj7{}lL+wF8~CbeU(?8Ba63}sVSmkrKdJHxP&Ozx{5CiM@Jr$WJt6s~aa zh)Q~ejQfYbu2S$0SywL> zUd$T_oMqDV>%#n)%5h6*kN*LFdIKqIWb_E{ngHh$CQ7b#@KaAwcC80rlTsbSo0P70 z;soWYHJm4{#=$Q&2!D-LLNA4$j^b~!*2(yiTy-G~2)%9=M&eMtzi{0AMEU}gCV!`F zeWY;2-1_JYldk#cc*6uA+$LP>;=nq}uAhaU;>sXT?j@};z=xluc%zEfXsJ=hVTx^- z;JR6OHb#IM%50j%GDVua7!lbfJ8)U#p3z{~n%c}iX{NCH9{=DWvTk0)Mape<^D_;? zvn2&SP)qXGMf3{mwivgOW#o2%vEh2l$Upr|8vTnB+tav9QO${QkGAkQE_p6Zl-d27{97GPcM2n!Z4qa=g;oq?_+!RS~@Dv9>q elq%yt-jjUhatrgY?*FTv?*G*IllP_H)PDgRhiNYW diff --git a/res/translations/mixxx_es_ES.ts b/res/translations/mixxx_es_ES.ts index b43a55b1b083..a1375965e215 100644 --- a/res/translations/mixxx_es_ES.ts +++ b/res/translations/mixxx_es_ES.ts @@ -294,12 +294,12 @@ BaseSqlTableModel - + # # - + Timestamp Marca de tiempo @@ -315,137 +315,137 @@ BaseTrackTableModel - + Album Álbum - + Album Artist Artista del álbum - + Artist Artista - + Bitrate Tasa de bits - + BPM BPM - + Channels Canales - + Color Color - + Comment Comentario - + Composer Compositor - + Cover Art Carátula - + Date Added Fecha añadida - + Last Played Última reproducción - + Duration Duración - + Type Tipo - + Genre Género - + Grouping Grupo - + Key Clave - + Location Ubicación - + Preview Preescucha - + Rating Puntuación - + ReplayGain Ganancia de reproducción - + Samplerate Velocidad de muestreo - + Played Reproducido - + Title Título - + Track # Pista n.º - + Year Año - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk Recuperando imagen... @@ -3867,12 +3867,12 @@ trace - Arriba + Perfilar mensajes Antiguos colaboradores - + Official Website Sitio web oficial - + Donate Donar @@ -3928,7 +3928,7 @@ trace - Arriba + Perfilar mensajes - + Analyze Analizar @@ -3973,17 +3973,17 @@ trace - Arriba + Perfilar mensajes Ejecuta el análisis de cuadrícula de tempo, clave musical y ReplayGain en las pistas seleccionadas. No genera formas de onda para las pistas seleccionadas para ahorrar espacio en disco. - + Stop Analysis Detener análisis - + Analyzing %1% %2/%3 Analizando %1% %2/%3 - + Analyzing %1/%2 Analizando %1/%2 @@ -7291,138 +7291,137 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y DlgPrefSound - + %1 Hz %1 Hz - + Default (long delay) Por Defecto (mas retardo) - + Experimental (no delay) Experimental (sin retardo) - + Disabled (short delay) Desactivado (poco retardo) - + Soundcard Clock Reloj de la tarjeta de sonido - + Network Clock Reloj de red - + Direct monitor (recording and broadcasting only) Monitorización directa (solo grabación y emisión en vivo) - + Disabled Desactivado - + Enabled Activado - + Stereo Estéreo - + Mono Mono - + To enable Realtime scheduling (currently disabled), see the %1. Para activar el Planificador en tiempo real (actualmente desactivado), mira %1. - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 muestra una lista de tarjetas de sonido y controladores que podrías considerar para utilizar con Mixxx - + Mixxx DJ Hardware Guide Guía de Hardware DJ de Mixxx - + auto (<= 1024 frames/period) auto (<= 1024 fotogramas/período) - + 2048 frames/period 2048 fotogramas/período - + 4096 frames/period 4096 fotogramas/período - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. La entrada de micrófono está desincronizada respecto la grabación y emisión comparado con la señal que se oye. - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Mide la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - - + Refer to the Mixxx User Manual for details. Para más detalles, lea el manual de usuario de Mixxx. - + Configured latency has changed. La latencia configurada ha cambiado. - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Vuelve a medir la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - + Realtime scheduling is enabled. La planificación en Tiempo Real está activada. - + Main output only Solo Salida principal - + Main and booth outputs Salidas principal y de cabina - + %1 ms %1 ms - + Configuration error Error de configuración @@ -7440,126 +7439,126 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y API de sonido - + Sample Rate Frecuencia de muestreo - + Audio Buffer Búfer de audio - + Engine Clock Relog del motor - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. Usa el reloj de la tarjeta de sonido para emitir a un público presente y para la menor latencia. <br>Usa el reloj de red para emitir en vivo sin un público presente. - + Main Mix Mezcla principal - + Main Output Mode Modo de Salida principal - + Microphone Monitor Mode Modo de monitorización del micrófono - + Microphone Latency Compensation Compensación de latencia del micrófono - - - - + + + + ms milliseconds ms - + 20 ms 20 ms - + Buffer Underflow Count Contador de vaciado del búfer - + 0 0 - + Keylock/Pitch-Bending Engine Bloqueo tonal/Motor de Pitch-bend - + Multi-Soundcard Synchronization Sincronización con Múltiples Tarjetas de Sonido - + Output Salida - + Input Entrada - + System Reported Latency Latencia reportada por el sistema - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. Aumente su búfer de audio si el contador de desbordamiento está aumentando o escuchas chasquidos durante la reproducción. - + Main Output Delay Retardo Salida Principal - + Headphone Output Delay Retraso/delay de la Salida de auriculares - + Booth Output Delay Retraso/delay de la salida de cabina - + Hints and Diagnostics Diagnóstico y sugerencias - + Downsize your audio buffer to improve Mixxx's responsiveness. Disminuya su búfer de audio para mejorar la velocidad de respuesta de Mixxx. - + Query Devices Consultar aparatos @@ -11746,54 +11745,54 @@ pueden introducir un efecto de "bombeo" y/o distorsión. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists Listas de reproducción - + Folders Carpetas - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: - + Hot cues Accesos Directos - + Loops (only the first loop is currently usable in Mixxx) Bucles (solo el primer bucle es utilizable en Mixxx) - + Check for attached Rekordbox USB / SD devices (refresh) Buscar dispositivos de almacenamiento Rekordbox (refrescar) - + Beatgrids Grillas de pulsos - + Memory cues Cues en memoria - + (loading) Rekordbox (cargando) Rekordbox @@ -15945,12 +15944,12 @@ Carpeta: %2 Intro - Intro + Outro - Outro + @@ -16495,52 +16494,52 @@ Carpeta: %2 mixxx::CoreServices - + fonts tipos de letra - + database base de datos - + effects efectos - + audio interface interface de sonido - + decks platos - + library Biblioteca - + Choose music library directory Elija el directorio de la biblioteca de la música - + controllers Controladores - + Cannot open database No se puede abrir la base de datos - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_es_MX.qm b/res/translations/mixxx_es_MX.qm index 24d7fc7461f02f0877889d0e54ee1e007993fb59..a2b46824a2a9dcfb0c97c52c537b4bc3da84dc71 100644 GIT binary patch delta 982 zcmWNPUu;u#9L0a<*Y0-QY%6SYwQlSdqbsY%vJBd>Y`ZQqy>ZzenM;dEb~g-66I|gz zD#oPhtd&gH=@%SR!`LQF)L7v+s7A0Epv}VM@L8us!|!K8C>iWYS6Z+;U-feN_DUbM&$F40O+kRSMkI_+L~MAV)^ zwFTQcyv*8VVEeY~Od9zEJ*5|!b;C>0Cz@E^M=zpx$7LpcQAgo5_vNoIA?|WA>75}8 z7k8qP(#0A|$W{_8K7I#t69!`~Z(+`Og-K`EQn)0IKJu0>ph(ys=mhqXUY159DGnVm ziaI*+E*XvpUKQGdRp3MaQrOwV&t0LUQ#E6koe`&IvHv>9__sGL#YZ}rRot>Tjtwv= z^C3kaT7Z-E@-jZ0p-8zOrIajJu$v51%V@bgg&j0q;p3OCiG_-N;1g#kRGC9egcJ$< zlhdTTp5UjKDB%jjK{=O?|NJ-k*WHz8XRKobhnO_`y6`^S#QFIfBK*iQu#5C61ydqg z72znLmGugO|m!1AA!2 zKg=)BQM@jUZd$2R@f!IzkAoOGUOxP+ zs?aE{#!*k&lXv;i8S*!G;u#TdHXDT~)Uu30p*VuAWCW|hcKyIRmc?Gx`H=ET>9s7^F4>Re+F*0-?zw#B?dNTkSy$x`UdT&UcL0@0o e*9Q}BVllCrpbbfDR|5yu+M z5)#d*8bdeFSjCuiYyz3l)bTfVEI7l#fxZ}dquwVUJjw4ooP0U? z&dGOSu_W|o$;nbYxFp9o?ox_3^T7=y8z!KNgdqitiAc^_@QbqWm;ykEV!5UKMx#jO zegbKKh)E|Nl4f>8qY3j4>AF4`@`|)Mh`b~0$g6@$QwyZ6Yv-3dBEHT89H(sl5+81& z9O2v0f%6R!G~JMn5UVMLe{Lx{KXtq)4%hA1SW)K1vtIFiqi-8a`Jok|oE$ z&s)h`n#FzLl_l^`*OOBAH20k-zE~KUE--RY~Y}Bijy{ub51gsf$dC?IufgC~wWw@z^wz=H_UkI*J>@ z|4bbCiEQp9=4jbH#FLvTP^;l9TCVkAo}Akw$WUT?6o*A%#}N3`CNkAUp;D~Qk2PU= zwg`NzR5}zy{3HU zu1RKGYRz{JpJP(;J<9Hh<4X~LLBI2yOp4EoS19b0u|P3j0KbvTpT%`@?e*XgX?s_3 zM|8hr;rc~^{VH%(qz>p&jFYo7g1;!y+04IgBa1q2p4@5q;qb?L)tk9j(@WCHY3V)Mr-k46 bLn@3tT#{V5x=LaF|5qvf|EcU5$=viWH70x6 diff --git a/res/translations/mixxx_es_MX.ts b/res/translations/mixxx_es_MX.ts index 89d62ce862a6..83cd17749938 100644 --- a/res/translations/mixxx_es_MX.ts +++ b/res/translations/mixxx_es_MX.ts @@ -294,12 +294,12 @@ BaseSqlTableModel - + # # - + Timestamp Marca de tiempo @@ -315,137 +315,137 @@ BaseTrackTableModel - + Album Album - + Album Artist Artista del Album - + Artist Artista - + Bitrate Tasa de Muestreo - + BPM BPM - + Channels Canales - + Color Color - + Comment Comentario - + Composer Compositor - + Cover Art Portada - + Date Added Fecha de Agregado - + Last Played Última reproducción - + Duration Duración - + Type Tipo - + Genre Genero - + Grouping Agrupación - + Key Tono - + Location Ubicación - + Preview Vista Previa - + Rating Calificación - + ReplayGain Reproducir otra vez - + Samplerate Tasa de muestreo - + Played Reproducido - + Title Título - + Track # Pista # - + Year Año - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk Recuperando imagen... @@ -3867,12 +3867,12 @@ trace - Arriba + Perfilar mensajes Antiguos colaboradores - + Official Website Sitio web oficial - + Donate Donar @@ -3928,7 +3928,7 @@ trace - Arriba + Perfilar mensajes - + Analyze Analizar @@ -3973,17 +3973,17 @@ trace - Arriba + Perfilar mensajes Ejecuta el análisis de cuadrícula de tempo, clave musical y ReplayGain en las pistas seleccionadas. No genera formas de onda para las pistas seleccionadas para ahorrar espacio en disco. - + Stop Analysis Detener análisis - + Analyzing %1% %2/%3 Analizando %1% %2/%3 - + Analyzing %1/%2 Analizando %1/%2 @@ -7291,138 +7291,137 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y DlgPrefSound - + %1 Hz %1 Hz - + Default (long delay) Por Defecto (mas retardo) - + Experimental (no delay) Experimental (sin retardo) - + Disabled (short delay) Desactivado (poco retardo) - + Soundcard Clock Reloj de la tarjeta de sonido - + Network Clock Reloj de red - + Direct monitor (recording and broadcasting only) Monitorización directa (solo grabación y emisión en vivo) - + Disabled Desactivado - + Enabled Habilitado - + Stereo Estéreo - + Mono Mono - + To enable Realtime scheduling (currently disabled), see the %1. Para activar el Planificador en tiempo real (actualmente desactivado), mira %1. - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 muestra una lista de tarjetas de sonido y controladores que podrías considerar para utilizar con Mixxx - + Mixxx DJ Hardware Guide Guía de Hardware DJ de Mixxx - + auto (<= 1024 frames/period) auto (<= 1024 fotogramas/período) - + 2048 frames/period 2048 fotogramas/período - + 4096 frames/period 4096 fotogramas/período - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. La entrada de micrófono está desincronizada respecto la grabación y emisión comparado con la señal que se oye. - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Mide la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - - + Refer to the Mixxx User Manual for details. Para más detalles, lea el manual de usuario de Mixxx. - + Configured latency has changed. La latencia configurada ha cambiado. - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Vuelve a medir la latencia total e introducela en la Compensacion de latencia del micrófono para sincronizar el micrófono. - + Realtime scheduling is enabled. La planificación en Tiempo Real está activada. - + Main output only Solo Salida principal - + Main and booth outputs Salidas principal y de cabina - + %1 ms %1 ms - + Configuration error Error de configuración @@ -7440,126 +7439,126 @@ El objetivo de sonoridad es aproximado y asume que la preganancia de la pista y API de sonido - + Sample Rate Frecuencia de muestreo - + Audio Buffer Búfer de audio - + Engine Clock Relog del motor - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. Usa el reloj de la tarjeta de sonido para emitir a un público presente y para la menor latencia. <br>Usa el reloj de red para emitir en vivo sin un público presente. - + Main Mix Mezcla principal - + Main Output Mode Modo de Salida principal - + Microphone Monitor Mode Modo de monitorización del micrófono - + Microphone Latency Compensation Compensación de latencia del micrófono - - - - + + + + ms milliseconds ms - + 20 ms 20 ms - + Buffer Underflow Count Contador de vaciado del búfer - + 0 0 - + Keylock/Pitch-Bending Engine Bloqueo tonal/Motor de Pitch-bend - + Multi-Soundcard Synchronization Sincronización con Múltiples Tarjetas de Sonido - + Output Salida - + Input Entrada - + System Reported Latency Latencia reportada por el sistema - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. Aumente su búfer de audio si el contador de desbordamiento está aumentando o escuchas chasquidos durante la reproducción. - + Main Output Delay Retardo Salida Principal - + Headphone Output Delay Retraso/delay de la Salida de auriculares - + Booth Output Delay Retraso/delay de la salida de cabina - + Hints and Diagnostics Diagnóstico y sugerencias - + Downsize your audio buffer to improve Mixxx's responsiveness. Disminuya su búfer de audio para mejorar la velocidad de respuesta de Mixxx. - + Query Devices Consultar aparatos @@ -11746,54 +11745,54 @@ pueden introducir un efecto de "bombeo" y/o distorsión. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists Listas de reproducción - + Folders Carpetas - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: - + Hot cues Accesos Directos - + Loops (only the first loop is currently usable in Mixxx) Bucles (solo el primer bucle es utilizable en Mixxx) - + Check for attached Rekordbox USB / SD devices (refresh) Buscar dispositivos de almacenamiento Rekordbox (refrescar) - + Beatgrids Grillas de pulsos - + Memory cues Cues en memoria - + (loading) Rekordbox (cargando) Rekordbox @@ -15945,12 +15944,12 @@ Carpeta: %2 Intro - Intro + Outro - Outro + @@ -16495,52 +16494,52 @@ Carpeta: %2 mixxx::CoreServices - + fonts tipos de letra - + database base de datos - + effects efectos - + audio interface interface de sonido - + decks platos - + library Biblioteca - + Choose music library directory Elija el directorio de la biblioteca de la música - + controllers Controladores - + Cannot open database No se puede abrir la base de datos - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_fr.qm b/res/translations/mixxx_fr.qm index c75b153f2e8fc2c604fa4c7a4310a31dc05a8119..1831ed65f3c88ad0812b285fbc18babcb8505666 100644 GIT binary patch delta 24595 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

=aL2*AE1^xs;5o8UKZL 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 z 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 bBI)2!$?}`hqY{7g{E_*i - + Export Playlist Exporter la liste de lecture @@ -260,13 +260,13 @@ - + Playlist Creation Failed La création de la liste de lecture a échouée - + An unknown error occurred while creating playlist: Une erreur inconnue s'est produite à la création de la liste de lecture : @@ -281,12 +281,12 @@ Voulez-vous vraiment supprimer la liste de lecture <b>%1</b>? - + M3U Playlist (*.m3u) Liste de lecture M3U (*.m3u) - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) Liste de lecture M3U (*.m3u);;Liste de lecture M3U8 (*.m3u8);;Liste de lecture PLS (*.pls);;Texte CSV (*.csv);;Texte (*.txt) @@ -294,12 +294,12 @@ BaseSqlTableModel - + # - + Timestamp Horodatage @@ -315,137 +315,137 @@ BaseTrackTableModel - + Album Album - + Album Artist Artiste de l'album - + Artist Artiste - + Bitrate Débit - + BPM BPM - + Channels Canaux - + Color Couleur - + Comment Commentaire - + Composer Compositeur - + Cover Art Pochette d'album - + Date Added Date d'ajout - + Last Played Dernière écoute - + Duration Durée - + Type Type - + Genre Genre - + Grouping Regroupement - + Key Tonalité - + Location Emplacement - + Preview Aperçu - + Rating Notation - + ReplayGain ReplayGain - + Samplerate Taux d'échantillonnage - + Played Joué - + Title Titre - + Track # Piste n° - + Year Année - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk Récupération de l'image... @@ -3696,7 +3696,7 @@ trace : ci-dessus + messages de profilage Importer un bac - + Export Crate Exporter un bac @@ -3706,7 +3706,7 @@ trace : ci-dessus + messages de profilage Déverrouiller - + An unknown error occurred while creating crate: Une erreur inconnue s'est produite lors de la création du bac : @@ -3732,17 +3732,17 @@ trace : ci-dessus + messages de profilage Le renommage du bac a échoué - + Crate Creation Failed Échec de création d'un bac - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) Liste de lecture M3U (*.m3u);;Liste de lecture M3U8 (*.m3u8);;Liste de lecture PLS (*.pls);;Texte CSV (*.csv);;Texte (*.txt) - + M3U Playlist (*.m3u) Liste de lecture M3U (*.m3u) @@ -3868,12 +3868,12 @@ trace : ci-dessus + messages de profilage Anciens contributeurs - + Official Website Site Internet officiel - + Donate Donation @@ -3929,7 +3929,7 @@ trace : ci-dessus + messages de profilage - + Analyze Analyser @@ -3974,17 +3974,17 @@ trace : ci-dessus + messages de profilage Lance les détections de grille rythmique, tonalité et ReplayGain sur les pistes sélectionnées. Ne génère pas leur formes d'ondes pour économiser l'espace disque. - + Stop Analysis Arrêter l'analyse - + Analyzing %1% %2/%3 Analyse %1% %2/%3% - + Analyzing %1/%2 Analyse %1/%2 @@ -3992,22 +3992,22 @@ trace : ci-dessus + messages de profilage DlgAutoDJ - + Skip Sauter - + Random Aléatoire - + Fade Atténue - + Enable Auto DJ Shortcut: Shift+F12 @@ -4016,16 +4016,16 @@ Shortcut: Shift+F12 Raccourci : Maj + F12 - + Disable Auto DJ Shortcut: Shift+F12 - Désctiver Auto DJ + Désactiver Auto DJ Raccourci : Maj + F12 - + Trigger the transition to the next track Shortcut: Shift+F11 @@ -4034,7 +4034,7 @@ Shortcut: Shift+F11 Raccourci : Maj + F11 - + Skip the next track in the Auto DJ queue Shortcut: Shift+F10 @@ -4043,7 +4043,7 @@ Shortcut: Shift+F10 Raccourci : Maj + F10 - + Shuffle the content of the Auto DJ queue Shortcut: Shift+F9 @@ -4052,47 +4052,47 @@ Shortcut: Shift+F9 Raccourci : Maj + F9 - + Repeat the playlist Répète la liste de lecture - + Determines the duration of the transition Détermine la durée de la transition - + Seconds Secondes - + Full Intro + Outro Intro + Outro complet - + Fade At Outro Start Atténuation au début de l'Outro - + Full Track Piste entière - + Skip Silence - Passe les silences + Passer les silences - + Decks not used for Auto DJ must be stopped to enable Auto DJ mode. Platines non utilisées pour l'Auto DJ doivent être arrêtées pour activer le mode Auto DJ. - + Auto DJ Fade Modes Full Intro + Outro: @@ -4133,56 +4133,56 @@ Joue le piste entièrement. Commence le fondu enchaîné à partir du nombre de secondes sélectionné avant la fin de la piste. Une durée de transition négative ajoute un silence entre les pistes. -Passe les silences : +Passer les silences : Joue la piste entièrement sauf les silences au début et à la fin. -Commencez le fondu enchaîné à partir du nombre de secondes sélectionné avant le +Commence le fondu enchaîné à partir du nombre de secondes sélectionné avant le dernier son. - + Repeat Répéter - + Auto DJ requires two decks assigned to opposite sides of the crossfader. Auto DJ nécessite deux platines affectées aux côtés opposés du curseur de mixage. - + One deck must be stopped to enable Auto DJ mode. Une platine doit être arrêtée pour activer le mode Auto DJ. - + Enable Active - + Disable Désactive - + Displays the duration and number of selected tracks. Affiche la durée et le nombre de piste sélectionnées - - - + + + Auto DJ Auto DJ - + Shuffle Lecture aléatoire - + Adds a random track from track sources (crates) to the Auto DJ queue. If no track sources are configured, the track is added from the library instead. Ajoute une piste aléatoirement depuis les sources de piste (bacs) dans la file Auto DJ. @@ -4397,37 +4397,37 @@ Résulte souvent en de meilleures grilles rythmiques, mais ne marchera pas bien Si l'assignation ne fonctionne pas, essayez d'activer une option avancée ci-dessous et testez le contrôle à nouveau. Ou cliquez sur Réessayer pour recommencer la détection du contrôle MIDI. - + Didn't get any midi messages. Please try again. Aucun message MIDI reçu. Veuillez réessayer. - + Unable to detect a mapping -- please try again. Be sure to only touch one control at once. Impossible de détecter une association de contrôle -- veuillez réessayer. Assurez-vous de ne toucher qu'un contrôle à la fois. - + Successfully mapped control: Contrôle assigné avec succès : - + <i>Ready to learn %1</i> <i>Prêt pour apprendre %1</i> - + Learning: %1. Now move a control on your controller. Apprentissage de : %1. Maintenant bouger un contrôle de votre contrôleur. - + The selected control does not exist.<br>This likely a bug. Please report it on the Mixxx bug tracker.<br><a href='https://github.com/mixxxdj/mixxx/issues'>https://github.com/mixxxdj/mixxx/issues</a><br><br>You tried to learn: %1,%2 Le contrôle sélectionné n'existe pas.<br>Il s'agit probablement d'un bug. Veuillez le signaler sur le bug tracker de Mixxx. <br><a href='https://github.com/mixxxdj/mixxx/issues'>https://github.com/mixxxdj/mixxx/issues</a><br><br>Vous avez essayé d'apprendre : %1,%2 - + The control you clicked in Mixxx is not learnable. This could be because you are either using an old skin and this control is no longer supported, or you clicked a control that provides visual feedback and can only be mapped to outputs like LEDs via scripts. @@ -5102,139 +5102,139 @@ Deux de source de connexions vers le même serveur, ayant le même point de mont DlgPrefController - + Apply device settings? Appliquer les paramètres du périphérique ? - + Your settings must be applied before starting the learning wizard. Apply settings and continue? Vos paramètres doivent être appliqués avant de démarrer l'assistant d'apprentissage. Appliquer les paramètres et continuer ? - + None Aucune - + %1 by %2 %1 par %2 - + No Name Pas de nom - + No Description Aucune Description - + No Author Pas d'auteur - + Mapping has been edited Le mappage à été modifié - + Always overwrite during this session Toujours écraser durant cette session - + Save As Enregistrer sous - + Overwrite Écraser - + Save user mapping Enregistrer le mappage utilisateur - + Enter the name for saving the mapping to the user folder. Entrer le nom pour enregistrer le mappage dans le dossier de l'utilisateur - + Saving mapping failed L'enregistrement du mappage à échoué - + A mapping cannot have a blank name and may not contain special characters. Un mappage ne peut pas avoir un nom vide et ne peut pas contenir des caractères spéciaux. - + A mapping file with that name already exists. Un fichier de mappage utilise déjà ce nom. - + missing manquant - + built-in intégré - + Do you want to save the changes? Voulez-vous enregistrer les modifications ? - + Troubleshooting Dépannage - + <font color='#BB0000'><b>If you use this mapping your controller may not work correctly. Please select another mapping or disable the controller.</b></font><br><br>This mapping was designed for a newer Mixxx Controller Engine and cannot be used on your current Mixxx installation.<br>Your Mixxx installation has Controller Engine version %1. This mapping requires a Controller Engine version >= %2.<br><br>For more information visit the wiki page on <a href='https://mixxx.org/wiki/doku.php/controller_engine_versions'>Controller Engine Versions</a>. <font color='#BB0000'><b>Si vous utilisez ce mappage, votre contrôleur risque de ne pas fonctionner correctement. Veuillez sélectionner un autre mappage ou désactiver le contrôleur.</b></font><br><br>Ce mappage a été conçu pour un moteur de contrôleur Mixxx plus récent et ne peut pas être utilisé sur votre installation de Mixxx actuelle.<br>Votre installation de Mixxx a la version Controller Engine %1. Ce mappage nécessite une version de Controller Engine >= %2.<br><br>Pour plus d'informations, visitez la page wiki sur<a href='https://mixxx.org/wiki/doku.php/controller_engine_versions'>Versions de Controller Engine</a>. - + Mapping already exists. Le mappage existe déjà. - + <b>%1</b> already exists in user mapping folder.<br>Overwrite or save with a new name? <b>%1</b> existe déjà dans le dossier des mappages de l'utilisateur.<br>Écraser ou utiliser un autre nom ? - + Clear Input Mappings Effacer les associations de contrôles d'entrées - + Are you sure you want to clear all input mappings? Voulez-vous vraiment effacer toutes les associations de contrôles d'entrées ? - + Clear Output Mappings Effacer les associations de contrôles de sorties - + Are you sure you want to clear all output mappings? Voulez-vous vraiment effacer toutes les associations de contrôles de sortie ? @@ -5530,7 +5530,7 @@ Appliquer les paramètres et continuer ? Mixxx mode (no blinking) - mode Mixxx (sans clignottement) + mode Mixxx (sans clignotement) @@ -7313,138 +7313,137 @@ L'intensité sonore visée est approximatif et suppose que les gains d&apos DlgPrefSound - + %1 Hz %1 Hz - + Default (long delay) Par défaut (délai long) - + Experimental (no delay) Expérimental (sans délai) - + Disabled (short delay) Désactivé (délai court) - + Soundcard Clock Horloge carte son - + Network Clock Horloge réseau - + Direct monitor (recording and broadcasting only) Moniteur direct (seulement enregistrement et diffusion) - + Disabled Désactivé - + Enabled Activé - + Stereo Stéréo - + Mono Mono - + To enable Realtime scheduling (currently disabled), see the %1. Pour activer la planification en temps réel (actuellement désactivée), consulter le %1. - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. Le %1 répertorie les cartes son et les contrôleurs que vous pouvez envisager d'utiliser avec Mixxx. - + Mixxx DJ Hardware Guide Guide Mixxx du matériel DJ - + auto (<= 1024 frames/period) auto (<= 1024 images/période) - + 2048 frames/period 2048 images/période - + 4096 frames/period 4096 images/période - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. Les entrées microphone sont à contretemps dans l'enregistrement et le signal diffusé, comparées à ce que vous entendez. - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Mesurer la latence du trajet aller-retour et entrez-la ci-dessus pour la compensation de latence du microphone afin d'aligner la synchronisation du microphone. - - + Refer to the Mixxx User Manual for details. Se référer au manuel utilisateur de Mixxx pour les détails. - + Configured latency has changed. La latence configurée à changé. - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. Réinitialisez la latence du trajet aller-retour et entrez-la ci-dessus pour la compensation de latence du microphone afin d'aligner la synchronisation du microphone. - + Realtime scheduling is enabled. La planification en temps réel est activé. - + Main output only Sortie principale seulement - + Main and booth outputs Sorties principale et cabine - + %1 ms %1 ms - + Configuration error Erreur de configuration @@ -7462,126 +7461,126 @@ L'intensité sonore visée est approximatif et suppose que les gains d&apos API sonore - + Sample Rate Taux d'échantillonnage - + Audio Buffer Tampon audio - + Engine Clock Moteur de l'horloge - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. Utiliser l'horloge de la carte son pour les réglages d'un publique en direct et la plus faible latence.<br>Utiliser l'horloge réseau pour la diffusion sans un publique en direct. - + Main Mix Mix principal - + Main Output Mode Mode Sortie principale - + Microphone Monitor Mode Mode moniteur microphone - + Microphone Latency Compensation Compensation latence du microphone - - - - + + + + ms milliseconds ms - + 20 ms 20 ms - + Buffer Underflow Count Compteur de sous-alimentation du tampon - + 0 0 - + Keylock/Pitch-Bending Engine Moteur de Verrouillage de tonalité/Distorsion de hauteur tonale - + Multi-Soundcard Synchronization Synchronisation de plusieurs cartes-son - + Output Sortie - + Input Entrée - + System Reported Latency Latence indiquée par le système - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. Augmentez le tampon audio si le compteur de sous-alimentation augmente ou si des pops se font entendre pendant la lecture. - + Main Output Delay Délai de la sortie principale - + Headphone Output Delay Délai de la sortie casque - + Booth Output Delay Délai de la sortie cabine - + Hints and Diagnostics Astuces et Diagnostics - + Downsize your audio buffer to improve Mixxx's responsiveness. Diminuez le tampon audio pour améliorer la réactivité de Mixxx. - + Query Devices Interroger périphériques @@ -8145,22 +8144,22 @@ Sélectionner depuis les différents types d'affichage de la forme d'o - + Start Recording Démarrer l'enregistrement - + Recording to file: Enregistrement dans le fichier : - + Stop Recording Arrêter l'enregistrement - + %1 MiB written in %2 %1 MiB écrit en %2 @@ -9438,37 +9437,37 @@ d'OpenGL. Library - + This or a parent directory is already in your library. Ce répertoire ou un répertoire parent est déjà dans votre bibliothèque. - + This or a listed directory does not exist or is inaccessible. Aborting the operation to avoid library inconsistencies Ce répertoire ou un répertoire listé n'existe pas ou est inaccessible. Abandonner l'opération pour éviter les incohérences de la bibliothèque - - + + This directory can not be read. Ce répertoire ne peut pas être lu. - + An unknown error occurred. Aborting the operation to avoid library inconsistencies Une erreur inconnue est survenue. Abandonner l'opération pour éviter les incohérences de la bibliothèque - + Can't add Directory to Library Impossible d'ajouter un répertoire à la bibliothèque - + Could not add <b>%1</b> to your library. %2 @@ -9477,27 +9476,27 @@ Abandonner l'opération pour éviter les incohérences de la bibliothèque< %2 - + Can't remove Directory from Library Impossible de retirer un répertoire à la bibliothèque - + An unknown error occurred. Une erreur inconnue est survenue. - + This directory does not exist or is inaccessible. Ce répertoire n'existe pas ou est inaccessible. - + Relink Directory Reconnecter le répertoire - + Could not relink <b>%1</b> to <b>%2</b>. %3 @@ -9683,212 +9682,212 @@ Voulez-vous vraiment l'écraser ? MixxxMainWindow - + Sound Device Busy Carte son occupée - + <b>Retry</b> after closing the other application or reconnecting a sound device <b>Réessayer</b> après avoir fermé l'autre application ou avoir reconnecté le périphérique de son - - - + + + <b>Reconfigure</b> Mixxx's sound device settings. <b>Reconfigurer</b> les options audio de Mixxx. - - + + Get <b>Help</b> from the Mixxx Wiki. Trouver <b>de l'aide</b> sur le Wiki Mixxx. - - - + + + <b>Exit</b> Mixxx. <b>Quitter</b> Mixxx. - + Retry Réessayer - + skin thème - + Allow Mixxx to hide the menu bar? Autoriser Mixxx à masquer la barre de menu ? - + Hide Always show the menu bar? Masquer - + Always show Toujours montrer - + The Mixxx menu bar is hidden and can be toggled with a single press of the <b>Alt</b> key.<br><br>Click <b>%1</b> to agree.<br><br>Click <b>%2</b> to disable that, for example if you don't use Mixxx with a keyboard.<br><br>You can change this setting any time in Preferences -> Interface.<br> Keep formatting tags <b> (bold text) and <br> (linebreak). %1 is the placeholder for the 'Always show' button label La barre de menu Mixxx est masquée et peut être basculée d'une simple pression sur le bouton <b>Alt</b>.<br><br>Clic <b>%1</b> pour accepter.<br><br>Clic <b>%2</b> pour désactiver, par exemple si vous n'utilisez pas Mixxx avec un clavier.<br><br>Vous pouvez modifier ce paramètre à tout moment dans Préférences --> Interface.<br> - + Ask me again Demandez-le moi encore - - + + Reconfigure Reconfigurer - + Help Aide - - + + Exit Quitter - - + + Mixxx was unable to open all the configured sound devices. Mixxx n'est pas parvenu à ouvrir tous les périphériques de son configurés. - + Sound Device Error Erreur de périphérique de son - + <b>Retry</b> after fixing an issue <b>Réessayer</b> après avoir solutionné un problème - + No Output Devices Aucun périphérique de sortie - + Mixxx was configured without any output sound devices. Audio processing will be disabled without a configured output device. Mixxx a été configuré sans aucun périphérique de sortie audio. Sans périphérique de sortie configuré, le traitement du son sera désactivé . - + <b>Continue</b> without any outputs. <b>Continuer</b> sans aucune sortie. - + Continue Continuer - + Load track to Deck %1 Charger la piste sur la platine %1 - + Deck %1 is currently playing a track. La platine %1 est en cours de lecture d'une piste. - + Are you sure you want to load a new track? Êtes-vous certain de vouloir charger une nouvelle piste ? - + There is no input device selected for this vinyl control. Please select an input device in the sound hardware preferences first. Aucun périphérique d'entrée n'est sélectionné pour ce contrôle vinyle. Veuillez d'abord en sélectionner un dans les Préférences du matériel sonore. - + There is no input device selected for this passthrough control. Please select an input device in the sound hardware preferences first. Il n'y a aucun périphérique d'entrée sélectionné pour ce contrôle intermédiaire. Veuillez d'abord en sélectionner un dans les Préférences du matériel sonore. - + There is no input device selected for this microphone. Do you want to select an input device? Aucun périphérique d'entrée n'est sélectionné pour ce microphone. Voulez-vous sélectionner un périphérique d'entrée ? - + There is no input device selected for this auxiliary. Do you want to select an input device? Aucun périphérique d'entrée n'est sélectionné pour cet auxiliaire. Voulez-vous sélectionner un périphérique d'entrée ? - + Error in skin file Erreur dans le fichier du thème - + The selected skin cannot be loaded. Le thème sélectionné ne peut pas être chargé. - + OpenGL Direct Rendering Rendu Direct OpenGL - + Direct rendering is not enabled on your machine.<br><br>This means that the waveform displays will be very<br><b>slow and may tax your CPU heavily</b>. Either update your<br>configuration to enable direct rendering, or disable<br>the waveform displays in the Mixxx preferences by selecting<br>"Empty" as the waveform display in the 'Interface' section. Le rendu direct n'est pas activé sur votre machine.<br><br> Cela signifie que l'affichage de la forme d'onde sera très<br><b>lent et risque de surcharger votre processeur</b>. Mettez à jour votre<br>configuration pour activer le rendu direct ou désactivez<br>les affichages de forme d'onde dans les préférences de Mixxx en sélectionnant<br>"Vide" comme affichage de forme d'onde dans la section "Interface". - - - + + + Confirm Exit Confirmer la fermeture - + A deck is currently playing. Exit Mixxx? Une platine est en cours de lecture. Quitter Mixxx ? - + A sampler is currently playing. Exit Mixxx? Un échantillonneur est en cours de lecture. Quitter Mixxx ? - + The preferences window is still open. La fenêtre de Préférences est déjà ouverte. - + Discard any changes and exit Mixxx? Abandonner toutes les modifications et quitter Mixxx ? @@ -11770,54 +11769,54 @@ du signal d'entrée, des temps de relâchement courts peuvent introduire un RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists Listes de lecture - + Folders Répertoires - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: Lit les bases de données exportées pour les lecteurs Pioneer CDJ / XDJ en utilisant le mode d'exportation Rekordbox.<br/>Rekordbox peut uniquement exporter vers des périphériques USB ou SD avec un système de fichiers FAT ou HFS.<br/>Mixxx peut lire une base de données à partir de n'importe quel périphérique contenant des dossiers de base de données (<tt>PIONEER</tt> et <tt>contenu</tt>).<br/>Ne sont pas prises en charge les bases de données Rekordbox qui ont été déplacées vers un périphérique externe via<br/><i>Préférences> Avancé> Gestion de la base de données</i>.<br/><br/>Les données suivantes sont lues : - + Hot cues Repères rapides - + Loops (only the first loop is currently usable in Mixxx) Boucles (actuellement, seule la première boucle est disponible dans Mixxx) - + Check for attached Rekordbox USB / SD devices (refresh) Vérifie les périphériques USB/SD Rekordbox connectés (actualise) - + Beatgrids Grilles rythmiques - + Memory cues Repères mémoire - + (loading) Rekordbox (chargement) Rekordbox @@ -16395,37 +16394,37 @@ Cette opération est irréversible ! WTrackTableView - + Confirm track hide Confirmer le masquage de la piste - + Are you sure you want to hide the selected tracks? Êtes-vous certain de vouloir masquer les pistes sélectionnées ? - + Are you sure you want to remove the selected tracks from AutoDJ queue? Êtes-vous sûr de vouloir supprimer les pistes sélectionnées de la file d'attente AutoDJ ? - + Are you sure you want to remove the selected tracks from this crate? Êtes-vous sûr de vouloir supprimer les pistes sélectionnées de ce bac ? - + Are you sure you want to remove the selected tracks from this playlist? Êtes-vous sûr de vouloir supprimer les pistes sélectionnées de cette liste de lecture ? - + Don't ask again during this session Ne demandez plus pendant cette session - + Confirm track removal Confirmer la suppression de la piste @@ -16521,52 +16520,52 @@ Cette opération est irréversible ! mixxx::CoreServices - + fonts polices - + database base de données - + effects effets - + audio interface interface audio - + decks platines - + library bibliothèque - + Choose music library directory Choisissez le répertoire de la bibliothèque musicale - + controllers contrôleurs - + Cannot open database Ne peux ouvrir la base de données - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_vi.qm b/res/translations/mixxx_vi.qm index f140fabc2751f3703f251961cf750fc03e300576..d2df7c44b2f64fb05fc0a41206a7654bb4d8dd57 100644 GIT binary patch delta 16413 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 DrTN8` diff --git a/res/translations/mixxx_vi.ts b/res/translations/mixxx_vi.ts index 0ee4b3259513..4bc4601fcb7d 100644 --- a/res/translations/mixxx_vi.ts +++ b/res/translations/mixxx_vi.ts @@ -26,35 +26,35 @@ Clear Auto DJ Queue - + Dọn hàng đợi Auto DJ - + Remove Crate as Track Source Loại bỏ thùng như theo dõi nguồn - + Auto DJ Tự động DJ - + Confirmation Clear - + Xác nhận Xoá - + Do you really want to remove all tracks from the Auto DJ queue? - + Bạn có muốn xoá mọi track nhạc khỏi hàng đợi Tự động DJ không? - + This can not be undone. - + Hành động này không thể quay lại được. - + Add Crate as Track Source Thêm thùng như theo dõi nguồn @@ -103,27 +103,27 @@ Add to Auto DJ Queue (replace) - + Thêm vào hàng đợi DJ Tự động (thay thế) Import as Playlist - + Nhập thành Playlist Import as Crate - + Nhập thành Crate Crate Creation Failed - + Tạo Crate không thành cộng. Could not create crate, it most likely already exists: - + Không tạo được Crate, có thể đã có sẵn Crate đó. @@ -188,7 +188,7 @@ Export Track Files - + Xuất file Track nhạc @@ -213,14 +213,14 @@ - + Export Playlist Xuất chuyển danh sách chơi Add to Auto DJ Queue (replace) - + Thêm vào hàng chờ DJ Tự động (thay thế) @@ -260,33 +260,33 @@ - + Playlist Creation Failed Sáng tạo danh sách phát đã thất bại - + An unknown error occurred while creating playlist: Lỗi không biết xảy ra trong khi tạo danh sách chơi: Confirm Deletion - + Xác nhận Xoá Do you really want to delete playlist <b>%1</b>? - + Bạn có muốn xoá Playlist <b>%1</b>? - + M3U Playlist (*.m3u) - + Playlist M3U (*.m3u) - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U danh sách bài hát (*.m3u); M3U8 danh sách bài hát (*.m3u8); PLS danh sách bài hát (* .pls); Văn bản CSV (*.csv); Có thể đọc được văn bản (*.txt) @@ -294,12 +294,12 @@ BaseSqlTableModel - + # # - + Timestamp Dấu thời gian @@ -315,140 +315,140 @@ BaseTrackTableModel - + Album Album - + Album Artist Album nghệ sĩ - + Artist Nghệ sĩ - + Bitrate Bitrate - + BPM BPM - + Channels Kênh - + Color - + Màu - + Comment Bình luận - + Composer Nhà soạn nhạc - + Cover Art Bìa - + Date Added Ngày thêm vào - + Last Played - + Lần cuối phát - + Duration Thời gian - + Type Loại - + Genre Thể loại - + Grouping Nhóm - + Key Chìa khóa - + Location Vị trí - + Preview Xem trước - + Rating Đánh giá - + ReplayGain - + ReplayGain (Âm lượng Phát lại) - + Samplerate - + Samplerate - + Played Chơi - + Title Tiêu đề - + Track # Theo dõi # - + Year Năm - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk - + Đang tải hình ảnh ... @@ -456,12 +456,12 @@ Action failed - + Tác vụ thất bại Please enable at least one connection to use Live Broadcasting. - + Vui lòng bật ít nhất một kết nối để dùng Live Broadcasting (Phát Trực tiếp). @@ -469,22 +469,22 @@ Can't use secure password storage: keychain access failed. - + Không thể dùng kho lưu trữ mật khẩu bảo mật: không truy cập được keychain. Secure password retrieval unsuccessful: keychain access failed. - + Không thể truy xuất mật khẩu bảo mật: không truy cập được keychain. Settings error - + Lỗi Cài đặt <b>Error with settings for '%1':</b><br> - + <b>Lỗi Cài đặt cho '%1':</b><br> @@ -502,97 +502,97 @@ Status - + Trạng thái Disconnected - + Đã ngắt kết nôi Connecting... - + Đang kết nối... Connected - + Đã kết nối Failed - + Thất bại Unknown - + Vô định BrowseFeature - + Add to Quick Links Thêm vào liên kết nhanh - + Remove from Quick Links Loại bỏ từ liên kết nhanh - + Add to Library Thêm vào thư viện - + Refresh directory tree - + Làm mới Cây Thư mục - + Quick Links Liên kết nhanh - - + + Devices Thiết bị - + Removable Devices Thiết bị di động - - + + Computer - + Máy tính - + Music Directory Added Âm nhạc thư mục bổ sung - + You added one or more music directories. The tracks in these directories won't be available until you rescan your library. Would you like to rescan now? Bạn đã thêm vào một hoặc nhiều thư mục âm nhạc. Các bài hát trong những thư mục này sẽ không có sẵn cho đến khi bạn tại thư viện của bạn. Bạn có muốn tại bây giờ không? - + Scan Quét - + "Computer" lets you navigate, view, and load tracks from folders on your hard disk and external devices. - + Mục "Máy tính" giúp tìm kiếm, xem trước và tải track nhạc từ các thư mục trong ổ cứng và thiết bị lưu trữ ngoài. @@ -742,82 +742,82 @@ CmdlineArgs - + Mixxx is an open source DJ software. For more information, see: - + Starts Mixxx in full-screen mode - + Use a custom locale for loading translations. (e.g 'fr') - + Top-level directory where Mixxx should look for its resource files such as MIDI mappings, overriding the default installation location. - + Path the debug statistics time line is written to - + Causes Mixxx to display/log all of the controller data it receives and script functions it loads - + The controller mapping will issue more aggressive warnings and errors when detecting misuse of controller APIs. New Controller Mappings should be developed with this option enabled! - + Enables developer-mode. Includes extra log info, stats on performance, and a Developer tools menu. - + Top-level directory where Mixxx should look for settings. Default is: - + Starts Auto DJ when Mixxx is launched. - + Use legacy vu meter - + Use legacy spinny - + Loads experimental QML GUI instead of legacy QWidget skin - + Enables safe-mode. Disables OpenGL waveforms, and spinning vinyl widgets. Try this option if Mixxx is crashing on startup. - + [auto|always|never] Use colors on the console output. - + Sets the verbosity of command line logging. critical - Critical/Fatal only warning - Above + Warnings @@ -827,17 +827,27 @@ trace - Above + Profiling messages - + Sets the the logging level at which the log buffer is flushed to mixxx.log. <level> is one of the values defined at --log-level above. - - Breaks (SIGINT) Mixxx, if a DEBUG_ASSERT evaluates to false. Under a debugger you can continue afterwards. + + Sets the maximum file size of the mixxx.log file in bytes. Use -1 for unlimited. The default is 100 MB as 1e5 or 100000000. + Breaks (SIGINT) Mixxx, if a DEBUG_ASSERT evaluates to false. Under a debugger you can continue afterwards. + + + + + Overrides the default application GUI style. Possible values: %1 + + + + Load the specified music file(s) at start-up. Each file you specify will be loaded into the next virtual deck. @@ -1019,13 +1029,13 @@ trace - Above + Profiling messages - + Set to full volume Thiết lập để khối lượng đầy đủ - + Set to zero volume Thiết lập số không khối lượng @@ -1050,13 +1060,13 @@ trace - Above + Profiling messages Đảo ngược nút cuộn (kiểm duyệt) - + Headphone listen button Tai nghe nghe nút - + Mute button Nút tắt @@ -1067,25 +1077,25 @@ trace - Above + Profiling messages - + Mix orientation (e.g. left, right, center) Trộn định hướng (ví dụ: trái, phải, Trung tâm) - + Set mix orientation to left Thiết lập kết hợp định hướng bên trái - + Set mix orientation to center Thiết lập kết hợp định hướng đến Trung tâm - + Set mix orientation to right Thiết lập kết hợp định hướng sang phải @@ -1186,158 +1196,158 @@ trace - Above + Profiling messages Thiết lập cue điểm - + Go to cue point Đi đến cue điểm - + Go to cue point and play Đi đến cue điểm và chơi - + Go to cue point and stop Đi để ghi chú vào điểm và ngừng - + Preview from cue point Xem trước từ cue điểm - + Cue button (CDJ mode) Cue nút (CDJ chế độ) - + Stutter cue Nói lắp cue - + Hotcues Hotcues - + Set, preview from or jump to hotcue %1 Thiết lập, xem trước từ hoặc nhảy để hotcue %1 - + Clear hotcue %1 Rõ ràng hotcue %1 - + Set hotcue %1 Thiết lập hotcue %1 - + Jump to hotcue %1 Chuyển đến hotcue %1 - + Jump to hotcue %1 and stop Chuyển đến hotcue %1 và dừng - + Jump to hotcue %1 and play Chuyển đến hotcue %1 và chơi - + Preview from hotcue %1 Xem trước từ hotcue %1 - - + + Hotcue %1 Hotcue %1 - + Looping Looping - + Loop In button Vòng lặp trong nút - + Loop Out button Vòng lặp trong nút - + Loop Exit button Vòng ra nút - + 1/2 1/2 - + 1 1 - + 2 2 - + 4 4 - + 8 8 - + 16 16 - + 32 32 - + 64 64 - + Move loop forward by %1 beats Di chuyển vòng về phía trước bởi %1 nhịp đập - + Move loop backward by %1 beats Di chuyển vòng quay trở lại bởi nhịp đập %1 - + Create %1-beat loop Tạo đánh bại %1 loop - + Create temporary %1-beat loop roll Tạo tạm thời đánh bại %1 vòng cuộn @@ -1453,20 +1463,20 @@ trace - Above + Profiling messages - - + + Volume Fader Khối lượng đổi - + Full Volume Khối lượng đầy đủ - + Zero Volume Khối lượng không @@ -1482,7 +1492,7 @@ trace - Above + Profiling messages - + Mute Tắt tiếng @@ -1493,7 +1503,7 @@ trace - Above + Profiling messages - + Headphone Listen Tai nghe nghe @@ -1514,25 +1524,25 @@ trace - Above + Profiling messages - + Orientation Định hướng - + Orient Left Định hướng trái - + Orient Center Trung tâm phương đông - + Orient Right Định hướng bên phải @@ -1763,411 +1773,406 @@ trace - Above + Profiling messages Thiết lập Cue - + Go-To Cue Go To Cue - + Go-To Cue And Play Go To Cue và chơi - + Go-To Cue And Stop Go To Cue và dừng - + Preview Cue Xem trước Cue - + Cue (CDJ Mode) Cue (CDJ chế độ) - + Stutter Cue Nói lắp Cue - + Go to cue point and play after release - + Clear Hotcue %1 Rõ ràng Hotcue %1 - + Set Hotcue %1 Thiết lập Hotcue %1 - + Jump To Hotcue %1 Chuyển đến Hotcue %1 - + Jump To Hotcue %1 And Stop Chuyển đến Hotcue %1 và dừng - + Jump To Hotcue %1 And Play Chuyển đến Hotcue %1 và chơi - + Preview Hotcue %1 Xem trước Hotcue %1 - + Loop In Vòng lặp trong - + Loop Out Vòng lặp trong - + Loop Exit Thoát khỏi vòng lặp - + Reloop/Exit Loop Reloop/thoát khỏi vòng lặp - + Loop Halve Loop giảm một nửa - + Loop Double Vòng lặp đôi - + 1/32 1/32 - + 1/16 1/16 - + 1/8 1/8 - + 1/4 1/4 - + Move Loop +%1 Beats Di chuyển vòng lặp + %1 nhịp đập - + Move Loop -%1 Beats Di chuyển vòng lặp-nhịp đập %1 - + Loop %1 Beats Nhịp đập vòng %1 - + Loop Roll %1 Beats Loop Roll %1 nhịp đập - + Add to Auto DJ Queue (bottom) Thêm vào hàng đợi DJ tự động (phía dưới) - + Append the selected track to the Auto DJ Queue Gắn tiếp theo dõi được chọn vào xếp hàng DJ tự động - + Add to Auto DJ Queue (top) Thêm vào hàng đợi DJ tự động (top) - + Prepend selected track to the Auto DJ Queue Thêm các ca khúc được chọn để xếp hàng DJ tự động - + Load Track Theo dõi tải - + Load selected track Tải được chọn theo dõi - + Load selected track and play Tải được chọn theo dõi và chơi - - + + Record Mix Ghi kết hợp - + Toggle mix recording Chuyển đổi kết hợp ghi âm - + Effects Hiệu ứng - + Quick Effects Tác dụng nhanh chóng - + Deck %1 Quick Effect Super Knob Sàn %1 có hiệu lực nhanh chóng siêu Knob - + Quick Effect Super Knob (control linked effect parameters) Nhanh chóng có hiệu lực Super Knob (điều khiển liên kết có hiệu lực tham số) - - + + Quick Effect Có hiệu lực nhanh chóng - + Clear Unit Rõ ràng đơn vị - + Clear effect unit Đơn vị có hiệu lực rõ ràng - + Toggle Unit Chuyển đổi đơn vị - + Dry/Wet Giặt/ướt - + Adjust the balance between the original (dry) and processed (wet) signal. Điều chỉnh sự cân bằng giữa bản gốc (khô) và xử lý tín hiệu (ướt). - + Super Knob Siêu Knob - + Next Chain Tiếp theo chuỗi - + Assign Chỉ định - + Clear Rõ ràng - + Clear the current effect Rõ ràng các hiệu ứng hiện tại - + Toggle Chuyển đổi - + Toggle the current effect Chuyển đổi có hiệu lực hiện tại - + Next Tiếp theo - + Switch to next effect Chuyển sang kế tiếp có hiệu lực - + Previous Trước đó - + Switch to the previous effect Chuyển đổi để có hiệu lực trước đó - + Next or Previous Kế tiếp hoặc trước đó - + Switch to either next or previous effect Chuyển sang kế tiếp hoặc trước đó có hiệu lực - - + + Parameter Value Giá trị tham số - - + + Microphone Ducking Strength Micro Ducking sức mạnh - + Microphone Ducking Mode Micro Ducking chế độ - + Gain Đạt được - + Gain knob Đạt được knob - + Shuffle the content of the Auto DJ queue - + Skip the next track in the Auto DJ queue - + Auto DJ Toggle Tự động bật/tắt DJ - + Toggle Auto DJ On/Off Chuyển đổi tự động DJ On/Off - - Microphone & Auxiliary Show/Hide - - - - + Show/hide the microphone & auxiliary section - + 4 Effect Units Show/Hide - + Switches between showing 2 and 4 effect units - + Mixer Show/Hide - + Show or hide the mixer. Hiện hoặc ẩn bộ trộn. - + Cover Art Show/Hide (Library) - + Show/hide cover art in the library - + Library Maximize/Restore Thư viện tối đa hóa/khôi phục lại - + Maximize the track library to take up all the available screen space. Tối đa hóa thư viện theo dõi để mất tất cả không gian màn hình có sẵn. - + Effect Rack Show/Hide Có hiệu lực Rack Hiển thị/ẩn - + Show/hide the effect rack Hiển thị/ẩn các rack có hiệu lực - + Waveform Zoom Out Dạng sóng thu nhỏ @@ -2576,888 +2581,894 @@ trace - Above + Profiling messages - + CUP (Cue + Play) - + Shift cue points earlier - + Shift cue points 10 milliseconds earlier - + Shift cue points earlier (fine) - + Shift cue points 1 millisecond earlier - + Shift cue points later - + Shift cue points 10 milliseconds later - + Shift cue points later (fine) - + Shift cue points 1 millisecond later - + Hotcues %1-%2 - + Intro / Outro Markers - + Intro Start Marker - + Intro End Marker - + Outro Start Marker - + Outro End Marker - + intro start marker - + intro end marker - + outro start marker - + outro end marker - + Activate %1 [intro/outro marker - + Jump to or set the %1 [intro/outro marker - + Set %1 [intro/outro marker - + Set or jump to the %1 [intro/outro marker - + Clear %1 [intro/outro marker - + Clear the %1 [intro/outro marker - + if the track has no beats the unit is seconds - + Loop Selected Beats - + Create a beat loop of selected beat size - + Loop Roll Selected Beats - + Create a rolling beat loop of selected beat size - + Loop %1 Beats set from its end point - + Loop Roll %1 Beats set from its end point - + Create %1-beat loop with the current play position as loop end - + Create temporary %1-beat loop roll with the current play position as loop end - + Loop Beats - + Loop Roll Beats - + Go To Loop In - + Go to Loop In button - + Go To Loop Out - + Go to Loop Out button - + Toggle loop on/off and jump to Loop In point if loop is behind play position - + Reloop And Stop - + Enable loop, jump to Loop In point, and stop - + Halve the loop length - + Double the loop length - + Beat Jump / Loop Move - + Jump / Move Loop Forward %1 Beats - + Jump / Move Loop Backward %1 Beats - + Jump forward by %1 beats, or if a loop is enabled, move the loop forward %1 beats - + Jump backward by %1 beats, or if a loop is enabled, move the loop backward %1 beats - + Beat Jump / Loop Move Forward Selected Beats - + Jump forward by the selected number of beats, or if a loop is enabled, move the loop forward by the selected number of beats - + Beat Jump / Loop Move Backward Selected Beats - + Jump backward by the selected number of beats, or if a loop is enabled, move the loop backward by the selected number of beats - + Beat Jump - + Indicate which loop marker remain static when adjusting the size or is inherited from the current position - + Beat Jump / Loop Move Forward - + Beat Jump / Loop Move Backward - + Loop Move Forward - + Loop Move Backward - + Remove Temporary Loop - + Remove the temporary loop - + Navigation - + Move up - + Equivalent to pressing the UP key on the keyboard - + Move down - + Equivalent to pressing the DOWN key on the keyboard - + Move up/down - + Move vertically in either direction using a knob, as if pressing UP/DOWN keys - + Scroll Up - + Equivalent to pressing the PAGE UP key on the keyboard - + Scroll Down - + Equivalent to pressing the PAGE DOWN key on the keyboard - + Scroll up/down - + Scroll vertically in either direction using a knob, as if pressing PGUP/PGDOWN keys - + Move left - + Equivalent to pressing the LEFT key on the keyboard - + Move right - + Equivalent to pressing the RIGHT key on the keyboard - + Move left/right - + Move horizontally in either direction using a knob, as if pressing LEFT/RIGHT keys - + Move focus to right pane - + Equivalent to pressing the TAB key on the keyboard - + Move focus to left pane - + Equivalent to pressing the SHIFT+TAB key on the keyboard - + Move focus to right/left pane - + Move focus one pane to right or left using a knob, as if pressing TAB/SHIFT+TAB keys - + Sort focused column - + Sort the column of the cell that is currently focused, equivalent to clicking on its header - + Go to the currently selected item - + Choose the currently selected item and advance forward one pane if appropriate - + Load Track and Play - + Add to Auto DJ Queue (replace) - + Replace Auto DJ Queue with selected tracks - + Select next search history - + Selects the next search history entry - + Select previous search history - + Selects the previous search history entry - + Move selected search entry - + Moves the selected search history item into given direction and steps - + Clear search - + Clears the search query - - + + Select Next Color Available - + Select the next color in the color palette for the first selected track - - + + Select Previous Color Available - + Select the previous color in the color palette for the first selected track - + Deck %1 Quick Effect Enable Button - + Quick Effect Enable Button - + Enable or disable effect processing Kích hoạt hoặc vô hiệu hoá hiệu ứng xử lý - + Super Knob (control effects' Meta Knobs) - + Mix Mode Toggle - + Toggle effect unit between D/W and D+W modes - + Next chain preset Tiếp theo chuỗi cài sẵn - + Previous Chain Chuỗi trước - + Previous chain preset Trước chuỗi cài sẵn - + Next/Previous Chain Kế tiếp/trước Chuỗi - + Next or previous chain preset Kế tiếp hoặc trước đó chuỗi cài sẵn - - + + Show Effect Parameters - + Effect Unit Assignment - + Meta Knob - + Effect Meta Knob (control linked effect parameters) - + Meta Knob Mode - + Set how linked effect parameters change when turning the Meta Knob. - + Meta Knob Mode Invert - + Invert how linked effect parameters change when turning the Meta Knob. - - + + Button Parameter Value - + Microphone / Auxiliary Micro / phụ trợ - + Microphone On/Off Micro baät/taét - + Microphone on/off Micro baät/taét - + Toggle microphone ducking mode (OFF, AUTO, MANUAL) Bật/tắt Micro ducking chế độ (OFF, tự động, hướng dẫn sử dụng) - + Auxiliary On/Off Liên minh baät/taét - + Auxiliary on/off Liên minh baät/taét - + Auto DJ Tự động DJ - + Auto DJ Shuffle Tự động DJ Shuffle - + Auto DJ Skip Next Tự động DJ bỏ qua tiếp theo - + Auto DJ Add Random Track - + Add a random track to the Auto DJ queue - + Auto DJ Fade To Next Tự động DJ phai để tiếp theo - + Trigger the transition to the next track Kích hoạt sự chuyển đổi sang bài hát kế tiếp - + User Interface Giao diện người dùng - + Samplers Show/Hide Samplers Hiển thị/ẩn - + Show/hide the sampler section Hiển thị/ẩn phần sampler - + + Microphone && Auxiliary Show/Hide + keep double & to prevent creation of keyboard accelerator + + + + Waveform Zoom Reset To Default - + Reset the waveform zoom level to the default value selected in Preferences -> Waveforms - + Select the next color in the color palette for the loaded track. - + Select previous color in the color palette for the loaded track. - + Navigate Through Track Colors - + Select either next or previous color in the palette for the loaded track. - + Start/Stop Live Broadcasting - + Stream your mix over the Internet. Dòng hỗn hợp của bạn qua Internet. - + Start/stop recording your mix. - - + + Samplers - + Vinyl Control Show/Hide Vinyl kiểm soát Hiển thị/ẩn - + Show/hide the vinyl control section Hiển thị/ẩn phần kiểm soát vinyl - + Preview Deck Show/Hide Xem trước sàn Hiển thị/ẩn - + Show/hide the preview deck Hiển thị/ẩn tầng xem trước - + Toggle 4 Decks Bật tắt 4 sàn - + Switches between showing 2 decks and 4 decks. Thiết bị chuyển mạch giữa Hiển thị 2 sàn và 4 sàn. - + Cover Art Show/Hide (Decks) - + Show/hide cover art in the main decks - + Vinyl Spinner Show/Hide Vinyl Spinner Hiển thị/ẩn - + Show/hide spinning vinyl widget Hiển thị/ẩn quay vinyl Tiện ích - + Vinyl Spinners Show/Hide (All Decks) - + Show/Hide all spinnies - + Toggle Waveforms - + Show/hide the scrolling waveforms. - + Waveform zoom Thu phóng dạng sóng - + Waveform Zoom Thu phóng dạng sóng - + Zoom waveform in Phóng to dạng sóng - + Waveform Zoom In Dạng sóng phóng to - + Zoom waveform out Thu nhỏ dạng sóng - + Star Rating Up - + Increase the track rating by one star - + Star Rating Down - + Decrease the track rating by one star @@ -3679,7 +3690,7 @@ trace - Above + Profiling messages Nhập khẩu thùng - + Export Crate Xuất khẩu thùng @@ -3689,7 +3700,7 @@ trace - Above + Profiling messages Mở khóa - + An unknown error occurred while creating crate: Lỗi không biết xảy ra trong khi tạo thùng: @@ -3698,12 +3709,6 @@ trace - Above + Profiling messages Rename Crate Đổi tên thùng - - - - Export to Engine Prime - - Make a crate for your next gig, for your favorite electrohouse tracks, or for your most requested tracks. @@ -3721,17 +3726,17 @@ trace - Above + Profiling messages Đổi tên thùng thất bại - + Crate Creation Failed - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U danh sách bài hát (*.m3u); M3U8 danh sách bài hát (*.m3u8); PLS danh sách bài hát (* .pls); Văn bản CSV (*.csv); Có thể đọc được văn bản (*.txt) - + M3U Playlist (*.m3u) M3U danh sách bài hát (*.m3u) @@ -3740,6 +3745,12 @@ trace - Above + Profiling messages Crates are a great way to help organize the music you want to DJ with. Thùng là một cách tuyệt vời để giúp tổ chức nhạc bạn muốn DJ với. + + + + Export to Engine DJ + + Crates let you organize your music however you'd like! @@ -3851,12 +3862,12 @@ trace - Above + Profiling messages Trong quá khứ những người đóng góp - + Official Website - + Donate @@ -3975,97 +3986,97 @@ trace - Above + Profiling messages DlgAutoDJ - + Skip - + Random - + Fade - + Enable Auto DJ Shortcut: Shift+F12 - + Disable Auto DJ Shortcut: Shift+F12 - + Trigger the transition to the next track Shortcut: Shift+F11 - + Skip the next track in the Auto DJ queue Shortcut: Shift+F10 - + Shuffle the content of the Auto DJ queue Shortcut: Shift+F9 - + Repeat the playlist - + Determines the duration of the transition - + Seconds Giây - + Full Intro + Outro - + Fade At Outro Start - + Full Track - + Skip Silence - + Decks not used for Auto DJ must be stopped to enable Auto DJ mode. - + Auto DJ Fade Modes Full Intro + Outro: @@ -4091,50 +4102,50 @@ last sound. - + Repeat Lặp lại - + Auto DJ requires two decks assigned to opposite sides of the crossfader. - + One deck must be stopped to enable Auto DJ mode. - + Enable - + Disable - + Displays the duration and number of selected tracks. - - - + + + Auto DJ Tự động DJ - + Shuffle Shuffle - + Adds a random track from track sources (crates) to the Auto DJ queue. If no track sources are configured, the track is added from the library instead. @@ -4343,32 +4354,37 @@ Often results in higher quality beatgrids, but will not do well on tracks that h Nếu ánh xạ không làm việc cố gắng bật một tùy chọn nâng cao dưới đây và sau đó cố gắng kiểm soát một lần nữa. Hoặc bấm thử lại để redetect kiểm soát midi. - + Didn't get any midi messages. Please try again. Đã không nhận được bất kỳ tin nhắn midi. Xin vui lòng thử lại. - + Unable to detect a mapping -- please try again. Be sure to only touch one control at once. Không thể phát hiện một bản đồ--xin vui lòng thử lại. Hãy chắc chắn để chỉ liên lạc một điều khiển cùng một lúc. - + Successfully mapped control: Thành công lập bản đồ kiểm soát: - + <i>Ready to learn %1</i> <i>Sẵn sàng để tìm hiểu %1</i> - + Learning: %1. Now move a control on your controller. Học tập: %1. Bây giờ di chuyển một điều khiển trên bộ điều khiển của bạn. - + + The selected control does not exist.<br>This likely a bug. Please report it on the Mixxx bug tracker.<br><a href='https://github.com/mixxxdj/mixxx/issues'>https://github.com/mixxxdj/mixxx/issues</a><br><br>You tried to learn: %1,%2 + + + + The control you clicked in Mixxx is not learnable. This could be because you are either using an old skin and this control is no longer supported, or you clicked a control that provides visual feedback and can only be mapped to outputs like LEDs via scripts. @@ -4407,17 +4423,17 @@ You tried to learn: %1,%2 - + Log Đăng nhập - + Search Tìm - + Stats Số liệu thống kê @@ -4483,7 +4499,7 @@ You tried to learn: %1,%2 - + &Close & Đóng @@ -5039,139 +5055,139 @@ Two source connections to the same server that have the same mountpoint can not DlgPrefController - + Apply device settings? Áp dụng thiết đặt? - + Your settings must be applied before starting the learning wizard. Apply settings and continue? Cài đặt của bạn phải được áp dụng trước khi bắt đầu thuật sĩ học tập. Áp dụng thiết đặt và tiếp tục? - + None Không có - + %1 by %2 %1 bởi %2 - + No Name Không tên - + No Description Không có mô tả - + No Author Không có tác giả - + Mapping has been edited - + Always overwrite during this session - + Save As - + Overwrite - + Save user mapping - + Enter the name for saving the mapping to the user folder. - + Saving mapping failed - + A mapping cannot have a blank name and may not contain special characters. - + A mapping file with that name already exists. - + missing - + built-in - + Do you want to save the changes? - + Troubleshooting Giải đáp thắc mắc - + <font color='#BB0000'><b>If you use this mapping your controller may not work correctly. Please select another mapping or disable the controller.</b></font><br><br>This mapping was designed for a newer Mixxx Controller Engine and cannot be used on your current Mixxx installation.<br>Your Mixxx installation has Controller Engine version %1. This mapping requires a Controller Engine version >= %2.<br><br>For more information visit the wiki page on <a href='https://mixxx.org/wiki/doku.php/controller_engine_versions'>Controller Engine Versions</a>. - + Mapping already exists. - + <b>%1</b> already exists in user mapping folder.<br>Overwrite or save with a new name? - + Clear Input Mappings Rõ ràng đầu vào ánh xạ - + Are you sure you want to clear all input mappings? Bạn có chắc bạn muốn xóa tất cả các ánh xạ đầu vào không? - + Clear Output Mappings Rõ ràng sản lượng ánh xạ - + Are you sure you want to clear all output mappings? Bạn có chắc bạn muốn xóa tất cả ra ánh xạ? @@ -5887,124 +5903,134 @@ You can always drag-and-drop tracks on screen to clone a deck. Tùy chọn hiệu ứng - - + + Effect Chain Presets - + Drag and drop to rearrange lists and copy chains between lists. Create and edit chain presets in the effect units in the main window. Please refer the manual for further details. - + Chain presets from these lists will be selectable in the given order in the main window and from controllers (depending on the controller mapping). - + Effects in this chain preset: - + effect 1 name - + effect 2 name - + effect 3 name - + Import - + Rename Đổi tên - + Export - + Delete - + Quick Effect Chain Presets - - + + Visible Effects - + Drag and drop to rearrange lists and show or hide effects. - + Hidden Effects - + + ❯ + + + + + ❮ + + + + Effect load behavior - + Keep metaknob position - + Reset metaknob to effect default - + Effect Info Thông tin có hiệu lực - + Version: Phiên bản: - + Description: Trò chơi mô tả: - + Author: Tác giả: - + Name: Tên: - + Type: Loại: @@ -7214,138 +7240,137 @@ The loudness target is approximate and assumes track pregain and main output lev DlgPrefSound - + %1 Hz %1 Hz - + Default (long delay) Mặc định (dài sự chậm trễ) - + Experimental (no delay) Thử nghiệm (có sự chậm trễ) - + Disabled (short delay) Khuyết tật (sự chậm trễ ngắn) - + Soundcard Clock - + Network Clock - + Direct monitor (recording and broadcasting only) - + Disabled Khuyết tật - + Enabled Kích hoạt - + Stereo Âm thanh nổi - + Mono Mono - + To enable Realtime scheduling (currently disabled), see the %1. - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. - + Mixxx DJ Hardware Guide - + auto (<= 1024 frames/period) - + 2048 frames/period - + 4096 frames/period - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. - - + Refer to the Mixxx User Manual for details. - + Configured latency has changed. - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. - + Realtime scheduling is enabled. - + Main output only - + Main and booth outputs - + %1 ms %1 ms - + Configuration error Lỗi cấu hình @@ -7363,126 +7388,126 @@ The loudness target is approximate and assumes track pregain and main output lev Âm thanh API - + Sample Rate Tốc độ Lấy mẫu - + Audio Buffer Âm thanh bộ đệm - + Engine Clock - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. - + Main Mix - + Main Output Mode - + Microphone Monitor Mode - + Microphone Latency Compensation - - - - + + + + ms milliseconds MS - + 20 ms 20 ms - + Buffer Underflow Count Bộ đệm Underflow tính - + 0 0 - + Keylock/Pitch-Bending Engine Khóa bàn phím/Pitch-uốn động cơ - + Multi-Soundcard Synchronization Đồng bộ hóa đa-Soundcard - + Output Đầu ra - + Input Đầu vào - + System Reported Latency Hệ thống báo cáo trễ - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. Phóng to đệm âm thanh của bạn nếu truy cập underflow đang gia tăng hoặc bạn nghe hiện ra trong khi phát lại. - + Main Output Delay - + Headphone Output Delay - + Booth Output Delay - + Hints and Diagnostics Gợi ý và chẩn đoán - + Downsize your audio buffer to improve Mixxx's responsiveness. Giảm bớt đệm âm thanh của bạn để cải thiện để đáp ứng của Mixxx. - + Query Devices Thiết bị truy vấn @@ -7637,17 +7662,27 @@ The loudness target is approximate and assumes track pregain and main output lev - + + 1/3rd of waveform viewer + + + + + Full waveform viewer height + + + + OpenGL not available OpenGL không sẵn dùng - + dropped frames bỏ khung - + Cached waveforms occupy %1 MiB on disk. @@ -7665,7 +7700,7 @@ The loudness target is approximate and assumes track pregain and main output lev Tỷ lệ khung hình - + Displays which OpenGL version is supported by the current platform. Hiển thị phiên bản OpenGL nào được hỗ trợ bởi nền tảng hiện tại. @@ -7675,7 +7710,7 @@ The loudness target is approximate and assumes track pregain and main output lev Bình thường hóa dạng sóng tổng quan - + Average frame rate Tỷ lệ khung hình trung bình @@ -7691,7 +7726,7 @@ The loudness target is approximate and assumes track pregain and main output lev Mức thu phóng mặc định - + Displays the actual frame rate. Hiển thị tỷ lệ khung hình thực tế. @@ -7706,7 +7741,7 @@ The loudness target is approximate and assumes track pregain and main output lev Kết thúc theo dõi cảnh báo - + OpenGL status Tình trạng OpenGL @@ -7798,52 +7833,57 @@ Select from different types of displays for the waveform, which differ primarily - + Beats until next marker - - Time until next marker + + Preferred font size - - Placement + + Text height limit + + + + + Time until next marker - - Font size + + Placement - + pt - + This functionality requires a waveform type marked "(GLSL)". - + Caching - + Mixxx caches the waveforms of your tracks on disk the first time you load a track. This reduces CPU usage when you are playing live but requires extra disk space. - + Enable waveform caching - + Generate waveforms when analyzing library @@ -7873,7 +7913,7 @@ Select from different types of displays for the waveform, which differ primarily - + Clear Cached Waveforms @@ -8029,22 +8069,22 @@ Select from different types of displays for the waveform, which differ primarily - + Start Recording Bắt đầu ghi âm - + Recording to file: - + Stop Recording Dừng ghi âm - + %1 MiB written in %2 @@ -8352,102 +8392,102 @@ This can not be undone! Tóm tắt - + Filetype: Loại tệp: - + BPM: BPM: - + Location: Địa điểm: - + Bitrate: Tần số: - + Comments Ý kiến - + BPM BPM - + Sets the BPM to 75% of the current value. Thiết lập BPM đến 75% của giá trị hiện tại. - + 3/4 BPM 3/4 BPM - + Sets the BPM to 50% of the current value. Thiết lập BPM 50% của giá trị hiện tại. - + Displays the BPM of the selected track. Hiển thị BPM đường đã chọn. - + Track # Theo dõi # - + Album Artist Album nghệ sĩ - + Composer Nhà soạn nhạc - + Title Tiêu đề - + Grouping Nhóm - + Key Chìa khóa - + Year Năm - + Artist Nghệ sĩ - + Album Album - + Genre Thể loại @@ -8457,179 +8497,179 @@ This can not be undone! - + Sets the BPM to 200% of the current value. Thiết lập BPM 200% giá trị hiện tại. - + Double BPM Đôi BPM - + Halve BPM Giảm một nửa BPM - + Clear BPM and Beatgrid Rõ ràng BPM và Beatgrid - + Move to the previous item. "Previous" button Di chuyển đến mục trước. - + &Previous & Trước - + Move to the next item. "Next" button Di chuyển đến mục kế tiếp. - + &Next & Tiếp theo - + Duration: Thời gian: - + Import Metadata from MusicBrainz - + Re-Import Metadata from file - + Color - + Date added: - + Open in File Browser Mở trong trình duyệt tập tin - + Samplerate: - + Track BPM: Theo dõi BPM: - + Converts beats detected by the analyzer into a fixed-tempo beatgrid. Use this setting if your tracks have a constant tempo (e.g. most electronic music). Often results in higher quality beatgrids, but will not do well on tracks that have tempo shifts. - + Assume constant tempo - + Sets the BPM to 66% of the current value. Thiết lập BPM 66% của giá trị hiện tại. - + 2/3 BPM 2/3 BPM - + Sets the BPM to 150% of the current value. - + 3/2 BPM - + Sets the BPM to 133% of the current value. - + 4/3 BPM - + Tap with the beat to set the BPM to the speed you are tapping. Khai thác với nhịp đập để thiết lập BPM để tốc độ bạn đang khai thác. - + Tap to Beat Bấm vào để đánh bại - + Hint: Use the Library Analyze view to run BPM detection. Gợi ý: Sử dụng xem thư viện phân tích để chạy việc phát hiện BPM. - + Save changes and close the window. "OK" button Lưu thay đổi và đóng cửa sổ. - + &OK & OK - + Discard changes and close the window. "Cancel" button Bỏ các thay đổi và đóng cửa sổ. - + Save changes and keep the window open. "Apply" button Lưu thay đổi và giữ cho cửa sổ mở. - + &Apply & Áp dụng - + &Cancel & Hủy bỏ - + (no color) @@ -8786,7 +8826,7 @@ Often results in higher quality beatgrids, but will not do well on tracks that h - + (no color) @@ -9239,15 +9279,15 @@ Often results in higher quality beatgrids, but will not do well on tracks that h LegacySkinParser - - + + Safe Mode Enabled Shown when Mixxx is running in safe mode. Chế độ an toàn được kích hoạt - - + + No OpenGL support. Shown when Spinny can not be displayed. Please keep @@ -9258,57 +9298,57 @@ Shown when VuMeter can not be displayed. Please keep Không có hỗ trợ OpenGL. - + activate kích hoạt - + toggle chuyển đổi - + right quyền - + left trái - + right small ngay nhỏ - + left small còn nhỏ - + up lên - + down xuống - + up small mặc nhỏ - + down small xuống nhỏ - + Shortcut Lối tắt @@ -9316,62 +9356,62 @@ Shown when VuMeter can not be displayed. Please keep Library - + This or a parent directory is already in your library. - + This or a listed directory does not exist or is inaccessible. Aborting the operation to avoid library inconsistencies - - + + This directory can not be read. - + An unknown error occurred. Aborting the operation to avoid library inconsistencies - + Can't add Directory to Library - + Could not add <b>%1</b> to your library. %2 - + Can't remove Directory from Library - + An unknown error occurred. - + This directory does not exist or is inaccessible. - + Relink Directory - + Could not relink <b>%1</b> to <b>%2</b>. %3 @@ -9443,32 +9483,32 @@ Do you really want to overwrite it? MidiController - + MIDI Controller Bộ điều khiển MIDI - + MixxxControl(s) not found MixxxControl(s) không tìm thấy - + One or more MixxxControls specified in the outputs section of the loaded mapping were invalid. - + * Make sure the MixxxControls in question actually exist. Visit the manual for a complete list: - + Some LEDs or other feedback may not work correctly. Một số đèn LED hoặc thông tin phản hồi có thể không làm việc một cách chính xác. - + * Check to see that the MixxxControl names are spelled correctly in the mapping file (.xml) * Kiểm tra xem các tên MixxxControl được viết đúng chính tả trong tập tin bản đồ (.xml) @@ -9540,7 +9580,7 @@ Do you really want to overwrite it? - Export to Engine Prime + Export to Engine DJ @@ -9552,122 +9592,122 @@ Do you really want to overwrite it? MixxxMainWindow - + Sound Device Busy Thiết bị âm thanh bận rộn - + <b>Retry</b> after closing the other application or reconnecting a sound device <b>Thử lại</b> sau khi đóng ứng dụng khác hoặc kết nối lại một thiết bị âm thanh - - - + + + <b>Reconfigure</b> Mixxx's sound device settings. <b>Cấu hình lại</b> Cài đặt thiết bị âm thanh của Mixxx. - - + + Get <b>Help</b> from the Mixxx Wiki. Nhận được <b>Trợ giúp</b> từ Mixxx Wiki. - - - + + + <b>Exit</b> Mixxx. <b>Lối ra</b> Mixxx. - + Retry Thử lại - + skin - + Allow Mixxx to hide the menu bar? - + Hide Always show the menu bar? - + Always show - + The Mixxx menu bar is hidden and can be toggled with a single press of the <b>Alt</b> key.<br><br>Click <b>%1</b> to agree.<br><br>Click <b>%2</b> to disable that, for example if you don't use Mixxx with a keyboard.<br><br>You can change this setting any time in Preferences -> Interface.<br> Keep formatting tags <b> (bold text) and <br> (linebreak). %1 is the placeholder for the 'Always show' button label - + Ask me again - - + + Reconfigure Cấu hình lại - + Help Trợ giúp - - + + Exit Lối ra - - + + Mixxx was unable to open all the configured sound devices. - + Sound Device Error - + <b>Retry</b> after fixing an issue - + No Output Devices Không có thiết bị đầu ra - + Mixxx was configured without any output sound devices. Audio processing will be disabled without a configured output device. Mixxx được cấu hình mà không có bất kỳ thiết bị âm thanh đầu ra. Âm thanh xử lý sẽ bị vô hiệu hóa mà không có một thiết bị được cấu hình đầu ra. - + <b>Continue</b> without any outputs. <b>Tiếp tục</b> mà không có bất kỳ kết quả đầu ra. - + Continue Tiếp tục @@ -9687,75 +9727,75 @@ Do you really want to overwrite it? Bạn có chắc bạn muốn tải một ca khúc mới không? - + There is no input device selected for this vinyl control. Please select an input device in the sound hardware preferences first. Có là không có thiết bị đầu vào, chọn này kiểm soát vinyl. Xin vui lòng chọn một thiết bị đầu vào trong ưa thích của phần cứng âm thanh đầu tiên. - + There is no input device selected for this passthrough control. Please select an input device in the sound hardware preferences first. Có là không có thiết bị đầu vào, chọn này kiểm soát passthrough. Xin vui lòng chọn một thiết bị đầu vào trong ưa thích của phần cứng âm thanh đầu tiên. - + There is no input device selected for this microphone. Do you want to select an input device? - + There is no input device selected for this auxiliary. Do you want to select an input device? - + Error in skin file Lỗi trong tệp vẻ ngoài - + The selected skin cannot be loaded. Vẻ ngoài đã chọn không thể được nạp. - + OpenGL Direct Rendering Trực tiếp OpenGL Rendering - + Direct rendering is not enabled on your machine.<br><br>This means that the waveform displays will be very<br><b>slow and may tax your CPU heavily</b>. Either update your<br>configuration to enable direct rendering, or disable<br>the waveform displays in the Mixxx preferences by selecting<br>"Empty" as the waveform display in the 'Interface' section. - - - + + + Confirm Exit Xác nhận thoát - + A deck is currently playing. Exit Mixxx? Một sân hiện đang phát. Thoát khỏi Mixxx? - + A sampler is currently playing. Exit Mixxx? Một sampler hiện đang phát. Thoát khỏi Mixxx? - + The preferences window is still open. Cửa sổ tùy chọn là vẫn còn mở. - + Discard any changes and exit Mixxx? Loại bỏ bất kỳ thay đổi và thoát Mixxx? @@ -11362,7 +11402,7 @@ Hint: compensates "chipmunk" or "growling" voices - + Sampler %1 @@ -11490,7 +11530,7 @@ may introduce a 'pumping' effect and/or distortion. - + various @@ -11596,54 +11636,54 @@ may introduce a 'pumping' effect and/or distortion. RekordboxFeature - - - + + + Rekordbox - + Playlists Danh sách phát - + Folders - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: - + Hot cues - + Loops (only the first loop is currently usable in Mixxx) - + Check for attached Rekordbox USB / SD devices (refresh) - + Beatgrids - + Memory cues - + (loading) Rekordbox @@ -11778,19 +11818,19 @@ may introduce a 'pumping' effect and/or distortion. Khóa - - + + Confirm Deletion - + Do you really want to delete all unlocked playlist from <b>%1</b>?<br><br> %1 is the year <b> + </b> are used to make the text in between bold in the popup <br> is a linebreak - + Deleting %1 playlists from <b>%2</b>.<br><br> %1 is the number of playlists to be deleted %2 is the year <b> + </b> are used to make the text in between bold in the popup <br> is a linebreak @@ -14589,12 +14629,12 @@ Use this to change only the effected (wet) signal with EQ and filter effects. TrackCollection - + Hiding tracks - + The selected tracks are in the following playlists:%1Hiding them will remove them from these playlists. Continue? @@ -14978,407 +15018,408 @@ This can not be undone! - - E&xport Library to Engine Prime - - - - - Export the library to the Engine Prime format - - - - + Create &New Playlist Tạo & danh sách chơi mới - + Create a new playlist Tạo một danh sách mới - + Ctrl+n Ctrl + n - + Create New &Crate Tạo mới & thùng - + Create a new crate Tạo một thùng mới - + Ctrl+Shift+N Ctrl + Shift + N - - + + &View & Xem - + Auto-hide menu bar - + Auto-hide the main menu bar when it's not used. - + May not be supported on all skins. Có thể không được hỗ trợ trên tất cả da. - + Show Skin Settings Menu - + Show the Skin Settings Menu of the currently selected Skin - + Ctrl+1 Menubar|View|Show Skin Settings Ctrl + 1 - + Show Microphone Section Hiển thị Micro phần - + Show the microphone section of the Mixxx interface. Hiển thị phần micro của giao diện Mixxx. - + Ctrl+2 Menubar|View|Show Microphone Section Ctrl + 2 - + Show Vinyl Control Section Hiển thị Vinyl kiểm soát phần - + Show the vinyl control section of the Mixxx interface. Hiển thị phần vinyl kiểm soát của giao diện Mixxx. - + Ctrl+3 Menubar|View|Show Vinyl Control Section Ctrl + 3 - + Show Preview Deck Hiển thị xem trước sàn - + Show the preview deck in the Mixxx interface. Hiển thị xem trước sàn trong giao diện Mixxx. - + Ctrl+4 Menubar|View|Show Preview Deck Ctrl + 4 - + Show Cover Art Bìa đĩa Hiển thị - + Show cover art in the Mixxx interface. Hiển thị nghệ thuật bao gồm trong giao diện Mixxx. - + Ctrl+6 Menubar|View|Show Cover Art Ctrl + 6 - + Maximize Library Tối đa hóa thư viện - + Maximize the track library to take up all the available screen space. Tối đa hóa thư viện theo dõi để mất tất cả không gian màn hình có sẵn. - + Space Menubar|View|Maximize Library - + &Full Screen & Toàn màn hình - + Display Mixxx using the full screen Hiển thị Mixxx bằng cách sử dụng toàn màn hình - + &Options & Tùy chọn - + &Vinyl Control & Vinyl kiểm soát - + Use timecoded vinyls on external turntables to control Mixxx Sử dụng timecoded vinyls trên bên ngoài xoay để kiểm soát Mixxx - + Enable Vinyl Control &%1 Kích hoạt tính năng Vinyl kiểm soát & %1 - + &Record Mix & Ghi kết hợp - + Record your mix to a file Ghi lại hỗn hợp của bạn vào một tập tin - + Ctrl+R Ctrl + R - + Enable Live &Broadcasting Sử sống & phát thanh truyền - + Stream your mixes to a shoutcast or icecast server Dòng hỗn hợp của bạn đến một máy chủ shoutcast hoặc icecast - + Ctrl+L Ctrl + L - + Enable &Keyboard Shortcuts Kích hoạt tính năng & phím tắt - + Toggles keyboard shortcuts on or off Chuyển phím tắt Baät hoaëc taét - + Ctrl+` Ctrl +' - + &Preferences & Sở thích - + Change Mixxx settings (e.g. playback, MIDI, controls) Thay đổi cài đặt Mixxx (ví dụ như các điều khiển phát lại, MIDI) - + &Developer & Phát triển - + &Reload Skin & Tải lại da - + Reload the skin Tải lại da - + Ctrl+Shift+R Ctrl + Shift + R - + Developer &Tools Công cụ phát triển & - + Opens the developer tools dialog Mở hộp thoại công cụ phát triển - + Ctrl+Shift+T Ctrl + Shift + T - + Stats: &Experiment Bucket Thống kê: & thử nghiệm Xô - + Enables experiment mode. Collects stats in the EXPERIMENT tracking bucket. Cho phép thử nghiệm chế độ. Thu thập số liệu thống kê trong thử nghiệm theo dõi thùng. - + Ctrl+Shift+E Ctrl + Shift + E - + Stats: &Base Bucket Thống kê: & căn cứ Xô - + Enables base mode. Collects stats in the BASE tracking bucket. Cho phép cơ sở chế độ. Thu thập số liệu thống kê căn cứ theo dõi Xô. - + Ctrl+Shift+B Ctrl + Shift + B - + Deb&ugger Enabled Deb & ugger đã bật - + Enables the debugger during skin parsing Cho phép trình gỡ lỗi trong da phân tích - + Ctrl+Shift+D Ctrl + Shift + D - + &Help & Trợ giúp - + Show Keywheel menu title - + + E&xport Library to Engine DJ + "Engine DJ" must not be translated + + + + + Export the library to the Engine DJ format + + + + Show keywheel tooltip text - + F12 Menubar|View|Show Keywheel - + &Community Support & Hỗ trợ cộng đồng - + Get help with Mixxx Nhận trợ giúp với Mixxx - + &User Manual & Hướng dẫn sử dụng - + Read the Mixxx user manual. Đọc hướng dẫn sử dụng Mixxx. - + &Keyboard Shortcuts & Phím tắt - + Speed up your workflow with keyboard shortcuts. Tăng tốc độ công việc của bạn với phím tắt. - + &Settings directory - + Open the Mixxx user settings directory. - + &Translate This Application & Dịch ứng dụng này - + Help translate this application into your language. Giúp chúng tôi dịch ứng dụng này sang ngôn ngữ của bạn. - + &About & Giới thiệu - + About the application Về ứng dụng @@ -15386,25 +15427,25 @@ This can not be undone! WOverview - + Passthrough - + Ready to play, analyzing... Text on waveform overview when file is playable but no waveform is visible - - + + Loading track... Text on waveform overview when file is cached from source - + Finalizing... Text on waveform overview during finalizing of waveform analysis @@ -15534,77 +15575,77 @@ This can not be undone! WSearchRelatedTracksMenu - + Search related Tracks - + Key Chìa khóa - + harmonic with %1 - + BPM BPM - + between %1 and %2 - + Artist Nghệ sĩ - + Album Artist Album nghệ sĩ - + Composer Nhà soạn nhạc - + Title Tiêu đề - + Album Album - + Grouping Nhóm - + Year Năm - + Genre Thể loại - + Directory - + &Search selected @@ -15612,594 +15653,594 @@ This can not be undone! WTrackMenu - + Load to - + Deck Sàn - + Sampler Sampler - + Add to Playlist Thêm vào danh sách chơi - + Crates Thùng - + Metadata - + Update external collections - + Cover Art Bìa - + Adjust BPM - + Select Color - - + + Analyze Phân tích - - + + Delete Track Files - + Add to Auto DJ Queue (bottom) Thêm vào hàng đợi DJ tự động (phía dưới) - + Add to Auto DJ Queue (top) Thêm vào hàng đợi DJ tự động (top) - + Add to Auto DJ Queue (replace) - + Preview Deck Xem trước sàn - + Remove Loại bỏ - + Remove from Playlist - + Remove from Crate - + Hide from Library Ẩn từ thư viện - + Unhide from Library Bỏ ẩn từ thư viện - + Purge from Library Xoá khỏi thư viện - + Move Track File(s) to Trash - + Delete Files from Disk - + Properties Thuộc tính - + Open in File Browser Mở trong trình duyệt tập tin - + Select in Library - + Import From File Tags - + Import From MusicBrainz - + Export To File Tags - + BPM and Beatgrid - + Play Count - + Rating Đánh giá - + Cue Point - + Hotcues Hotcues - + Intro - + Outro - + Key Chìa khóa - + ReplayGain - + Waveform - + Comment Bình luận - + All Tất cả - + Lock BPM Khóa BPM - + Unlock BPM Mở khóa BPM - + Double BPM Đôi BPM - + Halve BPM Giảm một nửa BPM - + 2/3 BPM 2/3 BPM - + 3/4 BPM 3/4 BPM - + 4/3 BPM - + 3/2 BPM - + Reanalyze - + Reanalyze (constant BPM) - + Reanalyze (variable BPM) - + Update ReplayGain from Deck Gain - + Deck %1 Sàn %1 - + Importing metadata of %n track(s) from file tags - + Marking metadata of %n track(s) to be exported into file tags - - + + Create New Playlist Tạo danh sách chơi mới - + Enter name for new playlist: Nhập tên cho danh sách phát mới: - + New Playlist Danh sách chơi mới - - - + + + Playlist Creation Failed Sáng tạo danh sách phát đã thất bại - + A playlist by that name already exists. Một danh sách tên đó đã tồn tại. - + A playlist cannot have a blank name. Một danh sách không thể có một tên trống. - + An unknown error occurred while creating playlist: Lỗi không biết xảy ra trong khi tạo danh sách chơi: - + Add to New Crate - + Scaling BPM of %n track(s) - + Undo BPM/beats change of %n track(s) - + Locking BPM of %n track(s) - + Unlocking BPM of %n track(s) - + Setting rating of %n track(s) - + Setting color of %n track(s) - + Resetting play count of %n track(s) - + Resetting beats of %n track(s) - + Clearing rating of %n track(s) - + Clearing comment of %n track(s) - + Removing main cue from %n track(s) - + Removing outro cue from %n track(s) - + Removing intro cue from %n track(s) - + Removing loop cues from %n track(s) - + Removing hot cues from %n track(s) - + Resetting keys of %n track(s) - + Resetting replay gain of %n track(s) - + Resetting waveform of %n track(s) - + Resetting all performance metadata of %n track(s) - + Move these files to the trash bin? - + Permanently delete these files from disk? - - + + This can not be undone! - + Cancel Hủy bỏ - + Delete Files - + Okay - + Move Track File(s) to Trash? - + Track Files Deleted - + Track Files Moved To Trash - + %1 track files were moved to trash and purged from the Mixxx database. - + %1 track files were deleted from disk and purged from the Mixxx database. - + Track File Deleted - + Track file was deleted from disk and purged from the Mixxx database. - + The following %1 file(s) could not be deleted from disk - + This track file could not be deleted from disk - + Remaining Track File(s) - + Close Đóng - + Clear Reset metadata in right click track context menu in library - + Loops - + Clear BPM and Beatgrid - + Undo last BPM/beats change - + Move this track file to the trash bin? - + Permanently delete this track file from disk? - + All decks where these tracks are loaded will be stopped and the tracks will be ejected. - + All decks where this track is loaded will be stopped and the track will be ejected. - + Removing %n track file(s) from disk... - + Note: if you are in the Computer or Recording view you need to click the current view again to see changes. - + Track File Moved To Trash - + Track file was moved to trash and purged from the Mixxx database. - + The following %1 file(s) could not be moved to trash - + This track file could not be moved to trash - + Setting cover art of %n track(s) - + Reloading cover art of %n track(s) @@ -16215,37 +16256,37 @@ This can not be undone! WTrackTableView - + Confirm track hide - + Are you sure you want to hide the selected tracks? - + Are you sure you want to remove the selected tracks from AutoDJ queue? - + Are you sure you want to remove the selected tracks from this crate? - + Are you sure you want to remove the selected tracks from this playlist? - + Don't ask again during this session - + Confirm track removal @@ -16253,7 +16294,7 @@ This can not be undone! WTrackTableViewHeader - + Show or hide columns. Hiện hoặc ẩn cột. @@ -16261,7 +16302,7 @@ This can not be undone! WaveformWidgetFactory - + legacy @@ -16341,52 +16382,52 @@ This can not be undone! mixxx::CoreServices - + fonts - + database - + effects - + audio interface - + decks - + library - + Choose music library directory Chọn âm nhạc thư viện thư mục - + controllers - + Cannot open database Không thể mở cơ sở dữ liệu - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. @@ -16435,32 +16476,33 @@ Nhấp vào OK để thoát. Hủy bỏ - - Export Library to Engine Prime + + Export Library to Engine DJ + "Engine DJ" must not be translated - + Export Library To - + No Export Directory Chosen - + No export directory was chosen. Please choose a directory in order to export the music library. - + A database already exists in the chosen directory. Exported tracks will be added into this database. - + A database already exists in the chosen directory, but there was a problem loading it. Export is not guaranteed to succeed in this situation. @@ -16481,7 +16523,7 @@ Nhấp vào OK để thoát. mixxx::EnginePrimeExportJob - + Failed to export track %1 - %2: %3 %1 is the artist %2 is the title and %3 is the original error message @@ -16507,7 +16549,7 @@ Nhấp vào OK để thoát. - Exporting to Engine Prime... + Exporting to Engine DJ... diff --git a/res/translations/mixxx_zh.qm b/res/translations/mixxx_zh.qm index 31a7a3afd5f3d8da88503f57bfff9e9176bc3991..d1880c8dc506788c3ed13ef72a5c4630a72fe0d6 100644 GIT binary patch delta 24886 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 #~_sld|Rk^0aTA^lVt^*~9Ek#%3gV+HQ6-e&9!$ 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 Mp&d8tY$#m(f6JmN8UO$Q delta 24710 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 - + Export Playlist 匯出播放清單 @@ -264,13 +264,13 @@ - + Playlist Creation Failed 播放清單創建失敗 - + An unknown error occurred while creating playlist: 建立播放清單時發生未知的錯誤︰ @@ -286,12 +286,12 @@ 您真的要删除播放列表%1? - + M3U Playlist (*.m3u) M3U 播放清單 (*.m3u) - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U 播放清單 (*.m3u);M3U8 播放清單 (*.m3u8);PLS播放清單 (*.pls);文字 CSV (*.csv);;可讀的文本 (*.txt) @@ -299,12 +299,12 @@ BaseSqlTableModel - + # # - + Timestamp 时间标记 @@ -320,137 +320,137 @@ BaseTrackTableModel - + Album 专辑 - + Album Artist 专辑艺术家 - + Artist 歌手 - + Bitrate 位元速率 - + BPM BPM - + Channels 電視頻道 - + Color 颜色 - + Comment 备注 - + Composer 作曲家 - + Cover Art 封面 - + Date Added 加入日期 - + Last Played 最后播放 - + Duration 持續時間 - + Type 类型 - + Genre 體裁 - + Grouping 分组 - + Key 關鍵 - + Location 地點 - + Preview 預覽 - + Rating 评分 - + ReplayGain 播放音量增益 - + Samplerate 采样率 - + Played 已播放 - + Title 標題 - + Track # 軌道 # - + Year 年份 - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk 獲取圖片中... @@ -2432,7 +2432,7 @@ trace - Above + Profiling messages Tempo tap button - + 节奏敲击按钮 @@ -3701,7 +3701,7 @@ trace - Above + Profiling messages 匯入箱 - + Export Crate 导出分类列表 @@ -3711,7 +3711,7 @@ trace - Above + Profiling messages 解鎖 - + An unknown error occurred while creating crate: 創建音樂箱時發生未知的錯誤︰ @@ -3737,17 +3737,17 @@ trace - Above + Profiling messages 重命名分类列表失败 - + Crate Creation Failed 建立音樂箱失敗 - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U 播放清單 (*.m3u);M3U8 播放清單 (*.m3u8);PLS播放清單 (*.pls);文字 CSV (*.csv);;可讀的文本 (*.txt) - + M3U Playlist (*.m3u) M3U 播放清單 (*.m3u) @@ -3873,12 +3873,12 @@ trace - Above + Profiling messages 過去的貢獻者 - + Official Website 官方网站 - + Donate 捐献 @@ -3934,7 +3934,7 @@ trace - Above + Profiling messages - + Analyze 分析 @@ -3979,17 +3979,17 @@ trace - Above + Profiling messages 在選定的曲目上運行節拍、音調和增益檢測。選定的曲目不會生成波形,以節省磁碟空間。 - + Stop Analysis 停止分析 - + Analyzing %1% %2/%3 分析 %1% %2/%3 - + Analyzing %1/%2 分析 %1/%2 @@ -3997,22 +3997,22 @@ trace - Above + Profiling messages DlgAutoDJ - + Skip 跳过 - + Random 随机 - + Fade 淡出 - + Enable Auto DJ Shortcut: Shift+F12 @@ -4021,7 +4021,7 @@ Shortcut: Shift+F12 快捷键:Shift+F12 - + Disable Auto DJ Shortcut: Shift+F12 @@ -4030,7 +4030,7 @@ Shortcut: Shift+F12 快捷键:Shift+F12 - + Trigger the transition to the next track Shortcut: Shift+F11 @@ -4039,7 +4039,7 @@ Shortcut: Shift+F11 快捷键:Shift+F11 - + Skip the next track in the Auto DJ queue Shortcut: Shift+F10 @@ -4048,7 +4048,7 @@ Shortcut: Shift+F10 快捷键:Shift+F10 - + Shuffle the content of the Auto DJ queue Shortcut: Shift+F9 @@ -4057,47 +4057,47 @@ Shortcut: Shift+F9 快捷键:Shift+F9 - + Repeat the playlist 重复播放列表 - + Determines the duration of the transition 决定转换持续时长。 - + Seconds - + Full Intro + Outro 完整的介绍 + 结尾 - + Fade At Outro Start 结尾开始时淡化 - + Full Track 完整曲目 - + Skip Silence 跳过静音 - + Decks not used for Auto DJ must be stopped to enable Auto DJ mode. 未用于自动DJ的碟机必须停止以启用自动DJ模式。 - + Auto DJ Fade Modes Full Intro + Outro: @@ -4144,50 +4144,50 @@ last sound. 开始交叉淡入。 - + Repeat 重复 - + Auto DJ requires two decks assigned to opposite sides of the crossfader. 自动 DJ 需要在交叉渐变器的相对两侧分配两个甲板。 - + One deck must be stopped to enable Auto DJ mode. 要启动自动 DJ 模式,必须停止一个碟机。 - + Enable 启用 - + Disable 禁用 - + Displays the duration and number of selected tracks. 显示所选轨道的持续时间和数量。 - - - + + + Auto DJ 自动 DJ - + Shuffle 拖曳 - + Adds a random track from track sources (crates) to the Auto DJ queue. If no track sources are configured, the track is added from the library instead. 将轨道源 (crate) 中的随机轨道添加到 Auto DJ 队列中。 如果未配置轨道源,则会从库中添加轨道。 @@ -4401,37 +4401,37 @@ Often results in higher quality beatgrids, but will not do well on tracks that h 若映射不正确,请尝试启用下方的高级选项,然后重试。或者点击“重试”来重新检测 midi 控制器。 - + Didn't get any midi messages. Please try again. 未收到 midi 消息。请重试。 - + Unable to detect a mapping -- please try again. Be sure to only touch one control at once. 无法检测映射 - 请重试。请确保每次只操作一个控制器。 - + Successfully mapped control: 成功映射控制器: - + <i>Ready to learn %1</i> <i>现在可以学习 %1</i> - + Learning: %1. Now move a control on your controller. 正在学习:%1。现在请对控制器进行操作。 - + The selected control does not exist.<br>This likely a bug. Please report it on the Mixxx bug tracker.<br><a href='https://github.com/mixxxdj/mixxx/issues'>https://github.com/mixxxdj/mixxx/issues</a><br><br>You tried to learn: %1,%2 - + The control you clicked in Mixxx is not learnable. This could be because you are either using an old skin and this control is no longer supported, or you clicked a control that provides visual feedback and can only be mapped to outputs like LEDs via scripts. @@ -5103,139 +5103,139 @@ Two source connections to the same server that have the same mountpoint can not DlgPrefController - + Apply device settings? 應用設備設置嗎? - + Your settings must be applied before starting the learning wizard. Apply settings and continue? 開始學習嚮導前,必須應用您的設置。 應用設置並繼續? - + None - + %1 by %2 %2 %1 - + No Name 未命名 - + No Description 沒有說明 - + No Author 沒有作者 - + Mapping has been edited 映射已编辑 - + Always overwrite during this session 在此会话期间始终覆盖 - + Save As 另存为 - + Overwrite 覆盖 - + Save user mapping 保存用户映射 - + Enter the name for saving the mapping to the user folder. 输入用于将映射保存到用户文件夹的名称。 - + Saving mapping failed 保存映射失败 - + A mapping cannot have a blank name and may not contain special characters. 映射不能具有空白名称,并且不能包含特殊字符。 - + A mapping file with that name already exists. 具有该名称的映射文件已存在。 - + missing 缺少 - + built-in 内置 - + Do you want to save the changes? 是否要保存更改? - + Troubleshooting 疑難排解 - + <font color='#BB0000'><b>If you use this mapping your controller may not work correctly. Please select another mapping or disable the controller.</b></font><br><br>This mapping was designed for a newer Mixxx Controller Engine and cannot be used on your current Mixxx installation.<br>Your Mixxx installation has Controller Engine version %1. This mapping requires a Controller Engine version >= %2.<br><br>For more information visit the wiki page on <a href='https://mixxx.org/wiki/doku.php/controller_engine_versions'>Controller Engine Versions</a>. 如果使用此映射,则控制器可能无法正常工作。请选择其他映射或禁用控制器。此映射专为较新的 Mixxx 控制器引擎而设计,不能用于您当前的 Mixxx 安装。您的 Mixxx 安装的 Controller Engine 版本为 %1。此映射需要 Controller Engine 版本 >= %2。有关更多信息,请访问有关 Controller Engine 版本的 wiki 页面。 - + Mapping already exists. 映射已存在。 - + <b>%1</b> already exists in user mapping folder.<br>Overwrite or save with a new name? <b>%1</b>已存在于用户映射文件夹中.<br>覆盖还是用新名称保存? - + Clear Input Mappings 清除输入映射 - + Are you sure you want to clear all input mappings? 你確定你想要清除所有輸入的映射? - + Clear Output Mappings 清除輸出映射 - + Are you sure you want to clear all output mappings? 你確定你想要清除所有輸出映射? @@ -7314,138 +7314,137 @@ The loudness target is approximate and assumes track pregain and main output lev DlgPrefSound - + %1 Hz %1 赫兹 - + Default (long delay) 默认(长延时) - + Experimental (no delay) 试验(无延时) - + Disabled (short delay) 禁用 (短延時) - + Soundcard Clock 声卡时钟 - + Network Clock 网络时钟 - + Direct monitor (recording and broadcasting only) 直接监视器(仅限录制和广播) - + Disabled 已禁用 - + Enabled 啟用 - + Stereo 立体声 - + Mono 單聲道 - + To enable Realtime scheduling (currently disabled), see the %1. 要启用实时计划(当前已禁用),请参阅 %1。 - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 列出了您可能需要考虑使用 Mixxx 的声卡和控制器。 - + Mixxx DJ Hardware Guide Mixxx DJ 硬件指南 - + auto (<= 1024 frames/period) 自动(<= 1024 帧/周期) - + 2048 frames/period 2048 帧/周期 - + 4096 frames/period 4096 帧/周期 - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. 与您听到的相比,麦克风输入在录音和广播信号中显得不合时宜。 - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. 测量往返延迟,并在上方输入麦克风延迟补偿以对齐麦克风计时。 - - + Refer to the Mixxx User Manual for details. 有关详细信息,请参阅 Mixxx 用户手册。 - + Configured latency has changed. 配置的延迟已更改。 - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. 重新测量往返延迟,并将其输入到麦克风延迟补偿上方,以调整麦克风定时。 - + Realtime scheduling is enabled. 已启用实时调度。 - + Main output only 仅主输出 - + Main and booth outputs 主输出和展位输出 - + %1 ms %1 ms - + Configuration error 配置錯誤 @@ -7463,126 +7462,126 @@ The loudness target is approximate and assumes track pregain and main output lev 聲音 API - + Sample Rate 采样率 - + Audio Buffer 音频缓冲 - + Engine Clock 引擎时钟 - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. 使用声卡时钟进行现场观众设置和最低延迟。1使用网络时钟进行没有现场观众的广播。 - + Main Mix 主混合 - + Main Output Mode 主输出模式 - + Microphone Monitor Mode 麦克风监听模式 - + Microphone Latency Compensation 麦克风延迟补偿 - - - - + + + + ms milliseconds 女士 - + 20 ms 為 20 毫秒 - + Buffer Underflow Count 緩衝區下溢計數 - + 0 0 - + Keylock/Pitch-Bending Engine 键盘锁 / 滑音引擎 - + Multi-Soundcard Synchronization 多音效卡同步 - + Output 輸出 - + Input 輸入 - + System Reported Latency 系統報告延遲 - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. 若下溢计数持续增加,或者您听到“啪啪”声,请增大您的音频缓冲区。 - + Main Output Delay 主输出延迟 - + Headphone Output Delay 耳机输出延迟 - + Booth Output Delay Booth输出延迟 - + Hints and Diagnostics 提示和診斷 - + Downsize your audio buffer to improve Mixxx's responsiveness. 若需提升 Mixxx 的响应速度,请降低您的音频缓冲区大小。 - + Query Devices 查詢設備 @@ -8146,22 +8145,22 @@ Select from different types of displays for the waveform, which differ primarily - + Start Recording 開始錄製 - + Recording to file: 录制到文件: - + Stop Recording 停止錄製 - + %1 MiB written in %2 %1 MiB 写入 %2 @@ -9439,37 +9438,37 @@ Shown when VuMeter can not be displayed. Please keep Library - + This or a parent directory is already in your library. 此目录或父目录已位于您的库中。 - + This or a listed directory does not exist or is inaccessible. Aborting the operation to avoid library inconsistencies 此目录或列出的目录不存在或无法访问。 中止操作以避免库不一致 - - + + This directory can not be read. 无法读取此目录。 - + An unknown error occurred. Aborting the operation to avoid library inconsistencies 发生未知错误。 中止操作以避免库不一致 - + Can't add Directory to Library 无法将目录添加到库 - + Could not add <b>%1</b> to your library. %2 @@ -9478,27 +9477,27 @@ Aborting the operation to avoid library inconsistencies %2 - + Can't remove Directory from Library 无法从库中删除目录 - + An unknown error occurred. 发生未知错误。 - + This directory does not exist or is inaccessible. 此目录不存在或无法访问。 - + Relink Directory 重新链接目录 - + Could not relink <b>%1</b> to <b>%2</b>. %3 @@ -9682,210 +9681,210 @@ Do you really want to overwrite it? MixxxMainWindow - + Sound Device Busy 声音设备正忙 - + <b>Retry</b> after closing the other application or reconnecting a sound device 關閉其他應用程式或重新連接聲音設備後 <b>重試</b> - - - + + + <b>Reconfigure</b> Mixxx's sound device settings. <b>重新配置</b> Mixxx 声音设备。 - - + + Get <b>Help</b> from the Mixxx Wiki. 从 Mixxx Wiki 中获取<b>帮助</b>。 - - - + + + <b>Exit</b> Mixxx. <b>退出</b> Mixxx。 - + Retry 重试 - + skin 皮肤 - + Allow Mixxx to hide the menu bar? 允许 Mixxx 隐藏菜单栏? - + Hide Always show the menu bar? 隐藏 - + Always show 始终显示 - + The Mixxx menu bar is hidden and can be toggled with a single press of the <b>Alt</b> key.<br><br>Click <b>%1</b> to agree.<br><br>Click <b>%2</b> to disable that, for example if you don't use Mixxx with a keyboard.<br><br>You can change this setting any time in Preferences -> Interface.<br> Keep formatting tags <b> (bold text) and <br> (linebreak). %1 is the placeholder for the 'Always show' button label Mixxx 菜单栏是隐藏的,只需按一下<b>Alt 键</b>钥匙。<br><br>点击<b>%1</b>同意。<br><br>点击<b>%2</b>以禁用它,例如,如果您不将 Mixxx 与键盘一起使用。<br><br>您可以随时在 Preferences -> Interface 中更改此设置。<br> - + Ask me again 再问我一次 - - + + Reconfigure 重新配置 - + Help 帮助 - - + + Exit 退出 - - + + Mixxx was unable to open all the configured sound devices. Mixxx 无法打开所有要打开的音频设备 - + Sound Device Error 音频设备错误 - + <b>Retry</b> after fixing an issue 修正错误后 <b> 重试 </b> - + No Output Devices 没有输出设备 - + Mixxx was configured without any output sound devices. Audio processing will be disabled without a configured output device. Mixxx 的配置中没有任何输出设备,将会禁用音频处理操作。 - + <b>Continue</b> without any outputs. <b>繼續</b> 沒有任何產出。 - + Continue 继续 - + Load track to Deck %1 加载音轨到碟机 %1 - + Deck %1 is currently playing a track. 甲板 %1 當前播放的曲目。 - + Are you sure you want to load a new track? 你確定你想要載入一個新的軌道? - + There is no input device selected for this vinyl control. Please select an input device in the sound hardware preferences first. 尚未选择用于唱盘控制的输入设备。 请在声音硬件的首选项中选择一个输入设备。 - + There is no input device selected for this passthrough control. Please select an input device in the sound hardware preferences first. 有是沒有為此直通控制項選擇的輸入的設備。 請先在聲音硬體首選項中選擇一種輸入的設備。 - + There is no input device selected for this microphone. Do you want to select an input device? 没有为此麦克风选择输入设备。是否要选择输入设备? - + There is no input device selected for this auxiliary. Do you want to select an input device? 没有为此辅助设备选择输入设备。是否要选择输入设备? - + Error in skin file 皮膚檔中的錯誤 - + The selected skin cannot be loaded. 無法載入所選的外觀。 - + OpenGL Direct Rendering OpenGL 直接繪製 - + Direct rendering is not enabled on your machine.<br><br>This means that the waveform displays will be very<br><b>slow and may tax your CPU heavily</b>. Either update your<br>configuration to enable direct rendering, or disable<br>the waveform displays in the Mixxx preferences by selecting<br>"Empty" as the waveform display in the 'Interface' section. 您的计算机上未启用直接渲染。<br><br>这意味着波形显示将非常<br><b>速度慢,并且可能会严重占用您的 CPU</b>.要么更新您的<br>配置以启用直接渲染或禁用<br>波形将通过选择 Mixxx 首选项显示在<br>“空”作为“界面”部分的波形显示。 - - - + + + Confirm Exit 确认退出 - + A deck is currently playing. Exit Mixxx? 有唱机正在播放。确定退出 Mixxx 吗? - + A sampler is currently playing. Exit Mixxx? 當前現正播放採樣器。退出 Mixxx 嗎? - + The preferences window is still open. 首選項視窗是仍處於打開狀態。 - + Discard any changes and exit Mixxx? 放棄所有更改並退出 Mixxx? @@ -11766,54 +11765,54 @@ may introduce a 'pumping' effect and/or distortion. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists 播放列表 - + Folders 文件夹 - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: 读取使用 Rekordbox 导出模式为 Pioneer CDJ/XDJ 播放器导出的数据库。1Rekordbox 只能导出到具有 FAT 或 HFS 文件系统的 USB 或 SD 设备。2Mixxx 可以从包含数据库文件夹 (3先锋3和4内容4).5不支持已通过67高级>数据库管理>首选项7.89读取以下数据: - + Hot cues - + Loops (only the first loop is currently usable in Mixxx) Loops(目前只有第一个 Loop 在 Mixxx 中可用) - + Check for attached Rekordbox USB / SD devices (refresh) 检查连接的 Rekordbox USB/SD 设备(刷新) - + Beatgrids 节拍网格 - + Memory cues 记忆线索 - + (loading) Rekordbox (加载中)Rekordbox @@ -16393,37 +16392,37 @@ This can not be undone! WTrackTableView - + Confirm track hide 确认轨道隐藏 - + Are you sure you want to hide the selected tracks? 您确定要隐藏选定的轨道吗? - + Are you sure you want to remove the selected tracks from AutoDJ queue? 您确定要从 AutoDJ 队列中删除选定的曲目吗? - + Are you sure you want to remove the selected tracks from this crate? 您确定要隐藏选定的轨道吗? - + Are you sure you want to remove the selected tracks from this playlist? 您确定要从此播放列表中删除选定的曲目吗? - + Don't ask again during this session 在此会话期间不要再次询问 - + Confirm track removal 确认轨道移除 @@ -16519,52 +16518,52 @@ This can not be undone! mixxx::CoreServices - + fonts 字体 - + database 数据库 - + effects 效果 - + audio interface 音频接口 - + decks 甲板 - + library 媒体库 - + Choose music library directory 選擇音樂庫目錄 - + controllers 控制器 - + Cannot open database 無法打開資料庫 - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_zh_CN.ts b/res/translations/mixxx_zh_CN.ts index 2b8a7b65e0ac..b86b73bb859a 100644 --- a/res/translations/mixxx_zh_CN.ts +++ b/res/translations/mixxx_zh_CN.ts @@ -213,7 +213,7 @@ - + Export Playlist 导出播放列表 @@ -260,13 +260,13 @@ - + Playlist Creation Failed 播放列表创建失败 - + An unknown error occurred while creating playlist: 创建播放列表时发生了一个未知错误: @@ -281,12 +281,12 @@ 您真的要删除播放列表<b>%1</b>吗? - + M3U Playlist (*.m3u) M3U 播放列表(*.m3u) - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U 播放列表(*.m3u);;M3U8 播放列表(*.m3u8);;PLS 播放列表(*.pls);;CSV 文本(*.csv);;可读文本(*.txt) @@ -294,12 +294,12 @@ BaseSqlTableModel - + # # - + Timestamp 时间戳 @@ -315,137 +315,137 @@ BaseTrackTableModel - + Album 专辑 - + Album Artist 专辑艺人 - + Artist 艺人 - + Bitrate 比特率 - + BPM BPM - + Channels 通道 - + Color 颜色 - + Comment 备注 - + Composer 作曲家 - + Cover Art 封面图片 - + Date Added 加入日期 - + Last Played 最后播放 - + Duration 持续时间 - + Type 类型 - + Genre 流派 - + Grouping 分组 - + Key 调性 - + Location 位置 - + Preview 预览 - + Rating 评分 - + ReplayGain 重播增益 - + Samplerate 采样率 - + Played 已播放 - + Title 标题 - + Track # 曲目 # - + Year 年份 - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk 正在获取图像 ... @@ -3695,7 +3695,7 @@ trace - Above + Profiling messages 导入分类列表 - + Export Crate 导出分类列表 @@ -3705,7 +3705,7 @@ trace - Above + Profiling messages 解锁 - + An unknown error occurred while creating crate: 在创建分类列表时发生未知错误: @@ -3731,17 +3731,17 @@ trace - Above + Profiling messages 重命名分类列表失败 - + Crate Creation Failed 创建分类列表失败 - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U 播放列表(*.m3u);;M3U8 播放列表(*.m3u8);;PLS 播放列表(*.pls);;文本 CSV (*.csv);;可读文本(*.txt) - + M3U Playlist (*.m3u) M3U播放列表 (*.m3u) @@ -3867,12 +3867,12 @@ trace - Above + Profiling messages 早期贡献者 - + Official Website 官方网站 - + Donate 捐献 @@ -3928,7 +3928,7 @@ trace - Above + Profiling messages - + Analyze 分析 @@ -3973,17 +3973,17 @@ trace - Above + Profiling messages 对所选音轨进行节拍、音调和播放增益检测。为了节约磁盘空间,不会生成相应的波形文件。 - + Stop Analysis 停止分析 - + Analyzing %1% %2/%3 分析 %1% %2/%3 - + Analyzing %1/%2 分析 %1/%2 @@ -3991,22 +3991,22 @@ trace - Above + Profiling messages DlgAutoDJ - + Skip 跳过 - + Random 随机 - + Fade 淡出 - + Enable Auto DJ Shortcut: Shift+F12 @@ -4015,7 +4015,7 @@ Shortcut: Shift+F12 快捷键:Shift+F12 - + Disable Auto DJ Shortcut: Shift+F12 @@ -4024,7 +4024,7 @@ Shortcut: Shift+F12 快捷键:Shift+F12 - + Trigger the transition to the next track Shortcut: Shift+F11 @@ -4033,7 +4033,7 @@ Shortcut: Shift+F11 快捷键:Shift+F11 - + Skip the next track in the Auto DJ queue Shortcut: Shift+F10 @@ -4042,7 +4042,7 @@ Shortcut: Shift+F10 快捷键:Shift+F10 - + Shuffle the content of the Auto DJ queue Shortcut: Shift+F9 @@ -4051,47 +4051,47 @@ Shortcut: Shift+F9 快捷键:Shift+F9 - + Repeat the playlist 重复播放列表 - + Determines the duration of the transition 决定转换持续时长。 - + Seconds - + Full Intro + Outro 完整的介绍 + 结尾 - + Fade At Outro Start 结尾开始时淡化 - + Full Track 完整曲目 - + Skip Silence 跳过静音 - + Decks not used for Auto DJ must be stopped to enable Auto DJ mode. 未用于自动DJ的碟机必须停止以启用自动DJ模式。 - + Auto DJ Fade Modes Full Intro + Outro: @@ -4138,50 +4138,50 @@ last sound. 开始交叉淡入。 - + Repeat 重复 - + Auto DJ requires two decks assigned to opposite sides of the crossfader. 自动 DJ 需要在交叉渐变器的相对两侧分配两个甲板。 - + One deck must be stopped to enable Auto DJ mode. 要启动自动 DJ 模式,必须停止一个碟机。 - + Enable 启用 - + Disable 禁用 - + Displays the duration and number of selected tracks. 显示所选轨道的持续时间和数量。 - - - + + + Auto DJ 自动 DJ - + Shuffle 随机排序 - + Adds a random track from track sources (crates) to the Auto DJ queue. If no track sources are configured, the track is added from the library instead. 将轨道源 (crate) 中的随机轨道添加到 Auto DJ 队列中。 如果未配置轨道源,则会从库中添加轨道。 @@ -4395,37 +4395,37 @@ Often results in higher quality beatgrids, but will not do well on tracks that h 若映射不正确,请尝试启用下方的高级选项,然后重试。或者点击“重试”来重新检测 midi 控制器。 - + Didn't get any midi messages. Please try again. 未收到 midi 消息。请重试。 - + Unable to detect a mapping -- please try again. Be sure to only touch one control at once. 无法检测映射 - 请重试。请确保每次只操作一个控制器。 - + Successfully mapped control: 成功映射控制器: - + <i>Ready to learn %1</i> <i>现在可以学习 %1</i> - + Learning: %1. Now move a control on your controller. 正在学习:%1。现在请对控制器进行操作。 - + The selected control does not exist.<br>This likely a bug. Please report it on the Mixxx bug tracker.<br><a href='https://github.com/mixxxdj/mixxx/issues'>https://github.com/mixxxdj/mixxx/issues</a><br><br>You tried to learn: %1,%2 - + The control you clicked in Mixxx is not learnable. This could be because you are either using an old skin and this control is no longer supported, or you clicked a control that provides visual feedback and can only be mapped to outputs like LEDs via scripts. @@ -5097,139 +5097,139 @@ Two source connections to the same server that have the same mountpoint can not DlgPrefController - + Apply device settings? 应用设备设置吗? - + Your settings must be applied before starting the learning wizard. Apply settings and continue? 在开始学习向导前,必须应用相关设置。 是否应用设置并继续? - + None - + %1 by %2 %1 / %2 - + No Name 未命名 - + No Description 无描述 - + No Author 无作者 - + Mapping has been edited 映射已编辑 - + Always overwrite during this session 在此会话期间始终覆盖 - + Save As 另存为 - + Overwrite 覆盖 - + Save user mapping 保存用户映射 - + Enter the name for saving the mapping to the user folder. 输入用于将映射保存到用户文件夹的名称。 - + Saving mapping failed 保存映射失败 - + A mapping cannot have a blank name and may not contain special characters. 映射不能有空白名称,并且不能包含特殊字符。 - + A mapping file with that name already exists. 已有该名称的映射文件已存在。 - + missing 缺少 - + built-in 内置 - + Do you want to save the changes? 是否要保存更改? - + Troubleshooting 故障排除 - + <font color='#BB0000'><b>If you use this mapping your controller may not work correctly. Please select another mapping or disable the controller.</b></font><br><br>This mapping was designed for a newer Mixxx Controller Engine and cannot be used on your current Mixxx installation.<br>Your Mixxx installation has Controller Engine version %1. This mapping requires a Controller Engine version >= %2.<br><br>For more information visit the wiki page on <a href='https://mixxx.org/wiki/doku.php/controller_engine_versions'>Controller Engine Versions</a>. <font color='#BB0000'><b>如果您使用此映射,您的控制器可能无法正常工作。请选择其他映射或禁用控制器.</b></font><br><br>此映射是为新版 Mixxx 控制器引擎设计的,不能用于当前的 Mixxx 安装.<br>您的 Mixxx 安装的控制器引擎版本为 %1。此映射需要控制器引擎版本 >= %2<br><br>有关更多信息,请访问 wiki 页面 <a href='https://mixxx.org/wiki/doku.php/controller_engine_versions'>控制器引擎版本</a>. - + Mapping already exists. 映射已存在。 - + <b>%1</b> already exists in user mapping folder.<br>Overwrite or save with a new name? <b>%1</b>已存在于用户映射文件夹中.<br>覆盖还是用新名称保存? - + Clear Input Mappings 清除输入映射 - + Are you sure you want to clear all input mappings? 您确定要清除所有的输入映射吗? - + Clear Output Mappings 清除输出映射 - + Are you sure you want to clear all output mappings? 您确定要清除所有的输出映射吗? @@ -7292,138 +7292,137 @@ The loudness target is approximate and assumes track pregain and main output lev DlgPrefSound - + %1 Hz %1 赫兹 - + Default (long delay) 默认(长延迟) - + Experimental (no delay) 试验(无延迟) - + Disabled (short delay) 禁用(短延迟) - + Soundcard Clock 声卡时钟 - + Network Clock 网络时钟 - + Direct monitor (recording and broadcasting only) 直接监视器(仅限录制和广播) - + Disabled 禁用 - + Enabled 已启用 - + Stereo 立体声 - + Mono 启用 - + To enable Realtime scheduling (currently disabled), see the %1. 要启用实时计划(当前已禁用),请参阅 %1。 - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 列出了您可能需要考虑使用 Mixxx 的声卡和控制器。 - + Mixxx DJ Hardware Guide Mixxx DJ 硬件指南 - + auto (<= 1024 frames/period) 自动(<= 1024 帧/周期) - + 2048 frames/period 2048 帧/周期 - + 4096 frames/period 4096 帧/周期 - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. 与您听到的相比,麦克风输入在录音和广播信号不匹配。 - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. 测量往返延迟,并在上方输入麦克风延迟补偿以对齐麦克风计时。 - - + Refer to the Mixxx User Manual for details. 有关详细信息,请参阅 Mixxx 用户手册。 - + Configured latency has changed. 配置的延迟已更改。 - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. 重新测量往返延迟,并将其输入到麦克风延迟补偿上方,以调整麦克风定时。 - + Realtime scheduling is enabled. 已启用实时调度。 - + Main output only 仅主输出 - + Main and booth outputs 主输出和展位输出 - + %1 ms %1 ms - + Configuration error 配置错误 @@ -7441,126 +7440,126 @@ The loudness target is approximate and assumes track pregain and main output lev 声音API - + Sample Rate 采样率 - + Audio Buffer 音频缓冲 - + Engine Clock 引擎时钟 - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. 使用声卡时钟进行现场观众设置和最低延迟。<br>使用网络时钟进行没有现场观众的广播。 - + Main Mix 主混合 - + Main Output Mode 主输出模式 - + Microphone Monitor Mode 麦克风监听模式 - + Microphone Latency Compensation 麦克风延迟补偿 - - - - + + + + ms milliseconds ms - + 20 ms 20 ms - + Buffer Underflow Count 缓冲区下溢计数 - + 0 0 - + Keylock/Pitch-Bending Engine 钥匙锁/音高弯曲引擎 - + Multi-Soundcard Synchronization 多声卡同步 - + Output 输出 - + Input 输入 - + System Reported Latency 系统报告的延迟 - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. 若下溢计数持续增加,或者您听到“啪啪”声,请增大您的音频缓冲区。 - + Main Output Delay 主输出延迟 - + Headphone Output Delay 耳机输出延迟 - + Booth Output Delay Booth输出延迟 - + Hints and Diagnostics 提示与诊断 - + Downsize your audio buffer to improve Mixxx's responsiveness. 若需提升 Mixxx 的响应速度,请降低您的音频缓冲区大小。 - + Query Devices 查询设备 @@ -8123,22 +8122,22 @@ Select from different types of displays for the waveform, which differ primarily - + Start Recording 开始录制 - + Recording to file: 录制到文件: - + Stop Recording 停止录制 - + %1 MiB written in %2 %1 MiB 写入 %2 @@ -9416,63 +9415,63 @@ Shown when VuMeter can not be displayed. Please keep Library - + This or a parent directory is already in your library. 此目录或父目录已位于您的库中。 - + This or a listed directory does not exist or is inaccessible. Aborting the operation to avoid library inconsistencies 此目录或列出的目录不存在或无法访问。 中止操作以避免库不一致 - - + + This directory can not be read. 无法读取此目录。 - + An unknown error occurred. Aborting the operation to avoid library inconsistencies 发生未知错误。中止操作以避免库不一致 - + Can't add Directory to Library 无法将目录添加到库 - + Could not add <b>%1</b> to your library. %2 无法添加<b>%1</b>添加到您的库中。%2 - + Can't remove Directory from Library 无法从库中删除目录 - + An unknown error occurred. 发生未知错误。 - + This directory does not exist or is inaccessible. 此目录不存在或无法访问。 - + Relink Directory 重新设定目录 - + Could not relink <b>%1</b> to <b>%2</b>. %3 @@ -9655,210 +9654,210 @@ Do you really want to overwrite it? MixxxMainWindow - + Sound Device Busy 声音设备正忙 - + <b>Retry</b> after closing the other application or reconnecting a sound device 请关闭其他应用程序,或重新连接设备后<b>重试</b> - - - + + + <b>Reconfigure</b> Mixxx's sound device settings. <b>重新配置</b> Mixxx 声音设备。 - - + + Get <b>Help</b> from the Mixxx Wiki. 从 Mixxx Wiki 中获取<b>帮助</b>。 - - - + + + <b>Exit</b> Mixxx. <b>退出</b> Mixxx。 - + Retry 重试 - + skin 皮肤 - + Allow Mixxx to hide the menu bar? 允许 Mixxx 隐藏菜单栏? - + Hide Always show the menu bar? 隐藏 - + Always show 始终显示 - + The Mixxx menu bar is hidden and can be toggled with a single press of the <b>Alt</b> key.<br><br>Click <b>%1</b> to agree.<br><br>Click <b>%2</b> to disable that, for example if you don't use Mixxx with a keyboard.<br><br>You can change this setting any time in Preferences -> Interface.<br> Keep formatting tags <b> (bold text) and <br> (linebreak). %1 is the placeholder for the 'Always show' button label Mixxx 菜单栏是隐藏的,只需按一下<b>Alt 键</b>钥匙。<br><br>点击<b>%1</b>同意。<br><br>点击<b>%2</b>以禁用它,例如,如果您不将 Mixxx 与键盘一起使用。<br><br>您可以随时在 Preferences -> Interface 中更改此设置。<br> - + Ask me again 再问我一次 - - + + Reconfigure 重新配置 - + Help 帮助 - - + + Exit 退出 - - + + Mixxx was unable to open all the configured sound devices. Mixxx 无法打开所有要打开的音频设备 - + Sound Device Error 音频设备错误 - + <b>Retry</b> after fixing an issue 修正错误后 <b> 重试 </b> - + No Output Devices 没有输出设备 - + Mixxx was configured without any output sound devices. Audio processing will be disabled without a configured output device. Mixxx 的配置中没有任何输出设备,将会禁用音频处理操作。 - + <b>Continue</b> without any outputs. 确定在没有任何输出的情况下<b>继续</b>。 - + Continue 继续 - + Load track to Deck %1 加载音轨到碟机 %1 - + Deck %1 is currently playing a track. 碟盘 %1 当前正在播放。 - + Are you sure you want to load a new track? 您确定要加载新音轨吗? - + There is no input device selected for this vinyl control. Please select an input device in the sound hardware preferences first. 尚未选择用于唱盘控制的输入设备。 请在声音硬件的首选项中选择一个输入设备。 - + There is no input device selected for this passthrough control. Please select an input device in the sound hardware preferences first. 尚未选择用于唱盘控制的输入设备。 请在声音硬件的首选项中选择一个输入设备。 - + There is no input device selected for this microphone. Do you want to select an input device? 没有为此麦克风选择输入设备。是否要选择输入设备? - + There is no input device selected for this auxiliary. Do you want to select an input device? 没有为此辅助设备选择输入设备。是否要选择输入设备? - + Error in skin file 皮肤文件错误 - + The selected skin cannot be loaded. 无法加载所选皮肤。 - + OpenGL Direct Rendering OpenGL 直接渲染 - + Direct rendering is not enabled on your machine.<br><br>This means that the waveform displays will be very<br><b>slow and may tax your CPU heavily</b>. Either update your<br>configuration to enable direct rendering, or disable<br>the waveform displays in the Mixxx preferences by selecting<br>"Empty" as the waveform display in the 'Interface' section. 您的计算机上未启用直接渲染。<br><br>这意味着波形显示将非常<br><b>速度慢,并且可能会严重占用您的 CPU</b>.要么更新您的<br>配置以启用直接渲染或禁用<br>波形将通过选择 Mixxx 首选项显示在<br>“空”作为“界面”部分的波形显示。 - - - + + + Confirm Exit 确认退出 - + A deck is currently playing. Exit Mixxx? 有碟盘正在播放。确定退出 Mixxx 吗? - + A sampler is currently playing. Exit Mixxx? 有采样器正在播放。确定退出 Mixxx 吗? - + The preferences window is still open. 首选项窗口尚未关闭。 - + Discard any changes and exit Mixxx? 取消所作更改并退出 Mixxx 吗? @@ -11739,54 +11738,54 @@ may introduce a 'pumping' effect and/or distortion. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists 播放列表 - + Folders 文件夹 - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: 读取使用 Rekordbox 导出模式为 Pioneer CDJ/XDJ 播放器导出的数据库。<br/>Rekordbox只能导出到具有 FAT 或 HFS 文件系统的 USB 或 SD 设备。<br/>Mixxx 可以从包含数据库文件夹 (<tt>先锋</tt>和<tt>内容</tt>).<br/>不支持已通过<br/><i>高级>数据库管理>首选项</i>.<br/><br/>读取以下数据: - + Hot cues - + Loops (only the first loop is currently usable in Mixxx) Loops(目前只有第一个 Loop 在 Mixxx 中可用) - + Check for attached Rekordbox USB / SD devices (refresh) 检查连接的 Rekordbox USB/SD 设备(刷新) - + Beatgrids 节拍网格 - + Memory cues 记忆线索 - + (loading) Rekordbox (加载中)Rekordbox @@ -16364,37 +16363,37 @@ This can not be undone! WTrackTableView - + Confirm track hide 确认轨道隐藏 - + Are you sure you want to hide the selected tracks? 您确定要隐藏选定的轨道吗? - + Are you sure you want to remove the selected tracks from AutoDJ queue? 您确定要从 AutoDJ 队列中删除选定的曲目吗? - + Are you sure you want to remove the selected tracks from this crate? 您确定要隐藏选定的轨道吗? - + Are you sure you want to remove the selected tracks from this playlist? 您确定要从此播放列表中删除选定的曲目吗? - + Don't ask again during this session 在此会话期间不要再次询问 - + Confirm track removal 确认轨道移除 @@ -16490,52 +16489,52 @@ This can not be undone! mixxx::CoreServices - + fonts 字体 - + database 数据库 - + effects 效果 - + audio interface 音频接口 - + decks 甲板 - + library 媒体库 - + Choose music library directory 选择音乐库目录 - + controllers 控制器 - + Cannot open database 无法打开数据库 - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_zh_HK.qm b/res/translations/mixxx_zh_HK.qm index b17847bbf7538626ac8c3e29b43f619b6a4d20a9..09bae04b91277f3da0da18d387770779c4f1dc35 100644 GIT binary patch delta 23780 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 diff --git a/res/translations/mixxx_zh_HK.ts b/res/translations/mixxx_zh_HK.ts index 3167b4884f0f..c99343a8e931 100644 --- a/res/translations/mixxx_zh_HK.ts +++ b/res/translations/mixxx_zh_HK.ts @@ -222,7 +222,7 @@ - + Export Playlist 匯出播放清單 @@ -269,14 +269,14 @@ - + Playlist Creation Failed 播放清單創建失敗 - + An unknown error occurred while creating playlist: 建立播放清單時發生未知的錯誤︰ @@ -292,12 +292,12 @@ 您真的要删除播放列表%1? - + M3U Playlist (*.m3u) M3U 播放清單 (*.m3u) - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U 播放清單 (*.m3u);M3U8 播放清單 (*.m3u8);PLS播放清單 (*.pls);文字 CSV (*.csv);;可讀的文本 (*.txt) @@ -305,12 +305,12 @@ BaseSqlTableModel - + # # - + Timestamp 时间标记 @@ -326,137 +326,137 @@ BaseTrackTableModel - + Album 专辑 - + Album Artist 专辑艺术家 - + Artist 歌手 - + Bitrate 位元速率 - + BPM BPM - + Channels 電視頻道 - + Color 颜色 - + Comment 备注 - + Composer 作曲家 - + Cover Art 封面 - + Date Added 加入日期 - + Last Played 最后播放 - + Duration 持續時間 - + Type 类型 - + Genre 體裁 - + Grouping 分组 - + Key 關鍵 - + Location 地點 - + Preview 預覽 - + Rating 评分 - + ReplayGain 播放音量增益 - + Samplerate 采样率 - + Played 已播放 - + Title 標題 - + Track # 軌道 # - + Year 年份 - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk 獲取圖片中... @@ -2434,12 +2434,12 @@ trace - Above + Profiling messages Tempo Tap - + 节奏敲击 Tempo tap button - + 节奏敲击按钮 @@ -3711,7 +3711,7 @@ trace - Above + Profiling messages 匯入箱 - + Export Crate 导出分类列表 @@ -3721,7 +3721,7 @@ trace - Above + Profiling messages 解鎖 - + An unknown error occurred while creating crate: 創建音樂箱時發生未知的錯誤︰ @@ -3747,17 +3747,17 @@ trace - Above + Profiling messages 重命名分类列表失败 - + Crate Creation Failed 建立音樂箱失敗 - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U 播放清單 (*.m3u);M3U8 播放清單 (*.m3u8);PLS播放清單 (*.pls);文字 CSV (*.csv);;可讀的文本 (*.txt) - + M3U Playlist (*.m3u) M3U 播放清單 (*.m3u) @@ -3883,12 +3883,12 @@ trace - Above + Profiling messages 過去的貢獻者 - + Official Website 官方网站 - + Donate 捐献 @@ -3944,7 +3944,7 @@ trace - Above + Profiling messages - + Analyze 分析 @@ -3989,17 +3989,17 @@ trace - Above + Profiling messages 在選定的曲目上運行節拍、音調和增益檢測。選定的曲目不會生成波形,以節省磁碟空間。 - + Stop Analysis 停止分析 - + Analyzing %1% %2/%3 分析 %1% %2/%3 - + Analyzing %1/%2 分析 %1/%2 @@ -4007,22 +4007,22 @@ trace - Above + Profiling messages DlgAutoDJ - + Skip 跳过 - + Random 随机 - + Fade 淡出 - + Enable Auto DJ Shortcut: Shift+F12 @@ -4031,7 +4031,7 @@ Shortcut: Shift+F12 快捷键:Shift+F12 - + Disable Auto DJ Shortcut: Shift+F12 @@ -4040,7 +4040,7 @@ Shortcut: Shift+F12 快捷键:Shift+F12 - + Trigger the transition to the next track Shortcut: Shift+F11 @@ -4049,7 +4049,7 @@ Shortcut: Shift+F11 快捷键:Shift+F11 - + Skip the next track in the Auto DJ queue Shortcut: Shift+F10 @@ -4058,7 +4058,7 @@ Shortcut: Shift+F10 快捷键:Shift+F10 - + Shuffle the content of the Auto DJ queue Shortcut: Shift+F9 @@ -4067,47 +4067,47 @@ Shortcut: Shift+F9 快捷键:Shift+F9 - + Repeat the playlist 重复播放列表 - + Determines the duration of the transition 决定转换持续时长。 - + Seconds - + Full Intro + Outro 完整的介绍 + 结尾 - + Fade At Outro Start 结尾开始时淡化 - + Full Track 完整曲目 - + Skip Silence 跳过静音 - + Decks not used for Auto DJ must be stopped to enable Auto DJ mode. 未用于自动DJ的碟机必须停止以启用自动DJ模式。 - + Auto DJ Fade Modes Full Intro + Outro: @@ -4154,50 +4154,50 @@ last sound. 开始交叉淡入。 - + Repeat 重复 - + Auto DJ requires two decks assigned to opposite sides of the crossfader. 自动 DJ 需要在交叉渐变器的相对两侧分配两个甲板。 - + One deck must be stopped to enable Auto DJ mode. 要启动自动 DJ 模式,必须停止一个碟机。 - + Enable 启用 - + Disable 禁用 - + Displays the duration and number of selected tracks. 显示所选轨道的持续时间和数量。 - - - + + + Auto DJ 自動DJ - + Shuffle 拖曳 - + Adds a random track from track sources (crates) to the Auto DJ queue. If no track sources are configured, the track is added from the library instead. 将轨道源 (crate) 中的随机轨道添加到 Auto DJ 队列中。 如果未配置轨道源,则会从库中添加轨道。 @@ -4411,37 +4411,37 @@ Often results in higher quality beatgrids, but will not do well on tracks that h 若映射不正确,请尝试启用下方的高级选项,然后重试。或者点击“重试”来重新检测 midi 控制器。 - + Didn't get any midi messages. Please try again. 未收到 midi 消息。请重试。 - + Unable to detect a mapping -- please try again. Be sure to only touch one control at once. 无法检测映射 - 请重试。请确保每次只操作一个控制器。 - + Successfully mapped control: 成功映射控制器: - + <i>Ready to learn %1</i> <i>现在可以学习 %1</i> - + Learning: %1. Now move a control on your controller. 正在学习:%1。现在请对控制器进行操作。 - + The selected control does not exist.<br>This likely a bug. Please report it on the Mixxx bug tracker.<br><a href='https://github.com/mixxxdj/mixxx/issues'>https://github.com/mixxxdj/mixxx/issues</a><br><br>You tried to learn: %1,%2 - + The control you clicked in Mixxx is not learnable. This could be because you are either using an old skin and this control is no longer supported, or you clicked a control that provides visual feedback and can only be mapped to outputs like LEDs via scripts. @@ -5113,139 +5113,139 @@ Two source connections to the same server that have the same mountpoint can not DlgPrefController - + Apply device settings? 應用設備設置嗎? - + Your settings must be applied before starting the learning wizard. Apply settings and continue? 開始學習嚮導前,必須應用您的設置。 應用設置並繼續? - + None - + %1 by %2 %2 %1 - + No Name 未命名 - + No Description 沒有說明 - + No Author 沒有作者 - + Mapping has been edited 映射已编辑 - + Always overwrite during this session 在此会话期间始终覆盖 - + Save As 另存为 - + Overwrite 覆盖 - + Save user mapping 保存用户映射 - + Enter the name for saving the mapping to the user folder. 输入用于将映射保存到用户文件夹的名称。 - + Saving mapping failed 保存映射失败 - + A mapping cannot have a blank name and may not contain special characters. 映射不能具有空白名称,并且不能包含特殊字符。 - + A mapping file with that name already exists. 具有该名称的映射文件已存在。 - + missing 缺少 - + built-in 内置 - + Do you want to save the changes? 是否要保存更改? - + Troubleshooting 疑難排解 - + <font color='#BB0000'><b>If you use this mapping your controller may not work correctly. Please select another mapping or disable the controller.</b></font><br><br>This mapping was designed for a newer Mixxx Controller Engine and cannot be used on your current Mixxx installation.<br>Your Mixxx installation has Controller Engine version %1. This mapping requires a Controller Engine version >= %2.<br><br>For more information visit the wiki page on <a href='https://mixxx.org/wiki/doku.php/controller_engine_versions'>Controller Engine Versions</a>. 如果使用此映射,则控制器可能无法正常工作。请选择其他映射或禁用控制器。此映射专为较新的 Mixxx 控制器引擎而设计,不能用于您当前的 Mixxx 安装。您的 Mixxx 安装的 Controller Engine 版本为 %1。此映射需要 Controller Engine 版本 >= %2。有关更多信息,请访问有关 Controller Engine 版本的 wiki 页面。 - + Mapping already exists. 映射已存在。 - + <b>%1</b> already exists in user mapping folder.<br>Overwrite or save with a new name? <b>%1</b>已存在于用户映射文件夹中.<br>覆盖还是用新名称保存? - + Clear Input Mappings 清除输入映射 - + Are you sure you want to clear all input mappings? 你確定你想要清除所有輸入的映射? - + Clear Output Mappings 清除輸出映射 - + Are you sure you want to clear all output mappings? 你確定你想要清除所有輸出映射? @@ -7326,138 +7326,137 @@ The loudness target is approximate and assumes track pregain and main output lev DlgPrefSound - + %1 Hz %1 赫兹 - + Default (long delay) 默认(长延时) - + Experimental (no delay) 试验(无延时) - + Disabled (short delay) 禁用 (短延時) - + Soundcard Clock 声卡时钟 - + Network Clock 网络时钟 - + Direct monitor (recording and broadcasting only) 直接监视器(仅限录制和广播) - + Disabled 已禁用 - + Enabled 啟用 - + Stereo 立体声 - + Mono 單聲道 - + To enable Realtime scheduling (currently disabled), see the %1. 要启用实时计划(当前已禁用),请参阅 %1。 - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 列出了您可能需要考虑使用 Mixxx 的声卡和控制器。 - + Mixxx DJ Hardware Guide Mixxx DJ 硬件指南 - + auto (<= 1024 frames/period) 自动(<= 1024 帧/周期) - + 2048 frames/period 2048 帧/周期 - + 4096 frames/period 4096 帧/周期 - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. 与您听到的相比,麦克风输入在录音和广播信号中显得不合时宜。 - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. 测量往返延迟,并在上方输入麦克风延迟补偿以对齐麦克风计时。 - - + Refer to the Mixxx User Manual for details. 有关详细信息,请参阅 Mixxx 用户手册。 - + Configured latency has changed. 配置的延迟已更改。 - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. 重新测量往返延迟,并将其输入到麦克风延迟补偿上方,以调整麦克风定时。 - + Realtime scheduling is enabled. 已启用实时调度。 - + Main output only 仅主输出 - + Main and booth outputs 主输出和展位输出 - + %1 ms %1 ms - + Configuration error 配置錯誤 @@ -7475,126 +7474,126 @@ The loudness target is approximate and assumes track pregain and main output lev 聲音 API - + Sample Rate 采样率 - + Audio Buffer 音频缓冲 - + Engine Clock 引擎时钟 - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. 使用声卡时钟进行现场观众设置和最低延迟。1使用网络时钟进行没有现场观众的广播。 - + Main Mix 主混合 - + Main Output Mode 主输出模式 - + Microphone Monitor Mode 麦克风监听模式 - + Microphone Latency Compensation 麦克风延迟补偿 - - - - + + + + ms milliseconds 女士 - + 20 ms 為 20 毫秒 - + Buffer Underflow Count 緩衝區下溢計數 - + 0 0 - + Keylock/Pitch-Bending Engine 键盘锁 / 滑音引擎 - + Multi-Soundcard Synchronization 多音效卡同步 - + Output 輸出 - + Input 輸入 - + System Reported Latency 系統報告延遲 - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. 若下溢计数持续增加,或者您听到“啪啪”声,请增大您的音频缓冲区。 - + Main Output Delay 主输出延迟 - + Headphone Output Delay 耳机输出延迟 - + Booth Output Delay Booth输出延迟 - + Hints and Diagnostics 提示和診斷 - + Downsize your audio buffer to improve Mixxx's responsiveness. 若需提升 Mixxx 的响应速度,请降低您的音频缓冲区大小。 - + Query Devices 查詢設備 @@ -8158,22 +8157,22 @@ Select from different types of displays for the waveform, which differ primarily - + Start Recording 開始錄製 - + Recording to file: 录制到文件: - + Stop Recording 停止錄製 - + %1 MiB written in %2 %1 MiB 写入 %2 @@ -9451,37 +9450,37 @@ Shown when VuMeter can not be displayed. Please keep Library - + This or a parent directory is already in your library. 此目录或父目录已位于您的库中。 - + This or a listed directory does not exist or is inaccessible. Aborting the operation to avoid library inconsistencies 此目录或列出的目录不存在或无法访问。 中止操作以避免库不一致 - - + + This directory can not be read. 无法读取此目录。 - + An unknown error occurred. Aborting the operation to avoid library inconsistencies 发生未知错误。 中止操作以避免库不一致 - + Can't add Directory to Library 无法将目录添加到库 - + Could not add <b>%1</b> to your library. %2 @@ -9490,27 +9489,27 @@ Aborting the operation to avoid library inconsistencies %2 - + Can't remove Directory from Library 无法从库中删除目录 - + An unknown error occurred. 发生未知错误。 - + This directory does not exist or is inaccessible. 此目录不存在或无法访问。 - + Relink Directory 重新链接目录 - + Could not relink <b>%1</b> to <b>%2</b>. %3 @@ -9694,210 +9693,210 @@ Do you really want to overwrite it? MixxxMainWindow - + Sound Device Busy 声音设备正忙 - + <b>Retry</b> after closing the other application or reconnecting a sound device 關閉其他應用程式或重新連接聲音設備後 <b>重試</b> - - - + + + <b>Reconfigure</b> Mixxx's sound device settings. <b>重新配置</b> Mixxx 声音设备。 - - + + Get <b>Help</b> from the Mixxx Wiki. 从 Mixxx Wiki 中获取<b>帮助</b>。 - - - + + + <b>Exit</b> Mixxx. <b>退出</b> Mixxx。 - + Retry 重试 - + skin 皮肤 - + Allow Mixxx to hide the menu bar? 允许 Mixxx 隐藏菜单栏? - + Hide Always show the menu bar? 隐藏 - + Always show 始终显示 - + The Mixxx menu bar is hidden and can be toggled with a single press of the <b>Alt</b> key.<br><br>Click <b>%1</b> to agree.<br><br>Click <b>%2</b> to disable that, for example if you don't use Mixxx with a keyboard.<br><br>You can change this setting any time in Preferences -> Interface.<br> Keep formatting tags <b> (bold text) and <br> (linebreak). %1 is the placeholder for the 'Always show' button label Mixxx 菜单栏是隐藏的,只需按一下<b>Alt 键</b>钥匙。<br><br>点击<b>%1</b>同意。<br><br>点击<b>%2</b>以禁用它,例如,如果您不将 Mixxx 与键盘一起使用。<br><br>您可以随时在 Preferences -> Interface 中更改此设置。<br> - + Ask me again 再问我一次 - - + + Reconfigure 重新配置 - + Help 帮助 - - + + Exit 退出 - - + + Mixxx was unable to open all the configured sound devices. Mixxx 无法打开所有要打开的音频设备 - + Sound Device Error 音频设备错误 - + <b>Retry</b> after fixing an issue 修正错误后 <b> 重试 </b> - + No Output Devices 没有输出设备 - + Mixxx was configured without any output sound devices. Audio processing will be disabled without a configured output device. Mixxx 的配置中没有任何输出设备,将会禁用音频处理操作。 - + <b>Continue</b> without any outputs. <b>繼續</b> 沒有任何產出。 - + Continue 继续 - + Load track to Deck %1 加载音轨到碟机 %1 - + Deck %1 is currently playing a track. 甲板 %1 當前播放的曲目。 - + Are you sure you want to load a new track? 你確定你想要載入一個新的軌道? - + There is no input device selected for this vinyl control. Please select an input device in the sound hardware preferences first. 尚未选择用于唱盘控制的输入设备。 请在声音硬件的首选项中选择一个输入设备。 - + There is no input device selected for this passthrough control. Please select an input device in the sound hardware preferences first. 有是沒有為此直通控制項選擇的輸入的設備。 請先在聲音硬體首選項中選擇一種輸入的設備。 - + There is no input device selected for this microphone. Do you want to select an input device? 没有为此麦克风选择输入设备。是否要选择输入设备? - + There is no input device selected for this auxiliary. Do you want to select an input device? 没有为此辅助设备选择输入设备。是否要选择输入设备? - + Error in skin file 皮膚檔中的錯誤 - + The selected skin cannot be loaded. 無法載入所選的外觀。 - + OpenGL Direct Rendering OpenGL 直接繪製 - + Direct rendering is not enabled on your machine.<br><br>This means that the waveform displays will be very<br><b>slow and may tax your CPU heavily</b>. Either update your<br>configuration to enable direct rendering, or disable<br>the waveform displays in the Mixxx preferences by selecting<br>"Empty" as the waveform display in the 'Interface' section. 您的计算机上未启用直接渲染。<br><br>这意味着波形显示将非常<br><b>速度慢,并且可能会严重占用您的 CPU</b>.要么更新您的<br>配置以启用直接渲染或禁用<br>波形将通过选择 Mixxx 首选项显示在<br>“空”作为“界面”部分的波形显示。 - - - + + + Confirm Exit 确认退出 - + A deck is currently playing. Exit Mixxx? 有唱机正在播放。确定退出 Mixxx 吗? - + A sampler is currently playing. Exit Mixxx? 當前現正播放採樣器。退出 Mixxx 嗎? - + The preferences window is still open. 首選項視窗是仍處於打開狀態。 - + Discard any changes and exit Mixxx? 放棄所有更改並退出 Mixxx? @@ -11779,54 +11778,54 @@ may introduce a 'pumping' effect and/or distortion. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists 播放列表 - + Folders 文件夹 - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: 读取使用 Rekordbox 导出模式为 Pioneer CDJ/XDJ 播放器导出的数据库。1Rekordbox 只能导出到具有 FAT 或 HFS 文件系统的 USB 或 SD 设备。2Mixxx 可以从包含数据库文件夹 (3先锋3和4内容4).5不支持已通过67高级>数据库管理>首选项7.89读取以下数据: - + Hot cues - + Loops (only the first loop is currently usable in Mixxx) Loops(目前只有第一个 Loop 在 Mixxx 中可用) - + Check for attached Rekordbox USB / SD devices (refresh) 检查连接的 Rekordbox USB/SD 设备(刷新) - + Beatgrids 节拍网格 - + Memory cues 记忆线索 - + (loading) Rekordbox (加载中)Rekordbox @@ -16412,37 +16411,37 @@ This can not be undone! WTrackTableView - + Confirm track hide 确认轨道隐藏 - + Are you sure you want to hide the selected tracks? 您确定要隐藏选定的轨道吗? - + Are you sure you want to remove the selected tracks from AutoDJ queue? 您确定要从 AutoDJ 队列中删除选定的曲目吗? - + Are you sure you want to remove the selected tracks from this crate? 您确定要隐藏选定的轨道吗? - + Are you sure you want to remove the selected tracks from this playlist? 您确定要从此播放列表中删除选定的曲目吗? - + Don't ask again during this session 在此会话期间不要再次询问 - + Confirm track removal 确认轨道移除 @@ -16538,52 +16537,52 @@ This can not be undone! mixxx::CoreServices - + fonts 字体 - + database 数据库 - + effects 效果 - + audio interface 音频接口 - + decks 甲板 - + library 媒体库 - + Choose music library directory 選擇音樂庫目錄 - + controllers 控制器 - + Cannot open database 無法打開資料庫 - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/mixxx_zh_TW.qm b/res/translations/mixxx_zh_TW.qm index 21322339a5438dfe4b426cdd02ec8d07f9d02d07..b060802738aa47dabf139e9c8de30a215d001604 100644 GIT binary patch delta 23832 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 lZmZ)OFf$Zu5MoGcBmF+_Qjl8hqw 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

>7XH4TW`hb&~JY2cIl#L~x` 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 F<`1`C2(17B diff --git a/res/translations/mixxx_zh_TW.ts b/res/translations/mixxx_zh_TW.ts index 6de9ab232d78..17d40c1cae87 100644 --- a/res/translations/mixxx_zh_TW.ts +++ b/res/translations/mixxx_zh_TW.ts @@ -213,7 +213,7 @@ - + Export Playlist 匯出播放清單 @@ -260,13 +260,13 @@ - + Playlist Creation Failed 播放清單建立失敗 - + An unknown error occurred while creating playlist: 建立播放清單時發生未知的錯誤︰ @@ -281,12 +281,12 @@ 您確定要刪除播放清單 <b>%1</b>嗎? - + M3U Playlist (*.m3u) M3U 播放清單 (*.m3u) - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U 播放清單 (*.m3u);M3U8 播放清單 (*.m3u8);PLS播放清單 (*.pls);文字 CSV (*.csv);;可閱讀的文字 (*.txt) @@ -294,12 +294,12 @@ BaseSqlTableModel - + # # - + Timestamp 時間戳記 @@ -315,137 +315,137 @@ BaseTrackTableModel - + Album 專輯 - + Album Artist 專輯演出者 - + Artist 演出者 - + Bitrate 位元速率 - + BPM BPM - + Channels 電視頻道 - + Color 顏色 - + Comment 評論 - + Composer 作曲者 - + Cover Art 封面 - + Date Added 加入日期 - + Last Played 最後播放 - + Duration 持續時間 - + Type 類型 - + Genre 曲風 - + Grouping 分組 - + Key 音調 - + Location 位置 - + Preview 預覽 - + Rating 評分 - + ReplayGain 重播增益 - + Samplerate 取樣率 - + Played 已播放 - + Title 標題 - + Track # 曲目 # - + Year 年份 - + Fetching image ... Tooltip text on the cover art column shown when the cover is read from disk 獲取圖片中... @@ -2421,12 +2421,12 @@ trace - Above + Profiling messages Tempo Tap - + 节奏敲击 Tempo tap button - + 节奏敲击按钮 @@ -3695,7 +3695,7 @@ trace - Above + Profiling messages 匯入箱 - + Export Crate 匯出音樂箱 @@ -3705,7 +3705,7 @@ trace - Above + Profiling messages 解鎖 - + An unknown error occurred while creating crate: 創建音樂箱時發生未知的錯誤︰ @@ -3731,17 +3731,17 @@ trace - Above + Profiling messages 音樂箱重新命名失敗 - + Crate Creation Failed 建立音樂箱失敗 - + M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt) M3U 播放清單 (*.m3u);M3U8 播放清單 (*.m3u8);PLS播放清單 (*.pls);文字 CSV (*.csv);;可讀的文本 (*.txt) - + M3U Playlist (*.m3u) M3U 播放清單 (*.m3u) @@ -3867,12 +3867,12 @@ trace - Above + Profiling messages 過去的貢獻者 - + Official Website 官方网站 - + Donate 捐献 @@ -3928,7 +3928,7 @@ trace - Above + Profiling messages - + Analyze 分析 @@ -3973,17 +3973,17 @@ trace - Above + Profiling messages 在選定的曲目上運行節拍、音調和增益檢測。選定的曲目不會生成波形,以節省磁碟空間。 - + Stop Analysis 停止分析 - + Analyzing %1% %2/%3 分析 %1% %2/%3 - + Analyzing %1/%2 分析 %1/%2 @@ -3991,22 +3991,22 @@ trace - Above + Profiling messages DlgAutoDJ - + Skip 跳过 - + Random 随机 - + Fade 淡出 - + Enable Auto DJ Shortcut: Shift+F12 @@ -4015,7 +4015,7 @@ Shortcut: Shift+F12 快捷键:Shift+F12 - + Disable Auto DJ Shortcut: Shift+F12 @@ -4024,7 +4024,7 @@ Shortcut: Shift+F12 快捷键:Shift+F12 - + Trigger the transition to the next track Shortcut: Shift+F11 @@ -4033,7 +4033,7 @@ Shortcut: Shift+F11 快捷键:Shift+F11 - + Skip the next track in the Auto DJ queue Shortcut: Shift+F10 @@ -4042,7 +4042,7 @@ Shortcut: Shift+F10 快捷键:Shift+F10 - + Shuffle the content of the Auto DJ queue Shortcut: Shift+F9 @@ -4051,47 +4051,47 @@ Shortcut: Shift+F9 快捷键:Shift+F9 - + Repeat the playlist 重复播放列表 - + Determines the duration of the transition 决定转换持续时长。 - + Seconds - + Full Intro + Outro 完整的介绍 + 结尾 - + Fade At Outro Start 结尾开始时淡化 - + Full Track 完整曲目 - + Skip Silence 跳过静音 - + Decks not used for Auto DJ must be stopped to enable Auto DJ mode. 要啟用自動 DJ 模式,未使用於自動 DJ 的甲板必須停止。 - + Auto DJ Fade Modes Full Intro + Outro: @@ -4138,50 +4138,50 @@ last sound. 开始交叉淡入。 - + Repeat 重複 - + Auto DJ requires two decks assigned to opposite sides of the crossfader. 自动 DJ 需要在交叉渐变器的相对两侧分配两个甲板。 - + One deck must be stopped to enable Auto DJ mode. 要啟用自動 DJ 模式,必須停止一個甲板。 - + Enable 启用 - + Disable 禁用 - + Displays the duration and number of selected tracks. 顯示被選定的音軌的數量和時間長度 - - - + + + Auto DJ 自動DJ - + Shuffle 拖曳 - + Adds a random track from track sources (crates) to the Auto DJ queue. If no track sources are configured, the track is added from the library instead. 從軌道來源(音樂箱)添加隨機軌道新增到自動 DJ 柱列。 @@ -4396,37 +4396,37 @@ Often results in higher quality beatgrids, but will not do well on tracks that h 如果映射不是工作嘗試啟用高級的選項下面,然後試著控制再一次。或按一下重試重新檢測 midi 控制。 - + Didn't get any midi messages. Please try again. 沒有得到任何的 midi 消息。 請再試一次。 - + Unable to detect a mapping -- please try again. Be sure to only touch one control at once. 無法檢測到的映射 — — 請再試一次。要確保只有一次觸摸一個控制項。 - + Successfully mapped control: 成功映射的控制項︰ - + <i>Ready to learn %1</i> <i>準備好要學習 %1</i> - + Learning: %1. Now move a control on your controller. 學習: %1。現在移動您的控制器上的一個控制項。 - + The selected control does not exist.<br>This likely a bug. Please report it on the Mixxx bug tracker.<br><a href='https://github.com/mixxxdj/mixxx/issues'>https://github.com/mixxxdj/mixxx/issues</a><br><br>You tried to learn: %1,%2 - + The control you clicked in Mixxx is not learnable. This could be because you are either using an old skin and this control is no longer supported, or you clicked a control that provides visual feedback and can only be mapped to outputs like LEDs via scripts. @@ -5098,139 +5098,139 @@ Two source connections to the same server that have the same mountpoint can not DlgPrefController - + Apply device settings? 應用設備設置嗎? - + Your settings must be applied before starting the learning wizard. Apply settings and continue? 開始學習嚮導前,必須應用您的設置。 應用設置並繼續? - + None 沒有一個 - + %1 by %2 %2 %1 - + No Name 沒有名字 - + No Description 沒有說明 - + No Author 沒有作者 - + Mapping has been edited 映射已编辑 - + Always overwrite during this session 在此会话期间始终覆盖 - + Save As 另存为 - + Overwrite 覆盖 - + Save user mapping 保存用户映射 - + Enter the name for saving the mapping to the user folder. 输入用于将映射保存到用户文件夹的名称。 - + Saving mapping failed 保存映射失败 - + A mapping cannot have a blank name and may not contain special characters. 映射不能具有空白名称,并且不能包含特殊字符。 - + A mapping file with that name already exists. 具有该名称的映射文件已存在。 - + missing 缺少 - + built-in 内置 - + Do you want to save the changes? 是否要保存更改? - + Troubleshooting 疑難排解 - + <font color='#BB0000'><b>If you use this mapping your controller may not work correctly. Please select another mapping or disable the controller.</b></font><br><br>This mapping was designed for a newer Mixxx Controller Engine and cannot be used on your current Mixxx installation.<br>Your Mixxx installation has Controller Engine version %1. This mapping requires a Controller Engine version >= %2.<br><br>For more information visit the wiki page on <a href='https://mixxx.org/wiki/doku.php/controller_engine_versions'>Controller Engine Versions</a>. 如果使用此映射,则控制器可能无法正常工作。请选择其他映射或禁用控制器。此映射专为较新的 Mixxx 控制器引擎而设计,不能用于您当前的 Mixxx 安装。您的 Mixxx 安装的 Controller Engine 版本为 %1。此映射需要 Controller Engine 版本 >= %2。有关更多信息,请访问有关 Controller Engine 版本的 wiki 页面。 - + Mapping already exists. 映射已存在。 - + <b>%1</b> already exists in user mapping folder.<br>Overwrite or save with a new name? <b>%1</b>已存在于用户映射文件夹中.<br>覆盖还是用新名称保存? - + Clear Input Mappings 清除輸入的映射 - + Are you sure you want to clear all input mappings? 你確定你想要清除所有輸入的映射? - + Clear Output Mappings 清除輸出映射 - + Are you sure you want to clear all output mappings? 你確定你想要清除所有輸出映射? @@ -7302,138 +7302,137 @@ The loudness target is approximate and assumes track pregain and main output lev DlgPrefSound - + %1 Hz %1 Hz - + Default (long delay) 預設 (長時間的延遲) - + Experimental (no delay) 實驗 (無延時) - + Disabled (short delay) 禁用 (短延時) - + Soundcard Clock 声卡时钟 - + Network Clock 网络时钟 - + Direct monitor (recording and broadcasting only) 直接监视器(仅限录制和广播) - + Disabled 已禁用 - + Enabled 啟用 - + Stereo 身歷聲 - + Mono 單聲道 - + To enable Realtime scheduling (currently disabled), see the %1. 要启用实时计划(当前已禁用),请参阅 %1。 - + The %1 lists sound cards and controllers you may want to consider for using Mixxx. %1 列出了您可能需要考虑使用 Mixxx 的声卡和控制器。 - + Mixxx DJ Hardware Guide Mixxx DJ 硬件指南 - + auto (<= 1024 frames/period) 自动(<= 1024 帧/周期) - + 2048 frames/period 2048 帧/周期 - + 4096 frames/period 4096 帧/周期 - + Microphone inputs are out of time in the record & broadcast signal compared to what you hear. 与您听到的相比,麦克风输入在录音和广播信号中显得不合时宜。 - + Measure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. 测量往返延迟,并在上方输入麦克风延迟补偿以对齐麦克风计时。 - - + Refer to the Mixxx User Manual for details. 細節請參考Mixxx 使用者操作手冊 - + Configured latency has changed. 配置的延迟已更改。 - + Remeasure round trip latency and enter it above for Microphone Latency Compensation to align microphone timing. 重新测量往返延迟,并将其输入到麦克风延迟补偿上方,以调整麦克风定时。 - + Realtime scheduling is enabled. 已启用实时调度。 - + Main output only 仅主输出 - + Main and booth outputs 主输出和展位输出 - + %1 ms %1 ms - + Configuration error 配置錯誤 @@ -7451,126 +7450,126 @@ The loudness target is approximate and assumes track pregain and main output lev 聲音 API - + Sample Rate 採樣速率 - + Audio Buffer 音訊緩衝區 - + Engine Clock 引擎时钟 - + Use soundcard clock for live audience setups and lowest latency.<br>Use network clock for broadcasting without a live audience. 使用声卡时钟进行现场观众设置和最低延迟。1使用网络时钟进行没有现场观众的广播。 - + Main Mix 主混合 - + Main Output Mode 主输出模式 - + Microphone Monitor Mode 麦克风监听模式 - + Microphone Latency Compensation 麦克风延迟补偿 - - - - + + + + ms milliseconds 女士 - + 20 ms 為 20 毫秒 - + Buffer Underflow Count 緩衝區下溢計數 - + 0 0 - + Keylock/Pitch-Bending Engine 鑰匙鎖/瀝青彎曲的引擎 - + Multi-Soundcard Synchronization 多音效卡同步 - + Output 輸出 - + Input 輸入 - + System Reported Latency 系統報告延遲 - + Enlarge your audio buffer if the underflow counter is increasing or you hear pops during playback. 如果增加下溢計數器或你聽到持久性有機污染物在播放過程中,放大你的音訊緩衝區。 - + Main Output Delay 主输出延迟 - + Headphone Output Delay 耳机输出延迟 - + Booth Output Delay Booth输出延迟 - + Hints and Diagnostics 提示和診斷 - + Downsize your audio buffer to improve Mixxx's responsiveness. 縮減你的音訊緩衝區來提高 Mixxx 的回應能力。 - + Query Devices 查詢設備 @@ -8134,22 +8133,22 @@ Select from different types of displays for the waveform, which differ primarily - + Start Recording 開始錄製 - + Recording to file: 录制到文件: - + Stop Recording 停止錄製 - + %1 MiB written in %2 %1 MiB 写入 %2 @@ -9426,37 +9425,37 @@ Shown when VuMeter can not be displayed. Please keep Library - + This or a parent directory is already in your library. 此目录或父目录已位于您的库中。 - + This or a listed directory does not exist or is inaccessible. Aborting the operation to avoid library inconsistencies 此目录或列出的目录不存在或无法访问。 中止操作以避免库不一致 - - + + This directory can not be read. 无法读取此目录。 - + An unknown error occurred. Aborting the operation to avoid library inconsistencies 发生未知错误。 中止操作以避免库不一致 - + Can't add Directory to Library 无法将目录添加到库 - + Could not add <b>%1</b> to your library. %2 @@ -9465,27 +9464,27 @@ Aborting the operation to avoid library inconsistencies %2 - + Can't remove Directory from Library 无法从库中删除目录 - + An unknown error occurred. 发生未知错误。 - + This directory does not exist or is inaccessible. 此目录不存在或无法访问。 - + Relink Directory 重新链接目录 - + Could not relink <b>%1</b> to <b>%2</b>. %3 @@ -9667,210 +9666,210 @@ Do you really want to overwrite it? MixxxMainWindow - + Sound Device Busy 聲音設備忙 - + <b>Retry</b> after closing the other application or reconnecting a sound device 關閉其他應用程式或重新連接聲音設備後 <b>重試</b> - - - + + + <b>Reconfigure</b> Mixxx's sound device settings. <b>重新配置</b>Mixxx 的聲音設備設置。 - - + + Get <b>Help</b> from the Mixxx Wiki. 從 Mixxx Wiki 得到 <b>説明</b>。 - - - + + + <b>Exit</b> Mixxx. <b>退出</b>Mixxx。 - + Retry 重試 - + skin 皮肤 - + Allow Mixxx to hide the menu bar? 允许 Mixxx 隐藏菜单栏? - + Hide Always show the menu bar? 隐藏 - + Always show 始终显示 - + The Mixxx menu bar is hidden and can be toggled with a single press of the <b>Alt</b> key.<br><br>Click <b>%1</b> to agree.<br><br>Click <b>%2</b> to disable that, for example if you don't use Mixxx with a keyboard.<br><br>You can change this setting any time in Preferences -> Interface.<br> Keep formatting tags <b> (bold text) and <br> (linebreak). %1 is the placeholder for the 'Always show' button label Mixxx 菜单栏是隐藏的,只需按一下<b>Alt 键</b>钥匙。<br><br>点击<b>%1</b>同意。<br><br>点击<b>%2</b>以禁用它,例如,如果您不将 Mixxx 与键盘一起使用。<br><br>您可以随时在 Preferences -> Interface 中更改此设置。<br> - + Ask me again 再问我一次 - - + + Reconfigure 重新配置 - + Help 説明 - - + + Exit 退出 - - + + Mixxx was unable to open all the configured sound devices. Mixxx 無法打開所有設定好的聲音裝置。 - + Sound Device Error 聲音裝置錯誤 - + <b>Retry</b> after fixing an issue 修正错误后 <b> 重试 </b> - + No Output Devices 沒有輸出裝置 - + Mixxx was configured without any output sound devices. Audio processing will be disabled without a configured output device. Mixxx 是沒有任何輸出聲音設備配置的。沒有已配置的輸出裝置,將禁用音訊處理。 - + <b>Continue</b> without any outputs. <b>繼續</b> 沒有任何產出。 - + Continue 繼續 - + Load track to Deck %1 負荷跟蹤到甲板 %1 - + Deck %1 is currently playing a track. 甲板 %1 當前播放的曲目。 - + Are you sure you want to load a new track? 你確定你想要載入一個新的軌道? - + There is no input device selected for this vinyl control. Please select an input device in the sound hardware preferences first. 有是沒有為此乙烯基控制項選擇的輸入的設備。 請先在聲音硬體首選項中選擇一種輸入的設備。 - + There is no input device selected for this passthrough control. Please select an input device in the sound hardware preferences first. 有是沒有為此直通控制項選擇的輸入的設備。 請先在聲音硬體首選項中選擇一種輸入的設備。 - + There is no input device selected for this microphone. Do you want to select an input device? 没有为此麦克风选择输入设备。是否要选择输入设备? - + There is no input device selected for this auxiliary. Do you want to select an input device? 没有为此辅助设备选择输入设备。是否要选择输入设备? - + Error in skin file 皮膚檔中的錯誤 - + The selected skin cannot be loaded. 無法載入所選的外觀。 - + OpenGL Direct Rendering OpenGL 直接繪製 - + Direct rendering is not enabled on your machine.<br><br>This means that the waveform displays will be very<br><b>slow and may tax your CPU heavily</b>. Either update your<br>configuration to enable direct rendering, or disable<br>the waveform displays in the Mixxx preferences by selecting<br>"Empty" as the waveform display in the 'Interface' section. 您的计算机上未启用直接渲染。<br><br>这意味着波形显示将非常<br><b>速度慢,并且可能会严重占用您的 CPU</b>.要么更新您的<br>配置以启用直接渲染或禁用<br>波形将通过选择 Mixxx 首选项显示在<br>“空”作为“界面”部分的波形显示。 - - - + + + Confirm Exit 確認退出 - + A deck is currently playing. Exit Mixxx? 當前現正播放的甲板。退出 Mixxx 嗎? - + A sampler is currently playing. Exit Mixxx? 當前現正播放採樣器。退出 Mixxx 嗎? - + The preferences window is still open. 首選項視窗是仍處於打開狀態。 - + Discard any changes and exit Mixxx? 放棄所有更改並退出 Mixxx? @@ -11751,54 +11750,54 @@ may introduce a 'pumping' effect and/or distortion. RekordboxFeature - - - + + + Rekordbox Rekordbox - + Playlists 播放清單 - + Folders 文件夹 - + Reads databases exported for Pioneer CDJ / XDJ players using the Rekordbox Export mode.<br/>Rekordbox can only export to USB or SD devices with a FAT or HFS file system.<br/>Mixxx can read a database from any device that contains the database folders (<tt>PIONEER</tt> and <tt>Contents</tt>).<br/>Not supported are Rekordbox databases that have been moved to an external device via<br/><i>Preferences > Advanced > Database management</i>.<br/><br/>The following data is read: 读取使用 Rekordbox 导出模式为 Pioneer CDJ/XDJ 播放器导出的数据库。1Rekordbox 只能导出到具有 FAT 或 HFS 文件系统的 USB 或 SD 设备。2Mixxx 可以从包含数据库文件夹 (3先锋3和4内容4).5不支持已通过67高级>数据库管理>首选项7.89读取以下数据: - + Hot cues - + Loops (only the first loop is currently usable in Mixxx) Loops(目前只有第一个 Loop 在 Mixxx 中可用) - + Check for attached Rekordbox USB / SD devices (refresh) 检查连接的 Rekordbox USB/SD 设备(刷新) - + Beatgrids 节拍网格 - + Memory cues 记忆线索 - + (loading) Rekordbox (加载中)Rekordbox @@ -16376,37 +16375,37 @@ This can not be undone! WTrackTableView - + Confirm track hide 确认轨道隐藏 - + Are you sure you want to hide the selected tracks? 您确定要隐藏选定的轨道吗? - + Are you sure you want to remove the selected tracks from AutoDJ queue? 您确定要从 AutoDJ 队列中删除选定的曲目吗? - + Are you sure you want to remove the selected tracks from this crate? 您确定要隐藏选定的轨道吗? - + Are you sure you want to remove the selected tracks from this playlist? 您确定要从此播放列表中删除选定的曲目吗? - + Don't ask again during this session 在此会话期间不要再次询问 - + Confirm track removal 确认轨道移除 @@ -16502,52 +16501,52 @@ This can not be undone! mixxx::CoreServices - + fonts 字体 - + database 数据库 - + effects 效果 - + audio interface 音频接口 - + decks 甲板 - + library 媒体库 - + Choose music library directory 選擇音樂庫目錄 - + controllers 控制器 - + Cannot open database 無法打開資料庫 - + Unable to establish a database connection. Mixxx requires QT with SQLite support. Please read the Qt SQL driver documentation for information on how to build it. diff --git a/res/translations/source_copy_allow_list.tsv b/res/translations/source_copy_allow_list.tsv index d4df556d7bc0..0415560d8c73 100644 --- a/res/translations/source_copy_allow_list.tsv +++ b/res/translations/source_copy_allow_list.tsv @@ -446,3 +446,4 @@ sq_AL Artist + Album it Okay de Attack (ms) de Attack +vi Samplerate From 8b629f06f9db534f80766e449a5bace42f013392 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Fri, 27 Jun 2025 19:58:46 +0200 Subject: [PATCH 10/19] (fix) Pref Broadcast: make setting string translatable --- src/preferences/dialog/dlgprefbroadcast.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/preferences/dialog/dlgprefbroadcast.cpp b/src/preferences/dialog/dlgprefbroadcast.cpp index e259a043f523..42633cbcbd03 100644 --- a/src/preferences/dialog/dlgprefbroadcast.cpp +++ b/src/preferences/dialog/dlgprefbroadcast.cpp @@ -18,7 +18,6 @@ #include "util/logger.h" namespace { -const char* kSettingsGroupHeader = "Settings for %1"; constexpr int kColumnEnabled = 0; constexpr int kColumnName = 1; const mixxx::Logger kLogger("DlgPrefBroadcast"); @@ -417,9 +416,8 @@ void DlgPrefBroadcast::getValuesFromProfile(BroadcastProfilePtr profile) { } // Set groupbox header - QString headerText = - QString(tr(kSettingsGroupHeader)) - .arg(profile->getProfileName()); + //: Settings for broadcast profile, %1 is the profile name placeholder + const QString headerText = tr("Settings for %1").arg(profile->getProfileName()); groupBoxProfileSettings->setTitle(headerText); rbPasswordCleartext->setChecked(!profile->secureCredentialStorage()); From 4d38307a2c3e296e0ea895afb78b1819e56b01ce Mon Sep 17 00:00:00 2001 From: "Antoine C." Date: Fri, 27 Jun 2025 22:59:30 +0000 Subject: [PATCH 11/19] ci(release): publish version to download server --- .github/workflows/build.yml | 79 +++++++++++++++++++++++------------ .github/workflows/release.yml | 13 ++++++ 2 files changed, 65 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 66cb3ba0192a..f2cb9f186ba2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,31 @@ name: Build on: workflow_call: + inputs: + publish: + type: boolean + default: false + secrets: + azure_client_id: + required: false + azure_client_secret: + required: false + azure_tenant_id: + required: false + downloads_hostgator_dot_mixxx_dot_org_key: + required: false + downloads_hostgator_dot_mixxx_dot_org_key_password: + required: false + macos_codesign_certificate_p12_base64: + required: false + macos_codesign_certificate_password: + required: false + macos_notarization_app_specific_password: + required: false + netlify_build_hook: + required: false + rryan_at_mixxx_dot_org_gpg_private_key: + required: false permissions: contents: read # to fetch code (actions/checkout) @@ -117,8 +142,8 @@ jobs: env: # macOS codesigning - MACOS_CODESIGN_CERTIFICATE_P12_BASE64: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_P12_BASE64 }} - MACOS_CODESIGN_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_PASSWORD }} + MACOS_CODESIGN_CERTIFICATE_P12_BASE64: ${{ secrets.macos_codesign_certificate_p12_base64 }} + MACOS_CODESIGN_CERTIFICATE_PASSWORD: ${{ secrets.macos_codesign_certificate_password }} runs-on: ${{ matrix.os }} name: ${{ matrix.name }} @@ -311,13 +336,13 @@ jobs: - name: "[Windows] Sign executables" env: - AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} - if: runner.os == 'Windows' && env.AZURE_TENANT_ID + azure_tenant_id: ${{ secrets.azure_tenant_id }} + if: runner.os == 'Windows' && env.azure_tenant_id uses: azure/trusted-signing-action@v0.5.1 with: - azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} - azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} - azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} + azure-tenant-id: ${{ secrets.azure_tenant_id }} + azure-client-id: ${{ secrets.azure_client_id }} + azure-client-secret: ${{ secrets.azure_client_secret }} endpoint: https://weu.codesigning.azure.net/ trusted-signing-account-name: mixxx certificate-profile-name: mixxx @@ -344,9 +369,9 @@ jobs: - name: "[Ubuntu] Import PPA GPG key" if: startsWith(matrix.os, 'ubuntu') && env.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY != null - run: gpg --import <(echo "${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }}") + run: gpg --import <(echo "${{ secrets.rryan_at_mixxx_dot_org_gpg_private_key }}") env: - RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: ${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }} + RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: ${{ secrets.rryan_at_mixxx_dot_org_gpg_private_key }} - name: "Package for PPA" # No need to do the PPA build for both Ubuntu versions @@ -370,18 +395,18 @@ jobs: run: packaging/macos/sign_notarize_staple.sh build/*.dmg env: APPLE_ID_USERNAME: daschuer@mixxx.org - APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD }} + APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.macos_notarization_app_specific_password }} APPLE_TEAM_ID: JBLRSP95FC - name: "[Windows] Sign installer" env: - AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} - if: runner.os == 'Windows' && env.AZURE_TENANT_ID + azure_tenant_id: ${{ secrets.azure_tenant_id }} + if: runner.os == 'Windows' && env.azure_tenant_id uses: azure/trusted-signing-action@v0.5.1 with: - azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} - azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} - azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} + azure-tenant-id: ${{ secrets.azure_tenant_id }} + azure-client-id: ${{ secrets.azure_client_id }} + azure-client-secret: ${{ secrets.azure_client_secret }} endpoint: https://weu.codesigning.azure.net/ trusted-signing-account-name: mixxx certificate-profile-name: mixxx @@ -397,7 +422,7 @@ jobs: # also generates metadata for file artifact and write it to the job # output using the artifacts_slug value. id: prepare_deploy - if: github.event_name == 'push' && matrix.artifacts_path != null + if: inputs.publish && matrix.artifacts_path != null shell: bash run: > if [[ "${GITHUB_REF}" =~ ^refs/tags/.* ]]; @@ -417,8 +442,8 @@ jobs: # https://github.com/actions/cache/issues/531 - name: "[Windows] Install rsync and openssh" env: - SSH_PRIVATE_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }} - if: runner.os == 'Windows' && github.event_name == 'push' && env.SSH_PRIVATE_KEY != null + SSH_PRIVATE_KEY: ${{ secrets.downloads_hostgator_dot_mixxx_dot_org_key }} + if: runner.os == 'Windows' && inputs.publish && env.SSH_PRIVATE_KEY != null run: | $Env:PATH="c:\msys64\usr\bin;$Env:PATH" pacman -S --noconfirm coreutils bash rsync openssh @@ -447,11 +472,11 @@ jobs: Add-Content -Path "$Env:GITHUB_ENV" -Value "PATH=$Env:PATH" - name: "Set up SSH Agent" - if: github.event_name == 'push' && env.SSH_PRIVATE_KEY != null + if: inputs.publish && env.SSH_PRIVATE_KEY != null shell: bash env: SSH_AUTH_SOCK: /tmp/ssh_agent.sock - SSH_PRIVATE_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }} + SSH_PRIVATE_KEY: ${{ secrets.downloads_hostgator_dot_mixxx_dot_org_key }} SSH_HOST: downloads-hostgator.mixxx.org run: | ssh-agent -a $SSH_AUTH_SOCK > /dev/null @@ -462,7 +487,7 @@ jobs: - name: "[macOS/Windows] Upload build to downloads.mixxx.org" # skip deploying Ubuntu builds to downloads.mixxx.org because these are deployed to the PPA - if: runner.os != 'Linux' && github.event_name == 'push' && env.SSH_AUTH_SOCK != null + if: runner.os != 'Linux' && inputs.publish && env.SSH_AUTH_SOCK != null shell: bash --login -eo pipefail "{0}" run: rsync --verbose --recursive --checksum --times --delay-updates "deploy/" "${SSH_USER}@${SSH_HOST}:${DESTDIR}/" env: @@ -508,7 +533,7 @@ jobs: - name: "Collect Artifacts Metadata & Write Manifest" # Retrieve the metadata from the matrix job's outputs, merge them into a # single JSON document and then deploy to the server. - if: github.event_name == 'push' && env.SSH_PASSWORD != null + if: inputs.publish && env.SSH_PASSWORD != null run: > if [[ "${GITHUB_REF}" =~ ^refs/tags/.* ]]; then @@ -523,14 +548,14 @@ jobs: --dest-url 'https://downloads.mixxx.org' env: JOB_DATA: ${{ toJSON(needs.build) }} - SSH_PASSWORD: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD }} + SSH_PASSWORD: ${{ secrets.downloads_hostgator_dot_mixxx_dot_org_key_password }} - name: "Set up SSH Agent" - if: github.event_name == 'push' && env.SSH_PRIVATE_KEY != null && env.MANIFEST_DIRTY != null && env.MANIFEST_DIRTY != '0' + if: inputs.publish && env.SSH_PRIVATE_KEY != null && env.MANIFEST_DIRTY != null && env.MANIFEST_DIRTY != '0' shell: bash env: SSH_AUTH_SOCK: /tmp/ssh_agent.sock - SSH_PRIVATE_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }} + SSH_PRIVATE_KEY: ${{ secrets.downloads_hostgator_dot_mixxx_dot_org_key }} SSH_HOST: downloads-hostgator.mixxx.org run: | ssh-agent -a $SSH_AUTH_SOCK > /dev/null @@ -540,7 +565,7 @@ jobs: echo "SSH_AUTH_SOCK=${SSH_AUTH_SOCK}" >> "${GITHUB_ENV}" - name: "Deploy Manifest" - if: github.event_name == 'push' && env.SSH_AUTH_SOCK != null + if: inputs.publish && env.SSH_AUTH_SOCK != null shell: bash run: rsync --verbose --recursive --checksum --times --delay-updates "deploy/" "${SSH_USER}@${SSH_HOST}:${DESTDIR}/" env: @@ -552,4 +577,4 @@ jobs: if: env.NETLIFY_BUILD_HOOK != null && env.MANIFEST_DIRTY != null && env.MANIFEST_DIRTY != '0' run: curl -X POST -d '{}' ${{ env.NETLIFY_BUILD_HOOK }} env: - NETLIFY_BUILD_HOOK: ${{ secrets.NETLIFY_BUILD_HOOK }} + NETLIFY_BUILD_HOOK: ${{ secrets.netlify_build_hook }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8d8a39c586c6..0980953b2486 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,6 +23,19 @@ jobs: build: uses: ./.github/workflows/build.yml + with: + publish: true + secrets: + azure_client_id: ${{ secrets.AZURE_CLIENT_ID }} + azure_client_secret: ${{ secrets.AZURE_CLIENT_SECRET }} + azure_tenant_id: ${{ secrets.AZURE_TENANT_ID }} + downloads_hostgator_dot_mixxx_dot_org_key: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }} + downloads_hostgator_dot_mixxx_dot_org_key_password: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD }} + macos_codesign_certificate_p12_base64: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_P12_BASE64 }} + macos_codesign_certificate_password: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_PASSWORD }} + macos_notarization_app_specific_password: ${{ secrets.MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD }} + netlify_build_hook: ${{ secrets.NETLIFY_BUILD_HOOK }} + rryan_at_mixxx_dot_org_gpg_private_key: ${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }} sync: if: ${{ github.ref != 'refs/heads/main' }} From 7d278909c9231534c6fa17a18ec2ac4235d03260 Mon Sep 17 00:00:00 2001 From: Hetarth Jodha Date: Sat, 28 Jun 2025 13:35:04 +0530 Subject: [PATCH 12/19] ci(2.5): remove all VCPKG_DEFAULT_HOST_TRIPLET entries from build.yml --- .github/workflows/build.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f2cb9f186ba2..e873c6a8b6f1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -73,7 +73,6 @@ jobs: -DQT6=ON -DWAVPACK=ON -DVCPKG_TARGET_TRIPLET=x64-osx-min1100-release - -DVCPKG_DEFAULT_HOST_TRIPLET=x64-osx-min1100-release # TODO: Fix this broken test on macOS ctest_args: --exclude-regex DirectoryDAOTest.relocateDirectory cpack_generator: DragNDrop @@ -97,7 +96,6 @@ jobs: -DQT6=ON -DWAVPACK=ON -DVCPKG_TARGET_TRIPLET=arm64-osx-min1100-release - -DVCPKG_DEFAULT_HOST_TRIPLET=x64-osx-min1100-release # TODO: Fix this broken test on macOS crosscompile: true cpack_generator: DragNDrop @@ -127,7 +125,6 @@ jobs: -DQT6=ON -DWAVPACK=ON -DVCPKG_TARGET_TRIPLET=x64-windows-release - -DVCPKG_DEFAULT_HOST_TRIPLET=x64-windows-release cc: cl cxx: cl # TODO: Fix these broken tests on Windows From a6a1d87aa148c2b81a3314f60dd0e0c7c45602a6 Mon Sep 17 00:00:00 2001 From: "Antoine C." Date: Sat, 28 Jun 2025 15:53:57 +0000 Subject: [PATCH 13/19] ci(branch): allow running CI on fork branch without PR --- .github/workflows/develop.yml | 88 +++++++++++++++++++++++++++++ .github/workflows/pre-commit.yml | 25 ++++---- .github/workflows/pull-request.yml | 36 ------------ .github/workflows/release.yml | 6 ++ .github/workflows/sync_branches.yml | 1 + 5 files changed, 106 insertions(+), 50 deletions(-) create mode 100644 .github/workflows/develop.yml delete mode 100644 .github/workflows/pull-request.yml diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml new file mode 100644 index 000000000000..46e617d65ba3 --- /dev/null +++ b/.github/workflows/develop.yml @@ -0,0 +1,88 @@ +name: Pull request or branch build + +on: + pull_request: + types: + - opened + - synchronize + - reopened + - edited + push: + branches: + - "*" + - "!main" + - "![0-9].[0-9]" + workflow_dispatch: + +permissions: + contents: read # to fetch code (actions/checkout) + checks: write # to create new checks (coverallsapp/github-action) + +jobs: + stop-build: + name: Check if build should be stopped + runs-on: ubuntu-latest + outputs: + result: ${{ github.event_name == 'push' && steps.stop-build.outputs.result || 'false' }} + steps: + - name: Check if there is an open PR for this branch + id: stop-build + if: ${{ github.event_name == 'push' }} + uses: actions/github-script@v7 + env: + ORGANIZATION: mixxxdj + REPOSITORY: mixxx + with: + script: | + try { + const branch = context.ref.replace('refs/heads/', ''); + const { data: pullRequests } = await github.rest.pulls.list({ + owner: process.env.ORGANIZATION, + repo: process.env.REPOSITORY, + head: `${context.repo.owner}:${branch}`, + state: 'open' + }); + console.log(`There is ${pullRequests.length} PR open upstream for branch '${context.repo.owner}:${branch}'`); + return pullRequests.length != 0; + } catch (error) { + console.log(`Didn't find a PR for branch '${context.repo.owner}:${branch}' on '${process.env.ORGANIZATION}/${process.env.REPOSITORY}'.`); + return false; + } + + pre-commit: + if: needs.stop-build.outputs.result == 'false' + needs: + - stop-build + uses: ./.github/workflows/pre-commit.yml + with: + pull_request: ${{ github.event_name == 'pull_request' }} + + checks: + if: needs.stop-build.outputs.result == 'false' + needs: + - stop-build + uses: ./.github/workflows/checks.yml + + git: + if: github.event_name == 'pull_request' + uses: ./.github/workflows/git.yml + + build: + if: needs.stop-build.outputs.result == 'false' + needs: + - stop-build + uses: ./.github/workflows/build.yml + + # This task is used as a probe for auto merge + # In the future, it could also be used to perform a status update (e.g once the whole CI is passing + is ready for review, add a specific label such as `need review`) + ready: + name: Ready to merge + needs: + - pre-commit + - checks + - git + - build + runs-on: ubuntu-latest + steps: + - name: Ready to go + run: "exit 0" diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index aa75be8787d8..97e9302ed689 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -4,6 +4,10 @@ name: pre-commit on: workflow_call: + inputs: + pull_request: + type: boolean + default: false permissions: contents: read # to fetch code (actions/checkout) @@ -36,26 +40,19 @@ jobs: git config --global --add safe.directory "${GITHUB_WORKSPACE}" git config --global --list - - name: "Detect code style issues (push)" + - name: "Detect code style issues" uses: pre-commit/action@v3.0.1 - if: github.event_name == 'push' - # There are too many files in the repo that have formatting issues. We'll - # disable these checks for now when pushing directly (but still run these - # on Pull Requests!). env: - SKIP: clang-format,eslint,no-commit-to-branch - - - name: "Detect code style issues (pull_request)" - uses: pre-commit/action@v3.0.1 - if: github.event_name == 'pull_request' - env: - SKIP: no-commit-to-branch + # There are too many files in the repo that have formatting issues. We'll + # disable these checks for now when pushing directly (but still run these + # on Pull Requests!). + SKIP: ${{ inputs.pull_request && 'no-commit-to-branch' || 'clang-format,eslint,no-commit-to-branch' }} # https://github.com/paleite/eslint-plugin-diff?tab=readme-ov-file#ci-setup - ESLINT_PLUGIN_DIFF_COMMIT: ${{ github.event.pull_request.base.ref }} + ESLINT_PLUGIN_DIFF_COMMIT: ${{ inputs.pull_request && github.event.pull_request.base.ref || '' }} with: # HEAD is the not yet integrated PR merge commit +refs/pull/xxxx/merge # HEAD^1 is the PR target branch and HEAD^2 is the HEAD of the source branch - extra_args: --from-ref HEAD^1 --to-ref HEAD + extra_args: ${{ inputs.pull_request && '--from-ref HEAD^1 --to-ref HEAD' || '' }} - name: "Generate patch file" if: failure() diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml deleted file mode 100644 index 3be26454ed91..000000000000 --- a/.github/workflows/pull-request.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Pull request - -on: - pull_request: - types: - - opened - - synchronize - - reopened - - edited - -jobs: - pre-commit: - uses: ./.github/workflows/pre-commit.yml - - checks: - uses: ./.github/workflows/checks.yml - - git: - uses: ./.github/workflows/git.yml - - build: - uses: ./.github/workflows/build.yml - - # This task is used as a probe for auto merge - # In the future, it could also be used to perform a status update (e.g once the whole CI is passing + is ready for review, add a specific label such as `need review`) - ready: - name: Ready to merge - needs: - - pre-commit - - checks - - git - - build - runs-on: ubuntu-latest - steps: - - name: Ready to go - run: "exit 0" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0980953b2486..0fc9e6aabdf3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,6 +14,12 @@ env: ACTIVE_VERSIONS: |- {"2.5": "2.6", "2.6": "main"} +# Global allowed scopes for all actions +permissions: + contents: write # to sync branches + pull-requests: write # to sync branches + checks: write # to create new checks (coverallsapp/github-action) + jobs: checks: uses: ./.github/workflows/checks.yml diff --git a/.github/workflows/sync_branches.yml b/.github/workflows/sync_branches.yml index 46312712ac3f..4366518b21fb 100644 --- a/.github/workflows/sync_branches.yml +++ b/.github/workflows/sync_branches.yml @@ -20,6 +20,7 @@ env: jobs: sync-branches: + if: ${{ inputs.pat_token != '' }} runs-on: ubuntu-latest permissions: contents: write From 5b477c1b7b381f3542b9f4c01c622105f95ae30d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Sun, 29 Jun 2025 16:43:57 +0200 Subject: [PATCH 14/19] Don't rename secrets when passing them to reusable workflows This keeps workflows reusable workflows readable without following renaming in the caller. It also allows quickly using the work flow directly without renaming. It will be easier to maintain in case of renaming or adding secrets in the GitHub config. --- .github/workflows/build.yml | 60 +++++++++++++++++------------------ .github/workflows/release.yml | 20 ++++++------ 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e873c6a8b6f1..316ba4908c6c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,25 +9,25 @@ on: type: boolean default: false secrets: - azure_client_id: + AZURE_CLIENT_ID: required: false - azure_client_secret: + AZURE_CLIENT_SECRET: required: false - azure_tenant_id: + AZURE_TENANT_ID: required: false - downloads_hostgator_dot_mixxx_dot_org_key: + DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY: required: false - downloads_hostgator_dot_mixxx_dot_org_key_password: + DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD: required: false - macos_codesign_certificate_p12_base64: + MACOS_CODESIGN_CERTIFICATE_P12_BASE64: required: false - macos_codesign_certificate_password: + MACOS_CODESIGN_CERTIFICATE_PASSWORD: required: false - macos_notarization_app_specific_password: + MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD: required: false - netlify_build_hook: + NETLIFY_BUILD_HOOK: required: false - rryan_at_mixxx_dot_org_gpg_private_key: + RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: required: false permissions: @@ -139,8 +139,8 @@ jobs: env: # macOS codesigning - MACOS_CODESIGN_CERTIFICATE_P12_BASE64: ${{ secrets.macos_codesign_certificate_p12_base64 }} - MACOS_CODESIGN_CERTIFICATE_PASSWORD: ${{ secrets.macos_codesign_certificate_password }} + MACOS_CODESIGN_CERTIFICATE_P12_BASE64: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_P12_BASE64 }} + MACOS_CODESIGN_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_PASSWORD }} runs-on: ${{ matrix.os }} name: ${{ matrix.name }} @@ -333,13 +333,13 @@ jobs: - name: "[Windows] Sign executables" env: - azure_tenant_id: ${{ secrets.azure_tenant_id }} - if: runner.os == 'Windows' && env.azure_tenant_id + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + if: runner.os == 'Windows' && env.AZURE_TENANT_ID uses: azure/trusted-signing-action@v0.5.1 with: - azure-tenant-id: ${{ secrets.azure_tenant_id }} - azure-client-id: ${{ secrets.azure_client_id }} - azure-client-secret: ${{ secrets.azure_client_secret }} + azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} + azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} + azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} endpoint: https://weu.codesigning.azure.net/ trusted-signing-account-name: mixxx certificate-profile-name: mixxx @@ -366,9 +366,9 @@ jobs: - name: "[Ubuntu] Import PPA GPG key" if: startsWith(matrix.os, 'ubuntu') && env.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY != null - run: gpg --import <(echo "${{ secrets.rryan_at_mixxx_dot_org_gpg_private_key }}") + run: gpg --import <(echo "${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }}") env: - RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: ${{ secrets.rryan_at_mixxx_dot_org_gpg_private_key }} + RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: ${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }} - name: "Package for PPA" # No need to do the PPA build for both Ubuntu versions @@ -392,18 +392,18 @@ jobs: run: packaging/macos/sign_notarize_staple.sh build/*.dmg env: APPLE_ID_USERNAME: daschuer@mixxx.org - APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.macos_notarization_app_specific_password }} + APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD }} APPLE_TEAM_ID: JBLRSP95FC - name: "[Windows] Sign installer" env: - azure_tenant_id: ${{ secrets.azure_tenant_id }} - if: runner.os == 'Windows' && env.azure_tenant_id + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + if: runner.os == 'Windows' && env.AZURE_TENANT_ID uses: azure/trusted-signing-action@v0.5.1 with: - azure-tenant-id: ${{ secrets.azure_tenant_id }} - azure-client-id: ${{ secrets.azure_client_id }} - azure-client-secret: ${{ secrets.azure_client_secret }} + azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} + azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} + azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} endpoint: https://weu.codesigning.azure.net/ trusted-signing-account-name: mixxx certificate-profile-name: mixxx @@ -439,7 +439,7 @@ jobs: # https://github.com/actions/cache/issues/531 - name: "[Windows] Install rsync and openssh" env: - SSH_PRIVATE_KEY: ${{ secrets.downloads_hostgator_dot_mixxx_dot_org_key }} + SSH_PRIVATE_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }} if: runner.os == 'Windows' && inputs.publish && env.SSH_PRIVATE_KEY != null run: | $Env:PATH="c:\msys64\usr\bin;$Env:PATH" @@ -473,7 +473,7 @@ jobs: shell: bash env: SSH_AUTH_SOCK: /tmp/ssh_agent.sock - SSH_PRIVATE_KEY: ${{ secrets.downloads_hostgator_dot_mixxx_dot_org_key }} + SSH_PRIVATE_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }} SSH_HOST: downloads-hostgator.mixxx.org run: | ssh-agent -a $SSH_AUTH_SOCK > /dev/null @@ -545,14 +545,14 @@ jobs: --dest-url 'https://downloads.mixxx.org' env: JOB_DATA: ${{ toJSON(needs.build) }} - SSH_PASSWORD: ${{ secrets.downloads_hostgator_dot_mixxx_dot_org_key_password }} + SSH_PASSWORD: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD }} - name: "Set up SSH Agent" if: inputs.publish && env.SSH_PRIVATE_KEY != null && env.MANIFEST_DIRTY != null && env.MANIFEST_DIRTY != '0' shell: bash env: SSH_AUTH_SOCK: /tmp/ssh_agent.sock - SSH_PRIVATE_KEY: ${{ secrets.downloads_hostgator_dot_mixxx_dot_org_key }} + SSH_PRIVATE_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }} SSH_HOST: downloads-hostgator.mixxx.org run: | ssh-agent -a $SSH_AUTH_SOCK > /dev/null @@ -574,4 +574,4 @@ jobs: if: env.NETLIFY_BUILD_HOOK != null && env.MANIFEST_DIRTY != null && env.MANIFEST_DIRTY != '0' run: curl -X POST -d '{}' ${{ env.NETLIFY_BUILD_HOOK }} env: - NETLIFY_BUILD_HOOK: ${{ secrets.netlify_build_hook }} + NETLIFY_BUILD_HOOK: ${{ secrets.NETLIFY_BUILD_HOOK }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0980953b2486..e24dbfd9f038 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,16 +26,16 @@ jobs: with: publish: true secrets: - azure_client_id: ${{ secrets.AZURE_CLIENT_ID }} - azure_client_secret: ${{ secrets.AZURE_CLIENT_SECRET }} - azure_tenant_id: ${{ secrets.AZURE_TENANT_ID }} - downloads_hostgator_dot_mixxx_dot_org_key: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }} - downloads_hostgator_dot_mixxx_dot_org_key_password: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD }} - macos_codesign_certificate_p12_base64: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_P12_BASE64 }} - macos_codesign_certificate_password: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_PASSWORD }} - macos_notarization_app_specific_password: ${{ secrets.MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD }} - netlify_build_hook: ${{ secrets.NETLIFY_BUILD_HOOK }} - rryan_at_mixxx_dot_org_gpg_private_key: ${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }} + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} + AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }} + DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD }} + MACOS_CODESIGN_CERTIFICATE_P12_BASE64: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_P12_BASE64 }} + MACOS_CODESIGN_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_PASSWORD }} + MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD: ${{ secrets.MACOS_NOTARIZATION_APP_SPECIFIC_PASSWORD }} + NETLIFY_BUILD_HOOK: ${{ secrets.NETLIFY_BUILD_HOOK }} + RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: ${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }} sync: if: ${{ github.ref != 'refs/heads/main' }} From 6b4e7a10d39cdfe8c523aa46349e87f8d1b32c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Sun, 29 Jun 2025 19:58:58 +0200 Subject: [PATCH 15/19] Keep secret name MIXXX_BRANCH_SYNC_PAT unchanged --- .github/workflows/release.yml | 2 +- .github/workflows/sync_branches.yml | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e24dbfd9f038..9e87a718d0f8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,4 +41,4 @@ jobs: if: ${{ github.ref != 'refs/heads/main' }} uses: ./.github/workflows/sync_branches.yml secrets: - pat_token: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }} + MIXXX_BRANCH_SYNC_PAT: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }} diff --git a/.github/workflows/sync_branches.yml b/.github/workflows/sync_branches.yml index 46312712ac3f..0b2ad00bc828 100644 --- a/.github/workflows/sync_branches.yml +++ b/.github/workflows/sync_branches.yml @@ -4,7 +4,7 @@ on: workflow_call: secrets: # PAT setup with content:write and pull_request:write - pat_token: + MIXXX_BRANCH_SYNC_PAT: required: true permissions: {} @@ -13,7 +13,8 @@ env: SYNC_COMMITTER_EMAIL: bot@mixxx.org SYNC_COMMITTER_NAME: Mixxx Bot - # This variable stores the map of Mixxx branches that still being developed. The key is the branch receiving support and the value is the next version in line + # This variable stores the map of Mixxx branches that still being developed. + # The key is the branch receiving support and the value is the next version in line # NOTE: this must be valid JSON! ACTIVE_VERSIONS: |- {"2.5": "2.6", "2.6": "main"} @@ -41,7 +42,7 @@ jobs: - name: "Check out repository" uses: actions/checkout@v4.1.7 with: - token: ${{ secrets.pat_token }} + token: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }} fetch-depth: 0 persist-credentials: true @@ -99,7 +100,7 @@ jobs: FROM_BRANCH: ${{ github.ref_name }} TO_BRANCH: ${{ fromJSON(env.ACTIVE_VERSIONS)[github.ref_name] }} SYNC_BRANCH: sync-branch-${{ github.ref_name }}-to-${{ fromJSON(env.ACTIVE_VERSIONS)[github.ref_name] }} - GITHUB_TOKEN: ${{ secrets.pat_token }} + GITHUB_TOKEN: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }} PULL_REQUEST_TITLE: Merge changes from `${{ github.ref_name }}` into `${{ fromJSON(env.ACTIVE_VERSIONS)[github.ref_name] }}` PULL_REQUEST_BODY: | New content has landed in the `${{ github.ref_name }}` branch, so let's merge the changes into `${{ fromJSON(env.ACTIVE_VERSIONS)[github.ref_name] }}` From df62ec5a7ac8f693f75b50ee225b7314950d1c81 Mon Sep 17 00:00:00 2001 From: "Antoine C." Date: Sun, 29 Jun 2025 19:01:48 +0000 Subject: [PATCH 16/19] chore(sync-branches): fix regression preventing trigger --- .github/workflows/release.yml | 2 ++ .github/workflows/sync_branches.yml | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cbccfd84a4d6..c7de5a46ce01 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,5 +46,7 @@ jobs: sync: if: ${{ github.ref != 'refs/heads/main' }} uses: ./.github/workflows/sync_branches.yml + with: + enabled: ${{ secrets.MIXXX_BRANCH_SYNC_PAT != '' }} secrets: MIXXX_BRANCH_SYNC_PAT: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }} diff --git a/.github/workflows/sync_branches.yml b/.github/workflows/sync_branches.yml index d6d47ab572a7..3a1f3b23e101 100644 --- a/.github/workflows/sync_branches.yml +++ b/.github/workflows/sync_branches.yml @@ -2,6 +2,14 @@ name: Sync Branches on: workflow_call: + inputs: + enabled: + type: boolean + default: true + description: >- + Whether or not to run this workflow. This is a workaround on the 'secrets' context not being + available in 'jobs..if' + (https://docs.github.com/en/actions/reference/accessing-contextual-information-about-workflow-runs#context-availability) secrets: # PAT setup with content:write and pull_request:write MIXXX_BRANCH_SYNC_PAT: @@ -21,7 +29,7 @@ env: jobs: sync-branches: - if: ${{ inputs.pat_token != '' }} + if: ${{ inputs.enabled }} runs-on: ubuntu-latest permissions: contents: write From 1cdd7d80cffead23d824ef90bdac31dc29ca70ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Sun, 29 Jun 2025 22:48:07 +0200 Subject: [PATCH 17/19] Update CHANGELOG for Mixxx 2.5.3 --- CHANGELOG.md | 17 +++++++++ res/linux/org.mixxx.Mixxx.metainfo.xml | 50 ++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4972227ca379..4197e44b1a99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [2.5.3](https://github.com/mixxxdj/mixxx/milestone/50) (unreleased) + +### Controller Mappings + +* Traktor Kontrol S4 Mk3: tempo offset per deck [#14882](https://github.com/mixxxdj/mixxx/pull/14882) +* Traktor Kontrol S4 Mk3: don`t duplicate beatloop_activate behaviour [#14992](https://github.com/mixxxdj/mixxx/pull/14992) +* Traktor Kontrol S3: allow full library navigation [#14980](https://github.com/mixxxdj/mixxx/pull/14980) + +### Misc + +* Broadcast preferences: make setting string translatable [#15023](https://github.com/mixxxdj/mixxx/pull/15023) +* Sound Hardware preference: add (?) linking to Sound APIs in the manual [#14935](https://github.com/mixxxdj/mixxx/pull/14935) +* xwax: do not try to "correct" for drift in absolute mode. [#14960](https://github.com/mixxxdj/mixxx/pull/14960) +* Fix column header text assignment [#14944](https://github.com/mixxxdj/mixxx/pull/14944) +* Remove runtime assert to not risk crashes [#15000](https://github.com/mixxxdj/mixxx/pull/15000) +* Windows: Update build environment to Visual Studio 2022 [#15006](https://github.com/mixxxdj/mixxx/pull/15006) + ## [2.5.2](https://github.com/mixxxdj/mixxx/milestone/49) (2025-06-13) ### Library diff --git a/res/linux/org.mixxx.Mixxx.metainfo.xml b/res/linux/org.mixxx.Mixxx.metainfo.xml index dda97527a7a0..6cfec4aaa0a7 100644 --- a/res/linux/org.mixxx.Mixxx.metainfo.xml +++ b/res/linux/org.mixxx.Mixxx.metainfo.xml @@ -96,6 +96,56 @@ Do not edit it manually. --> + + +

+ Controller Mappings +

+
    +
  • + Traktor Kontrol S4 Mk3: tempo offset per deck + #14882 +
  • +
  • + Traktor Kontrol S4 Mk3: don`t duplicate beatloop_activate behaviour + #14992 +
  • +
  • + Traktor Kontrol S3: allow full library navigation + #14980 +
  • +
+

+ Misc +

+
    +
  • + Broadcast preferences: make setting string translatable + #15023 +
  • +
  • + Sound Hardware preference: add (?) linking to Sound APIs in the manual + #14935 +
  • +
  • + xwax: do not try to "correct" for drift in absolute mode. + #14960 +
  • +
  • + Fix column header text assignment + #14944 +
  • +
  • + Remove runtime assert to not risk crashes + #15000 +
  • +
  • + Windows: Update build environment to Visual Studio 2022 + #15006 +
  • +
+ +

From 82c739450ae203943436e895f4926244daaad8d5 Mon Sep 17 00:00:00 2001 From: "Antoine C." Date: Sun, 29 Jun 2025 22:16:39 +0000 Subject: [PATCH 18/19] chore(sync-branches): fix regression preventing trigger --- .github/workflows/release.yml | 4 +--- .github/workflows/sync_branches.yml | 9 --------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c7de5a46ce01..6a539cef4eb4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,9 +44,7 @@ jobs: RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: ${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }} sync: - if: ${{ github.ref != 'refs/heads/main' }} + if: ${{ github.ref != 'refs/heads/main' }} && ${{ github.repository == 'mixxxdj/mixxx' }} uses: ./.github/workflows/sync_branches.yml - with: - enabled: ${{ secrets.MIXXX_BRANCH_SYNC_PAT != '' }} secrets: MIXXX_BRANCH_SYNC_PAT: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }} diff --git a/.github/workflows/sync_branches.yml b/.github/workflows/sync_branches.yml index 3a1f3b23e101..0b2ad00bc828 100644 --- a/.github/workflows/sync_branches.yml +++ b/.github/workflows/sync_branches.yml @@ -2,14 +2,6 @@ name: Sync Branches on: workflow_call: - inputs: - enabled: - type: boolean - default: true - description: >- - Whether or not to run this workflow. This is a workaround on the 'secrets' context not being - available in 'jobs..if' - (https://docs.github.com/en/actions/reference/accessing-contextual-information-about-workflow-runs#context-availability) secrets: # PAT setup with content:write and pull_request:write MIXXX_BRANCH_SYNC_PAT: @@ -29,7 +21,6 @@ env: jobs: sync-branches: - if: ${{ inputs.enabled }} runs-on: ubuntu-latest permissions: contents: write From 130cd9057c3ea5905767cd147f80b3f376511cec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Tue, 1 Jul 2025 08:00:56 +0200 Subject: [PATCH 19/19] Update Translation template. Found 3120 source text(s) (1 new and 3119 already existing) --- res/translations/mixxx.ts | 60 +++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/res/translations/mixxx.ts b/res/translations/mixxx.ts index 4857382d24de..7d43a4343b69 100644 --- a/res/translations/mixxx.ts +++ b/res/translations/mixxx.ts @@ -4613,122 +4613,128 @@ You tried to learn: %1,%2 DlgPrefBroadcast - + Icecast 2 - + Shoutcast 1 - + Icecast 1 - + MP3 - + Ogg Vorbis - + Opus - + AAC - + HE-AAC - + HE-AACv2 - + Automatic - + Mono - + Stereo - - - - + + + + Action failed - + You can't create more than %1 source connections. - + Source connection %1 - + + Settings for %1 + Settings for broadcast profile, %1 is the profile name placeholder + + + + At least one source connection is required. - + Are you sure you want to disconnect every active source connection? - - + + Confirmation required - + '%1' has the same Icecast mountpoint as '%2'. Two source connections to the same server that have the same mountpoint can not be enabled simultaneously. - + Are you sure you want to delete '%1'? - + Renaming '%1' - + New name for '%1': - + Can't rename '%1' to '%2': name already in use