Skip to content

Commit a960e14

Browse files
committed
Merge branch 'release/v2025.16'
2 parents 92f215d + 867edd9 commit a960e14

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+478
-153
lines changed

TRANSLATION.md

+14-7
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This document shows the translation status of each locale file in the repository
66

77
### ![en_US](https://img.shields.io/badge/en__US-%E2%88%9A-brightgreen)
88

9-
### ![de__DE](https://img.shields.io/badge/de__DE-95.19%25-yellow)
9+
### ![de__DE](https://img.shields.io/badge/de__DE-95.07%25-yellow)
1010

1111
<details>
1212
<summary>Missing keys in de_DE.axaml</summary>
@@ -37,6 +37,7 @@ This document shows the translation status of each locale file in the repository
3737
- Text.Preferences.Appearance.EditorTabWidth
3838
- Text.Preferences.General.ShowTagsInGraph
3939
- Text.Preferences.Git.IgnoreCRAtEOLInDiff
40+
- Text.Repository.Search.ByContent
4041
- Text.Repository.ViewLogs
4142
- Text.StashCM.SaveAsPatch
4243
- Text.ViewLogs
@@ -53,7 +54,7 @@ This document shows the translation status of each locale file in the repository
5354

5455
### ![es__ES](https://img.shields.io/badge/es__ES-%E2%88%9A-brightgreen)
5556

56-
### ![fr__FR](https://img.shields.io/badge/fr__FR-96.49%25-yellow)
57+
### ![fr__FR](https://img.shields.io/badge/fr__FR-96.37%25-yellow)
5758

5859
<details>
5960
<summary>Missing keys in fr_FR.axaml</summary>
@@ -75,6 +76,7 @@ This document shows the translation status of each locale file in the repository
7576
- Text.ConfirmEmptyCommit.StageAllThenCommit
7677
- Text.ConfirmEmptyCommit.WithLocalChanges
7778
- Text.Preferences.Git.IgnoreCRAtEOLInDiff
79+
- Text.Repository.Search.ByContent
7880
- Text.Repository.ViewLogs
7981
- Text.ViewLogs
8082
- Text.ViewLogs.Clear
@@ -88,7 +90,7 @@ This document shows the translation status of each locale file in the repository
8890

8991
</details>
9092

91-
### ![it__IT](https://img.shields.io/badge/it__IT-96.23%25-yellow)
93+
### ![it__IT](https://img.shields.io/badge/it__IT-96.11%25-yellow)
9294

9395
<details>
9496
<summary>Missing keys in it_IT.axaml</summary>
@@ -112,6 +114,7 @@ This document shows the translation status of each locale file in the repository
112114
- Text.CopyFullPath
113115
- Text.Preferences.General.ShowTagsInGraph
114116
- Text.Preferences.Git.IgnoreCRAtEOLInDiff
117+
- Text.Repository.Search.ByContent
115118
- Text.Repository.ViewLogs
116119
- Text.ViewLogs
117120
- Text.ViewLogs.Clear
@@ -125,7 +128,7 @@ This document shows the translation status of each locale file in the repository
125128

126129
</details>
127130

128-
### ![ja__JP](https://img.shields.io/badge/ja__JP-96.23%25-yellow)
131+
### ![ja__JP](https://img.shields.io/badge/ja__JP-96.11%25-yellow)
129132

130133
<details>
131134
<summary>Missing keys in ja_JP.axaml</summary>
@@ -148,6 +151,7 @@ This document shows the translation status of each locale file in the repository
148151
- Text.ConfirmEmptyCommit.WithLocalChanges
149152
- Text.Preferences.Git.IgnoreCRAtEOLInDiff
150153
- Text.Repository.FilterCommits
154+
- Text.Repository.Search.ByContent
151155
- Text.Repository.Tags.OrderByNameDes
152156
- Text.Repository.ViewLogs
153157
- Text.ViewLogs
@@ -162,7 +166,7 @@ This document shows the translation status of each locale file in the repository
162166

163167
</details>
164168

165-
### ![pt__BR](https://img.shields.io/badge/pt__BR-87.79%25-yellow)
169+
### ![pt__BR](https://img.shields.io/badge/pt__BR-87.68%25-yellow)
166170

