Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
296 commits
Select commit Hold shift + click to select a range
057d38e
chore(i18n): sync Crowdin translations
deadcodebot Aug 23, 2025
424fd7a
chore(i18n): sync Crowdin translations
deadcodebot Aug 25, 2025
f1e0f6e
chore(i18n): sync Crowdin translations
deadcodebot Aug 26, 2025
3580c09
chore(i18n): sync Crowdin translations
deadcodebot Aug 27, 2025
36b1e3a
chore(i18n): sync Crowdin translations
deadcodebot Aug 28, 2025
b5e1cde
chore(i18n): sync Crowdin translations
deadcodebot Aug 29, 2025
2703936
chore(i18n): sync Crowdin translations
deadcodebot Aug 30, 2025
e799e86
chore(i18n): sync Crowdin translations
deadcodebot Aug 31, 2025
2313421
chore(i18n): sync Crowdin translations
deadcodebot Sep 1, 2025
0bc014e
chore(i18n): sync Crowdin translations
deadcodebot Sep 2, 2025
5d05583
chore(i18n): sync Crowdin translations
deadcodebot Sep 3, 2025
639befd
chore(i18n): sync Crowdin translations
deadcodebot Sep 4, 2025
60f135c
chore(i18n): sync Crowdin translations
deadcodebot Sep 5, 2025
e2731ec
chore(i18n): sync Crowdin translations
deadcodebot Sep 6, 2025
df6dc39
chore(i18n): sync Crowdin translations
deadcodebot Sep 7, 2025
1ef46ed
chore(i18n): sync Crowdin translations
deadcodebot Sep 8, 2025
668bbd4
chore(i18n): sync Crowdin translations
deadcodebot Sep 9, 2025
22fc2be
chore(i18n): sync Crowdin translations
deadcodebot Sep 10, 2025
9660ef6
chore(i18n): sync Crowdin translations
deadcodebot Sep 11, 2025
e622d95
chore(i18n): sync Crowdin translations
deadcodebot Sep 12, 2025
fd76876
chore(i18n): sync Crowdin translations
deadcodebot Sep 13, 2025
ca2927e
chore(i18n): sync Crowdin translations
deadcodebot Sep 14, 2025
70f5e61
chore(i18n): sync Crowdin translations
deadcodebot Sep 15, 2025
de5105b
chore(i18n): sync Crowdin translations
deadcodebot Sep 16, 2025
2d40b36
chore(i18n): sync Crowdin translations
deadcodebot Sep 17, 2025
63dc90b
chore(i18n): sync Crowdin translations
deadcodebot Sep 18, 2025
77eb8b2
chore(i18n): sync Crowdin translations
deadcodebot Sep 19, 2025
8d8c416
chore(i18n): sync Crowdin translations
deadcodebot Sep 20, 2025
100ea0c
chore(i18n): sync Crowdin translations
deadcodebot Sep 21, 2025
c68174f
chore(i18n): sync Crowdin translations
deadcodebot Sep 22, 2025
d11b55f
chore(i18n): sync Crowdin translations
deadcodebot Sep 23, 2025
1c886eb
chore(i18n): sync Crowdin translations
deadcodebot Sep 24, 2025
5143e71
chore(i18n): sync Crowdin translations
deadcodebot Sep 25, 2025
714c747
chore(i18n): sync Crowdin translations
deadcodebot Sep 26, 2025
07c1fbb
chore(i18n): sync Crowdin translations
deadcodebot Sep 27, 2025
9e983b5
chore(i18n): sync Crowdin translations
deadcodebot Sep 28, 2025
5e4c213
chore(i18n): sync Crowdin translations
deadcodebot Sep 29, 2025
551ad1c
chore(i18n): sync Crowdin translations
deadcodebot Sep 30, 2025
3177964
chore(i18n): sync Crowdin translations
deadcodebot Oct 1, 2025
bec7551
chore(i18n): sync Crowdin translations
deadcodebot Oct 2, 2025
23f60e8
chore(i18n): sync Crowdin translations
deadcodebot Oct 3, 2025
9dd0851
chore(i18n): sync Crowdin translations
deadcodebot Oct 4, 2025
91a7fea
chore(i18n): sync Crowdin translations
deadcodebot Oct 5, 2025
9325ab6
chore(i18n): sync Crowdin translations
deadcodebot Oct 6, 2025
6e8454f
chore(i18n): sync Crowdin translations
deadcodebot Oct 7, 2025
69afd79
chore(i18n): sync Crowdin translations
deadcodebot Oct 8, 2025
46fabde
chore(i18n): sync Crowdin translations
deadcodebot Oct 9, 2025
0fd6c70
chore(i18n): sync Crowdin translations
deadcodebot Oct 10, 2025
f1b0b87
chore(i18n): sync Crowdin translations
deadcodebot Oct 11, 2025
669b320
chore(i18n): sync Crowdin translations
deadcodebot Oct 12, 2025
bfee5d7
chore(i18n): sync Crowdin translations
deadcodebot Oct 13, 2025
915f47e
chore(i18n): sync Crowdin translations
deadcodebot Oct 14, 2025
28a4641
chore(i18n): sync Crowdin translations
deadcodebot Oct 15, 2025
9bf64a1
chore(i18n): sync Crowdin translations
deadcodebot Oct 16, 2025
3265eed
chore(i18n): sync Crowdin translations
deadcodebot Oct 17, 2025
093e260
chore(i18n): sync Crowdin translations
deadcodebot Oct 18, 2025
10736ac
chore(i18n): sync Crowdin translations
deadcodebot Oct 19, 2025
ea70f32
chore(i18n): sync Crowdin translations
deadcodebot Oct 20, 2025
00a2d84
chore(i18n): sync Crowdin translations
deadcodebot Oct 21, 2025
f057a73
chore(i18n): sync Crowdin translations
deadcodebot Oct 22, 2025
b041f7c
chore(i18n): sync Crowdin translations
deadcodebot Oct 23, 2025
90f937b
chore(i18n): sync Crowdin translations
deadcodebot Oct 24, 2025
5dbad8b
chore(i18n): sync Crowdin translations
deadcodebot Oct 25, 2025
ab608f9
chore(i18n): sync Crowdin translations
deadcodebot Oct 26, 2025
e340bf9
chore(i18n): sync Crowdin translations
deadcodebot Oct 27, 2025
5d53fbf
chore(i18n): sync Crowdin translations
deadcodebot Oct 28, 2025
d6ad842
chore(i18n): sync Crowdin translations
deadcodebot Oct 29, 2025
e19d6a8
chore(i18n): sync Crowdin translations
deadcodebot Oct 30, 2025
53cc7fc
chore(i18n): sync Crowdin translations
deadcodebot Oct 31, 2025
fb14235
chore(i18n): sync Crowdin translations
deadcodebot Nov 1, 2025
daeda31
chore(i18n): sync Crowdin translations
deadcodebot Nov 2, 2025
e412409
chore(i18n): sync Crowdin translations
deadcodebot Nov 3, 2025
44f80f5
chore(i18n): sync Crowdin translations
deadcodebot Nov 4, 2025
2218776
chore(i18n): sync Crowdin translations
deadcodebot Nov 5, 2025
7d0b094
chore(i18n): sync Crowdin translations
deadcodebot Nov 6, 2025
b24db34
chore(i18n): sync Crowdin translations
deadcodebot Nov 7, 2025
b83a0d2
chore(i18n): sync Crowdin translations
deadcodebot Nov 8, 2025
ad36733
chore(i18n): sync Crowdin translations
deadcodebot Nov 9, 2025
745c798
chore(i18n): sync Crowdin translations
deadcodebot Nov 10, 2025
5518c32
chore(i18n): sync Crowdin translations
deadcodebot Nov 11, 2025
3eb5a46
chore(i18n): sync Crowdin translations
deadcodebot Nov 12, 2025
32d40f0
chore(i18n): sync Crowdin translations
deadcodebot Nov 13, 2025
37ea60b
chore(i18n): sync Crowdin translations
deadcodebot Nov 14, 2025
5d69a39
chore(i18n): sync Crowdin translations
deadcodebot Nov 16, 2025
38497d6
chore(i18n): sync Crowdin translations
deadcodebot Nov 17, 2025
cf5594b
chore(i18n): sync Crowdin translations
deadcodebot Nov 18, 2025
45382b9
chore(i18n): sync Crowdin translations
deadcodebot Nov 19, 2025
22bbfcf
chore(i18n): sync Crowdin translations
deadcodebot Nov 20, 2025
34e140c
chore(i18n): sync Crowdin translations
deadcodebot Nov 21, 2025
6c5a2bd
chore(i18n): sync Crowdin translations
deadcodebot Nov 22, 2025
159147e
chore(i18n): sync Crowdin translations
deadcodebot Nov 23, 2025
0f315b1
chore(i18n): sync Crowdin translations
deadcodebot Nov 24, 2025
cebf9e3
chore(i18n): sync Crowdin translations
deadcodebot Nov 25, 2025
f56ddc1
chore(i18n): sync Crowdin translations
deadcodebot Nov 26, 2025
f535c3d
chore(i18n): sync Crowdin translations
deadcodebot Nov 27, 2025
2797be1
chore(i18n): sync Crowdin translations
deadcodebot Nov 28, 2025
a0ad1f5
chore(i18n): sync Crowdin translations
deadcodebot Nov 29, 2025
3d4530b
chore(i18n): sync Crowdin translations
deadcodebot Nov 30, 2025
95f4015
chore(i18n): sync Crowdin translations
deadcodebot Dec 1, 2025
f06e8af
chore(i18n): sync Crowdin translations
deadcodebot Dec 2, 2025
ac21590
chore(i18n): sync Crowdin translations
deadcodebot Dec 3, 2025
c26a0d4
chore(i18n): sync Crowdin translations
deadcodebot Dec 4, 2025
4015561
chore(i18n): sync Crowdin translations
deadcodebot Dec 5, 2025
db40def
chore(i18n): sync Crowdin translations
deadcodebot Dec 6, 2025
690ee88
chore(i18n): sync Crowdin translations
deadcodebot Dec 7, 2025
2002c6b
chore(i18n): sync Crowdin translations
deadcodebot Dec 8, 2025
d5057d0
chore(i18n): sync Crowdin translations
deadcodebot Dec 9, 2025
5075488
chore(i18n): sync Crowdin translations
deadcodebot Dec 10, 2025
cf97c1d
chore(i18n): sync Crowdin translations
deadcodebot Dec 11, 2025
e0b46da
chore(i18n): sync Crowdin translations
deadcodebot Dec 12, 2025
4178b5a
chore(i18n): sync Crowdin translations
deadcodebot Dec 13, 2025
1fa894e
chore(i18n): sync Crowdin translations
deadcodebot Dec 14, 2025
077f726
chore(i18n): sync Crowdin translations
deadcodebot Dec 15, 2025
e7dc46a
chore(i18n): sync Crowdin translations
deadcodebot Dec 16, 2025
4228eec
chore(i18n): sync Crowdin translations
deadcodebot Dec 17, 2025
6ee1734
chore(i18n): sync Crowdin translations
deadcodebot Dec 18, 2025
4ef8b37
chore(i18n): sync Crowdin translations
deadcodebot Dec 19, 2025
481f7da
chore(i18n): sync Crowdin translations
deadcodebot Dec 20, 2025
301a396
chore(i18n): sync Crowdin translations
deadcodebot Dec 21, 2025
7508ae6
chore(i18n): sync Crowdin translations
deadcodebot Dec 22, 2025
9f941b2
chore(i18n): sync Crowdin translations
deadcodebot Dec 23, 2025
762d44f
chore(i18n): sync Crowdin translations
deadcodebot Dec 24, 2025
41cf146
chore(i18n): sync Crowdin translations
deadcodebot Dec 25, 2025
c87585e
chore(i18n): sync Crowdin translations
deadcodebot Dec 26, 2025
2b6e8da
chore(i18n): sync Crowdin translations
deadcodebot Dec 27, 2025
2f8ccb4
chore(i18n): sync Crowdin translations
deadcodebot Dec 28, 2025
05c204e
chore(i18n): sync Crowdin translations
deadcodebot Dec 29, 2025
5e37bba
chore(i18n): sync Crowdin translations
deadcodebot Dec 30, 2025
a19bd1a
chore(i18n): sync Crowdin translations
deadcodebot Dec 31, 2025
597a6d6
chore(i18n): sync Crowdin translations
deadcodebot Jan 1, 2026
24929b4
chore(i18n): sync Crowdin translations
deadcodebot Jan 2, 2026
de9441b
chore(i18n): sync Crowdin translations
deadcodebot Jan 3, 2026
dbf1953
chore(i18n): sync Crowdin translations
deadcodebot Jan 4, 2026
9bd5404
chore(i18n): sync Crowdin translations
deadcodebot Jan 5, 2026
0239286
chore(i18n): sync Crowdin translations
deadcodebot Jan 6, 2026
2255127
chore(i18n): sync Crowdin translations
deadcodebot Jan 7, 2026
3e015c9
chore(i18n): sync Crowdin translations
deadcodebot Jan 8, 2026
35cbcd2
chore(i18n): sync Crowdin translations
deadcodebot Jan 9, 2026
69281e7
chore(i18n): sync Crowdin translations
deadcodebot Jan 10, 2026
22ea2fb
chore(i18n): sync Crowdin translations
deadcodebot Jan 11, 2026
c3d0fca
chore(i18n): sync Crowdin translations
deadcodebot Jan 12, 2026
1ac5e1a
chore(i18n): sync Crowdin translations
deadcodebot Jan 13, 2026
b05d22a
chore(i18n): sync Crowdin translations
deadcodebot Jan 14, 2026
fb2e3a7
chore(i18n): sync Crowdin translations
deadcodebot Jan 15, 2026
ce3041b
chore(i18n): sync Crowdin translations
deadcodebot Jan 16, 2026
8056d11
chore(i18n): sync Crowdin translations
deadcodebot Jan 17, 2026
2adde46
chore(i18n): sync Crowdin translations
deadcodebot Jan 18, 2026
289861e
chore(i18n): sync Crowdin translations
deadcodebot Jan 19, 2026
c3a1355
chore(i18n): sync Crowdin translations
deadcodebot Jan 20, 2026
91f456d
chore(i18n): sync Crowdin translations
deadcodebot Jan 21, 2026
6def59d
chore(i18n): sync Crowdin translations
deadcodebot Jan 22, 2026
8ca270b
chore(i18n): sync Crowdin translations
deadcodebot Jan 23, 2026
8356e7f
chore(i18n): sync Crowdin translations
deadcodebot Jan 24, 2026
dc1f8af
chore(i18n): sync Crowdin translations
deadcodebot Jan 25, 2026
17f34a6
chore(i18n): sync Crowdin translations
deadcodebot Jan 26, 2026
ee4e2f0
chore(i18n): sync Crowdin translations
deadcodebot Jan 27, 2026
df6897d
chore(i18n): sync Crowdin translations
deadcodebot Jan 28, 2026
1c976f4
chore(i18n): sync Crowdin translations
deadcodebot Jan 29, 2026
80889fc
chore(i18n): sync Crowdin translations
deadcodebot Jan 30, 2026
d3326c9
chore(i18n): sync Crowdin translations
deadcodebot Jan 31, 2026
da2f773
chore(i18n): sync Crowdin translations
deadcodebot Feb 1, 2026
952613b
chore(i18n): sync Crowdin translations
deadcodebot Feb 2, 2026
dbca073
chore(i18n): sync Crowdin translations
deadcodebot Feb 3, 2026
c3aaf78
chore(i18n): sync Crowdin translations
deadcodebot Feb 4, 2026
4ad256e
chore(i18n): sync Crowdin translations
deadcodebot Feb 5, 2026
c8be8bc
chore(i18n): sync Crowdin translations
deadcodebot Feb 6, 2026
9581c97
chore(i18n): sync Crowdin translations
deadcodebot Feb 7, 2026
cbf8700
chore(i18n): sync Crowdin translations
deadcodebot Feb 8, 2026
339bc0e
chore(i18n): sync Crowdin translations
deadcodebot Feb 9, 2026
bc53b31
chore(i18n): sync Crowdin translations
deadcodebot Feb 10, 2026
5c74b20
chore(i18n): sync Crowdin translations
deadcodebot Feb 11, 2026
82b397b
chore(i18n): sync Crowdin translations
deadcodebot Feb 12, 2026
89f74ca
chore(i18n): sync Crowdin translations
deadcodebot Feb 13, 2026
cfbd26d
chore(i18n): sync Crowdin translations
deadcodebot Feb 14, 2026
138b621
chore(i18n): sync Crowdin translations
deadcodebot Feb 15, 2026
c5908f5
chore(i18n): sync Crowdin translations
deadcodebot Feb 16, 2026
9e20987
chore(i18n): sync Crowdin translations
deadcodebot Feb 17, 2026
84c04db
chore(i18n): sync Crowdin translations
deadcodebot Feb 18, 2026
ec9e212
chore(i18n): sync Crowdin translations
deadcodebot Feb 19, 2026
2706615
chore(i18n): sync Crowdin translations
deadcodebot Feb 20, 2026
7ffbb37
chore(i18n): sync Crowdin translations
deadcodebot Feb 21, 2026
2bc2cbf
chore(i18n): sync Crowdin translations
deadcodebot Feb 22, 2026
bb22e81
chore(i18n): sync Crowdin translations
deadcodebot Feb 23, 2026
658a0e7
chore(i18n): sync Crowdin translations
deadcodebot Feb 24, 2026
2ad5cf3
chore(i18n): sync Crowdin translations
deadcodebot Feb 25, 2026
13baa49
chore(i18n): sync Crowdin translations
deadcodebot Feb 26, 2026
6342781
chore(i18n): sync Crowdin translations
deadcodebot Mar 15, 2026
14e8e54
chore(i18n): sync Crowdin translations
deadcodebot Mar 16, 2026
223628d
chore(i18n): sync Crowdin translations
deadcodebot Mar 17, 2026
43a8753
chore(i18n): sync Crowdin translations
deadcodebot Mar 18, 2026
9d3ff21
chore(i18n): sync Crowdin translations
deadcodebot Mar 19, 2026
45d7295
chore(i18n): sync Crowdin translations
deadcodebot Mar 20, 2026
ce988f1
chore(i18n): sync Crowdin translations
deadcodebot Mar 21, 2026
079ce75
chore(i18n): sync Crowdin translations
deadcodebot Mar 22, 2026
6f1e728
chore(i18n): sync Crowdin translations
deadcodebot Mar 23, 2026
2f72121
chore(i18n): sync Crowdin translations
deadcodebot Mar 24, 2026
6ccf63b
chore(i18n): sync Crowdin translations
deadcodebot Mar 25, 2026
5e190dc
chore(i18n): sync Crowdin translations
deadcodebot Mar 26, 2026
05ba0b3
chore(i18n): sync Crowdin translations
deadcodebot Mar 27, 2026
2356b6f
chore(i18n): sync Crowdin translations
deadcodebot Mar 28, 2026
a13534a
chore(i18n): sync Crowdin translations
deadcodebot Mar 29, 2026
5f293bd
chore(i18n): sync Crowdin translations
deadcodebot Mar 30, 2026
4a419d3
chore(i18n): sync Crowdin translations
deadcodebot Mar 31, 2026
45b684a
chore(i18n): sync Crowdin translations
deadcodebot Apr 1, 2026
31efa70
chore(i18n): sync Crowdin translations
deadcodebot Apr 2, 2026
791cc23
chore(i18n): sync Crowdin translations
deadcodebot Apr 3, 2026
eee60a8
chore(i18n): sync Crowdin translations
deadcodebot Apr 4, 2026
b99db08
chore(i18n): sync Crowdin translations
deadcodebot Apr 5, 2026
0419f33
chore(i18n): sync Crowdin translations
deadcodebot Apr 6, 2026
01dbab5
chore(i18n): sync Crowdin translations
deadcodebot Apr 7, 2026
5260eb4
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
5883ae8
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
dcb4558
Update crowdin.yml
RichardKanshen Apr 8, 2026
0a65cd9
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
555eb49
Update crowdin.yml
RichardKanshen Apr 8, 2026
f1463f7
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
27a4322
Update crowdin.yml
RichardKanshen Apr 8, 2026
4acb3ba
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
8ac8300
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
0fe21a0
purged faulty translations
RichardKanshen Apr 8, 2026
c7c7ae1
kms
RichardKanshen Apr 8, 2026
fc3976d
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
3a59209
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
94501d6
kms 2
RichardKanshen Apr 8, 2026
2453a01
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
6495da1
Merge branch '2025/2026' into l10n_crowdin_translations
RichardKanshen Apr 8, 2026
45e2eff
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
823ae50
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
a8b836d
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
fb4c8b5
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
5aa9776
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
a3aaa90
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
67ae110
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
79834cd
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
df633e1
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
93c7199
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
4164b18
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
e9978cb
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
d709a51
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
a5fcdf5
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
d55870e
Update crowdin.yml
RichardKanshen Apr 8, 2026
9dd0500
Merge branch '2025/2026' into l10n_crowdin_translations
RichardKanshen Apr 8, 2026
50525d5
kms 3
RichardKanshen Apr 8, 2026
a898ed7
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
7184ac4
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
7636856
Update commitl10nchanges.js
RichardKanshen Apr 8, 2026
ee341d6
kms frfr
RichardKanshen Apr 8, 2026
02a5c48
fml
RichardKanshen Apr 8, 2026
120054c
chore(i18n): sync Crowdin translations
deadcodebot Apr 8, 2026
315f9f3
kms
RichardKanshen Apr 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 37 additions & 18 deletions .github/workflows/commitl10nchanges.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,25 @@ async function syncCrowdinTranslations() {
});

