Merge remote-tracking branch 'origin/main' into router-implementation
This commit is contained in:
commit
7ea276992a
File diff suppressed because one or more lines are too long
140
public/css/vendor/OpenSans.css
vendored
140
public/css/vendor/OpenSans.css
vendored
@ -4,7 +4,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hmIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hmIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -13,7 +13,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hvIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hvIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -22,7 +22,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hnIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hnIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -31,7 +31,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hoIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hoIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -40,7 +40,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hkIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hkIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -49,7 +49,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hlIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hlIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -58,7 +58,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hrIqM.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWyV9hrIqM.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@ -67,7 +67,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(/public/fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Udc1UAw.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Udc1UAw.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -76,7 +76,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(/public/fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0ddc1UAw.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0ddc1UAw.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -85,7 +85,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(/public/fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Vdc1UAw.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Vdc1UAw.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -94,7 +94,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(/public/fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0adc1UAw.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0adc1UAw.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -103,7 +103,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(/public/fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Wdc1UAw.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Wdc1UAw.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -112,7 +112,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(/public/fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Xdc1UAw.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Xdc1UAw.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -121,7 +121,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(/public/fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Zdc0.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem6YaGs126MiZpBA-UFUK0Zdc0.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@ -130,7 +130,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhmIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhmIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -139,7 +139,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhvIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhvIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -148,7 +148,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhnIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhnIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -157,7 +157,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhoIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhoIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -166,7 +166,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhkIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhkIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -175,7 +175,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhlIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhlIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -184,7 +184,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhrIqM.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKXGUdhrIqM.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@ -193,7 +193,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhmIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhmIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -202,7 +202,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhvIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhvIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -211,7 +211,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhnIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhnIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -220,7 +220,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhoIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhoIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -229,7 +229,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhkIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhkIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -238,7 +238,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhlIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhlIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -247,7 +247,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhrIqM.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKWiUNhrIqM.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@ -256,7 +256,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hmIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hmIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -265,7 +265,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hvIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hvIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -274,7 +274,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hnIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hnIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -283,7 +283,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hoIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hoIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -292,7 +292,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hkIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hkIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -301,7 +301,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hlIqOjjg.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hlIqOjjg.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -310,7 +310,7 @@
|
||||
font-style: italic;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), url(/public/fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hrIqM.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/memnYaGs126MiZpBA-UFUKW-U9hrIqM.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@ -319,7 +319,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light'), local('OpenSans-Light'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OX-hpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OX-hpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -328,7 +328,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light'), local('OpenSans-Light'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OVuhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OVuhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -337,7 +337,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light'), local('OpenSans-Light'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OXuhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OXuhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -346,7 +346,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light'), local('OpenSans-Light'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OUehpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OUehpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -355,7 +355,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light'), local('OpenSans-Light'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OXehpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OXehpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -364,7 +364,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light'), local('OpenSans-Light'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OXOhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OXOhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -373,7 +373,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Light'), local('OpenSans-Light'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OUuhp.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN_r8OUuhp.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@ -382,7 +382,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Regular'), local('OpenSans-Regular'), url(/public/fonts/OpenSans/mem8YaGs126MiZpBA-UFWJ0bbck.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem8YaGs126MiZpBA-UFWJ0bbck.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -391,7 +391,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Regular'), local('OpenSans-Regular'), url(/public/fonts/OpenSans/mem8YaGs126MiZpBA-UFUZ0bbck.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem8YaGs126MiZpBA-UFUZ0bbck.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -400,7 +400,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Regular'), local('OpenSans-Regular'), url(/public/fonts/OpenSans/mem8YaGs126MiZpBA-UFWZ0bbck.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem8YaGs126MiZpBA-UFWZ0bbck.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -409,7 +409,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Regular'), local('OpenSans-Regular'), url(/public/fonts/OpenSans/mem8YaGs126MiZpBA-UFVp0bbck.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem8YaGs126MiZpBA-UFVp0bbck.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -418,7 +418,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Regular'), local('OpenSans-Regular'), url(/public/fonts/OpenSans/mem8YaGs126MiZpBA-UFWp0bbck.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem8YaGs126MiZpBA-UFWp0bbck.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -427,7 +427,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Regular'), local('OpenSans-Regular'), url(/public/fonts/OpenSans/mem8YaGs126MiZpBA-UFW50bbck.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem8YaGs126MiZpBA-UFW50bbck.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -436,7 +436,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Regular'), local('OpenSans-Regular'), url(/public/fonts/OpenSans/mem8YaGs126MiZpBA-UFVZ0b.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem8YaGs126MiZpBA-UFVZ0b.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@ -445,7 +445,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOX-hpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOX-hpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -454,7 +454,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOVuhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOVuhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -463,7 +463,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOXuhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOXuhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -472,7 +472,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOUehpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOUehpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -481,7 +481,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOXehpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOXehpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -490,7 +490,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOXOhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOXOhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -499,7 +499,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOUuhp.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UNirkOUuhp.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@ -508,7 +508,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOX-hpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOX-hpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -517,7 +517,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOVuhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOVuhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -526,7 +526,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOXuhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOXuhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -535,7 +535,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOUehpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOUehpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -544,7 +544,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOXehpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOXehpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -553,7 +553,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOXOhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOXOhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -562,7 +562,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOUuhp.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN7rgOUuhp.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@ -571,7 +571,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOX-hpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOX-hpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@ -580,7 +580,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOVuhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOVuhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@ -589,7 +589,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOXuhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOXuhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@ -598,7 +598,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOUehpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOUehpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@ -607,7 +607,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOXehpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOXehpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@ -616,7 +616,7 @@
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOXOhpOqc.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOXOhpOqc.woff2') format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@ -625,6 +625,6 @@
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
font-display: swap;
|
||||
src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(/public/fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOUuhp.woff2) format('woff2');
|
||||
src: url('../../fonts/OpenSans/mem5YaGs126MiZpBA-UN8rsOUuhp.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
9
public/css/vendor/material-icons.css
vendored
9
public/css/vendor/material-icons.css
vendored
@ -3,11 +3,10 @@
|
||||
font-family: 'Material Icons';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(../../fonts/icons/MaterialIcons-Regular.eot); /* For IE6-8 */
|
||||
src: local('Material Icons'), local('MaterialIcons-Regular'),
|
||||
url(../../fonts/icons/MaterialIcons-Regular.woff2) format('woff2'),
|
||||
url(../../fonts/icons/MaterialIcons-Regular.woff) format('woff'),
|
||||
url(../../fonts/icons/MaterialIcons-Regular.ttf) format('truetype');
|
||||
src: url('../../fonts/icons/MaterialIcons-Regular.eot'); /* For IE6-8 */
|
||||
src: url('../../fonts/icons/MaterialIcons-Regular.woff2') format('woff2'),
|
||||
url('../../fonts/icons/MaterialIcons-Regular.woff') format('woff'),
|
||||
url('../../fonts/icons/MaterialIcons-Regular.ttf') format('truetype');
|
||||
}
|
||||
|
||||
.material-icons {
|
||||
|
@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>deemix</title>
|
||||
<link rel="stylesheet" type="text/css" href="/public/css/vendor/animate.css">
|
||||
<link rel="stylesheet" type="text/css" href="/public/css/vendor/material-icons.css">
|
||||
<link rel="stylesheet" type="text/css" href="/public/css/vendor/OpenSans.css">
|
||||
<link rel="stylesheet" type="text/css" href="/public/css/vendor/toastify.css">
|
||||
<link rel="stylesheet" type="text/css" href="/public/css/style.css">
|
||||
<link rel="shortcut icon" href="/public/favicon.ico">
|
||||
<link rel="stylesheet" type="text/css" href="/css/vendor/animate.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/vendor/material-icons.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/vendor/OpenSans.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/vendor/toastify.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/style.css">
|
||||
<link rel="shortcut icon" href="/favicon.ico">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=0">
|
||||
<script>
|
||||
@ -23,8 +23,8 @@
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
|
||||
<script type="text/javascript" src="/public/js/vendor/socket.io.js"></script>
|
||||
<script type="text/javascript" src="/js/vendor/socket.io.js"></script>
|
||||
|
||||
<script src="/public/js/bundle.js"></script>
|
||||
<script src="/js/bundle.js"></script>
|
||||
|
||||
</html>
|
File diff suppressed because one or more lines are too long
38
src/app.js
38
src/app.js
@ -15,6 +15,10 @@ import { socket } from '@/utils/socket'
|
||||
import { toast } from '@/utils/toasts'
|
||||
import { init as initTabs } from '@js/tabs.js'
|
||||
|
||||
import { isValidURL } from '@/utils/utils'
|
||||
import Downloads from '@/utils/downloads'
|
||||
import EventBus from '@/utils/EventBus.js'
|
||||
|
||||
/* ===== App initialization ===== */
|
||||
|
||||
function startApp() {
|
||||
@ -41,6 +45,34 @@ function initClient() {
|
||||
document.addEventListener('DOMContentLoaded', startApp)
|
||||
window.addEventListener('pywebviewready', initClient)
|
||||
|
||||
/* ===== Global shortcuts ===== */
|
||||
|
||||
document.addEventListener('keyup', keyEvent => {
|
||||
if (keyEvent.key == "Backspace" && keyEvent.ctrlKey){
|
||||
let searchbar = document.querySelector('#searchbar')
|
||||
searchbar.value = ""
|
||||
searchbar.focus()
|
||||
}
|
||||
})
|
||||
|
||||
document.addEventListener('paste', pasteEvent => {
|
||||
pasteText = pasteEvent.clipboardData.getData('Text')
|
||||
if (pasteEvent.target.localName != "input"){
|
||||
if (isValidURL(pasteText)){
|
||||
if (main_selected === 'analyzer_tab') {
|
||||
EventBus.$emit('linkAnalyzerTab:reset')
|
||||
socket.emit('analyzeLink', pasteText)
|
||||
} else {
|
||||
Downloads.sendAddToQueue(pasteText)
|
||||
}
|
||||
}else{
|
||||
let searchbar = document.querySelector('#searchbar')
|
||||
searchbar.select()
|
||||
searchbar.setSelectionRange(0, 99999)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
/* ===== Socketio listeners ===== */
|
||||
|
||||
// Debug messages for socketio
|
||||
@ -147,11 +179,11 @@ socket.on('currentItemCancelled', function(uuid) {
|
||||
})
|
||||
|
||||
socket.on('startAddingArtist', function(data) {
|
||||
toast(i18n.t('toasts.startAddingArtist', [data.name]), 'loading', false, 'artist_' + data.id)
|
||||
toast(i18n.t('toasts.startAddingArtist', {artist: data.name}), 'loading', false, 'artist_' + data.id)
|
||||
})
|
||||
|
||||
socket.on('finishAddingArtist', function(data) {
|
||||
toast(i18n.t('toasts.finishAddingArtist', [data.name]), 'done', true, 'artist_' + data.id)
|
||||
toast(i18n.t('toasts.finishAddingArtist', {artist: data.name}), 'done', true, 'artist_' + data.id)
|
||||
})
|
||||
|
||||
socket.on('startConvertingSpotifyPlaylist', function(id) {
|
||||
@ -172,7 +204,7 @@ socket.on('queueError', function(queueItem) {
|
||||
})
|
||||
|
||||
socket.on('alreadyInQueue', function(data) {
|
||||
toast(i18n.t('toasts.alreadyInQueue', [data.title]), 'playlist_add_check')
|
||||
toast(i18n.t('toasts.alreadyInQueue', {item: data.title}), 'playlist_add_check')
|
||||
})
|
||||
|
||||
socket.on('loginNeededToDownload', function(data) {
|
||||
|
@ -1,6 +1,15 @@
|
||||
<template>
|
||||
<div id="about_tab" class="main_tabcontent" ref="root">
|
||||
<h2 class="page_heading">{{ $t('sidebar.about') }}</h2>
|
||||
<ul>
|
||||
<li>
|
||||
{{ $t('about.updates.currentVersion') }}: <span v-if="current">{{ current }}</span
|
||||
><span v-else>{{ $t('about.updates.versionNotAvailable') }}</span>
|
||||
</li>
|
||||
<li>{{ $t('about.updates.deemixVersion') }}: {{ deemixVersion }}</li>
|
||||
<li v-if="updateAvailable && latest">{{ $t('about.updates.updateAvailable', { version: latest }) }}</li>
|
||||
</ul>
|
||||
|
||||
<ul>
|
||||
<li v-html="$t('about.usesLibrary')"></li>
|
||||
<li v-html="$t('about.thanks')"></li>
|
||||
@ -93,7 +102,7 @@
|
||||
<a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank">
|
||||
<img
|
||||
alt="GNU General Public License"
|
||||
style="border-width: 0;"
|
||||
style="border-width: 0"
|
||||
src="https://www.gnu.org/graphics/gplv3-127x51.png"
|
||||
/>
|
||||
</a>
|
||||
@ -191,21 +200,30 @@ ul {
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
import { socket } from '@/utils/socket'
|
||||
import paypal from '@/assets/paypal.svg'
|
||||
import ethereum from '@/assets/ethereum.svg'
|
||||
|
||||
export default {
|
||||
data: () => ({
|
||||
paypal,
|
||||
ethereum
|
||||
ethereum,
|
||||
current: null,
|
||||
latest: null,
|
||||
updateAvailable: false,
|
||||
deemixVersion: null
|
||||
}),
|
||||
mounted() {
|
||||
console.log('about mounted')
|
||||
// this.$refs.root.style.display = 'block'
|
||||
methods: {
|
||||
initUpdate(data) {
|
||||
const { currentCommit, latestCommit, updateAvailable, deemixVersion } = data
|
||||
this.current = currentCommit
|
||||
this.latest = latestCommit
|
||||
this.updateAvailable = updateAvailable
|
||||
this.deemixVersion = deemixVersion
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
console.log('about bef dest')
|
||||
// this.$refs.root.style.display = 'none'
|
||||
mounted() {
|
||||
socket.on('init_update', this.initUpdate)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -95,7 +95,7 @@ export default {
|
||||
|
||||
downloadQualities.forEach((quality, index) => {
|
||||
options[quality.objName] = {
|
||||
label: `${this.$t('globals.download', [quality.label])}`,
|
||||
label: `${this.$t('globals.download', {thing: quality.label})}`,
|
||||
show: false,
|
||||
position: nextValuePosition + index,
|
||||
action: this.tryToDownloadTrack.bind(null, quality.value)
|
||||
|
@ -91,6 +91,11 @@ export default {
|
||||
switch (icon) {
|
||||
case 'remove':
|
||||
socket.emit('removeFromQueue', uuid)
|
||||
if ($(`#bar_${uuid}`).hasClass('indeterminate')){
|
||||
$(`#download_${uuid}`).remove()
|
||||
}else{
|
||||
target.innerHTML = `<div class="circle-loader"></div>`
|
||||
}
|
||||
break
|
||||
default:
|
||||
}
|
||||
@ -127,7 +132,7 @@ export default {
|
||||
item.silent = true
|
||||
this.addToQueue(item)
|
||||
});
|
||||
toast(this.$t('toasts.addedMoreToQueue', [queueItem.length]), 'playlist_add_check')
|
||||
toast(this.$t('toasts.addedMoreToQueue', {n: queueItem.length}), 'playlist_add_check')
|
||||
return
|
||||
}else{
|
||||
queueItem = queueItem[0]
|
||||
@ -205,7 +210,7 @@ export default {
|
||||
}
|
||||
|
||||
if (!queueItem.silent) {
|
||||
toast(this.$t('toasts.addedToQueue', [queueItem.title]), 'playlist_add_check')
|
||||
toast(this.$t('toasts.addedToQueue', {item: queueItem.title}), 'playlist_add_check')
|
||||
}
|
||||
},
|
||||
updateQueue(update) {
|
||||
@ -251,7 +256,7 @@ export default {
|
||||
|
||||
if (index > -1) {
|
||||
this.queue.splice(index, 1)
|
||||
$(`#download_${this.queueList[uuid].uuid}`).remove()
|
||||
$(`#download_${uuid}`).remove()
|
||||
delete this.queueList[uuid]
|
||||
}
|
||||
},
|
||||
@ -302,7 +307,7 @@ export default {
|
||||
},
|
||||
finishDownload(uuid) {
|
||||
if (this.queue.indexOf(uuid) > -1) {
|
||||
toast(this.$t('toasts.finishDownload', [this.queueList[uuid].title]), 'done')
|
||||
toast(this.$t('toasts.finishDownload', {item: this.queueList[uuid].title}), 'done')
|
||||
|
||||
$('#bar_' + uuid).css('width', '100%')
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div id="errors_tab" class="main_tabcontent" ref="root">
|
||||
<h1>{{ $t('errors.title', [title]) }}</h1>
|
||||
<div id="errors_tab" class="main_tabcontent">
|
||||
<h1>{{ $t('errors.title', { name: title }) }}</h1>
|
||||
<table class="table table--tracklist">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
|
@ -44,7 +44,7 @@
|
||||
</div>
|
||||
<p class="primary-text">{{ release.title }}</p>
|
||||
<p class="secondary-text">
|
||||
{{ `${$t('globals.by', [release.creator.name])} - ${$tc('globals.listTabs.trackN', release.nb_tracks)}` }}
|
||||
{{ `${$t('globals.by', {artist: release.creator.name})} - ${$tc('globals.listTabs.trackN', release.nb_tracks)}` }}
|
||||
</p>
|
||||
</div>
|
||||
<div
|
||||
@ -67,7 +67,7 @@
|
||||
</div>
|
||||
<p class="primary-text">{{ release.title }}</p>
|
||||
<p class="secondary-text">
|
||||
{{ `${$t('globals.by', [release.creator.name])} - ${$tc('globals.listTabs.trackN', release.nb_tracks)}` }}
|
||||
{{ `${$t('globals.by', {artist: release.creator.name})} - ${$tc('globals.listTabs.trackN', release.nb_tracks)}` }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -92,7 +92,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<p class="primary-text">{{ release.title }}</p>
|
||||
<p class="secondary-text">{{ `${$t('globals.by', [release.artist.name])}` }}</p>
|
||||
<p class="secondary-text">{{ `${$t('globals.by', {artist: release.artist.name})}` }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -29,7 +29,7 @@
|
||||
</div>
|
||||
<p class="primary-text">{{ release.title }}</p>
|
||||
<p class="secondary-text">
|
||||
{{ `${$t('globals.by', [release.user.name])} - ${$tc('globals.listTabs.trackN', release.nb_tracks)}` }}
|
||||
{{ `${$t('globals.by', {artist: release.user.name})} - ${$tc('globals.listTabs.trackN', release.nb_tracks)}` }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -57,7 +57,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<p class="primary-text">{{ release.title }}</p>
|
||||
<p class="secondary-text">{{ `${$t('globals.by', [release.artist.name])}` }}</p>
|
||||
<p class="secondary-text">{{ `${$t('globals.by', {artist: release.artist.name})}` }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -25,20 +25,20 @@
|
||||
<h1>{{ title }}</h1>
|
||||
<h2 v-if="type == 'track'">
|
||||
<i18n path="globals.by" tag="span">
|
||||
<span place="0" class="clickable" @click="artistView" :data-id="data.artist.id">{{
|
||||
<span place="artist" class="clickable" @click="artistView" :data-id="data.artist.id">{{
|
||||
data.artist.name
|
||||
}}</span>
|
||||
</i18n>
|
||||
•
|
||||
<i18n path="globals.in" tag="span">
|
||||
<span place="0" class="clickable" @click="albumView" :data-id="data.album.id">{{
|
||||
<span place="album" class="clickable" @click="albumView" :data-id="data.album.id">{{
|
||||
data.album.title
|
||||
}}</span>
|
||||
</i18n>
|
||||
</h2>
|
||||
<h2 v-else-if="type == 'album'">
|
||||
<i18n path="globals.by" tag="span">
|
||||
<span place="0" class="clickable" @click="artistView" :data-id="data.artist.id">{{
|
||||
<span place="artist" class="clickable" @click="artistView" :data-id="data.artist.id">{{
|
||||
data.artist.name
|
||||
}}</span>
|
||||
</i18n>
|
||||
|
@ -62,8 +62,8 @@
|
||||
<p class="secondary-text">
|
||||
{{
|
||||
results.allTab.TOP_RESULT[0].type == 'artist'
|
||||
? $t('search.fans', [$n(results.allTab.TOP_RESULT[0].nb_fan)])
|
||||
: $t('globals.by', [results.allTab.TOP_RESULT[0].artist]) +
|
||||
? $t('search.fans', {n: $n(results.allTab.TOP_RESULT[0].nb_fan)})
|
||||
: $t('globals.by', {artist: results.allTab.TOP_RESULT[0].artist}) +
|
||||
' - ' +
|
||||
$tc('globals.listTabs.trackN', results.allTab.TOP_RESULT[0].nb_song)
|
||||
}}
|
||||
@ -155,7 +155,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<p class="primary-text">{{ release.ART_NAME }}</p>
|
||||
<p class="secondary-text">{{ $t('search.fans', [$n(release.NB_FAN)]) }}</p>
|
||||
<p class="secondary-text">{{ $t('search.fans', {n: $n(release.NB_FAN)}) }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="section == 'ALBUM'" class="release_grid firstrow_only">
|
||||
@ -360,7 +360,7 @@
|
||||
</p>
|
||||
<p class="secondary-text">
|
||||
{{
|
||||
$t('globals.by', [release.artist.name]) + ' - ' + $tc('globals.listTabs.trackN', release.nb_tracks)
|
||||
$t('globals.by', {artist: release.artist.name}) + ' - ' + $tc('globals.listTabs.trackN', release.nb_tracks)
|
||||
}}
|
||||
</p>
|
||||
</div>
|
||||
@ -423,7 +423,7 @@
|
||||
</div>
|
||||
<p class="primary-text">{{ release.title }}</p>
|
||||
<p class="secondary-text">
|
||||
{{ `${$t('globals.by', [release.user.name])} - ${$tc('globals.listTabs.trackN', release.nb_tracks)}` }}
|
||||
{{ `${$t('globals.by', {artist: release.user.name})} - ${$tc('globals.listTabs.trackN', release.nb_tracks)}` }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,17 +1,17 @@
|
||||
<template>
|
||||
<div id="modal_quality" class="smallmodal" v-show="open" @click="tryToDownloadTrack($event)" ref="modal">
|
||||
<div class="smallmodal-content">
|
||||
<button class="quality-button" data-quality-value="9">{{ $t('globals.download', ['FLAC']) }}</button>
|
||||
<button class="quality-button" data-quality-value="3">{{ $t('globals.download', ['MP3 320kbps']) }}</button>
|
||||
<button class="quality-button" data-quality-value="1">{{ $t('globals.download', ['MP3 128kbps']) }}</button>
|
||||
<button class="quality-button" data-quality-value="9">{{ $t('globals.download', {thing: 'FLAC'}) }}</button>
|
||||
<button class="quality-button" data-quality-value="3">{{ $t('globals.download', {thing: 'MP3 320kbps'}) }}</button>
|
||||
<button class="quality-button" data-quality-value="1">{{ $t('globals.download', {thing: 'MP3 128kbps'}) }}</button>
|
||||
<button class="quality-button" data-quality-value="15">
|
||||
{{ $t('globals.download', ['360 Reality Audio [HQ]']) }}
|
||||
{{ $t('globals.download', {thing: '360 Reality Audio [HQ]'}) }}
|
||||
</button>
|
||||
<button class="quality-button" data-quality-value="14">
|
||||
{{ $t('globals.download', ['360 Reality Audio [MQ]']) }}
|
||||
{{ $t('globals.download', {thing: '360 Reality Audio [MQ]'}) }}
|
||||
</button>
|
||||
<button class="quality-button" data-quality-value="13">
|
||||
{{ $t('globals.download', ['360 Reality Audio [LQ]']) }}
|
||||
{{ $t('globals.download', {thing: '360 Reality Audio [LQ]'}) }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -26,10 +26,10 @@
|
||||
<a href="https://codeberg.org/RemixDev/deemix/wiki/Getting-your-own-ARL" target="_blank">
|
||||
{{ $t('settings.login.arl.question') }}
|
||||
</a>
|
||||
<a id="settings_btn_applogin" class="hide" href="#" @click.prevent="applogin">
|
||||
Automated login
|
||||
<a id="settings_btn_applogin" class="hide" href="#" @click="applogin">
|
||||
{{ $t('settings.login.login') }}
|
||||
</a>
|
||||
<button id="settings_btn_updateArl" @click="login" style="width: 100%;">
|
||||
<button id="settings_btn_updateArl" @click="login" style="width: 100%">
|
||||
{{ $t('settings.login.arl.update') }}
|
||||
</button>
|
||||
</div>
|
||||
@ -275,7 +275,7 @@
|
||||
<div class="input_group">
|
||||
<p class="input_group_text">{{ $t('settings.covers.localArtworkSize') }}</p>
|
||||
<input type="number" min="100" max="10000" step="100" v-model.number="settings.localArtworkSize" />
|
||||
<p v-if="settings.localArtworkSize > 1200" class="input_group_text" style="opacity: 0.75; color: #ffcc22;">
|
||||
<p v-if="settings.localArtworkSize > 1200" class="input_group_text" style="opacity: 0.75; color: #ffcc22">
|
||||
⚠️ {{ $t('settings.covers.imageSizeWarning') }}
|
||||
</p>
|
||||
</div>
|
||||
@ -283,7 +283,7 @@
|
||||
<div class="input_group">
|
||||
<p class="input_group_text">{{ $t('settings.covers.embeddedArtworkSize') }}</p>
|
||||
<input type="number" min="100" max="10000" step="100" v-model.number="settings.embeddedArtworkSize" />
|
||||
<p v-if="settings.embeddedArtworkSize > 1200" class="input_group_text" style="opacity: 0.75; color: #ffcc22;">
|
||||
<p v-if="settings.embeddedArtworkSize > 1200" class="input_group_text" style="opacity: 0.75; color: #ffcc22">
|
||||
⚠️ {{ $t('settings.covers.imageSizeWarning') }}
|
||||
</p>
|
||||
</div>
|
||||
@ -301,7 +301,7 @@
|
||||
<input type="checkbox" v-model="settings.embeddedArtworkPNG" />
|
||||
<span class="checkbox_text">{{ $t('settings.covers.embeddedArtworkPNG') }}</span>
|
||||
</label>
|
||||
<p v-if="settings.embeddedArtworkPNG" style="opacity: 0.75; color: #ffcc22;">
|
||||
<p v-if="settings.embeddedArtworkPNG" style="opacity: 0.75; color: #ffcc22">
|
||||
⚠️ {{ $t('settings.covers.embeddedPNGWarning') }}
|
||||
</p>
|
||||
|
||||
@ -313,7 +313,7 @@
|
||||
|
||||
<div class="settings-group">
|
||||
<h3 class="settings-group__header settings-group__header--with-icon">
|
||||
<i class="material-icons" style="width: 1em; height: 1em;">bookmarks</i>{{ $t('settings.tags.head') }}
|
||||
<i class="material-icons" style="width: 1em; height: 1em">bookmarks</i>{{ $t('settings.tags.head') }}
|
||||
</h3>
|
||||
|
||||
<div class="settings-container">
|
||||
@ -401,6 +401,10 @@
|
||||
<input type="checkbox" v-model="settings.tags.lyrics" />
|
||||
<span class="checkbox_text">{{ $t('settings.tags.lyrics') }}</span>
|
||||
</label>
|
||||
<label class="with_checkbox">
|
||||
<input type="checkbox" v-model="settings.tags.syncedLyrics" />
|
||||
<span class="checkbox_text">{{ $t('settings.tags.syncedLyrics') }}</span>
|
||||
</label>
|
||||
<label class="with_checkbox">
|
||||
<input type="checkbox" v-model="settings.tags.copyright" />
|
||||
<span class="checkbox_text">{{ $t('settings.tags.copyright') }}</span>
|
||||
@ -443,13 +447,13 @@
|
||||
<option value="nothing">{{ $t('settings.other.multiArtistSeparator.nothing') }}</option>
|
||||
<option value="default">{{ $t('settings.other.multiArtistSeparator.default') }}</option>
|
||||
<option value="andFeat">{{ $t('settings.other.multiArtistSeparator.andFeat') }}</option>
|
||||
<option value=" & ">{{ $t('settings.other.multiArtistSeparator.using', [' & ']) }}</option>
|
||||
<option value=",">{{ $t('settings.other.multiArtistSeparator.using', [',']) }}</option>
|
||||
<option value=", ">{{ $t('settings.other.multiArtistSeparator.using', [', ']) }}</option>
|
||||
<option value="/">{{ $t('settings.other.multiArtistSeparator.using', ['/']) }}</option>
|
||||
<option value=" / ">{{ $t('settings.other.multiArtistSeparator.using', [' / ']) }}</option>
|
||||
<option value=";">{{ $t('settings.other.multiArtistSeparator.using', [';']) }}</option>
|
||||
<option value="; ">{{ $t('settings.other.multiArtistSeparator.using', ['; ']) }}</option>
|
||||
<option value=" & ">{{ $t('settings.other.multiArtistSeparator.using', { separator: ' & ' }) }}</option>
|
||||
<option value=",">{{ $t('settings.other.multiArtistSeparator.using', { separator: ',' }) }}</option>
|
||||
<option value=", ">{{ $t('settings.other.multiArtistSeparator.using', { separator: ', ' }) }}</option>
|
||||
<option value="/">{{ $t('settings.other.multiArtistSeparator.using', { separator: '/' }) }}</option>
|
||||
<option value=" / ">{{ $t('settings.other.multiArtistSeparator.using', { separator: ' / ' }) }}</option>
|
||||
<option value=";">{{ $t('settings.other.multiArtistSeparator.using', { separator: ';' }) }}</option>
|
||||
<option value="; ">{{ $t('settings.other.multiArtistSeparator.using', { separator: '; ' }) }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@ -476,26 +480,34 @@
|
||||
<div class="input_group">
|
||||
<p class="input_group_text">{{ $t('settings.other.dateFormat.title') }}</p>
|
||||
<select v-model="settings.dateFormat">
|
||||
<option value="Y-M-D">{{
|
||||
`${$t('settings.other.dateFormat.year')}-${$t('settings.other.dateFormat.month')}-${$t(
|
||||
'settings.other.dateFormat.day'
|
||||
)}`
|
||||
}}</option>
|
||||
<option value="Y-D-M">{{
|
||||
`${$t('settings.other.dateFormat.year')}-${$t('settings.other.dateFormat.day')}-${$t(
|
||||
'settings.other.dateFormat.month'
|
||||
)}`
|
||||
}}</option>
|
||||
<option value="D-M-Y">{{
|
||||
`${$t('settings.other.dateFormat.day')}-${$t('settings.other.dateFormat.month')}-${$t(
|
||||
'settings.other.dateFormat.year'
|
||||
)}`
|
||||
}}</option>
|
||||
<option value="M-D-Y">{{
|
||||
`${$t('settings.other.dateFormat.month')}-${$t('settings.other.dateFormat.day')}-${$t(
|
||||
'settings.other.dateFormat.year'
|
||||
)}`
|
||||
}}</option>
|
||||
<option value="Y-M-D">
|
||||
{{
|
||||
`${$t('settings.other.dateFormat.year')}-${$t('settings.other.dateFormat.month')}-${$t(
|
||||
'settings.other.dateFormat.day'
|
||||
)}`
|
||||
}}
|
||||
</option>
|
||||
<option value="Y-D-M">
|
||||
{{
|
||||
`${$t('settings.other.dateFormat.year')}-${$t('settings.other.dateFormat.day')}-${$t(
|
||||
'settings.other.dateFormat.month'
|
||||
)}`
|
||||
}}
|
||||
</option>
|
||||
<option value="D-M-Y">
|
||||
{{
|
||||
`${$t('settings.other.dateFormat.day')}-${$t('settings.other.dateFormat.month')}-${$t(
|
||||
'settings.other.dateFormat.year'
|
||||
)}`
|
||||
}}
|
||||
</option>
|
||||
<option value="M-D-Y">
|
||||
{{
|
||||
`${$t('settings.other.dateFormat.month')}-${$t('settings.other.dateFormat.day')}-${$t(
|
||||
'settings.other.dateFormat.year'
|
||||
)}`
|
||||
}}
|
||||
</option>
|
||||
<option value="Y">{{ $t('settings.other.dateFormat.year') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
@ -562,6 +574,9 @@
|
||||
</svg>
|
||||
{{ $t('settings.spotify.title') }}
|
||||
</h3>
|
||||
<a href="https://codeberg.org/RemixDev/deemix/wiki/Enabling-Spotify-Features" target="_blank">
|
||||
{{ $t('settings.spotify.question') }}
|
||||
</a>
|
||||
|
||||
<div class="input_group">
|
||||
<p class="input_group_text">{{ $t('settings.spotify.clientID') }}</p>
|
||||
|
@ -134,7 +134,7 @@
|
||||
<span v-if="label" style="opacity: 0.4; margin-top: 8px; display: inline-block; font-size: 13px;">{{ label }}</span>
|
||||
<footer>
|
||||
<button @click.stop="addToQueue" :data-link="link">
|
||||
{{ `${$t('globals.download', [$tc(`globals.listTabs.${type}`, 1)])}` }}
|
||||
{{ `${$t('globals.download', {thing: $tc(`globals.listTabs.${type}`, 1)})}` }}
|
||||
</button>
|
||||
<button class="with_icon" @click.stop="addToQueue" :data-link="selectedLinks()">
|
||||
{{ $t('tracklist.downloadSelection') }}<i class="material-icons">file_download</i>
|
||||
@ -254,7 +254,7 @@ export default {
|
||||
this.title = playlistTitle
|
||||
this.image = playlistCover
|
||||
this.release_date = creation_date.substring(0, 10)
|
||||
this.metadata = `${this.$t('globals.by', [creatorName])} • ${this.$tc('globals.listTabs.trackN', numberOfTracks)}`
|
||||
this.metadata = `${this.$t('globals.by', {artist: creatorName})} • ${this.$tc('globals.listTabs.trackN', numberOfTracks)}`
|
||||
|
||||
if (isEmpty(playlistTracks)) {
|
||||
this.body = null
|
||||
@ -282,7 +282,7 @@ export default {
|
||||
? images[0].url
|
||||
: 'https://e-cdns-images.dzcdn.net/images/cover/d41d8cd98f00b204e9800998ecf8427e/1000x1000-000000-80-0-0.jpg'
|
||||
this.release_date = ''
|
||||
this.metadata = `${this.$t('globals.by', [ownerName])} • ${this.$tc('globals.listTabs.trackN', numberOfTracks)}`
|
||||
this.metadata = `${this.$t('globals.by', {artist: ownerName})} • ${this.$tc('globals.listTabs.trackN', numberOfTracks)}`
|
||||
|
||||
if (isEmpty(playlistTracks)) {
|
||||
this.body = null
|
||||
|
@ -3,9 +3,9 @@ const ar = {
|
||||
welcome: 'مرحبأ بك في ديمكس',
|
||||
back: 'رجوع',
|
||||
loading: 'جار التحميل',
|
||||
download: 'تحميل {0}',
|
||||
by: 'بواسطة {0}',
|
||||
in: 'في {0}',
|
||||
download: 'تحميل {thing}',
|
||||
by: 'بواسطة {artist}',
|
||||
in: 'في {album}',
|
||||
download_hint: 'تحميل',
|
||||
play_hint: 'تشغيل',
|
||||
toggle_download_tab_hint: 'عرض/اخفاء',
|
||||
@ -74,7 +74,7 @@ const ar = {
|
||||
download: 'تحميل قائمة الجدول'
|
||||
},
|
||||
errors: {
|
||||
title: 'خطأ في {0}',
|
||||
title: 'خطأ في {name}',
|
||||
ids: {
|
||||
invalidURL: 'الرابط غير صحيح',
|
||||
unsupportedURL: 'الرابط غير متاح حتى الانً',
|
||||
@ -133,7 +133,7 @@ const ar = {
|
||||
startSearching: 'ابدأ البحث!',
|
||||
description:
|
||||
'يمكنك البحث عن مقطع ، ألبوم كامل ، فنان ، قائمة تشغيل .... كل شيء! يمكنك أيضًا لصق رابط ديزر',
|
||||
fans: '{0} متابعون',
|
||||
fans: '{n} متابعون',
|
||||
noResults: 'لا يوجد نتائج',
|
||||
noResultsTrack: 'لم يتم العثور على مقاطع',
|
||||
noResultsAlbum: 'لم يتم العثور على البومات',
|
||||
@ -143,9 +143,9 @@ const ar = {
|
||||
searchbar: 'ابحث عن أي شيء تريده (أو الصق رابط)',
|
||||
downloads: 'التحميلات',
|
||||
toasts: {
|
||||
addedToQueue: '{0} تمت إلأضافة إلى قائمة الانتظار',
|
||||
alreadyInQueue: '{0} حالياً في قائمة الانتظار!',
|
||||
finishDownload: '{0} انتهى تحميل.',
|
||||
addedToQueue: '{item} تمت إلأضافة إلى قائمة الانتظار',
|
||||
alreadyInQueue: '{item} حالياً في قائمة الانتظار!',
|
||||
finishDownload: '{item} انتهى تحميل.',
|
||||
allDownloaded: 'اكتملت جميع التنزيلات!',
|
||||
refreshFavs: 'اكتمل التحديث!',
|
||||
loggingIn: 'جار تسجيل الدخول...',
|
||||
@ -155,8 +155,8 @@ const ar = {
|
||||
loggedOut: 'تم تسجيل الخروج',
|
||||
cancellingCurrentItem: 'جار الغاء العنصر الحالي.',
|
||||
currentItemCancelled: 'تم الغاء العنصر الحالي.',
|
||||
startAddingArtist: 'جار اضافة {0} البوم الى قائمة الانتضار',
|
||||
finishAddingArtist: 'تم اضافة {0} البوم الى قائمة الانتضار',
|
||||
startAddingArtist: 'جار اضافة {artist} البوم الى قائمة الانتضار',
|
||||
finishAddingArtist: 'تم اضافة {artist} البوم الى قائمة الانتضار',
|
||||
startConvertingSpotifyPlaylist: 'جار تحويل مقاطع سبوتفاي الى مقاطع ديزر',
|
||||
finishConvertingSpotifyPlaylist: 'تم تحويل قائمة تشغيل سبوتفاي',
|
||||
loginNeededToDownload: 'يجب عليك تسجيل الدخول لتحميل المقاطع!'
|
||||
@ -281,7 +281,7 @@ const ar = {
|
||||
nothing: 'احفظ الفنان الرئيسي فقط',
|
||||
default: 'استخدام المواصفات القياسية',
|
||||
andFeat: 'استخدام& و feat.',
|
||||
using: 'استخدام "{0}"'
|
||||
using: 'استخدام "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'احفظ فقط فنان الألبوم الرئيسي',
|
||||
albumVariousArtists: 'احتفظ بـ "فنانين متنوعين" في ألبوم الفنانين',
|
||||
|
@ -3,9 +3,9 @@ const de = {
|
||||
welcome: 'Willkommen bei deemix',
|
||||
back: 'zurück',
|
||||
loading: 'lädt',
|
||||
download: 'Download {0}',
|
||||
by: 'von {0}',
|
||||
in: 'in {0}',
|
||||
download: 'Download {thing}',
|
||||
by: 'von {artist}',
|
||||
in: 'in {album}',
|
||||
download_hint: 'Download',
|
||||
play_hint: 'Play',
|
||||
toggle_download_tab_hint: 'Erweitern/Minimieren',
|
||||
@ -71,7 +71,7 @@ const de = {
|
||||
download: 'Download Chart'
|
||||
},
|
||||
errors: {
|
||||
title: 'Errors für {0}',
|
||||
title: 'Errors für {name}',
|
||||
ids: {
|
||||
invalidURL: 'URL nicht erkannt',
|
||||
unsupportedURL: 'URL noch nicht unterstützt',
|
||||
@ -128,7 +128,7 @@ const de = {
|
||||
search: {
|
||||
startSearching: 'Suche starten!',
|
||||
description: 'Du kannst einen Titel, ein ganzes Album, einen Künstler, eine Playlist suchen ... alles! Du kannst auch einen Deezer-Link einfügen',
|
||||
fans: '{0} Fans',
|
||||
fans: '{n} Fans',
|
||||
noResults: 'Keine Ergebnisse',
|
||||
noResultsTrack: 'Keine Tracks gefunden',
|
||||
noResultsAlbum: 'Keine Alben gefunden',
|
||||
@ -138,9 +138,9 @@ const de = {
|
||||
searchbar: 'Suche nach allem, was dir gefällt (oder füge einfach einen Link ein)',
|
||||
downloads: 'Downloads',
|
||||
toasts: {
|
||||
addedToQueue: '{0} zur Warteschlange hinzugefügt',
|
||||
alreadyInQueue: '{0} ist bereits in der Warteschlange!',
|
||||
finishDownload: '{0} vollständig heruntergeladen.',
|
||||
addedToQueue: '{item} zur Warteschlange hinzugefügt',
|
||||
alreadyInQueue: '{item} ist bereits in der Warteschlange!',
|
||||
finishDownload: '{item} vollständig heruntergeladen.',
|
||||
allDownloaded: 'Alle Downloads abgeschlossen!',
|
||||
refreshFavs: 'Abgeschlossene Downloads neu laden!',
|
||||
loggingIn: 'Einloggen',
|
||||
@ -150,8 +150,8 @@ const de = {
|
||||
loggedOut: 'Ausgeloggt',
|
||||
cancellingCurrentItem: 'Aktuelle Auswahl abbrechen.',
|
||||
currentItemCancelled: 'Aktuelle Auswahl wurde abgebrochen',
|
||||
startAddingArtist: '{0} Alben werden hinzugefügt',
|
||||
finishAddingArtist: '{0} Alben wurden hinzugefügt',
|
||||
startAddingArtist: '{artist} Alben werden hinzugefügt',
|
||||
finishAddingArtist: '{artist} Alben wurden hinzugefügt',
|
||||
startConvertingSpotifyPlaylist: 'Konvertierern von Spotify-Tracks zu Deezer-Tracks',
|
||||
finishConvertingSpotifyPlaylist: 'Spotify Playlist convertiert'
|
||||
},
|
||||
@ -276,7 +276,7 @@ const de = {
|
||||
nothing: 'Speichere nur den Hauptkünstler',
|
||||
default: 'Verwende Standard Spezifikationen',
|
||||
andFeat: 'Verwende & und feat.',
|
||||
using: 'Verwende "{0}"'
|
||||
using: 'Verwende "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Nur den Hauptkünstler speichern',
|
||||
albumVariousArtists: 'Verschiedene Künstler" im Album Künstler Tag behalten',
|
||||
|
@ -3,9 +3,9 @@ const en = {
|
||||
welcome: 'Welcome to deemix',
|
||||
back: 'back',
|
||||
loading: 'loading',
|
||||
download: 'Download {0}',
|
||||
by: 'by {0}',
|
||||
in: 'in {0}',
|
||||
download: 'Download {thing}',
|
||||
by: 'by {artist}',
|
||||
in: 'in {album}',
|
||||
download_hint: 'Download',
|
||||
play_hint: 'Play',
|
||||
toggle_download_tab_hint: 'Expand/Collapse',
|
||||
@ -32,6 +32,7 @@ const en = {
|
||||
playlist: 'playlist | playlists',
|
||||
compile: 'compilation | compilations',
|
||||
ep: 'ep | eps',
|
||||
bundle: 'bundle | bundles',
|
||||
more: 'More albums',
|
||||
featured: 'Featured in',
|
||||
spotifyPlaylist: 'spotify playlist | spotify playlists',
|
||||
@ -40,6 +41,12 @@ const en = {
|
||||
}
|
||||
},
|
||||
about: {
|
||||
updates: {
|
||||
currentVersion: 'Current Version',
|
||||
versionNotAvailable: 'N/A',
|
||||
updateAvailable: `You're not running the latest version available: {version}`,
|
||||
deemixVersion: 'deemix lib version'
|
||||
},
|
||||
titles: {
|
||||
usefulLinks: 'Useful Links',
|
||||
bugReports: 'Bug Reports',
|
||||
@ -81,7 +88,7 @@ const en = {
|
||||
download: 'Download Chart'
|
||||
},
|
||||
errors: {
|
||||
title: 'Errors for {0}',
|
||||
title: 'Errors for {name}',
|
||||
ids: {
|
||||
invalidURL: 'URL not recognized',
|
||||
unsupportedURL: 'URL not supported yet',
|
||||
@ -138,7 +145,7 @@ const en = {
|
||||
search: {
|
||||
startSearching: 'Start searching!',
|
||||
description: 'You can search a track, a whole album, an artist, a playlist.... everything! You can also paste a Deezer link',
|
||||
fans: '{0} fans',
|
||||
fans: '{n} fans',
|
||||
noResults: 'No results',
|
||||
noResultsTrack: 'No Tracks found',
|
||||
noResultsAlbum: 'No Albums found',
|
||||
@ -150,10 +157,10 @@ const en = {
|
||||
toasts: {
|
||||
restoringQueue: 'Restoring download queue...',
|
||||
queueRestored: 'Download queue restored!',
|
||||
addedToQueue: '{0} added to queue',
|
||||
addedMoreToQueue: '{0} items added to queue',
|
||||
alreadyInQueue: '{0} is already in queue!',
|
||||
finishDownload: '{0} finished downloading.',
|
||||
addedToQueue: '{item} added to queue',
|
||||
addedMoreToQueue: '{n} items added to queue',
|
||||
alreadyInQueue: '{item} is already in queue!',
|
||||
finishDownload: '{item} finished downloading.',
|
||||
allDownloaded: 'All downloads completed!',
|
||||
refreshFavs: 'Refresh completed!',
|
||||
loggingIn: 'Logging in...',
|
||||
@ -163,8 +170,8 @@ const en = {
|
||||
loggedOut: 'Logged out',
|
||||
cancellingCurrentItem: 'Cancelling current item.',
|
||||
currentItemCancelled: 'Current item cancelled.',
|
||||
startAddingArtist: 'Adding {0} albums to queue',
|
||||
finishAddingArtist: 'Added {0} albums to queue',
|
||||
startAddingArtist: 'Adding {artist} albums to queue',
|
||||
finishAddingArtist: 'Added {artist} albums to queue',
|
||||
startConvertingSpotifyPlaylist: 'Converting spotify tracks to Deezer tracks',
|
||||
finishConvertingSpotifyPlaylist: 'Spotify playlist converted',
|
||||
loginNeededToDownload: 'You need to log in to download tracks!'
|
||||
@ -179,7 +186,8 @@ const en = {
|
||||
question: 'How do I get my own ARL?',
|
||||
update: 'Update ARL'
|
||||
},
|
||||
logout: 'Logout'
|
||||
logout: 'Logout',
|
||||
login: 'Login via deezer.com'
|
||||
},
|
||||
appearance: {
|
||||
title: 'Appearance',
|
||||
@ -279,6 +287,7 @@ const en = {
|
||||
replayGain: 'Replay Gain',
|
||||
label: 'Album Label',
|
||||
lyrics: 'Unsynchronized Lyrics',
|
||||
syncedLyrics: 'Synchronized Lyrics',
|
||||
copyright: 'Copyright',
|
||||
composer: 'Composer',
|
||||
involvedPeople: 'Involved People'
|
||||
@ -293,7 +302,7 @@ const en = {
|
||||
nothing: 'Save only the main artist',
|
||||
default: 'Using standard specification',
|
||||
andFeat: 'Using & and feat.',
|
||||
using: 'Using "{0}"'
|
||||
using: 'Using "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Save only the main album artist',
|
||||
albumVariousArtists: 'Keep "Various Artists" in the Album Artists',
|
||||
@ -331,7 +340,8 @@ const en = {
|
||||
title: 'Spotify Features',
|
||||
clientID: 'Spotify ClientID',
|
||||
clientSecret: 'Spotify Client Secret',
|
||||
username: 'Spotify Username'
|
||||
username: 'Spotify Username',
|
||||
question: 'How do I enable Spotify Features?'
|
||||
},
|
||||
reset: 'Reset to Default',
|
||||
save: 'Save',
|
||||
|
@ -3,9 +3,9 @@ const es = {
|
||||
welcome: 'Bienvenido a deemix',
|
||||
back: 'atrás',
|
||||
loading: 'cargando',
|
||||
download: 'Descarga {0}',
|
||||
by: 'por {0}',
|
||||
in: 'en {0}',
|
||||
download: 'Descarga {thing}',
|
||||
by: 'por {artist}',
|
||||
in: 'en {album}',
|
||||
download_hint: 'Descargar',
|
||||
play_hint: 'Reproducir',
|
||||
toggle_download_tab_hint: 'Expandir/Colapsar',
|
||||
@ -52,9 +52,8 @@ const es = {
|
||||
contributing: '¿Quieres contribuir a este proyecto? ¡Puedes hacerlo de diferentes maneras!',
|
||||
donations: '¿Quiere contribuir monetariamente? ¡Podrías hacer una donación!'
|
||||
},
|
||||
usesLibrary:
|
||||
'Esta aplicación usa la biblioteca <strong>deemix</strong>, que puedes usar para hacer tu propia interfaz de usuario para deemix.',
|
||||
thanks: `Gracias a <strong>rtonno</fuerte>, <strong>uhwot</fuerte> y <strong>lollilol</fuerte> por ayudarme con este proyecto, a <strong>BasCurtiz</fuerte> y <strong>scarvimane</fuerte> por hacer el icono.`,
|
||||
usesLibrary: 'Esta aplicación usa la biblioteca <strong>deemix</strong>, que puedes usar para hacer tu propia interfaz de usuario para deemix.',
|
||||
thanks: `Gracias a <strong>rtonno</strong>, <strong>uhwot</strong> y <strong>lollilol</strong> por ayudarme con este proyecto, a <strong>BasCurtiz</strong> y <strong>scarvimane</strong> por hacer el icono.`,
|
||||
upToDate: `Mantente al día con las actualizaciones siguiendo el <a href="https://t.me/RemixDevNews" target="_blank">canal de noticias</a> en Telegram.`,
|
||||
officialWebsite: 'Página web oficial',
|
||||
officialRepo: 'Repositorio de la biblioteca oficial',
|
||||
@ -62,19 +61,18 @@ const es = {
|
||||
officialSubreddit: 'Subreddit oficial',
|
||||
newsChannel: 'Canal de noticias',
|
||||
questions: `Si tienes preguntas o problemas con la aplicación, busca una solución en el <a href="https://www.reddit.com/r/deemix" target="_blank">subreddit</a> primero. Luego, si no encuentras nada puedes hacer un post con tu problema en el subreddit.`,
|
||||
beforeReporting: `Antes de informar de un error asegúrese de que está ejecutando la última versión de la aplicación y que lo que quiere informar es en realidad un error y no algo que está mal sólo en su extremo.`,
|
||||
beSure: `Asegúrate de que el fallo es reproducible en otras máquinas y también <strong>NO</strong> reporte un fallo si ya ha sido reportado.`,
|
||||
beforeReporting: 'Antes de informar de un error asegúrese de que está ejecutando la última versión de la aplicación y que lo que quiere informar es en realidad un error y no algo que está mal sólo en su extremo.',
|
||||
beSure: 'Asegúrate de que el fallo es reproducible en otras máquinas y también <strong>NO</strong> reporte un fallo si ya ha sido reportado.',
|
||||
duplicateReports: 'Los informes de errores duplicados se cerrarán, así que manténgase al tanto de eso.',
|
||||
dontOpenIssues: `<strong>NO</strong> abra problemas para hacer preguntas, hay un subreddit para eso.`,
|
||||
dontOpenIssues: '<strong>NO</strong> abra problemas para hacer preguntas, hay un subreddit para eso.',
|
||||
newUI: `Si tienes fluidez en Python podrías intentar hacer una nueva interfaz de usuario para la aplicación usando la biblioteca base, o arreglar los errores de la biblioteca con una petición pull en el <a href="https://codeberg.org/RemixDev/deemix" target="_blank">repo</a>.`,
|
||||
acceptFeatures: `También acepto características, pero no cosas complejas, ya que se pueden implementar directamente en la aplicación y no en la biblioteca.`,
|
||||
otherLanguages: `¡Si dominas otro lenguaje de programación podrías intentar portar Deemix a otros lenguajes de programación!`,
|
||||
understandingCode: `¿Necesitas ayuda para entender el código? Sólo tienes que poner RemixDev en Telegram o Reddit.`,
|
||||
acceptFeatures: 'También acepto características, pero no cosas complejas, ya que se pueden implementar directamente en la aplicación y no en la biblioteca.',
|
||||
otherLanguages: '¡Si dominas otro lenguaje de programación podrías intentar portar Deemix a otros lenguajes de programación!',
|
||||
understandingCode: '¿Necesitas ayuda para entender el código? Sólo tienes que poner RemixDev en Telegram o Reddit.',
|
||||
contributeWebUI: `Si conoces Vue.js (JavaScript), HTML o CSS podrías contribuir a la <a href="https://codeberg.org/RemixDev/deemix-webui" target="_blank">WebUI</a>.`,
|
||||
itsFree: `Debes recordar que <strong>este es un proyecto libre</fuerte> y <strong>debes apoyar a los artistas que amas</fuerte> antes de apoyar a los desarrolladores.`,
|
||||
notObligated: `No te sientas obligado a donar, ¡te aprecio de todas formas!`,
|
||||
lincensedUnder: `Esta obra está autorizada bajo una
|
||||
<a rel="licencia" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank">GNU Licencia Pública General 3.0</a>.`
|
||||
itsFree: 'Debes recordar que <strong>este es un proyecto libre</strong> y <strong>debes apoyar a los artistas que amas</strong> antes de apoyar a los desarrolladores.',
|
||||
notObligated: 'No te sientas obligado a donar, ¡te aprecio de todas formas!',
|
||||
lincensedUnder: `Esta obra está autorizada bajo una <a rel="licencia" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank">GNU Licencia Pública General 3.0</a>.`
|
||||
},
|
||||
charts: {
|
||||
title: 'Tablas',
|
||||
@ -82,7 +80,7 @@ const es = {
|
||||
download: 'Descargar la tabla'
|
||||
},
|
||||
errors: {
|
||||
title: 'Errores para {0}',
|
||||
title: 'Errores para {name}',
|
||||
ids: {
|
||||
invalidURL: 'No se reconoce la URL',
|
||||
unsupportedURL: 'La URL no está soportada aún',
|
||||
@ -139,7 +137,7 @@ const es = {
|
||||
search: {
|
||||
startSearching: '¡Comienza a buscar!',
|
||||
description: 'Puedes buscar un tema, un álbum entero, un artista, una lista de reproducción... ¡todo! También puedes pegar un enlace de Deezer',
|
||||
fans: '{0} fanáticos',
|
||||
fans: '{n} fanáticos',
|
||||
noResults: 'No hay resultados',
|
||||
noResultsTrack: 'No se encontraron pistas',
|
||||
noResultsAlbum: 'No se encontraron álbumes',
|
||||
@ -151,10 +149,10 @@ const es = {
|
||||
toasts: {
|
||||
restoringQueue: 'Restaurando cola de descarga...',
|
||||
queueRestored: '¡Cola de descarga restaurada!',
|
||||
addedToQueue: '{0} añadidos a la cola',
|
||||
addedMoreToQueue: '{0} elementos añadidos a la cola',
|
||||
alreadyInQueue: '¡{0} ya está en la cola!',
|
||||
finishDownload: '{0} terminado de descargar.',
|
||||
addedToQueue: '{item} añadidos a la cola',
|
||||
addedMoreToQueue: '{n} elementos añadidos a la cola',
|
||||
alreadyInQueue: '¡{item} ya está en la cola!',
|
||||
finishDownload: '{item} terminado de descargar.',
|
||||
allDownloaded: '¡Todas las descargas se han completado!',
|
||||
refreshFavs: '¡Actualización completada!',
|
||||
loggingIn: 'Conectando...',
|
||||
@ -164,8 +162,8 @@ const es = {
|
||||
loggedOut: 'Desconectado',
|
||||
cancellingCurrentItem: 'Cancelando el elemento actual.',
|
||||
currentItemCancelled: 'El elemento actual se ha cancelado.',
|
||||
startAddingArtist: 'Añadiendo {0} álbumes a la cola',
|
||||
finishAddingArtist: 'Añadido {0} álbumes a la cola',
|
||||
startAddingArtist: 'Añadiendo {artist} álbumes a la cola',
|
||||
finishAddingArtist: 'Añadido {artist} álbumes a la cola',
|
||||
startConvertingSpotifyPlaylist: 'Convertir las pistas de Spotify en pistas de Deezer',
|
||||
finishConvertingSpotifyPlaylist: 'Lista de reproducción de Spotify convertida',
|
||||
loginNeededToDownload: '¡Necesitas iniciar sesión para descargar títulos!'
|
||||
@ -253,6 +251,8 @@ const es = {
|
||||
both: 'Ambos, jpeg y png'
|
||||
},
|
||||
jpegImageQuality: 'Calidad de la imagen JPEG',
|
||||
embeddedArtworkPNG: 'Guardar las imágenes incrustadas como PNG',
|
||||
embeddedPNGWarning: 'Las PNG no están oficialmente soportadas por Deezer y puede encontrar errores.',
|
||||
imageSizeWarning: 'Nada por encima de x1200 no es usado oficialmente por Deezer, tú podrías encontrar inconvenientes'
|
||||
},
|
||||
tags: {
|
||||
@ -291,7 +291,7 @@ const es = {
|
||||
nothing: 'Guardar sólo el artista principal',
|
||||
default: 'Usar la especificación estándar',
|
||||
andFeat: 'Usar & y feat.',
|
||||
using: 'Usar "{0}"'
|
||||
using: 'Usar "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Guardar sólo el artista principal del álbum',
|
||||
albumVariousArtists: 'Mantén "Various Artists" en los artistas del álbum',
|
||||
|
168
src/lang/fr.js
168
src/lang/fr.js
@ -1,11 +1,11 @@
|
||||
const fr = {
|
||||
globals: {
|
||||
welcome: 'Bienvenue sur deemix',
|
||||
welcome: 'Bienvenue dans deemix',
|
||||
back: 'retour',
|
||||
loading: 'chargement',
|
||||
download: 'Téléchargement {0}',
|
||||
by: 'par {0}',
|
||||
in: 'en {0}',
|
||||
loading: 'chargement en cours',
|
||||
download: 'Télécharger {thing}',
|
||||
by: 'par {artist}',
|
||||
in: 'dans {album}',
|
||||
download_hint: 'Télécharger',
|
||||
play_hint: 'Lire',
|
||||
toggle_download_tab_hint: 'Développer/Réduire',
|
||||
@ -28,18 +28,25 @@ const fr = {
|
||||
title: 'titre | titres',
|
||||
track: 'piste | pistes',
|
||||
trackN: '0 piste | {n} piste | {n} pistes',
|
||||
releaseN: '0 parution | {n} parution | {n} parutions',
|
||||
releaseN: '0 sortie | {n} sortie | {n} sorties',
|
||||
playlist: 'playlist | playlists',
|
||||
compile: 'compilation | compilations',
|
||||
ep: 'ep | eps',
|
||||
bundle: 'bundle | bundles',
|
||||
more: "Plus d'albums",
|
||||
featured: 'En vedette dans',
|
||||
featured: 'Apparaît dans',
|
||||
spotifyPlaylist: 'playlist spotify | playlists spotify',
|
||||
releaseDate: 'date de parution',
|
||||
releaseDate: 'date de sortie',
|
||||
error: 'erreur'
|
||||
}
|
||||
},
|
||||
about: {
|
||||
updates: {
|
||||
currentVersion: 'Version Actuelle',
|
||||
versionNotAvailable: 'N/A',
|
||||
updateAvailable: "Vous n'utilisez pas la dernière version disponible : {version}",
|
||||
deemixVersion: 'Version de la bibliothèque deemix'
|
||||
},
|
||||
titles: {
|
||||
usefulLinks: 'Liens Utiles',
|
||||
bugReports: 'Rapports De Bug',
|
||||
@ -48,45 +55,45 @@ const fr = {
|
||||
license: 'Licence'
|
||||
},
|
||||
subtitles: {
|
||||
bugReports: 'Y a-t-il quelque chose qui ne fonctionne pas dans deemix ? Dites-le nous !',
|
||||
bugReports: 'Quelque chose ne fonctionne pas dans deemix ? Contactez-nous !',
|
||||
contributing: 'Vous souhaitez contribuer à ce projet ? Vous pouvez le faire de différentes manières !',
|
||||
donations: 'Vous souhaitez contribuer financièrement ? Vous pouvez faire un don !'
|
||||
},
|
||||
usesLibrary: 'Cette application utilise la bibliothèque <strong>deemix</strong>, que vous pouvez exploiter afin de créer votre propre interface utilisateur pour deemix.',
|
||||
thanks: "Merci à <strong>rtonno</strong>, <strong>uhwot</strong> et <strong>lollilol</strong> de m'avoir aidé dans ce projet ainsi qu'à <strong>BasCurtiz</strong> et <strong>scarvimane</strong> pour avoir réalisé l'icône.",
|
||||
upToDate: 'Restez informé des mises à jour en suivant le <a href="https://t.me/RemixDevNews" target="_blank">canal de nouveautés</a> sur Telegram.',
|
||||
thanks: "Merci à <strong>rtonno</strong>, <strong>uhwot</strong> et <strong>lollilol</strong> de m'avoir aidé dans ce projet ainsi qu'à <strong>BasCurtiz</strong> et <strong>scarvimane</strong> pour la création de l'icône.",
|
||||
upToDate: `Restez informé des mises à jour en suivant le <a href="https://t.me/RemixDevNews" target="_blank">canal d'informations</a> sur Telegram.`,
|
||||
officialWebsite: 'Site Officiel',
|
||||
officialRepo: 'Répertoire De Dépôt Officiel De La Bibiliothèque',
|
||||
officialRepo: 'Répertoire De Dépôt Officiel De La Bibliothèque',
|
||||
officialWebuiRepo: 'Répertoire De Dépôt Officiel De La WebUI',
|
||||
officialSubreddit: 'Subreddit Officiel',
|
||||
newsChannel: 'Canal De Nouveautés',
|
||||
questions: `Si vous avez des questions ou des problèmes avec l'application, cherchez d'abord une solution dans le <a href="https://www.reddit.com/r/deemix" target="_blank">subreddit</a>. Ensuite, si vous ne trouvez rien, vous pouvez publier un message avec votre problème dans le subreddit.`,
|
||||
beforeReporting: "Avant de signaler un bug, assurez-vous que vous exécutez la dernière version de l'application et que ce que vous voulez signaler est bien un bug et non quelque chose qui ne va pas de votre côté.",
|
||||
beSure: "Assurez-vous que le bug est reproductible sur d'autres machines et aussi de <strong>NE PAS</strong> signaler un bug si celui-ci a déjà été mentionné.",
|
||||
duplicateReports: 'Les doublons de rapports de bug seront supprimés, alors gardez un œil sur cela.',
|
||||
dontOpenIssues: "<strong>NE PAS</strong> ouvrir un nouveau problème pour poser des questions, il existe un subreddit pour cela.",
|
||||
newsChannel: "Canal d'Informations",
|
||||
questions: `Si vous avez des questions ou des problèmes avec l'application, cherchez d'abord une solution dans le <a href="https://www.reddit.com/r/deemix" target="_blank">subreddit</a>. Ensuite, si la solution ne s'y trouve pas, vous pouvez publier un message dans le subreddit en décrivant votre problème.`,
|
||||
beforeReporting: "Avant de signaler un bug, assurez-vous que vous utilisez la version la plus récente de l'application. Vérifiez que vous souhaitez nous rapporter un bug et non quelque chose qui ne fonctionne pas uniquement de votre côté.",
|
||||
beSure: "Assurez-vous que le bug soit reproductible sur d'autres appareils mais aussi de <strong>NE PAS</strong> signaler un bug si celui-ci a déjà été recensé.",
|
||||
duplicateReports: "Les rapports de bug répétitifs seront supprimés, merci d'en prendre bonne note.",
|
||||
dontOpenIssues: "<strong>NE PAS</strong> rapporter de problème s'il ne s'agit que de simples questions. Un subreddit existe pour ces questions.",
|
||||
newUI: `Si vous maîtrisez python, vous pouvez essayer de créer une nouvelle interface utilisateur pour l'application à l'aide de la bibliothèque de base, ou corriger des bugs dans la bibliothèque à l'aide d'une demande de fusion de branches (pull request) sur le <a href="https://codeberg.org/RemixDev/deemix" target="_blank">répertoire de dépôt</a>.`,
|
||||
acceptFeatures: "J'accepte également les fonctionnalités, mais pas de choses complexes, car elles peuvent être implémentées directement dans l'application et non dans la bibliothèque.",
|
||||
otherLanguages: "Si vous maîtrisez un autre langage de programmation, vous pouvez essayer de transposer deemix dans d'autres langages de programmation !",
|
||||
acceptFeatures: "J'accepte également les nouvelles fonctionnalités, mais pas de choses complexes, dans la mesure où elles peuvent être implémentées directement dans l'application et non dans la bibliothèque.",
|
||||
otherLanguages: "Si vous maîtrisez un autre langage de programmation, vous pouvez essayer de transposer deemix dans ce dernier !",
|
||||
understandingCode: "Vous avez besoin d'aide pour comprendre le code ? Il suffit de contacter RemixDev sur Telegram ou Reddit.",
|
||||
contributeWebUI: `Si vous vous y connaissez en Vue.js (JavaScript), HTML ou CSS vous pouvez contribuer à la <a href="https://codeberg.org/RemixDev/deemix-webui" target="_blank">WebUI</a>.`,
|
||||
itsFree: "N'oubliez pas que <strong>ceci est un projet gratuit</strong> et que <strong>vous devez soutenir les artistes que vous appréciez</strong> avant de supporter les développeurs.",
|
||||
notObligated: "Ne vous sentez pas obligé de faire un don, je vous apprécie quand même !",
|
||||
lincensedUnder: `Ce projet est autorisé dans le cadre d'une
|
||||
<a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.fr.html" target="_blank">Licence publique générale GNU 3.0</a>.`
|
||||
contributeWebUI: `Si vous vous y connaissez en Vue.js (JavaScript), HTML ou CSS, vous pouvez contribuer à la <a href="https://codeberg.org/RemixDev/deemix-webui" target="_blank">WebUI</a>.`,
|
||||
itsFree: "N'oubliez pas que <strong>ce projet est libre</strong> et qu'il est important de <strong>soutenir vos artistes préférés</strong> avant de supporter les développeurs.",
|
||||
notObligated: "Ne vous sentez pas obligé de faire un don, vous êtes tout de même apprécié !",
|
||||
lincensedUnder: `Ce projet s'inscrit dans le cadre de la
|
||||
<a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank">Licence publique générale GNU, version 3</a>.`
|
||||
},
|
||||
charts: {
|
||||
title: 'Hit-Parade',
|
||||
title: 'Classements',
|
||||
changeCountry: 'Changer De Pays',
|
||||
download: 'Télécharger Le Hit-Parade'
|
||||
download: 'Télécharger Le Classement'
|
||||
},
|
||||
errors: {
|
||||
title: 'Erreurs pour {0}',
|
||||
title: 'Erreurs pour {name}',
|
||||
ids: {
|
||||
invalidURL: "Cette URL n'est pas reconnue",
|
||||
unsupportedURL: "Cette URL n'est pas supportée actuellement",
|
||||
unsupportedURL: "Cette URL n'est actuellement pas supportée",
|
||||
ISRCnotOnDeezer: "L'ISRC de la piste est indisponible sur Deezer",
|
||||
notYourPrivatePlaylist: "Vous ne pouvez pas télécharger les playlists privées de quelqu'un d'autre.",
|
||||
notYourPrivatePlaylist: "Vous n'êtes pas autorisé à télécharger les playlists privées de quelqu'un d'autre.",
|
||||
spotifyDisabled: 'Les Fonctionnalités Spotify ne sont pas configurées correctement.',
|
||||
trackNotOnDeezer: 'La piste est introuvable sur Deezer !',
|
||||
albumNotOnDeezer: "L'album est introuvable sur Deezer !",
|
||||
@ -108,16 +115,16 @@ const fr = {
|
||||
noTracks: "Aucune Piste Favorite n'a été trouvée"
|
||||
},
|
||||
home: {
|
||||
needTologin: 'Vous devez vous connecter à votre compte Deezer avant de pouvoir commencer les téléchargements.',
|
||||
needTologin: 'Vous devez vous connecter à votre compte Deezer avant de pouvoir démarrer un téléchargement.',
|
||||
openSettings: 'Ouvrir Les Paramètres',
|
||||
sections: {
|
||||
popularPlaylists: 'Playlists populaires',
|
||||
popularAlbums: 'Albums les plus diffusés'
|
||||
popularPlaylists: 'Playlists les plus écoutées',
|
||||
popularAlbums: 'Albums les plus écoutés'
|
||||
}
|
||||
},
|
||||
linkAnalyzer: {
|
||||
info: "Vous pouvez utiliser cette section pour obtenir plus d'informations sur le lien que vous essayez de télécharger.",
|
||||
useful: "C'est utile si vous essayer de télécharger des pistes qui ne sont pas disponibles dans votre pays et que vous souhaitez savoir où elles sont disponibles, par exemple.",
|
||||
info: "Vous pouvez utiliser cette section pour obtenir davantage d'informations sur le lien que vous essayez de télécharger.",
|
||||
useful: "C'est utile si vous essayez, par exemple, de télécharger des pistes indisponibles dans votre pays et que vous souhaitez savoir où elles sont disponibles.",
|
||||
linkNotSupported: "Ce lien n'est pas encore pris en charge",
|
||||
linkNotSupportedYet: "Il semble que ce lien ne soit pas encore pris en charge, essayez d'en analyser un autre.",
|
||||
table: {
|
||||
@ -126,8 +133,8 @@ const fr = {
|
||||
upc: 'UPC',
|
||||
duration: 'Durée',
|
||||
diskNumber: 'Numéro De Disque',
|
||||
trackNumber: 'Numéro De Disque',
|
||||
releaseDate: 'Date De Parution',
|
||||
trackNumber: 'Numéro De Piste',
|
||||
releaseDate: 'Date De Sortie',
|
||||
bpm: 'BPM',
|
||||
label: 'Label',
|
||||
recordType: "Type d'Enregistrement",
|
||||
@ -136,36 +143,36 @@ const fr = {
|
||||
}
|
||||
},
|
||||
search: {
|
||||
startSearching: 'Commencer une recherche !',
|
||||
description: 'Vous pouvez rechercher une piste, un album entier, un artiste, une playlist... tout ! Vous pouvez également copier-coller un lien Deezer',
|
||||
fans: '{0} fans',
|
||||
startSearching: 'Démarrer une recherche !',
|
||||
description: 'Vous pouvez rechercher une piste, un album entier, un artiste, une playlist... tout ce que vous voulez ! Vous pouvez également coller un lien Deezer.',
|
||||
fans: '{n} fans',
|
||||
noResults: 'Aucun résultat',
|
||||
noResultsTrack: "Aucune piste n'a été trouvée",
|
||||
noResultsAlbum: "Aucun album n'a été trouvé",
|
||||
noResultsArtist: "Aucun artiste n'a été trouvé",
|
||||
noResultsPlaylist: "Aucune playlist n'a été trouvée"
|
||||
},
|
||||
searchbar: 'Recherchez tout ce que vous voulez (ou copiez-collez simplement un lien)',
|
||||
searchbar: 'Saisissez une requête (ou collez simplement un lien)',
|
||||
downloads: 'téléchargements',
|
||||
toasts: {
|
||||
restoringQueue: "Restauration de la file d'attente de téléchargement...",
|
||||
queueRestored: "La file d'attente de téléchargement a été restaurée !",
|
||||
addedToQueue: "{0} ajouté à la file d'attente",
|
||||
addedMoreToQueue: "{0} éléments ajoutés à la file d'attente",
|
||||
alreadyInQueue: "{0} est déjà en file d'attente !",
|
||||
finishDownload: '{0} a été téléchargé.',
|
||||
addedToQueue: "{item} ajouté à la file d'attente",
|
||||
addedMoreToQueue: "{n} éléments ajoutés à la file d'attente",
|
||||
alreadyInQueue: "{item} est déjà dans la file d'attente !",
|
||||
finishDownload: '{item} a été téléchargé.',
|
||||
allDownloaded: 'Tous les téléchargements sont terminés !',
|
||||
refreshFavs: 'Actualisation terminée !',
|
||||
loggingIn: 'Connexion...',
|
||||
loggingIn: 'Connexion en cours...',
|
||||
loggedIn: 'Connecté',
|
||||
alreadyLogged: 'Déjà connecté',
|
||||
loginFailed: 'Connexion impossible',
|
||||
loggedOut: 'Déconnecté',
|
||||
cancellingCurrentItem: "Annulation de l'élément actuel.",
|
||||
currentItemCancelled: 'Élément actuel annulé.',
|
||||
startAddingArtist: "Ajout de {0} albums en file d'attente",
|
||||
finishAddingArtist: "{0} albums ajoutés en file d'attente",
|
||||
startConvertingSpotifyPlaylist: 'Conversion de pistes Spotify en pistes Deezer',
|
||||
startAddingArtist: "Ajout des albums de {artist} à la file d'attente",
|
||||
finishAddingArtist: "Les albums de {artist} ont été ajoutés à la file d'attente",
|
||||
startConvertingSpotifyPlaylist: 'Conversion de pistes Spotify en équivalents Deezer',
|
||||
finishConvertingSpotifyPlaylist: 'Playlist Spotify convertie',
|
||||
loginNeededToDownload: 'Vous devez vous connecter pour pouvoir télécharger des pistes !'
|
||||
},
|
||||
@ -176,41 +183,42 @@ const fr = {
|
||||
title: 'Connexion',
|
||||
loggedIn: 'Vous êtes connecté en tant que {username}',
|
||||
arl: {
|
||||
question: 'Comment puis-je obtenir mon ARL personnel ?',
|
||||
question: 'Comment obtenir mon ARL personnel ?',
|
||||
update: "Mettre à jour l'ARL"
|
||||
},
|
||||
logout: 'Déconnexion'
|
||||
logout: 'Déconnexion',
|
||||
login: 'Connexion via deezer.com'
|
||||
},
|
||||
appearance: {
|
||||
title: 'Apparence',
|
||||
slimDownloadTab: 'Onglet de téléchargement plus petit'
|
||||
slimDownloadTab: 'Onglet de téléchargement compact'
|
||||
},
|
||||
downloadPath: {
|
||||
title: 'Emplacement De Téléchargement'
|
||||
},
|
||||
templates: {
|
||||
title: 'Gabarits',
|
||||
tracknameTemplate: 'Gabarit pour le nom de piste',
|
||||
albumTracknameTemplate: "Gabarit pour le nom de piste de l'album",
|
||||
playlistTracknameTemplate: 'Gabarit pour le nom de piste de la playlist'
|
||||
title: 'Modèles',
|
||||
tracknameTemplate: 'Modèle pour le nom de piste',
|
||||
albumTracknameTemplate: "Modèle pour le nom de piste de l'album",
|
||||
playlistTracknameTemplate: 'Modèle pour le nom de piste de la playlist'
|
||||
},
|
||||
folders: {
|
||||
title: 'Dossiers',
|
||||
createPlaylistFolder: 'Générer des dossiers par playlist',
|
||||
playlistNameTemplate: 'Gabarit pour le nom du dossier de playlist',
|
||||
playlistNameTemplate: 'Modèle pour le nom du dossier de playlist',
|
||||
createArtistFolder: 'Générer des dossiers par artiste',
|
||||
artistNameTemplate: "Gabarit pour le nom du dossier d'artiste",
|
||||
artistNameTemplate: "Modèle pour le nom du dossier d'artiste",
|
||||
createAlbumFolder: 'Générer des dossiers par album',
|
||||
albumNameTemplate: "Gabarit pour le nom du dossier d'album",
|
||||
albumNameTemplate: "Modèle pour le nom du dossier d'album",
|
||||
createCDFolder: 'Générer des dossiers par CD',
|
||||
createStructurePlaylist: 'Créer une structure de dossiers pour les playlists',
|
||||
createSingleFolder: 'Créer une structure de dossiers pour les singles'
|
||||
createStructurePlaylist: 'Générer une structure de dossiers pour les playlists',
|
||||
createSingleFolder: 'Générer une structure de dossiers pour les singles'
|
||||
},
|
||||
trackTitles: {
|
||||
title: 'Titres de pistes',
|
||||
title: 'Titres des pistes',
|
||||
padTracks: "Longueur uniforme des numéros de piste (ajoute automatiquement des zéros devant le numéro initial de la piste)",
|
||||
paddingSize: 'Nombre de zéros à ajouter en permanance devant le numéro initial de la piste',
|
||||
illegalCharacterReplacer: 'Remplacement de caractère inapproprié'
|
||||
paddingSize: 'Nombre de zéros à ajouter en permanence devant le numéro initial de la piste',
|
||||
illegalCharacterReplacer: "Substitut aux caractères non autorisés (dans les noms de fichiers et de dossiers)"
|
||||
},
|
||||
downloads: {
|
||||
title: 'Téléchargements',
|
||||
@ -222,30 +230,30 @@ const fr = {
|
||||
1: 'MP3 128kbps'
|
||||
},
|
||||
overwriteFile: {
|
||||
title: 'Dois-je écraser les fichiers ?',
|
||||
title: 'Les fichiers doivent-ils être écrasés ?',
|
||||
y: 'Oui, écraser le fichier',
|
||||
n: 'Non, ne pas écraser le fichier',
|
||||
t: 'Écraser uniquement les métadonnées',
|
||||
b: 'Non, conserver les deux fichiers et ajouter un numéro au doublon',
|
||||
e: "Non, et ne pas tenir compte de l'extension du fichier"
|
||||
},
|
||||
fallbackBitrate: "Recourir à des débits plus faibles si le débit préféré n'est pas disponible",
|
||||
fallbackBitrate: "Recourir à un débit plus faible si le débit préféré n'est pas disponible",
|
||||
fallbackSearch: "Rechercher la piste si le lien original n'est pas disponible",
|
||||
logErrors: "Créer un fichier journal d'erreurs",
|
||||
logSearched: 'Créer un fichier journal des pistes recherchées',
|
||||
createM3U8File: 'Créer un fichier de playlist',
|
||||
syncedLyrics: 'Créer des fichiers .lyr (Paroles Synchronisées)',
|
||||
playlistFilenameTemplate: 'Gabarit du nom de fichier de la playlist',
|
||||
playlistFilenameTemplate: 'Modèle du nom de fichier de la playlist',
|
||||
saveDownloadQueue: "Enregistrer la file d'attente de téléchargement à la fermeture de l'application"
|
||||
},
|
||||
covers: {
|
||||
title: "Pochettes d'albums",
|
||||
saveArtwork: 'Enregistrer Les Pochettes',
|
||||
coverImageTemplate: 'Gabarit pour le nom de la pochette',
|
||||
coverImageTemplate: 'Modèle pour le nom de la pochette',
|
||||
saveArtworkArtist: "Enregistrer l'image de l'artiste",
|
||||
artistImageTemplate: "Gabarit pour le nom de l'image de l'artiste",
|
||||
artistImageTemplate: "Modèle pour le nom de l'image de l'artiste",
|
||||
localArtworkSize: "Taille de l'illustration locale",
|
||||
embeddedArtworkSize: "Taille de l'illustration incorporée",
|
||||
embeddedArtworkSize: "Taille de l'illustration incorporée aux fichiers audio",
|
||||
localArtworkFormat: {
|
||||
title: "Dans quel format souhaitez-vous l'illustration locale ?",
|
||||
jpg: 'Une image jpeg',
|
||||
@ -253,9 +261,9 @@ const fr = {
|
||||
both: 'À la fois jpeg et png'
|
||||
},
|
||||
jpegImageQuality: "Qualité de l'image JPEG",
|
||||
embeddedArtworkPNG: "Enregistrer l'illustration incorporée en tant qu'image PNG",
|
||||
embeddedPNGWarning: 'Les images PNG ne sont pas officiellement utilisées par Deezer et pourraient causer des problèmes',
|
||||
imageSizeWarning: "Toute valeur supérieure à x1200 n'est pas officiellement utilisée par Deezer, vous pourriez donc rencontrer des problèmes"
|
||||
embeddedArtworkPNG: "Enregistrer l'illustration incorporée aux fichiers audio en tant que PNG",
|
||||
embeddedPNGWarning: 'Les images PNG ne sont pas officiellement utilisées par Deezer et pourraient causer des problèmes.',
|
||||
imageSizeWarning: "Toute valeur supérieure à x1200 n'est pas officiellement supportée par Deezer, vous pourriez donc rencontrer des problèmes."
|
||||
},
|
||||
tags: {
|
||||
head: 'Métadonnées à sauvegarder',
|
||||
@ -279,6 +287,7 @@ const fr = {
|
||||
replayGain: 'Gain En Relecture (Replay Gain)',
|
||||
label: "Label De l'Album",
|
||||
lyrics: 'Paroles Non-Synchronisées',
|
||||
syncedLyrics: 'Paroles Synchronisées',
|
||||
copyright: "Droits d'Auteur (Copyright)",
|
||||
composer: 'Compositeur',
|
||||
involvedPeople: 'Personnes Impliquées'
|
||||
@ -286,14 +295,14 @@ const fr = {
|
||||
other: {
|
||||
title: 'Autre',
|
||||
savePlaylistAsCompilation: 'Enregistrer les playlists en tant que compilation',
|
||||
useNullSeparator: 'Utiliser un séparateur nul',
|
||||
useNullSeparator: 'Utiliser le caractère NULL comme séparateur',
|
||||
saveID3v1: 'Enregistrer également les métadonnées ID3v1',
|
||||
multiArtistSeparator: {
|
||||
title: 'Comment aimeriez-vous séparer les artistes ?',
|
||||
nothing: "Enregistrer uniquement l'artiste principal",
|
||||
default: 'En utilisant la spécification standard',
|
||||
andFeat: 'En utilisant & et feat.',
|
||||
using: 'En utilisant "{0}"'
|
||||
using: 'En utilisant "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: "Enregistrer uniquement l'artiste principal de l'album",
|
||||
albumVariousArtists: `Conserver "Various Artists" dans les Artistes de l'Album`,
|
||||
@ -306,7 +315,7 @@ const fr = {
|
||||
day: 'JJ'
|
||||
},
|
||||
featuredToTitle: {
|
||||
title: 'Que dois-je faire avec les artistes participants (featuring) ?',
|
||||
title: 'Que faire des artistes participants (featuring) ?',
|
||||
0: 'Ne rien faire',
|
||||
1: 'Les retirer du titre de la piste',
|
||||
3: "Les supprimer du titre de la piste et du titre de l'album",
|
||||
@ -331,7 +340,8 @@ const fr = {
|
||||
title: 'Fonctionnalités Spotify',
|
||||
clientID: 'clientID Spotify',
|
||||
clientSecret: 'Client Secret Spotify',
|
||||
username: "Nom d'utilisateur Spotify"
|
||||
username: "Nom d'utilisateur Spotify",
|
||||
question: 'Comment activer les Fonctionnalités Spotify ?'
|
||||
},
|
||||
reset: 'Rétablir les valeurs par défaut',
|
||||
save: 'Sauvegarder',
|
||||
@ -344,9 +354,9 @@ const fr = {
|
||||
sidebar: {
|
||||
home: 'accueil',
|
||||
search: 'recherche',
|
||||
charts: 'hit-parade',
|
||||
charts: 'classements',
|
||||
favorites: 'favoris',
|
||||
linkAnalyzer: 'analyseur de liens',
|
||||
linkAnalyzer: 'analyseur de lien',
|
||||
settings: 'paramètres',
|
||||
about: 'à propos'
|
||||
},
|
||||
|
@ -3,9 +3,9 @@ const hr = {
|
||||
welcome: 'Dobrodošli u deemix',
|
||||
back: 'nazad',
|
||||
loading: 'učitavanje',
|
||||
download: 'Preuzmi {0}',
|
||||
by: 'by {0}',
|
||||
in: 'u {0}',
|
||||
download: 'Preuzmi {thing}',
|
||||
by: 'by {artist}',
|
||||
in: 'u {album}',
|
||||
download_hint: 'Preuzmi',
|
||||
play_hint: 'Play',
|
||||
toggle_download_tab_hint: 'Proširi/Smanji',
|
||||
@ -74,7 +74,7 @@ const hr = {
|
||||
download: 'Preuzmi ljestvicu'
|
||||
},
|
||||
errors: {
|
||||
title: 'Greške za {0}',
|
||||
title: 'Greške za {name}',
|
||||
ids: {
|
||||
invalidURL: 'URL nije prepoznat',
|
||||
unsupportedURL: 'URL još nije podržan',
|
||||
@ -133,7 +133,7 @@ const hr = {
|
||||
startSearching: 'Počni pretraživati!',
|
||||
description:
|
||||
'Možete pretražiti pjesmu, cijeli album, izvođača, playlistu... sve! Također, možete i zalijepiti Deezer link',
|
||||
fans: '{0} obožavatelja',
|
||||
fans: '{n} obožavatelja',
|
||||
noResults: 'Nema rezultata',
|
||||
noResultsTrack: 'Pjesme nisu pronađene',
|
||||
noResultsAlbum: 'Albumi nisu pronađeni',
|
||||
@ -143,9 +143,9 @@ const hr = {
|
||||
searchbar: 'Pretraži bilo što (ili samo zalijepi link)',
|
||||
downloads: 'preuzimanja',
|
||||
toasts: {
|
||||
addedToQueue: '{0} dodan u red',
|
||||
alreadyInQueue: '{0} je već u redu!',
|
||||
finishDownload: '{0} završeno preuzimanje.',
|
||||
addedToQueue: '{item} dodan u red',
|
||||
alreadyInQueue: '{item} je već u redu!',
|
||||
finishDownload: '{item} završeno preuzimanje.',
|
||||
allDownloaded: 'Sva preuzimanja završena!',
|
||||
refreshFavs: 'Osvježavanje završeno!',
|
||||
loggingIn: 'Prijavljivanje...',
|
||||
@ -155,8 +155,8 @@ const hr = {
|
||||
loggedOut: 'Odjavljeni',
|
||||
cancellingCurrentItem: 'Otkazujem trenutnu stavku.',
|
||||
currentItemCancelled: 'Trenutna stavka otkazana.',
|
||||
startAddingArtist: 'Dodajem {0} album u red',
|
||||
finishAddingArtist: 'Dodan {0} album u red',
|
||||
startAddingArtist: 'Dodajem {artist} album u red',
|
||||
finishAddingArtist: 'Dodan {artist} album u red',
|
||||
startConvertingSpotifyPlaylist: 'Pretvaram Spotify pjesme u Deezer pjesme',
|
||||
finishConvertingSpotifyPlaylist: 'Spotify playlista pretvorena',
|
||||
loginNeededToDownload: 'Trebate se prijaviti kako bi preuzeli pjesme!'
|
||||
@ -281,7 +281,7 @@ const hr = {
|
||||
nothing: 'Spremi samo glavnog izvođača',
|
||||
default: 'Koristeći standardnu specifikaciju',
|
||||
andFeat: 'Koristeći & i feat.',
|
||||
using: 'Koristeći "{0}"'
|
||||
using: 'Koristeći "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Spremi samo izvođača glavnog albuma',
|
||||
albumVariousArtists: 'Zadrži "Various Artists" u Izvođačima albuma',
|
||||
|
@ -3,9 +3,9 @@ const id = {
|
||||
welcome: 'Selamat datang di deemix',
|
||||
back: 'kembali',
|
||||
loading: 'memuat',
|
||||
download: 'Mengunduh {0}',
|
||||
by: 'oleh {0}',
|
||||
in: 'di {0}',
|
||||
download: 'Mengunduh {thing}',
|
||||
by: 'oleh {artist}',
|
||||
in: 'di {album}',
|
||||
download_hint: 'Unduh',
|
||||
play_hint: 'Putar',
|
||||
toggle_download_tab_hint: 'Buka/Tutup',
|
||||
@ -74,7 +74,7 @@ const id = {
|
||||
download: 'Unduh Tangga Lagu'
|
||||
},
|
||||
errors: {
|
||||
title: 'Galat untuk {0}',
|
||||
title: 'Galat untuk {name}',
|
||||
ids: {
|
||||
invalidURL: 'URL tidak dikenal',
|
||||
unsupportedURL: 'URL belum didukung',
|
||||
@ -133,7 +133,7 @@ const id = {
|
||||
startSearching: 'Mulai cari!',
|
||||
description:
|
||||
'Kamu bisa mencari lagu, album, artis, daftar putar.... apa pun! Kamu juga bisa memberikan tautan Deezer',
|
||||
fans: '{0} fan',
|
||||
fans: '{n} fan',
|
||||
noResults: 'Tak ada hasil',
|
||||
noResultsTrack: 'Lagu tidak ditemukan',
|
||||
noResultsAlbum: 'Album tidak ditemukan',
|
||||
@ -143,9 +143,9 @@ const id = {
|
||||
searchbar: 'Cari apa pun yang kamu mau (atau berikan tautannya saja)',
|
||||
downloads: 'unduhan',
|
||||
toasts: {
|
||||
addedToQueue: '{0} ditambah ke antrian',
|
||||
alreadyInQueue: '{0} sudah ada di antrian!',
|
||||
finishDownload: '{0} selesai diunduh.',
|
||||
addedToQueue: '{item} ditambah ke antrian',
|
||||
alreadyInQueue: '{item} sudah ada di antrian!',
|
||||
finishDownload: '{item} selesai diunduh.',
|
||||
allDownloaded: 'Seluruh unduhan selesai!',
|
||||
refreshFavs: 'Penyegaran selesai!',
|
||||
loggingIn: 'Masuk',
|
||||
@ -155,8 +155,8 @@ const id = {
|
||||
loggedOut: 'Belum masuk',
|
||||
cancellingCurrentItem: 'Membatalkan item.',
|
||||
currentItemCancelled: 'Item telah dibatalan.',
|
||||
startAddingArtist: 'Menambahkan {0} album ke antrian',
|
||||
finishAddingArtist: '{0} album telah ditambahkan ke antrian',
|
||||
startAddingArtist: 'Menambahkan {artist} album ke antrian',
|
||||
finishAddingArtist: '{artist} album telah ditambahkan ke antrian',
|
||||
startConvertingSpotifyPlaylist: 'Mengonversi lagu spotify ke deezer',
|
||||
finishConvertingSpotifyPlaylist: 'Daftar putar Spotify selesai dikonversi'
|
||||
},
|
||||
@ -279,7 +279,7 @@ const id = {
|
||||
nothing: 'Simpan artis utamanya saja',
|
||||
default: 'Gunakan spesifikasi standard',
|
||||
andFeat: 'Gunakan & dan feat.',
|
||||
using: 'Gunakan "{0}"'
|
||||
using: 'Gunakan "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Simpan artis utama saja',
|
||||
albumVariousArtists: 'Simpan "Various Artists" sebagai artis',
|
||||
|
@ -3,9 +3,9 @@ const it = {
|
||||
welcome: 'Benvenuto su deemix',
|
||||
back: 'indietro',
|
||||
loading: 'caricamento',
|
||||
download: 'Scarica {0}',
|
||||
by: 'di {0}',
|
||||
in: 'in {0}',
|
||||
download: 'Scarica {thing}',
|
||||
by: 'di {artist}',
|
||||
in: 'in {album}',
|
||||
download_hint: 'Scarica',
|
||||
play_hint: 'Riproduci',
|
||||
toggle_download_tab_hint: 'Espandi/Riduci',
|
||||
@ -30,6 +30,7 @@ const it = {
|
||||
releaseN: '0 dischi | {n} disco | {n} dischi',
|
||||
playlist: 'playlist',
|
||||
compile: 'compilation',
|
||||
bundle: 'collezione | collezioni',
|
||||
ep: 'ep',
|
||||
more: 'Altri album',
|
||||
featured: 'Compare in',
|
||||
@ -40,6 +41,12 @@ const it = {
|
||||
}
|
||||
},
|
||||
about: {
|
||||
updates: {
|
||||
currentVersion: 'Versione corrente',
|
||||
versionNotAvailable: 'N/A',
|
||||
updateAvailable: `Non stai usando l'ultima versione disponibile: {version}`,
|
||||
deemixVersion: 'Versione libreria deemix'
|
||||
},
|
||||
titles: {
|
||||
usefulLinks: 'Link Utili',
|
||||
bugReports: 'Segnalazione di bug',
|
||||
@ -84,7 +91,7 @@ const it = {
|
||||
download: 'Scarica Classifica'
|
||||
},
|
||||
errors: {
|
||||
title: 'Errori riguardanti {0}',
|
||||
title: 'Errori riguardanti {name}',
|
||||
ids: {
|
||||
invalidURL: 'URL non riconosciuto',
|
||||
unsupportedURL: 'URL non ancora supportato',
|
||||
@ -144,7 +151,7 @@ const it = {
|
||||
startSearching: 'Inizia a cercare!',
|
||||
description:
|
||||
'Puoi cercare un brano, un intero album, un artista, una playlist.... quello che vuoi! Puoi anche incollare un link di Deezer',
|
||||
fans: '{0} fan',
|
||||
fans: '{n} fan',
|
||||
noResults: 'Nessun risultato',
|
||||
noResultsTrack: 'Nessun brano trovato',
|
||||
noResultsAlbum: 'Nessun album trovato',
|
||||
@ -156,10 +163,10 @@ const it = {
|
||||
toasts: {
|
||||
restoringQueue: 'Ripristinando la coda di download...',
|
||||
queueRestored: 'Coda di download ripristinata!',
|
||||
addedToQueue: '{0} aggiunto alla coda',
|
||||
addedMoreToQueue: '{0} oggetti aggiunti alla coda',
|
||||
alreadyInQueue: '{0} è già nella coda!',
|
||||
finishDownload: '{0} ha finito di scaricarsi.',
|
||||
addedToQueue: '{item} aggiunto alla coda',
|
||||
addedMoreToQueue: '{n} oggetti aggiunti alla coda',
|
||||
alreadyInQueue: '{item} è già nella coda!',
|
||||
finishDownload: '{item} ha finito di scaricarsi.',
|
||||
allDownloaded: 'Tutti i download completati!',
|
||||
refreshFavs: 'Preferiti ricaricati!',
|
||||
loggingIn: 'Effettuando il login...',
|
||||
@ -169,8 +176,8 @@ const it = {
|
||||
loggedOut: 'Disconnesso',
|
||||
cancellingCurrentItem: 'Cancellando download corrente.',
|
||||
currentItemCancelled: 'Download corrente cancellato.',
|
||||
startAddingArtist: 'Aggiungendo gli album di {0} alla coda',
|
||||
finishAddingArtist: 'Aggiunto gli album di {0} alla coda',
|
||||
startAddingArtist: 'Aggiungendo gli album di {artist} alla coda',
|
||||
finishAddingArtist: 'Aggiunto gli album di {artist} alla coda',
|
||||
startConvertingSpotifyPlaylist: 'Convertendo i brani da spotify a deezer',
|
||||
finishConvertingSpotifyPlaylist: 'Playlist di spotify convertita',
|
||||
loginNeededToDownload: 'Devi accedere prima di poter scaricare brani!'
|
||||
@ -185,7 +192,8 @@ const it = {
|
||||
question: 'Come ottengo il mio ARL?',
|
||||
update: 'Aggiorna ARL'
|
||||
},
|
||||
logout: 'Disconnettiti'
|
||||
logout: 'Disconnettiti',
|
||||
login: 'Accedi tramite deezer.com'
|
||||
},
|
||||
appearance: {
|
||||
title: 'Aspetto',
|
||||
@ -285,6 +293,7 @@ const it = {
|
||||
replayGain: 'Replay gain',
|
||||
label: 'Casa Discografica',
|
||||
lyrics: 'Testo non Sincronizzato',
|
||||
syncedLyrics: 'Testo Sincronizzato',
|
||||
copyright: 'Copyright',
|
||||
composer: 'Compositori',
|
||||
involvedPeople: 'Persone Coinvolte'
|
||||
@ -299,7 +308,7 @@ const it = {
|
||||
nothing: "Salva solo l'artista principale",
|
||||
default: 'Usando la specificazione standard',
|
||||
andFeat: 'Usando & e feat.',
|
||||
using: 'Usando "{0}"'
|
||||
using: 'Usando "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: "Salva solo l'artista dell'album principale",
|
||||
albumVariousArtists: 'Lascia "Artisti Vari" negli artisti dell\'album',
|
||||
@ -322,8 +331,8 @@ const it = {
|
||||
artistCasing: 'Formato testo degli artisti',
|
||||
casing: {
|
||||
nothing: 'Non cambiare',
|
||||
lower: 'TUTTO MAIUSCOLO',
|
||||
upper: 'tutto minuscolo',
|
||||
upper: 'TUTTO MAIUSCOLO',
|
||||
lower: 'tutto minuscolo',
|
||||
start: 'Prima Lettera Maiuscola',
|
||||
sentence: 'Come una frase'
|
||||
},
|
||||
@ -337,7 +346,8 @@ const it = {
|
||||
title: 'Spotify Features',
|
||||
clientID: 'Spotify clientID',
|
||||
clientSecret: 'Spotify Client Secret',
|
||||
username: 'Spotify username'
|
||||
username: 'Spotify username',
|
||||
question: 'Come attivo le Spotify Features?'
|
||||
},
|
||||
reset: 'Reimposta Default',
|
||||
save: 'Salva',
|
||||
|
358
src/lang/ko.js
Normal file
358
src/lang/ko.js
Normal file
@ -0,0 +1,358 @@
|
||||
const ko = {
|
||||
globals: {
|
||||
welcome: '잘왔다, deemix에',
|
||||
back: '뒤로',
|
||||
loading: '불러오는 중',
|
||||
download: '{thing} 다운로드',
|
||||
by: 'by {artist}',
|
||||
in: 'in {album}',
|
||||
download_hint: '다운로드',
|
||||
play_hint: '재생',
|
||||
toggle_download_tab_hint: '펼치기/접기',
|
||||
clean_queue_hint: '비우기 완료',
|
||||
cancel_queue_hint: '모두 취소',
|
||||
open_downloads_folder: '다운로드 폴더 열기',
|
||||
cut: '잘라내기',
|
||||
copy: '복사',
|
||||
copyLink: '링크 복사',
|
||||
copyImageLink: '이미지 링크 복사',
|
||||
copyDeezerLink: 'deezer 링크 복사',
|
||||
paste: '붙여넣기',
|
||||
listTabs: {
|
||||
empty: '',
|
||||
all: '전체',
|
||||
top_result: '가장 일치하는 결과',
|
||||
album: '앨범 | 앨범',
|
||||
artist: '아티스트 | 아티스트',
|
||||
single: '싱글 | 싱글',
|
||||
title: '제목 | 제목',
|
||||
track: '트랙 | 트랙',
|
||||
trackN: '0 트랙 | {n} 트랙 | {n} 트랙',
|
||||
releaseN: '0 발매 | {n} 발매 | {n} 발매',
|
||||
playlist: '재생목록 | 재생목록',
|
||||
compile: '편찬물 | 편찬물',
|
||||
ep: 'ep | eps',
|
||||
more: '더 많은 앨범',
|
||||
featured: '특집',
|
||||
spotifyPlaylist: '스포티파이 재생목록 | 스포티파이 재생목록',
|
||||
releaseDate: '발매일자',
|
||||
error: '오류'
|
||||
}
|
||||
},
|
||||
about: {
|
||||
titles: {
|
||||
usefulLinks: '유용한 링크',
|
||||
bugReports: '버그 제보',
|
||||
contributing: '기여자',
|
||||
donations: '후원',
|
||||
license: '이용정책'
|
||||
},
|
||||
subtitles: {
|
||||
bugReports: "무언가 안되는 것이 있다고요? 말해주세요!",
|
||||
contributing: '이 프로젝트에 기여하고 싶다고요? 어렵지 않아요!',
|
||||
donations: '금전적으로 지원하고 싶다고요? 후원하세요!'
|
||||
},
|
||||
usesLibrary: '이 프로그램은 <strong>deemix</strong> 라이브러리를 사용합니다, 해당 라이브러리로 자신만의 deemix를 만들 수 있습니다.',
|
||||
thanks: `이 프로젝트를 도와준 <strong>rtonno</strong>, <strong>uhwot</strong> 그리고 <strong>lollilol</strong>님과 아이콘을 만들어준 <strong>BasCurtiz</strong> 그리고 <strong>scarvimane</strong>님에게 감사를.`,
|
||||
upToDate: `새로운 업데이트 소식을 듣고 싶으면 텔레그램 <a href="https://t.me/RemixDevNews" target="_blank">새소식 정보통</a>을 참고하세요.`,
|
||||
officialWebsite: '공식 웹사이트',
|
||||
officialRepo: '공식 라이브러리 저장소',
|
||||
officialWebuiRepo: '공식 WebUI 저장소',
|
||||
officialSubreddit: '공식 서브레딧',
|
||||
newsChannel: '새 소식 알리미',
|
||||
questions: `프로그램에 대한 질문이나 문제에 관한 것은, 먼저 <a href="https://www.reddit.com/r/deemix" target="_blank">서브레딧</a>에서 답변을 검색해보세요. 그리고, 서브레딧에서 답변을 찾기 못한 경우에 다음 순서를 이용해주세요.`,
|
||||
beforeReporting: `버그 제보를 하기 전에 먼저 최신 버전의 프로그램을 실행하고 있는지, 제보하고자 하는 것이 버그이지 오로지 당신의 목적을 이루기 위한 요구가 아님을 확인해주세요.`,
|
||||
beSure: `해당 버그가 다른 장치에서도 재현이 가능한지 확인하고 이미 제보된 버그의 경우에는 중복해서 <strong>보고하지 마세요</strong>.`,
|
||||
duplicateReports: '중복된 버그 제보의 경우는 해당 요청을 닫을 것이니, 두 눈 뜨고 지켜보세요.',
|
||||
dontOpenIssues: `질문에 관한 것은 이슈를 <strong>열지 마세요</strong>, 서브레딧이 있습니다.`,
|
||||
newUI: `만약 당신이 파이썬에 능통하고 기본적인 라이브러리를 이용하여 새로운 UI를 만들었거나, 라이브러리의 버그를 수정하였다면 <a href="https://codeberg.org/RemixDev/deemix" target="_blank">저장소</a>에 풀 리퀘스트 해주세요.`,
|
||||
acceptFeatures: `복잡하지 않은 기능 추가도 받습니다, 라이브러리가 아닌 앱에서 직접 구현할 수 있는 것으로요.`,
|
||||
otherLanguages: `당신이 다른 프로그램 언어에 능통하면, 이 deemix 프로그램을 다른 프로그래밍 언어로 포팅할 수도 있습니다!`,
|
||||
understandingCode: `코드를 이해하는 데 도움이 필요합니까? 위에 있는 RemixDev, 텔레그램, 서브레딧 링크를 누르세요.`,
|
||||
contributeWebUI: `만약 당신이 Vue.js (JavaScript), HTML 또는 CSS 개발자라면 <a href="https://codeberg.org/RemixDev/deemix-webui" target="_blank">WebUI</a>에 도움을 주세요.`,
|
||||
itsFree: `사용하기 전에 이 프로그램이 <strong>무료 프로젝트</strong>이고 개발자를 지원하기 전에 <strong>예술가들</strong>을 먼저 지원해야 함을 기억하세요.`,
|
||||
notObligated: `기부는 프로젝트를 지속할 수 있는 동력이 됩니다!`,
|
||||
lincensedUnder: `이 작업이 요구하고 있는 라이센스는 아래와 같습니다<br>
|
||||
<a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank">GNU General Public License 3.0</a>.`
|
||||
},
|
||||
charts: {
|
||||
title: '차트',
|
||||
changeCountry: '국가 변경',
|
||||
download: '차트 다운로드'
|
||||
},
|
||||
errors: {
|
||||
title: '오류 발생: {name}',
|
||||
ids: {
|
||||
unsupportedURL: 'URL 지원 누락',
|
||||
invalidURL: 'URL 인식 실패',
|
||||
ISRCnotOnDeezer: '트랙 코드 식별이 불가능합니다',
|
||||
notYourPrivatePlaylist: "다른 사람의 비공개 재생 목록을 다운로드 할 수 없습니다.",
|
||||
spotifyDisabled: '스포티파이 기능이 올바르게 설정되지 않았습니다.',
|
||||
trackNotOnDeezer: 'Deezer에서 트랙을 찾을 수 없습니다!',
|
||||
albumNotOnDeezer: 'Deezer에서 앨범을 찾을 수 없습니다!',
|
||||
notOnDeezer: 'Deezer에서 트랙을 찾을 수 없습니다!',
|
||||
notEncoded: '트랙이 아직 변환(encode)되지 않았습니다!',
|
||||
notEncodedNoAlternative: '트랙이 아직 변환(encode)되지 않았을 뿐더러 대체할 것을 찾지 못했습니다!',
|
||||
wrongBitrate: '요구하는 비트레이트의 트랙을 찾을 수 없습니다.',
|
||||
wrongBitrateNoAlternative: '요구하는 비트레이트를 찾을 수 없을 뿐더러 대체할 것을 찾지 못했습니다!',
|
||||
no360RA: '해당 트랙은 360 리얼리티 오디오에 존재하지 않습니다.',
|
||||
notAvailable: "해당 트랙은 Deezer 서버에 존재하지 않습니다!",
|
||||
notAvailableNoAlternative: "해당 트랙은 Deezer 서버에 존재하지 않을 뿐더러 대체할 것을 찾지 못했습니다!"
|
||||
}
|
||||
},
|
||||
favorites: {
|
||||
title: '즐겨듣는 음악',
|
||||
noPlaylists: '즐겨듣는 재생목록이 없습니다',
|
||||
noAlbums: '즐겨듣는 앨범이 없습니다',
|
||||
noArtists: '즐겨듣는 아티스트가 없습니다',
|
||||
noTracks: '즐겨듣는 트랙이 없습니다'
|
||||
},
|
||||
home: {
|
||||
needTologin: '다운로드를 시작하기 전에 Deezer 계정에 로그인을 해야합니다.',
|
||||
openSettings: '설정 열기',
|
||||
sections: {
|
||||
popularPlaylists: '인기있는 재생목록',
|
||||
popularAlbums: '가장 많이 재생된 앨범'
|
||||
}
|
||||
},
|
||||
linkAnalyzer: {
|
||||
info: '이 항목에서는 다운로드를 시도할 링크에 대한 더 많은 정보를 찾을 수 있습니다.',
|
||||
linkNotSupported: '해당 링크는 아직 지원하지 않습니다',
|
||||
useful: "접속한 국가에서는 재생할 수 없는 특정 트랙을 다운로드 하기 위해서 가능한 국가를 찾는데 유용하게 쓰입니다.",
|
||||
linkNotSupportedYet: '해당 링크는 아직 지원하지 않습니다, 다른 링크로 시도해보세요.',
|
||||
table: {
|
||||
id: 'ID',
|
||||
isrc: 'ISRC',
|
||||
upc: 'UPC',
|
||||
duration: '길이',
|
||||
diskNumber: '디스크 번호',
|
||||
trackNumber: '트랙 번호',
|
||||
releaseDate: '발매일자',
|
||||
bpm: 'BPM',
|
||||
label: '라벨',
|
||||
recordType: '녹음 종류',
|
||||
genres: '장르',
|
||||
tracklist: '트랙목록'
|
||||
}
|
||||
},
|
||||
search: {
|
||||
startSearching: '검색을 해보세요!',
|
||||
description: '트랙, 아티스트, 재생목록, Deezer 링크 등으로 검색할 수 있습니다!',
|
||||
fans: '{n}명의 팬들',
|
||||
noResults: '결과 없음',
|
||||
noResultsTrack: '발견된 트랙 없음',
|
||||
noResultsAlbum: '발견된 앨범 없음',
|
||||
noResultsArtist: '발견된 아티스트 없음',
|
||||
noResultsPlaylist: '발견된 재생목록 없음'
|
||||
},
|
||||
searchbar: '원하는 것을 검색하세요 (링크를 붙여넣을 수도 있습니다)',
|
||||
downloads: '다운로드들',
|
||||
toasts: {
|
||||
restoringQueue: '다운로드 대기 열 복원중...',
|
||||
queueRestored: '다운로드 대기 열이 복원되었습니다!',
|
||||
addedToQueue: '대기열에 {item}(이)가 추가되었습니다',
|
||||
addedMoreToQueue: '대기열에 {n} 항목이 추가되었습니다',
|
||||
alreadyInQueue: '{item}(이)가 이미 대기열에 존재합니다!',
|
||||
finishDownload: '{item} 항목이 다운로드 완료되었습니다.',
|
||||
allDownloaded: '모든 다운로드가 완료되었습니다!',
|
||||
refreshFavs: '새로고침이 완료되었습니다!',
|
||||
loggingIn: '로그인 하는 중...',
|
||||
loggedIn: '로그인 되었습니다',
|
||||
alreadyLogged: '이미 로그인되어 있습니다',
|
||||
loginFailed: "로그인 할 수 없습니다",
|
||||
loggedOut: '로그아웃 하였습니다',
|
||||
cancellingCurrentItem: '현재 항목을 취소 중입니다.',
|
||||
currentItemCancelled: '항목이 취소되었습니다.',
|
||||
startAddingArtist: '{artist} 앨범을 대기열에 추가 중입니다',
|
||||
finishAddingArtist: '{artist} 앨범이 대기열에 추가되었습니다',
|
||||
startConvertingSpotifyPlaylist: '스포티파이 트랙을 Deezer 트랙으로 전환 중입니다',
|
||||
finishConvertingSpotifyPlaylist: '스프토파이 재생 목록이 전환되었습니다',
|
||||
loginNeededToDownload: '트랙을 다운로드하려면 로그인이 필요합니다!'
|
||||
},
|
||||
settings: {
|
||||
title: '설정',
|
||||
languages: '언어',
|
||||
login: {
|
||||
title: '로그인',
|
||||
loggedIn: '{username}(으)로 로그인되었습니다',
|
||||
arl: {
|
||||
question: 'ARL을 어떻게 확인합니까?',
|
||||
update: 'ARL 업데이트'
|
||||
},
|
||||
logout: '로그아웃'
|
||||
},
|
||||
appearance: {
|
||||
title: '외관',
|
||||
slimDownloadTab: '얇은 다운로드 탭'
|
||||
},
|
||||
downloadPath: {
|
||||
title: '다운로드 경로'
|
||||
},
|
||||
templates: {
|
||||
title: '템플릿',
|
||||
tracknameTemplate: '트랙이름 템플릿',
|
||||
albumTracknameTemplate: '앨범 트랙 템플릿',
|
||||
playlistTracknameTemplate: '재생목록 트랙 템플릿'
|
||||
},
|
||||
folders: {
|
||||
title: '폴더',
|
||||
createPlaylistFolder: '재생목록을 위한 폴더 생성',
|
||||
playlistNameTemplate: '재생목록 폴더 템플릿',
|
||||
createArtistFolder: '아티스트를 위한 폴더 생성',
|
||||
artistNameTemplate: '아티스트 폴더 템플릿',
|
||||
createAlbumFolder: '앨범을 위한 폴더 생성',
|
||||
albumNameTemplate: '앨범 폴더 템플릿',
|
||||
createCDFolder: 'CD를 위한 폴더 생성',
|
||||
createStructurePlaylist: '재생목록을 위한 폴더 구조 생성',
|
||||
createSingleFolder: '싱글 앨범을 위한 폴더 구조 생성'
|
||||
},
|
||||
trackTitles: {
|
||||
title: '트랙 제목',
|
||||
padTracks: '트랙 채워넣기',
|
||||
paddingSize: '채워넣을 크기',
|
||||
illegalCharacterReplacer: '지원하지 않는 글자 대체'
|
||||
},
|
||||
downloads: {
|
||||
title: '다운로드',
|
||||
queueConcurrency: '동시 다운로드',
|
||||
maxBitrate: {
|
||||
title: '선호하는 비트레이트',
|
||||
9: 'FLAC 1411kbps',
|
||||
3: 'MP3 320kbps',
|
||||
1: 'MP3 128kbps'
|
||||
},
|
||||
overwriteFile: {
|
||||
title: '파일을 덮어쓸까요?',
|
||||
y: '네, 파일을 덮어쓰세요',
|
||||
n: "아뇨, 파일을 덮어쓰지 마세요",
|
||||
t: '태그만 덮어쓰세요',
|
||||
b: '아뇨, 양쪽 다 놔두고 중복되는 파일에 번호를 추가하세요',
|
||||
e: "아뇨, 확장명을 변경하세요"
|
||||
},
|
||||
fallbackBitrate: '비트레이트 대비책',
|
||||
fallbackSearch: '검색 대비책',
|
||||
logErrors: '오류 발생시 로그 파일 생성',
|
||||
logSearched: '검색한 트랙에 대한 로그 파일 생성',
|
||||
createM3U8File: '재생목록 파일 생성',
|
||||
syncedLyrics: '.lyr 파일 생성 (가사 동기화)',
|
||||
playlistFilenameTemplate: '재생목록 파일이름 템플릿',
|
||||
saveDownloadQueue: '프로그램을 닫을 때 다운로드 대기열 저장'
|
||||
},
|
||||
covers: {
|
||||
title: '앨범 커버',
|
||||
saveArtwork: '커버 저장',
|
||||
coverImageTemplate: '커버 이름 템플릿',
|
||||
saveArtworkArtist: '아티스트 이미지 저장',
|
||||
artistImageTemplate: '아티스트 이미지 템플릿',
|
||||
localArtworkSize: '별도 그림 크기',
|
||||
embeddedArtworkSize: '내장된 그림 크기',
|
||||
localArtworkFormat: {
|
||||
title: '별도로 저장할 그림의 형식을 무엇으로 하시겠습니까?',
|
||||
jpg: 'jpeg 이미지',
|
||||
png: 'png 이미지',
|
||||
both: 'jpeg와 png 둘 다'
|
||||
},
|
||||
jpegImageQuality: 'JPEG 이미지 품질',
|
||||
embeddedArtworkPNG: '포함된 그림의 형식을 PNG로 저장합니다',
|
||||
embeddedPNGWarning: 'PNG는 Deezer에서 공식적으로 지원하지 않기 때문에 버그가 있을 수 있습니다',
|
||||
imageSizeWarning: 'x1200 크기를 초과해서는 Deezer에서 공식적으로 사용되지 않기 때문에 문제가 생길 수 있습니다'
|
||||
},
|
||||
tags: {
|
||||
head: '저장할 태그를 선택하세요',
|
||||
title: '제목',
|
||||
artist: '아티스트',
|
||||
album: '앨범',
|
||||
cover: '커버',
|
||||
trackNumber: '트랙 번호',
|
||||
trackTotal: '전체 트랙 크기',
|
||||
discNumber: '디스크 번호',
|
||||
discTotal: '전체 디스크 수',
|
||||
albumArtist: '앨범 아티스트',
|
||||
genre: '장르',
|
||||
year: '연도',
|
||||
date: '일자',
|
||||
explicit: '노골적 가사',
|
||||
isrc: 'ISRC',
|
||||
length: '트랙 길이',
|
||||
barcode: '앨범 바코드 (UPC)',
|
||||
bpm: 'BPM',
|
||||
replayGain: '리플레이 게인',
|
||||
label: '앨범 라벨',
|
||||
lyrics: '비동기 가사',
|
||||
copyright: '저작권',
|
||||
composer: '작곡가',
|
||||
involvedPeople: '관련있는 사람들'
|
||||
},
|
||||
other: {
|
||||
title: '기타',
|
||||
savePlaylistAsCompilation: '재생목록을 편찬물로 저장',
|
||||
useNullSeparator: 'null 구분자 사용',
|
||||
saveID3v1: 'ID3v1 태그 형식으로 저장',
|
||||
multiArtistSeparator: {
|
||||
title: '아티스트를 어떻게 구분하시겠습니까?',
|
||||
nothing: '주요 아티스트만 저장',
|
||||
default: '표준 스펙을 사용',
|
||||
andFeat: '& 기호와 feat 사용.',
|
||||
using: '"{separator}" 사용'
|
||||
},
|
||||
singleAlbumArtist: '주요 앨범 아티스트만 저장',
|
||||
albumVariousArtists: '앨범 아티스트에 "Various Artists"(다양한 아티스트들) 유지',
|
||||
removeAlbumVersion: '트랙 제목에 "Album Version"(앨범 버전) 제거',
|
||||
removeDuplicateArtists: '아티스트들의 협업 제거',
|
||||
dateFormat: {
|
||||
title: 'FLAC 파일의 날짜 형식',
|
||||
year: 'YYYY',
|
||||
month: 'MM',
|
||||
day: 'DD'
|
||||
},
|
||||
featuredToTitle: {
|
||||
title: '특집에 참여한 아티스트들에 할 수 있는 것이 무엇이 있나요?',
|
||||
0: '아무것도 하지 않음',
|
||||
1: '제목에서 제거',
|
||||
3: '앨범 제목과 트랙에서 제거',
|
||||
2: '제목으로 이동'
|
||||
},
|
||||
titleCasing: '제목 케이싱',
|
||||
artistCasing: '아티스트 케이싱',
|
||||
casing: {
|
||||
nothing: '변함없이 유지',
|
||||
lower: '소문자로',
|
||||
upper: '대문자로',
|
||||
start: '각 단어 앞 글자를 대문자로',
|
||||
sentence: '문장처럼'
|
||||
},
|
||||
previewVolume: '미리듣기 볼륨',
|
||||
executeCommand: {
|
||||
title: '다운로드 후 실행할 명령어',
|
||||
description: '빈칸으로 두면 아무 일도 없습니다'
|
||||
}
|
||||
},
|
||||
spotify: {
|
||||
title: '스포티파이 기능',
|
||||
clientID: 'Spotify ClientID',
|
||||
clientSecret: 'Spotify Client Secret',
|
||||
username: 'Spotify 사용자이름'
|
||||
},
|
||||
reset: '기본 설정으로 초기화',
|
||||
save: '저장',
|
||||
toasts: {
|
||||
init: '설정을 불러왔습니다!',
|
||||
update: '새로운 설정으로 갱신되었습니다!',
|
||||
ARLcopied: 'ARL가 클립보드에 복사되었습니다'
|
||||
}
|
||||
},
|
||||
sidebar: {
|
||||
home: '홈',
|
||||
search: '검색',
|
||||
charts: '차트',
|
||||
favorites: '즐겨찾기',
|
||||
linkAnalyzer: '링크 분석기',
|
||||
settings: '설정',
|
||||
about: '정보'
|
||||
},
|
||||
tracklist: {
|
||||
downloadSelection: '선택 다운로드'
|
||||
}
|
||||
}
|
||||
|
||||
export default ko
|
@ -3,9 +3,9 @@
|
||||
welcome: 'bem vindo ao deemix',
|
||||
back: 'voltar',
|
||||
loading: 'carregando',
|
||||
download: 'Baixar {0}',
|
||||
by: 'por {0}',
|
||||
in: 'em {0}',
|
||||
download: 'Baixar {thing}',
|
||||
by: 'por {artist}',
|
||||
in: 'em {album}',
|
||||
download_hint: 'Baixar',
|
||||
play_hint: 'Reproduzir',
|
||||
toggle_download_tab_hint: 'Expandir/Diminuir',
|
||||
@ -74,7 +74,7 @@
|
||||
download: 'Download Chart'
|
||||
},
|
||||
errors: {
|
||||
title: 'Erros para {0}',
|
||||
title: 'Erros para {name}',
|
||||
ids: {
|
||||
invalidURL: 'URL inválida',
|
||||
unsupportedURL: 'URL não suportada ainda',
|
||||
@ -133,7 +133,7 @@
|
||||
startSearching: 'Comece pesquisando!',
|
||||
description:
|
||||
'Você pode pesquisar uma música, um álbum, um artista, uma playlist.... tudo! Você também pode colar um link do Deezer',
|
||||
fans: '{0} fãs',
|
||||
fans: '{n} fãs',
|
||||
noResults: 'Sem resultados',
|
||||
noResultsTrack: 'Nenhuma Faixa encontrada',
|
||||
noResultsAlbum: 'Nenhum Álbum encontrado',
|
||||
@ -143,9 +143,9 @@
|
||||
searchbar: 'Pesquise algo (ou apenas cole um link)',
|
||||
downloads: 'downloads',
|
||||
toasts: {
|
||||
addedToQueue: '{0} adicionado à fila',
|
||||
alreadyInQueue: '{0} já está na fila!',
|
||||
finishDownload: '{0} download terminado.',
|
||||
addedToQueue: '{item} adicionado à fila',
|
||||
alreadyInQueue: '{item} já está na fila!',
|
||||
finishDownload: '{item} download terminado.',
|
||||
allDownloaded: 'Todos os downloads foram feitos!',
|
||||
refreshFavs: 'Atualização completa!',
|
||||
loggingIn: 'Logando',
|
||||
@ -155,8 +155,8 @@
|
||||
loggedOut: 'Desconectando',
|
||||
cancellingCurrentItem: 'Cancelando item atual.',
|
||||
currentItemCancelled: 'Item atual cancelado.',
|
||||
startAddingArtist: 'Adicionando {0} álbuns à fila',
|
||||
finishAddingArtist: '{0} álbuns adicionados a fila',
|
||||
startAddingArtist: 'Adicionando {artist} álbuns à fila',
|
||||
finishAddingArtist: '{artist} álbuns adicionados a fila',
|
||||
startConvertingSpotifyPlaylist: 'Convertendo faixas do spotify para faixas do deezer',
|
||||
finishConvertingSpotifyPlaylist: 'Playlists do Spotify convertidas'
|
||||
},
|
||||
@ -279,7 +279,7 @@
|
||||
nothing: 'Salvar apenas o artista principal',
|
||||
default: 'Usar a especificação padrão',
|
||||
andFeat: 'Usar & e feat.',
|
||||
using: 'Usar "{0}"'
|
||||
using: 'Usar "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Salvar apenas o artista principal',
|
||||
albumVariousArtists: 'Manter "Various Artists" nos Artistas do Álbum',
|
||||
|
@ -3,9 +3,9 @@ const pt = {
|
||||
welcome: 'Bem-vindo ao deemix',
|
||||
back: 'voltar',
|
||||
loading: 'A carregar',
|
||||
download: 'Transferir {0}',
|
||||
by: 'por {0}',
|
||||
in: 'em {0}',
|
||||
download: 'Transferir {thing}',
|
||||
by: 'por {artist}',
|
||||
in: 'em {album}',
|
||||
download_hint: 'Transferir',
|
||||
play_hint: 'Tocar',
|
||||
toggle_download_tab_hint: 'Expandir/Recolher',
|
||||
@ -74,7 +74,7 @@ const pt = {
|
||||
download: 'Transferir tabela'
|
||||
},
|
||||
errors: {
|
||||
title: 'Erros para {0}',
|
||||
title: 'Erros para {name}',
|
||||
ids: {
|
||||
invalidURL: 'URL não reconhecido',
|
||||
unsupportedURL: 'URL ainda não suportado',
|
||||
@ -131,7 +131,7 @@ const pt = {
|
||||
search: {
|
||||
startSearching: 'Começa a pesquisar!',
|
||||
description: 'Podes perquisar uma música, um álbum inteiro, um artista, uma lista de reprodução... tudo! Também podes colar um link do Deezer',
|
||||
fans: '{0} fãs',
|
||||
fans: '{n} fãs',
|
||||
noResults: 'Sem resultados',
|
||||
noResultsTrack: 'Faixa não encontrada',
|
||||
noResultsAlbum: 'Álbum não encontrado',
|
||||
@ -141,9 +141,9 @@ const pt = {
|
||||
searchbar: 'Pesquisa o que quiseres (ou cola um link)',
|
||||
downloads: 'transferências',
|
||||
toasts: {
|
||||
addedToQueue: '{0} adicionados à fila',
|
||||
alreadyInQueue: '{0} já está na fila!',
|
||||
finishDownload: '{0} foi transferido.',
|
||||
addedToQueue: '{item} adicionados à fila',
|
||||
alreadyInQueue: '{item} já está na fila!',
|
||||
finishDownload: '{item} foi transferido.',
|
||||
allDownloaded: 'Todas as transferências terminadas!',
|
||||
refreshFavs: 'Actualizar terminados!',
|
||||
loggingIn: 'A autenticar',
|
||||
@ -153,8 +153,8 @@ const pt = {
|
||||
loggedOut: 'Desconectado',
|
||||
cancellingCurrentItem: 'A cancelar item actual.',
|
||||
currentItemCancelled: 'Item actual cancelado.',
|
||||
startAddingArtist: 'A adicionar {0} álbuns à fila',
|
||||
finishAddingArtist: 'Adicionados {0} álbuns à fila',
|
||||
startAddingArtist: 'A adicionar {artist} álbuns à fila',
|
||||
finishAddingArtist: 'Adicionados {artist} álbuns à fila',
|
||||
startConvertingSpotifyPlaylist: 'A converter faixas do spotify em faixas do deezer',
|
||||
finishConvertingSpotifyPlaylist: 'Lista de reprodução do Spotify convertida.'
|
||||
},
|
||||
@ -277,7 +277,7 @@ const pt = {
|
||||
nothing: 'Guardar apenas o artista principal',
|
||||
default: 'Usar especificação padrão',
|
||||
andFeat: 'Usar & e feat.',
|
||||
using: 'Usar "{0}"'
|
||||
using: 'Usar "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Guardar apenas o artista principal do álbum',
|
||||
albumVariousArtists: 'Manter "Various Artists" nos Artistas do Álbum',
|
||||
|
@ -3,14 +3,15 @@ const ru = {
|
||||
welcome: 'Добро пожаловать в deemix',
|
||||
back: 'назад',
|
||||
loading: 'загрузка',
|
||||
download: 'Скачать {0}',
|
||||
by: '{0}',
|
||||
in: 'из {0}',
|
||||
download: 'Скачать {thing}',
|
||||
by: '{artist}',
|
||||
in: 'из {album}',
|
||||
download_hint: 'Скачать',
|
||||
play_hint: 'Прослушать',
|
||||
toggle_download_tab_hint: 'Показать/Скрыть',
|
||||
clean_queue_hint: 'Очистить завершённые',
|
||||
cancel_queue_hint: 'Очистить всё',
|
||||
open_downloads_folder: 'Открыть папку с загрузками',
|
||||
cut: 'вырезать',
|
||||
copy: 'копировать',
|
||||
copyLink: 'копировать ссылку',
|
||||
@ -31,6 +32,7 @@ const ru = {
|
||||
playlist: 'плейлист | плейлисты | плейлисты',
|
||||
compile: 'сплит | сплиты | сплиты',
|
||||
ep: 'ep',
|
||||
bundle: 'бандл | бандлы | бандлы',
|
||||
more: 'Больше альбомов',
|
||||
featured: 'Представлено в',
|
||||
spotifyPlaylist: 'плейлист spotify | плейлисты spotify | плейлисты spotify',
|
||||
@ -39,6 +41,12 @@ const ru = {
|
||||
}
|
||||
},
|
||||
about: {
|
||||
updates: {
|
||||
currentVersion: 'Текущая версия',
|
||||
versionNotAvailable: 'Н/Д',
|
||||
updateAvailable: `Вы используете не последнюю доступную версию: {version}`,
|
||||
deemixVersion: 'Версия библиотеки deemix'
|
||||
},
|
||||
titles: {
|
||||
usefulLinks: 'Полезные ссылки',
|
||||
bugReports: 'Отчёты об ошибках',
|
||||
@ -72,9 +80,7 @@ const ru = {
|
||||
itsFree: `Помните, что это <strong>бесплатное приложение</strong> и вам следует <strong>поддерживать понравившихся исполнителей</strong> прежде, чем поддерживать разработчиков.`,
|
||||
notObligated: `Вы не обязаны делать пожертвования, я всё равно вас ценю!`,
|
||||
lincensedUnder: `Проект распространяется под лицензией
|
||||
<a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank"
|
||||
>GNU General Public License 3.0</a
|
||||
>.`
|
||||
<a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank">GNU General Public License 3.0</a>.`
|
||||
},
|
||||
charts: {
|
||||
title: 'Чарты',
|
||||
@ -82,7 +88,7 @@ const ru = {
|
||||
download: 'Скачать чарт'
|
||||
},
|
||||
errors: {
|
||||
title: 'Ошибки {0}',
|
||||
title: 'Ошибки {name}',
|
||||
ids: {
|
||||
invalidURL: 'URL не распознан',
|
||||
unsupportedURL: 'URL не поддерживается',
|
||||
@ -118,8 +124,7 @@ const ru = {
|
||||
},
|
||||
linkAnalyzer: {
|
||||
info: 'Используйте этот раздел, чтобы узнать информацию о ссылке, которую требуется скачать.',
|
||||
useful:
|
||||
"Этот раздел нужен, если вы хотите загрузить треки, недоступные в вашей стране, а также посмотреть, где они доступны.",
|
||||
useful: "Этот раздел нужен, если вы хотите загрузить треки, недоступные в вашей стране, а также посмотреть, где они доступны.",
|
||||
linkNotSupported: 'Ссылка не поддерживается',
|
||||
linkNotSupportedYet: 'Эта ссылка не поддерживается, попробуйте вставить другую.',
|
||||
table: {
|
||||
@ -131,7 +136,7 @@ const ru = {
|
||||
trackNumber: 'Номер трека',
|
||||
releaseDate: 'Дата выхода',
|
||||
bpm: 'BPM',
|
||||
label: 'Издатедь',
|
||||
label: 'Издатель',
|
||||
recordType: 'Тип',
|
||||
genres: 'Жанр',
|
||||
tracklist: 'Треклист'
|
||||
@ -139,9 +144,8 @@ const ru = {
|
||||
},
|
||||
search: {
|
||||
startSearching: 'Начните искать!',
|
||||
description:
|
||||
'Здесь можно найти трек, альбом, исполнителя, плейлист... всё! Можно также вставить ссылку Deezer',
|
||||
fans: '{0} поклонников',
|
||||
description: 'Здесь можно найти трек, альбом, исполнителя, плейлист... всё! Можно также вставить ссылку Deezer',
|
||||
fans: '{n} поклонников',
|
||||
noResults: 'Нет результатов',
|
||||
noResultsTrack: 'Треков не найдено',
|
||||
noResultsAlbum: 'Альбомов не найдено',
|
||||
@ -151,20 +155,23 @@ const ru = {
|
||||
searchbar: 'Ищите, что хотите (или вставьте ссылку)',
|
||||
downloads: 'загрузки',
|
||||
toasts: {
|
||||
addedToQueue: '{0} добавлено в очередь',
|
||||
alreadyInQueue: '{0} уже присутствует в очереди!',
|
||||
finishDownload: 'Загрузка {0} завершена.',
|
||||
restoringQueue: 'Восстановление очереди загрузок...',
|
||||
queueRestored: 'Очередь восстановлена!',
|
||||
addedToQueue: '{item} добавлено в очередь',
|
||||
addedMoreToQueue: '{n} загрузок добавлены в очередь',
|
||||
alreadyInQueue: '{item} уже присутствует в очереди!',
|
||||
finishDownload: 'Загрузка {item} завершена.',
|
||||
allDownloaded: 'Все загрузки завершены!',
|
||||
refreshFavs: 'Обновление завершено!',
|
||||
loggingIn: 'Вход',
|
||||
loggingIn: 'Вход...',
|
||||
loggedIn: 'Вход выполнен',
|
||||
alreadyLogged: 'Вход уже выполнен',
|
||||
loginFailed: "Вход не выполнен",
|
||||
loggedOut: 'Вы вышли из аккаунта',
|
||||
cancellingCurrentItem: 'Отмена текущей загрузки.',
|
||||
currentItemCancelled: 'Отменено.',
|
||||
startAddingArtist: 'Добавление альбомов {0} в очередь',
|
||||
finishAddingArtist: 'Альбомы {0} добавлены в очередь',
|
||||
startAddingArtist: 'Добавление альбомов {artist} в очередь',
|
||||
finishAddingArtist: 'Альбомы {artist} добавлены в очередь',
|
||||
startConvertingSpotifyPlaylist: 'Добавление плейлиста Spotify в очередь',
|
||||
finishConvertingSpotifyPlaylist: 'Spotify плейлист добавлен в очередь',
|
||||
loginNeededToDownload: 'Войдите в аккаунт, чтобы скачивать треки!'
|
||||
@ -179,7 +186,8 @@ const ru = {
|
||||
question: 'Как узнать свой ARL?',
|
||||
update: 'Обновить ARL'
|
||||
},
|
||||
logout: 'Выйти'
|
||||
logout: 'Выйти',
|
||||
login: 'Войти через deezer.com'
|
||||
},
|
||||
appearance: {
|
||||
title: 'Внешний вид',
|
||||
@ -226,7 +234,8 @@ const ru = {
|
||||
y: 'Да, перезаписать файл',
|
||||
n: "Нет, не перезаписывать",
|
||||
t: 'Обновить только теги',
|
||||
b: 'Нет, оставить оба файла и добавить номер к дубликату'
|
||||
b: 'Нет, оставить оба файла и добавить номер к дубликату',
|
||||
e: "Нет, вне зависимости от расширения"
|
||||
},
|
||||
fallbackBitrate: 'Загружать с битрейтом ниже, если текущий недоступен',
|
||||
fallbackSearch: 'Искать похожий трек, если запрашиваемый недоступен',
|
||||
@ -251,7 +260,10 @@ const ru = {
|
||||
png: 'png',
|
||||
both: 'jpeg и png'
|
||||
},
|
||||
jpegImageQuality: 'Качество JPEG'
|
||||
jpegImageQuality: 'Качество JPEG',
|
||||
embeddedArtworkPNG: 'Сохранять вложенную обложку в PNG',
|
||||
embeddedPNGWarning: 'PNG официально не поддерживается в Deezer. Могут быть баги',
|
||||
imageSizeWarning: 'Обложки с разрешением выше x1200 не поддерживаются в Deezer. Могут быть проблемы'
|
||||
},
|
||||
tags: {
|
||||
head: 'Какие теги сохранять',
|
||||
@ -275,6 +287,7 @@ const ru = {
|
||||
replayGain: 'Replay Gain',
|
||||
label: 'Издатель',
|
||||
lyrics: 'Текст песни',
|
||||
syncedLyrics: 'Синхрон. текст песни',
|
||||
copyright: 'Права (копирайт)',
|
||||
composer: 'Композитор',
|
||||
involvedPeople: 'Вовлечённые люди'
|
||||
@ -289,7 +302,7 @@ const ru = {
|
||||
nothing: 'Сохранить только основного',
|
||||
default: 'Используя стандартную спецификацию',
|
||||
andFeat: 'Используя & и feat.',
|
||||
using: 'Используя "{0}"'
|
||||
using: 'Используя "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Сохранить только основного исполнителя альбома',
|
||||
albumVariousArtists: 'Оставить "Various Artists" в исполнителях альбома',
|
||||
@ -327,7 +340,8 @@ const ru = {
|
||||
title: 'Настройки Spotify',
|
||||
clientID: 'Spotify clientID',
|
||||
clientSecret: 'Spotify Client Secret',
|
||||
username: 'Spotify username'
|
||||
username: 'Spotify username',
|
||||
question: 'Как включить функции Spotify?'
|
||||
},
|
||||
reset: 'По умолчанию',
|
||||
save: 'Сохранить',
|
||||
|
@ -3,9 +3,9 @@ const tr = {
|
||||
welcome: `Deemix'e hoş geldin.`,
|
||||
back: `geri`,
|
||||
loading: `yükleniyor`,
|
||||
download: 'İndir {0}',
|
||||
by: '{0} tarafından',
|
||||
in: '{0} içinde',
|
||||
download: 'İndir {thing}',
|
||||
by: '{artist} tarafından',
|
||||
in: '{album} içinde',
|
||||
download_hint: 'İndir',
|
||||
play_hint: 'Oynat',
|
||||
toggle_download_tab_hint: 'Genişlet/Daralt',
|
||||
@ -75,7 +75,7 @@ const tr = {
|
||||
download: 'Grafiği İndir'
|
||||
},
|
||||
errors: {
|
||||
title: '{0} Hatalı bulundu',
|
||||
title: '{name} Hatalı bulundu',
|
||||
ids: {
|
||||
invalidURL: 'URL geçersiz.',
|
||||
unsupportedURL: 'URL şimdilik desteklenmiyor',
|
||||
@ -133,7 +133,7 @@ const tr = {
|
||||
startSearching: 'Aramayı Başlat!',
|
||||
description:
|
||||
'Bir parçayı, tüm albümü, bir sanatçıyı, bir oynatma listesini... kısaca her şeyi aratabilirsin! Ayrıca Deezer Linki de yapıştırabilirsin!',
|
||||
fans: '{0} Hayranlar',
|
||||
fans: '{n} Hayranlar',
|
||||
noResults: 'Sonuç Bulunamadı',
|
||||
noResultsTrack: 'Parça bulunamadı',
|
||||
noResultsAlbum: 'Albüm bulunamadı',
|
||||
@ -143,9 +143,9 @@ const tr = {
|
||||
searchbar: 'İstediğin bir şeyi arat (ya da bir link yapıştır.)',
|
||||
downloads: 'İndirilenler',
|
||||
toasts: {
|
||||
addedToQueue: '{0} kuyruğa eklendi',
|
||||
alreadyInQueue: '{0} çoktan kuyrukta!',
|
||||
finishDownload: '{0} indirmesi tamamlandı.',
|
||||
addedToQueue: '{item} kuyruğa eklendi',
|
||||
alreadyInQueue: '{item} çoktan kuyrukta!',
|
||||
finishDownload: '{item} indirmesi tamamlandı.',
|
||||
allDownloaded: 'Tüm indirmeler tamamlandı!',
|
||||
refreshFavs: 'Yenileme tamamlandı.!',
|
||||
loggingIn: 'Giriş yapılıyor',
|
||||
@ -155,8 +155,8 @@ const tr = {
|
||||
loggedOut: 'Oturum kapatıldı.',
|
||||
cancellingCurrentItem: 'Geçerli öğe iptal ediliyor.',
|
||||
currentItemCancelled: 'Geçerli öğe iptal edildi.',
|
||||
startAddingArtist: '{0} albüm kuyruğa ekleniyor',
|
||||
finishAddingArtist: '{0} albüm kuyruğa eklendi.',
|
||||
startAddingArtist: '{artist} albüm kuyruğa ekleniyor',
|
||||
finishAddingArtist: '{artist} albüm kuyruğa eklendi.',
|
||||
startConvertingSpotifyPlaylist: 'Spotify parçaları deezer parçalarına dönüştürülüyor.',
|
||||
finishConvertingSpotifyPlaylist: 'Spotify oynatma listesi dönüştürüldü.'
|
||||
},
|
||||
@ -279,7 +279,7 @@ const tr = {
|
||||
nothing: 'Sadece ana sanatçıyı kaydet',
|
||||
default: 'Genel prosedür uygulansın',
|
||||
andFeat: 'Kullanılanlar & ve Feat.',
|
||||
using: 'Kullanılan "{0}"'
|
||||
using: 'Kullanılan "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Sadece ana albüm sanatçısını kaydet',
|
||||
albumVariousArtists: '"Çeşitli sanatçılar"ı sanatçı albümlerinde tut',
|
||||
|
@ -3,9 +3,9 @@ const vn = {
|
||||
welcome: 'Chào mừng đến với deemix',
|
||||
back: 'trở lại',
|
||||
loading: 'đang tải',
|
||||
download: 'Tải xuống {0}',
|
||||
by: 'bởi {0}',
|
||||
in: 'trong {0}',
|
||||
download: 'Tải xuống {thing}',
|
||||
by: 'bởi {artist}',
|
||||
in: 'trong {album}',
|
||||
download_hint: 'Tải xuống',
|
||||
play_hint: 'Phát',
|
||||
toggle_download_tab_hint: 'Mở rộng/Giấu',
|
||||
@ -74,7 +74,7 @@ const vn = {
|
||||
download: 'Tải xuống bảng xếp hạng này'
|
||||
},
|
||||
errors: {
|
||||
title: 'Lỗi {0}',
|
||||
title: 'Lỗi {name}',
|
||||
ids: {
|
||||
invalidURL: 'Không nhận diện được URL',
|
||||
unsupportedURL: 'URL này chưa được hỗ trợ',
|
||||
@ -133,7 +133,7 @@ const vn = {
|
||||
startSearching: 'Bắt đầu tìm kiếm!',
|
||||
description:
|
||||
'Bạn có thể tìm một bài hát, album, nghệ sĩ, playlist, v.v...! Bạn cũng có thể dùng link của Deezer',
|
||||
fans: '{0} người hâm mộ',
|
||||
fans: '{n} người hâm mộ',
|
||||
noResults: 'Không có kết quả',
|
||||
noResultsTrack: 'Không tìm được bài hát nào',
|
||||
noResultsAlbum: 'Không tìm được album nào',
|
||||
@ -143,9 +143,9 @@ const vn = {
|
||||
searchbar: 'Tìm những gì bạn muốn (bạn cũng có thể sữ dụng một đường link)',
|
||||
downloads: 'Tải xuống',
|
||||
toasts: {
|
||||
addedToQueue: '{0} đã được đưa vào hàng chờ',
|
||||
alreadyInQueue: '{0} đã đang trong hàng chờ!',
|
||||
finishDownload: '{0} đã tải xong.',
|
||||
addedToQueue: '{item} đã được đưa vào hàng chờ',
|
||||
alreadyInQueue: '{item} đã đang trong hàng chờ!',
|
||||
finishDownload: '{item} đã tải xong.',
|
||||
allDownloaded: 'Tất cả các bài hát đã được tải xuống!',
|
||||
refreshFavs: 'Tải lại hoàn tất!',
|
||||
loggingIn: 'Đang đăng nhập',
|
||||
@ -155,8 +155,8 @@ const vn = {
|
||||
loggedOut: 'Đăng xuất',
|
||||
cancellingCurrentItem: 'Đang hủy file hiện tại.',
|
||||
currentItemCancelled: 'File hiện tại đã bị hủy.',
|
||||
startAddingArtist: 'Đang đưa {0} album vào hàng chờ',
|
||||
finishAddingArtist: 'Đã đưa {0} album vào hàng chờ',
|
||||
startAddingArtist: 'Đang đưa {artist} album vào hàng chờ',
|
||||
finishAddingArtist: 'Đã đưa {artist} album vào hàng chờ',
|
||||
startConvertingSpotifyPlaylist: 'Đang chuyển đổi các bài hát từ Spotify sang Deezer',
|
||||
finishConvertingSpotifyPlaylist: 'Playlist của Spotify đã được chuyển đổi',
|
||||
loginNeededToDownload: 'Bạn cần phải đang nhập để tải nhạc!'
|
||||
@ -280,7 +280,7 @@ const vn = {
|
||||
nothing: 'Chỉ lưu nghệ sĩ chính',
|
||||
default: 'Dùng quy cách tiêu chuẩn',
|
||||
andFeat: 'Dùng & và feat.',
|
||||
using: 'Dùng "{0}"'
|
||||
using: 'Dùng "{separator}"'
|
||||
},
|
||||
singleAlbumArtist: 'Chỉ lưu Nghệ sĩ Album chính',
|
||||
albumVariousArtists: 'Giữ nguyên "Nhiều Nghệ sĩ" trong Nghệ sĩ Album',
|
||||
|
@ -15,6 +15,7 @@ import tr from '@/lang/tr'
|
||||
import vn from '@/lang/vn'
|
||||
import hr from '@/lang/hr'
|
||||
import ar from '@/lang/ar'
|
||||
import ko from '@/lang/ko'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
@ -35,7 +36,8 @@ const locales = {
|
||||
tr,
|
||||
vn,
|
||||
hr,
|
||||
ar
|
||||
ar,
|
||||
ko
|
||||
}
|
||||
|
||||
const i18n = new VueI18n({
|
||||
|
@ -80,7 +80,7 @@ body {
|
||||
margin: 0px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-family: 'Open Sans';
|
||||
font-family: 'Open Sans', 'sans-serif';
|
||||
overflow: hidden;
|
||||
background: var(--main-background);
|
||||
color: var(--foreground);
|
||||
|
@ -11,6 +11,7 @@ import tr from 'svg-country-flags/svg/tr.svg'
|
||||
import vn from 'svg-country-flags/svg/vn.svg'
|
||||
import hr from 'svg-country-flags/svg/hr.svg'
|
||||
import ar from '@/assets/ar.svg'
|
||||
import ko from 'svg-country-flags/svg/kr.svg'
|
||||
|
||||
export default {
|
||||
it,
|
||||
@ -25,5 +26,6 @@ export default {
|
||||
tr,
|
||||
vn,
|
||||
hr,
|
||||
ar
|
||||
ar,
|
||||
ko
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ export function isValidURL(text) {
|
||||
let lowerCaseText = text.toLowerCase()
|
||||
|
||||
if (lowerCaseText.startsWith('http')) {
|
||||
if (lowerCaseText.indexOf('deezer.com') >= 0 || lowerCaseText.indexOf('open.spotify.com') >= 0) {
|
||||
if (lowerCaseText.indexOf('deezer.com') >= 0 || lowerCaseText.indexOf('deezer.page.link') >= 0 || lowerCaseText.indexOf('open.spotify.com') >= 0) {
|
||||
return true
|
||||
}
|
||||
} else if (lowerCaseText.startsWith('spotify:')) {
|
||||
|
Loading…
Reference in New Issue
Block a user