167171
<details>
168172
<summary>Missing keys in pt_BR.axaml</summary>
@@ -235,6 +239,7 @@ This document shows the translation status of each locale file in the repository
235239
- Text.Repository.HistoriesOrder
236240
- Text.Repository.Notifications.Clear
237241
- Text.Repository.OnlyHighlightCurrentBranchInHistories
242+
- Text.Repository.Search.ByContent
238243
- Text.Repository.Skip
239244
- Text.Repository.Tags.OrderByCreatorDate
240245
- Text.Repository.Tags.OrderByNameAsc
@@ -266,7 +271,7 @@ This document shows the translation status of each locale file in the repository
266271

267272
### ![ru__RU](https://img.shields.io/badge/ru__RU-%E2%88%9A-brightgreen)
268273

269-
### ![ta__IN](https://img.shields.io/badge/ta__IN-96.49%25-yellow)
274+
### ![ta__IN](https://img.shields.io/badge/ta__IN-96.37%25-yellow)
270275

271276
<details>
272277
<summary>Missing keys in ta_IN.axaml</summary>
@@ -288,6 +293,7 @@ This document shows the translation status of each locale file in the repository
288293
- Text.ConfirmEmptyCommit.StageAllThenCommit
289294
- Text.ConfirmEmptyCommit.WithLocalChanges
290295
- Text.Preferences.Git.IgnoreCRAtEOLInDiff
296+
- Text.Repository.Search.ByContent
291297
- Text.Repository.ViewLogs
292298
- Text.UpdateSubmodules.Target
293299
- Text.ViewLogs
@@ -301,7 +307,7 @@ This document shows the translation status of each locale file in the repository
301307

302308
</details>
303309

304-
### ![uk__UA](https://img.shields.io/badge/uk__UA-97.66%25-yellow)
310+
### ![uk__UA](https://img.shields.io/badge/uk__UA-97.54%25-yellow)
305311

306312
<details>
307313
<summary>Missing keys in uk_UA.axaml</summary>
@@ -319,6 +325,7 @@ This document shows the translation status of each locale file in the repository
319325
- Text.CommitMessageTextBox.SubjectCount
320326
- Text.ConfigureWorkspace.Name
321327
- Text.Preferences.Git.IgnoreCRAtEOLInDiff
328+
- Text.Repository.Search.ByContent
322329
- Text.Repository.ViewLogs
323330
- Text.ViewLogs
324331
- Text.ViewLogs.Clear

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2025.15
1+
2025.16

src/App.axaml.cs

+1
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,7 @@ private void TryLaunchAsNormal(IClassicDesktopStyleApplicationLifetime desktop)
552552

553553
_launcher = new ViewModels.Launcher(startupRepo);
554554
desktop.MainWindow = new Views.Launcher() { DataContext = _launcher };
555+
desktop.ShutdownMode = ShutdownMode.OnMainWindowClose;
555556

556557
#if !DISABLE_UPDATE_DETECTION
557558
if (pref.ShouldCheck4UpdateOnStartup())

src/Commands/CountLocalChangesWithoutUntracked.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public CountLocalChangesWithoutUntracked(string repo)
88
{
99
WorkingDirectory = repo;
1010
Context = repo;
11-
Args = "--no-optional-locks status -uno --ignore-submodules=dirty --porcelain";
11+
Args = "--no-optional-locks status -uno --ignore-submodules=all --porcelain";
1212
}
1313

1414
public int Result()

src/Commands/Diff.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ private void ParseLine(string line)
105105
}
106106
else if (line.StartsWith("-size ", StringComparison.Ordinal))
107107
{
108-
_result.LFSDiff.Old.Size = long.Parse(line.AsSpan().Slice(6));
108+
_result.LFSDiff.Old.Size = long.Parse(line.AsSpan(6));
109109
}
110110
}
111111
else if (ch == '+')
@@ -116,12 +116,12 @@ private void ParseLine(string line)
116116
}
117117
else if (line.StartsWith("+size ", StringComparison.Ordinal))
118118
{
119-
_result.LFSDiff.New.Size = long.Parse(line.AsSpan().Slice(6));
119+
_result.LFSDiff.New.Size = long.Parse(line.AsSpan(6));
120120
}
121121
}
122122
else if (line.StartsWith(" size ", StringComparison.Ordinal))
123123
{
124-
_result.LFSDiff.New.Size = _result.LFSDiff.Old.Size = long.Parse(line.AsSpan().Slice(6));
124+
_result.LFSDiff.New.Size = _result.LFSDiff.Old.Size = long.Parse(line.AsSpan(6));
125125
}
126126
return;
127127
}