const [owner, repo] = ["DeadCodeGames", "DeadForge"];
const mainBranch = '2024/2025';
const masterBranch = '2025/2026';
const l10nBranch = 'l10n_crowdin_translations';

console.log('Starting Crowdin translations sync...');

try {
// Get main branch reference
console.log('Fetching main branch...');
const { data: mainRef } = await octokit.git.getRef({
// Get master branch reference
console.log('Fetching master branch...');
const { data: masterRef } = await octokit.git.getRef({
owner,
repo,
ref: `heads/${mainBranch}`
ref: `heads/${masterBranch}`
});

// Get main commit and tree
const { data: mainCommit } = await octokit.git.getCommit({
// Get master commit and tree
const { data: masterCommit } = await octokit.git.getCommit({
owner,
repo,
commit_sha: mainRef.object.sha
commit_sha: masterRef.object.sha
});

// Backup locale files from current working directory
Expand All @@ -50,7 +50,7 @@ async function syncCrowdinTranslations() {
console.log('Branch l10n_crowdin_translations exists, using it...');
} catch (error) {
if (error.status === 404) {
console.log('Creating new branch l10n_crowdin_translations from main...');
console.log('Creating new branch l10n_crowdin_translations from master...');
l10nBranchExists = false;
} else {
throw error;
Expand All @@ -68,8 +68,8 @@ async function syncCrowdinTranslations() {
});
baseSha = l10nCommit.tree.sha;
} else {
// Use main as base
baseSha = mainCommit.tree.sha;
// Use master as base
baseSha = masterCommit.tree.sha;
}

// Restore locale files from backup
Expand Down Expand Up @@ -97,7 +97,7 @@ async function syncCrowdinTranslations() {
repo,
message: 'chore(i18n): sync Crowdin translations',
tree: tree.sha,
parents: l10nBranchExists ? [l10nRef.object.sha] : [mainRef.object.sha]
parents: l10nBranchExists ? [l10nRef.object.sha] : [masterRef.object.sha]
});

if (l10nBranchExists) {
Expand Down Expand Up @@ -176,26 +176,45 @@ async function restoreLocaleFilesFromWorkspace(
}

const changedFiles = [];

// Create blobs for all backup files

// Fetch the full base tree (recursive) once so we can compare file SHAs
const { data: baseTree } = await octokit.git.getTree({
owner,
repo,
tree_sha: baseSha,
recursive: 'true'
});
const existingBlobs = new Map(
baseTree.tree
.filter(item => item.type === 'blob')
.map(item => [item.path, item.sha])
);

// Only stage files that have actually changed
for (const backupFile of localeBackup) {
const { data: blob } = await octokit.git.createBlob({
owner,
repo,
content: backupFile.content,
encoding: 'utf-8'
});


const existingSha = existingBlobs.get(backupFile.path);
if (existingSha === blob.sha) {
console.log(`Skipping unchanged file: ${backupFile.path}`);
continue;
}

changedFiles.push({
path: backupFile.path,
mode: '100644',
type: 'blob',
sha: blob.sha
});
}
console.log(`Restored ${changedFiles.length} locale files`);

console.log(`${changedFiles.length} locale file(s) changed out of ${localeBackup.length}`);
return changedFiles;
}

syncCrowdinTranslations();
syncCrowdinTranslations();
12 changes: 10 additions & 2 deletions src/locales/cs_CZ.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@
"languageComplete": "Úplně Přeloženo",
"languageIncomplete": "Nepřeloženo",
"languageShowIncomplete": "Zobrazovat neúplné překlady",
"languageShowIncompleteDescription": "Zobrazit překlady, které nejsou kompletné. Můžete nám pomoci s překladem DEADFORGE na našem <0>Crowdinu</0>."
"languageShowIncompleteDescription": "Zobrazit překlady, které nejsou kompletné. Můžete nám pomoci s překladem DEADFORGE na našem <0>Crowdinu</0>.",
"reducedMotion": "Redukce animací",
"reducedMotionDescription": "Vypnout animace a přechody s účelem znížení zatížení systému a zlepšení výkonu"
},
"behavior": {
"title": "Chování",
Expand All @@ -90,7 +92,13 @@
"useTrayDescription": "Ponechat aplikaci na pozadí po uzavření okna, skrytou v oblasti oznámení",
"autoStart": "Spustit při startu",
"autoStartDescription": "Spustit aplikaci automaticky po spustení počítače",
"unavailableOnLinux": "Toto nastavení není dostupné na Linuxových systémech"
"unavailableOnLinux": "Toto nastavení není dostupné na Linuxových systémech",
"discordRPC": "Discord Rich Presence",
"discordRPCDescription": "Spravovat nastavení Discordu RPC",
"manageDiscordRPC": "Spravovat Discord RPC",
"discordRPCEnabled": "Povolit Discord RPC",
"discordRPCShowVersion": "Zobrazovat verzi DEADFORGE",
"discordRPCShowTime": "Zobrazovat, jak dlouho DEADFORGE běží"
},
"appData": {
"title": "Data a aktualizace aplikace",
Expand Down
12 changes: 10 additions & 2 deletions src/locales/de_DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@
"languageComplete": "",
"languageIncomplete": "",
"languageShowIncomplete": "",
"languageShowIncompleteDescription": ""
"languageShowIncompleteDescription": "",
"reducedMotion": "",
"reducedMotionDescription": ""
},
"behavior": {
"title": "",
Expand All @@ -88,7 +90,13 @@
"useTrayDescription": "",
"autoStart": "",
"autoStartDescription": "",
"unavailableOnLinux": ""
"unavailableOnLinux": "",
"discordRPC": "",
"discordRPCDescription": "",
"manageDiscordRPC": "",
"discordRPCEnabled": "",
"discordRPCShowVersion": "",
"discordRPCShowTime": ""
},
"appData": {
"title": "",
Expand Down
12 changes: 10 additions & 2 deletions src/locales/en_PT.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@
"languageComplete": "",
"languageIncomplete": "",
"languageShowIncomplete": "",
"languageShowIncompleteDescription": ""
"languageShowIncompleteDescription": "",
"reducedMotion": "",
"reducedMotionDescription": ""
},
"behavior": {
"title": "",
Expand All @@ -88,7 +90,13 @@
"useTrayDescription": "",
"autoStart": "",
"autoStartDescription": "",
"unavailableOnLinux": ""
"unavailableOnLinux": "",
"discordRPC": "",
"discordRPCDescription": "",
"manageDiscordRPC": "",
"discordRPCEnabled": "",
"discordRPCShowVersion": "",
"discordRPCShowTime": ""
},
"appData": {
"title": "",
Expand Down
12 changes: 10 additions & 2 deletions src/locales/fr_FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@
"languageComplete": "",
"languageIncomplete": "",
"languageShowIncomplete": "",
"languageShowIncompleteDescription": ""
"languageShowIncompleteDescription": "",
"reducedMotion": "",
"reducedMotionDescription": ""
},
"behavior": {
"title": "",
Expand All @@ -88,7 +90,13 @@
"useTrayDescription": "",
"autoStart": "",
"autoStartDescription": "",
"unavailableOnLinux": ""
"unavailableOnLinux": "",
"discordRPC": "",
"discordRPCDescription": "",
"manageDiscordRPC": "",
"discordRPCEnabled": "",
"discordRPCShowVersion": "",
"discordRPCShowTime": ""
},
"appData": {
"title": "",
Expand Down
7 changes: 4 additions & 3 deletions src/locales/i18n.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import { enUS, cs, sk, ja, fr, it, zhCN, zhTW, de, ko, Locale } from 'date-fns/locale';
import { enUS, cs, sk, ja, fr, it, zhCN, zhTW, de, ko, uk, Locale } from 'date-fns/locale';
import {unflatten, flatten} from 'flat';

import en_001 from './en_001.json';
Expand All @@ -10,12 +10,12 @@ import en_PT from './en_PT.json';
import fr_FR from './fr_FR.json';
import it_IT from './it_IT.json';
import ja_JP from './ja_JP.json';
import zh_CN from './zh_CN.json';
import ko_KR from './ko_KR.json';
import lol_US from './lol_US.json';
import sk_SK from './sk_SK.json';
import zh_TW from './zh_TW.json';
import uk_UA from './uk_UA.json';
import zh_CN from './zh_CN.json';
import zh_TW from './zh_TW.json';
const resources: Record<string, { translation: object }> = {
cs_CZ: { translation: cs_CZ },
de_DE: { translation: de_DE },
Expand All @@ -42,6 +42,7 @@ const dateFNSResources: Record<keyof typeof resources, Locale> = {
ko_KR: ko,
lol_US: enUS,
sk_SK: sk,
uk_UA: uk,
zh_CN: zhCN,
zh_TW: zhTW,
};
Expand Down
12 changes: 10 additions & 2 deletions src/locales/it_IT.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@
"languageComplete": "",
"languageIncomplete": "",
"languageShowIncomplete": "",
"languageShowIncompleteDescription": ""
"languageShowIncompleteDescription": "",
"reducedMotion": "",
"reducedMotionDescription": ""
},
"behavior": {
"title": "",
Expand All @@ -88,7 +90,13 @@
"useTrayDescription": "",
"autoStart": "",
"autoStartDescription": "",
"unavailableOnLinux": ""
"unavailableOnLinux": "",
"discordRPC": "",
"discordRPCDescription": "",
"manageDiscordRPC": "",
"discordRPCEnabled": "",
"discordRPCShowVersion": "",
"discordRPCShowTime": ""
},
"appData": {
"title": "",
Expand Down
12 changes: 10 additions & 2 deletions src/locales/ja_JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@
"languageComplete": "完全翻訳済み",
"languageIncomplete": "不完全翻訳済み",
"languageShowIncomplete": "未完了の翻訳を表示",
"languageShowIncompleteDescription": "まだ完全に翻訳されていない翻訳を表示します。<0>Crowdin</0>で翻訳を協力いただけます。"
"languageShowIncompleteDescription": "まだ完全に翻訳されていない翻訳を表示します。<0>Crowdin</0>で翻訳を協力いただけます。",
"reducedMotion": "モーションを減らす",
"reducedMotionDescription": "パフォーマンスを向上させるため、アニメーションとトランジションを無効にしてシステムの負荷を軽減します"
},
"behavior": {
"title": "行動",
Expand All @@ -87,7 +89,13 @@
"useTrayDescription": "ウィンドウが閉じているときは、アプリをシステムトレイに保持します",
"autoStart": "システム起動時に実行",
"autoStartDescription": "コンピューターの起動時にアプリを自動的に起動します",
"unavailableOnLinux": "この設定はLinuxシステムでは利用できません"
"unavailableOnLinux": "この設定はLinuxシステムでは利用できません",
"discordRPC": "Discord Rich Presence(リッチプレゼンス)",
"discordRPCDescription": "Discord RPCの設定を管理",
"manageDiscordRPC": "Discord RPCを管理",
"discordRPCEnabled": "Discord RPCを有効化",
"discordRPCShowVersion": "実行中のDEADFORGEバージョンを表示",
"discordRPCShowTime": "DEADFORGEの起動のタイムスタンプを表示"
},
"appData": {
"title": "アプリデータとアップデート",
Expand Down
12 changes: 10 additions & 2 deletions src/locales/ko_KR.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@
"languageComplete": "",
"languageIncomplete": "",
"languageShowIncomplete": "",
"languageShowIncompleteDescription": ""
"languageShowIncompleteDescription": "",
"reducedMotion": "",
"reducedMotionDescription": ""
},
"behavior": {
"title": "",
Expand All @@ -87,7 +89,13 @@
"useTrayDescription": "",
"autoStart": "",
"autoStartDescription": "",
"unavailableOnLinux": ""
"unavailableOnLinux": "",
"discordRPC": "",
"discordRPCDescription": "",
"manageDiscordRPC": "",
"discordRPCEnabled": "",
"discordRPCShowVersion": "",
"discordRPCShowTime": ""
},
"appData": {
"title": "",
Expand Down
12 changes: 10 additions & 2 deletions src/locales/lol_US.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@
"languageComplete": "",
"languageIncomplete": "",
"languageShowIncomplete": "",
"languageShowIncompleteDescription": ""
"languageShowIncompleteDescription": "",
"reducedMotion": "",
"reducedMotionDescription": ""
},
"behavior": {
"title": "",
Expand All @@ -88,7 +90,13 @@
"useTrayDescription": "",
"autoStart": "",
"autoStartDescription": "",
"unavailableOnLinux": ""
"unavailableOnLinux": "",
"discordRPC": "",
"discordRPCDescription": "",
"manageDiscordRPC": "",
"discordRPCEnabled": "",
"discordRPCShowVersion": "",
"discordRPCShowTime": ""
},
"appData": {
"title": "",
Expand Down
12 changes: 10 additions & 2 deletions src/locales/sk_SK.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@
"languageComplete": "Úplne Preložené",
"languageIncomplete": "Nepreložené",
"languageShowIncomplete": "Zobrazovať nekompletné preklady",
"languageShowIncompleteDescription": "Zobraziť preklady, ktoré nie sú kompletné. Môžete nám pomôcť DEADFORGE preložiť na našom <0>Crowdine</0>."
"languageShowIncompleteDescription": "Zobraziť preklady, ktoré nie sú kompletné. Môžete nám pomôcť DEADFORGE preložiť na našom <0>Crowdine</0>.",
"reducedMotion": "Redukcia animácií",
"reducedMotionDescription": "Vypnúť animácie a prechody s účelom zníženia zaťaženia systému a zlepšenia výkonu"
},
"behavior": {
"title": "Správanie",
Expand All @@ -90,7 +92,13 @@
"useTrayDescription": "Ponechať aplikáciu na pozadí po uzatvorení okna, skrytú v oblasti oznámení",
"autoStart": "Spustiť pri štarte",
"autoStartDescription": "Spustiť aplikáciu automaticky po spustení počítača",
"unavailableOnLinux": "Toto nastavenie nie je dostupné na Linuxových systémoch"
"unavailableOnLinux": "Toto nastavenie nie je dostupné na Linuxových systémoch",
"discordRPC": "Discord Rich Presence",
"discordRPCDescription": "Spravovať nastavenia Discord RPC",
"manageDiscordRPC": "Spravovať Discord RPC",
"discordRPCEnabled": "Povoliť Discord RPC",
"discordRPCShowVersion": "Zobrazovať verziu DEADFORGE",
"discordRPCShowTime": "Zobrazovať, ako dlho DEADFORGE beží"
},
"appData": {
"title": "Dáta a aktualizácie aplikácie",
Expand Down
Loading
Loading