src/Commands/GitIgnore.cs

+7
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@ public static void Add(string repo, string pattern)
88
{
99
var file = Path.Combine(repo, ".gitignore");
1010
if (!File.Exists(file))
11+
{
1112
File.WriteAllLines(file, [pattern]);
13+
return;
14+
}
15+
16+
var org = File.ReadAllText(file);
17+
if (!org.EndsWith('\n'))
18+
File.AppendAllLines(file, ["", pattern]);
1219
else
1320
File.AppendAllLines(file, [pattern]);
1421
}

src/Commands/QueryCommits.cs

+10-6
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@ public QueryCommits(string repo, string filter, Models.CommitSearchMethod method
2626
{
2727
search += $"-i --committer=\"{filter}\"";
2828
}
29-
else if (method == Models.CommitSearchMethod.ByFile)
30-
{
31-
search += $"-- \"{filter}\"";
32-
}
33-
else
29+
else if (method == Models.CommitSearchMethod.ByMessage)
3430
{
3531
var argsBuilder = new StringBuilder();
3632
argsBuilder.Append(search);
@@ -45,10 +41,18 @@ public QueryCommits(string repo, string filter, Models.CommitSearchMethod method
4541

4642
search = argsBuilder.ToString();
4743
}
44+
else if (method == Models.CommitSearchMethod.ByFile)
45+
{
46+
search += $"-- \"{filter}\"";
47+
}
48+
else
49+
{
50+
search = $"-G\"{filter}\"";
51+
}
4852

4953
WorkingDirectory = repo;
5054
Context = repo;
51-
Args = $"log -1000 --date-order --no-show-signature --decorate=full --format=%H%n%P%n%D%n%aN±%aE%n%at%n%cN±%cE%n%ct%n%s " + search;
55+
Args = $"log -1000 --date-order --no-show-signature --decorate=full --format=%H%n%P%n%D%n%aN±%aE%n%at%n%cN±%cE%n%ct%n%s {search}";
5256
_findFirstMerged = false;
5357
}
5458

src/Commands/Statistics.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ private void ParseLine(Models.Statistics statistics, string line)
4040
if (dateEndIdx == -1)
4141
return;
4242

43-
var dateStr = line.AsSpan().Slice(0, dateEndIdx);
43+
var dateStr = line.AsSpan(0, dateEndIdx);
4444
if (double.TryParse(dateStr, out var date))
4545
statistics.AddCommit(line.Substring(dateEndIdx + 1), date);
4646
}

src/Converters/PathConverters.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.IO;
33

44
using Avalonia.Data.Converters;
@@ -22,7 +22,7 @@ public static class PathConverters
2222
var home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
2323
var prefixLen = home.EndsWith('/') ? home.Length - 1 : home.Length;
2424
if (v.StartsWith(home, StringComparison.Ordinal))
25-
return "~" + v.Substring(prefixLen);
25+
return $"~{v.AsSpan(prefixLen)}";
2626

2727
return v;
2828
});

src/Models/AvatarManager.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ private void LoadDefaultAvatar(string key, string img)
196196
private string GetEmailHash(string email)
197197
{
198198
var lowered = email.ToLower(CultureInfo.CurrentCulture).Trim();
199-
var hash = MD5.HashData(Encoding.Default.GetBytes(lowered).AsSpan());
199+
var hash = MD5.HashData(Encoding.Default.GetBytes(lowered));
200200
var builder = new StringBuilder(hash.Length * 2);
201201
foreach (var c in hash)
202202
builder.Append(c.ToString("x2"));

src/Models/Bisect.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ public enum BisectState
1414
public enum BisectCommitFlag
1515
{
1616
None = 0,
17-
Good = 1,
18-
Bad = 2,
17+
Good = 1 << 0,
18+
Bad = 1 << 1,
1919
}
2020

2121
public class Bisect

src/Models/Commit.cs

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public enum CommitSearchMethod
1313
ByCommitter,
1414
ByMessage,
1515
ByFile,
16+
ByContent,
1617
}
1718

1819
public class Commit

src/Models/DiffOption.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public static bool IgnoreCRAtEOL
1212
{
1313
get;
1414
set;
15-
} = false;
15+
} = true;
1616

1717
public Change WorkingCopyChange => _workingCopyChange;
1818
public bool IsUnstaged => _isUnstaged;

src/Models/DiffResult.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Collections.Generic;
1+
using System.Collections.Generic;
22
using System.Text;
33
using System.Text.RegularExpressions;
44

@@ -147,7 +147,7 @@ public TextDiffSelection MakeSelection(int startLine, int endLine, bool isCombin
147147
public void GenerateNewPatchFromSelection(Change change, string fileBlobGuid, TextDiffSelection selection, bool revert, string output)
148148
{
149149
var isTracked = !string.IsNullOrEmpty(fileBlobGuid);
150-
var fileGuid = isTracked ? fileBlobGuid.Substring(0, 8) : "00000000";
150+
var fileGuid = isTracked ? fileBlobGuid : "00000000";
151151

152152
var builder = new StringBuilder();
153153
builder.Append("diff --git a/").Append(change.Path).Append(" b/").Append(change.Path).Append('\n');

src/Models/DirtyState.cs

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
3+
namespace SourceGit.Models
4+
{
5+
[Flags]
6+
public enum DirtyState
7+
{
8+
None = 0,
9+
HasLocalChanges = 1 << 0,
10+
HasPendingPullOrPush = 1 << 1,
11+
}
12+
}

src/Models/ExternalMerger.cs

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ static ExternalMerger()
4343
new ExternalMerger(8, "codium", "VSCodium", "VSCodium.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
4444
new ExternalMerger(9, "p4merge", "P4Merge", "p4merge.exe", "-tw 4 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"", "-tw 4 \"$LOCAL\" \"$REMOTE\""),
4545
new ExternalMerger(10, "plastic_merge", "Plastic SCM", "mergetool.exe", "-s=\"$REMOTE\" -b=\"$BASE\" -d=\"$LOCAL\" -r=\"$MERGED\" --automatic", "-s=\"$LOCAL\" -d=\"$REMOTE\""),
46+
new ExternalMerger(11, "meld", "Meld", "Meld.exe", "\"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
4647
};
4748
}
4849
else if (OperatingSystem.IsMacOS())

src/Models/Worktree.cs

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using CommunityToolkit.Mvvm.ComponentModel;
1+
using System;
2+
using CommunityToolkit.Mvvm.ComponentModel;
23

34
namespace SourceGit.Models
45
{
@@ -22,12 +23,12 @@ public string Name
2223
get
2324
{
2425
if (IsDetached)
25-
return $"deteched HEAD at {Head.Substring(10)}";
26+
return $"deteched HEAD at {Head.AsSpan(10)}";
2627

27-
if (Branch.StartsWith("refs/heads/", System.StringComparison.Ordinal))
28+
if (Branch.StartsWith("refs/heads/", StringComparison.Ordinal))
2829
return Branch.Substring(11);
2930

30-
if (Branch.StartsWith("refs/remotes/", System.StringComparison.Ordinal))
31+
if (Branch.StartsWith("refs/remotes/", StringComparison.Ordinal))
3132
return Branch.Substring(13);
3233

3334
return Branch;

src/Resources/Locales/de_DE.axaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@
236236
<x:String x:Key="Text.Diff.Binary.Old" xml:space="preserve">ALT</x:String>
237237
<x:String x:Key="Text.Diff.Copy" xml:space="preserve">Kopieren</x:String>
238238
<x:String x:Key="Text.Diff.FileModeChanged" xml:space="preserve">Dateimodus geändert</x:String>
239-
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignoriere Leerzeichenänderungen und EOL</x:String>
239+
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignoriere Leerzeichenänderungen</x:String>
240240
<x:String x:Key="Text.Diff.LFS" xml:space="preserve">LFS OBJEKT ÄNDERUNG</x:String>
241241
<x:String x:Key="Text.Diff.Next" xml:space="preserve">Nächste Änderung</x:String>
242242
<x:String x:Key="Text.Diff.NoChange" xml:space="preserve">KEINE ÄNDERUNG ODER NUR ZEILEN-ENDE ÄNDERUNGEN</x:String>

src/Resources/Locales/en_US.axaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@
253253
<x:String x:Key="Text.Diff.Copy" xml:space="preserve">Copy</x:String>
254254
<x:String x:Key="Text.Diff.FileModeChanged" xml:space="preserve">File Mode Changed</x:String>
255255
<x:String x:Key="Text.Diff.First" xml:space="preserve">First Difference</x:String>
256-
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignore Whitespace Change and EOL</x:String>
256+
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignore All Whitespace Changes</x:String>
257257
<x:String x:Key="Text.Diff.Last" xml:space="preserve">Last Difference</x:String>
258258
<x:String x:Key="Text.Diff.LFS" xml:space="preserve">LFS OBJECT CHANGE</x:String>
259259
<x:String x:Key="Text.Diff.Next" xml:space="preserve">Next Difference</x:String>
@@ -605,6 +605,7 @@
605605
<x:String x:Key="Text.Repository.Search" xml:space="preserve">Search Commit</x:String>
606606
<x:String x:Key="Text.Repository.Search.ByAuthor" xml:space="preserve">Author</x:String>
607607
<x:String x:Key="Text.Repository.Search.ByCommitter" xml:space="preserve">Committer</x:String>
608+
<x:String x:Key="Text.Repository.Search.ByContent" xml:space="preserve">Content</x:String>
608609
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">File</x:String>
609610
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">Message</x:String>
610611
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">SHA</x:String>

src/Resources/Locales/es_ES.axaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@
257257
<x:String x:Key="Text.Diff.Copy" xml:space="preserve">Copiar</x:String>
258258
<x:String x:Key="Text.Diff.FileModeChanged" xml:space="preserve">Modo de Archivo Cambiado</x:String>
259259
<x:String x:Key="Text.Diff.First" xml:space="preserve">Primera Diferencia</x:String>
260-
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignorar Cambio de Espacios en Blanco y EOL</x:String>
260+
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignorar Cambio de Espacios en Blanco</x:String>
261261
<x:String x:Key="Text.Diff.Last" xml:space="preserve">Última Diferencia</x:String>
262262
<x:String x:Key="Text.Diff.LFS" xml:space="preserve">CAMBIO DE OBJETO LFS</x:String>
263263
<x:String x:Key="Text.Diff.Next" xml:space="preserve">Siguiente Diferencia</x:String>
@@ -609,6 +609,7 @@
609609
<x:String x:Key="Text.Repository.Search" xml:space="preserve">Buscar Commit</x:String>
610610
<x:String x:Key="Text.Repository.Search.ByAuthor" xml:space="preserve">Autor</x:String>
611611
<x:String x:Key="Text.Repository.Search.ByCommitter" xml:space="preserve">Committer</x:String>
612+
<x:String x:Key="Text.Repository.Search.ByContent" xml:space="preserve">Contenido</x:String>
612613
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">Archivo</x:String>
613614
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">Mensaje</x:String>
614615
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">SHA</x:String>

src/Resources/Locales/fr_FR.axaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@
241241
<x:String x:Key="Text.Diff.Copy" xml:space="preserve">Copier</x:String>
242242
<x:String x:Key="Text.Diff.FileModeChanged" xml:space="preserve">Mode de fichier changé</x:String>
243243
<x:String x:Key="Text.Diff.First" xml:space="preserve">Première différence</x:String>
244-
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignorer les changements d'espaces et EOL</x:String>
244+
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignorer les changements d'espaces</x:String>
245245
<x:String x:Key="Text.Diff.Last" xml:space="preserve">Dernière différence</x:String>
246246
<x:String x:Key="Text.Diff.LFS" xml:space="preserve">CHANGEMENT D'OBJET LFS</x:String>
247247
<x:String x:Key="Text.Diff.Next" xml:space="preserve">Différence suivante</x:String>

src/Resources/Locales/it_IT.axaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@
240240
<x:String x:Key="Text.Diff.Copy" xml:space="preserve">Copia</x:String>
241241
<x:String x:Key="Text.Diff.FileModeChanged" xml:space="preserve">Modalità File Modificata</x:String>
242242
<x:String x:Key="Text.Diff.First" xml:space="preserve">Prima differenza</x:String>
243-
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignora Modifiche agli Spazi e EOL</x:String>
243+
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">Ignora Modifiche agli Spazi</x:String>
244244
<x:String x:Key="Text.Diff.Last" xml:space="preserve">Ultima differenza</x:String>
245245
<x:String x:Key="Text.Diff.LFS" xml:space="preserve">MODIFICA OGGETTO LFS</x:String>
246246
<x:String x:Key="Text.Diff.Next" xml:space="preserve">Differenza Successiva</x:String>

0 commit comments

Comments
 (0)