Web: Added not found keys in 'de' language translation files (fix NotTranslatedKeysTest issue)
This commit is contained in:
parent
061b4e46e7
commit
7beccd192b
@ -268,7 +268,7 @@ namespace Frontend.Translations.Tests
|
||||
Assert.AreEqual(0, duplicates.Count, string.Join(", ", duplicates.Select(d => JObject.FromObject(d).ToString())));
|
||||
}
|
||||
|
||||
private static void SaveNotFoundLanguage(string existJsonPath, string notExistJsonPath)
|
||||
public static void SaveNotFoundLanguage(string existJsonPath, string notExistJsonPath)
|
||||
{
|
||||
if (!File.Exists(existJsonPath) || File.Exists(notExistJsonPath))
|
||||
return;
|
||||
@ -343,53 +343,70 @@ namespace Frontend.Translations.Tests
|
||||
Assert.AreEqual(0, incompleteList.Count, message);
|
||||
}
|
||||
|
||||
public static void SaveNotFoundKeys(string pathToJson, List<string> newKeys)
|
||||
{
|
||||
if (!File.Exists(pathToJson))
|
||||
return;
|
||||
|
||||
var jsonTranslation = JObject.Parse(File.ReadAllText(pathToJson));
|
||||
|
||||
var properties = jsonTranslation.Properties().Select(t => t).ToList();
|
||||
|
||||
properties.AddRange(newKeys.Select(k => new JProperty(k, ""))); //.ForEach(p => p.Value = "");
|
||||
|
||||
properties = properties.OrderBy(t => t.Name).ToList();
|
||||
|
||||
var result = new JObject(properties);
|
||||
|
||||
var sortedJsonString = JsonConvert.SerializeObject(result, Formatting.Indented);
|
||||
|
||||
File.WriteAllText(pathToJson, sortedJsonString);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void NotTranslatedKeysTest()
|
||||
{
|
||||
var groupedByLng = TranslationFiles
|
||||
.GroupBy(t => t.Language)
|
||||
.Select(grp => new
|
||||
var message = $"Next languages are not equal 'en' by translated keys count:\r\n\r\n";
|
||||
|
||||
var exists = false;
|
||||
|
||||
var i = 0;
|
||||
|
||||
foreach (var module in ModuleFolders)
|
||||
{
|
||||
Lng = grp.Key,
|
||||
Keys = grp
|
||||
.SelectMany(k => k.Translations)
|
||||
.OrderByDescending(itm => itm.Key)
|
||||
.ToList()
|
||||
})
|
||||
if (module.AvailableLanguages == null)
|
||||
continue;
|
||||
|
||||
var enLanguages = module.AvailableLanguages.Where(l => l.Language == "en").ToList();
|
||||
|
||||
var otherLanguages = module.AvailableLanguages.Where(l => l.Language != "en").ToList();
|
||||
|
||||
foreach (var lng in otherLanguages)
|
||||
{
|
||||
var lngKeys = lng.Translations.Select(f => f.Key).ToList();
|
||||
|
||||
var enKeys = enLanguages.Where(l => l.Path == lng.Path.Replace($"\\{lng.Language}\\", "\\en\\"))
|
||||
.SelectMany(l => l.Translations.Select(f => f.Key))
|
||||
.ToList();
|
||||
|
||||
var enGroup = groupedByLng.Find(f => f.Lng == "en");
|
||||
var notFoundKeys = enKeys.Except(lngKeys).ToList();
|
||||
|
||||
var expectedCount = enGroup.Keys.Count;
|
||||
if (!notFoundKeys.Any())
|
||||
continue;
|
||||
|
||||
var otherLngs = groupedByLng.Where(g => g.Lng != "en");
|
||||
exists = true;
|
||||
|
||||
var incompleteList = otherLngs
|
||||
.Where(lng => lng.Keys.Count != expectedCount)
|
||||
.Select(lng => new { Issue = $"Language '{lng.Lng}' (Count={lng.Keys.Count}). Not found keys:\r\n", lng.Lng, lng.Keys })
|
||||
.ToList();
|
||||
|
||||
var message = $"Next languages are not equal 'en' (Count= {expectedCount}) by translated keys count:\r\n\r\n";
|
||||
|
||||
if (incompleteList.Count > 0)
|
||||
{
|
||||
var enKeys = enGroup.Keys.Select(f => f.Key);
|
||||
|
||||
for (int i = 0; i < incompleteList.Count; i++)
|
||||
{
|
||||
var lng = incompleteList[i];
|
||||
|
||||
message += $"{i}. {lng.Issue}\r\n";
|
||||
|
||||
var lngKeys = lng.Keys.Select(f => f.Key).ToList();
|
||||
|
||||
var notFoundKeys = enKeys.Except(lngKeys);
|
||||
message += $"{++i}. Language ('{lng.Language}'={notFoundKeys.Count}/'en'={enKeys.Count}). Path '{lng.Path}' " +
|
||||
$"Not found keys:\r\n\r\n";
|
||||
|
||||
message += string.Join("\r\n", notFoundKeys) + "\r\n\r\n";
|
||||
|
||||
// Save empty not found keys
|
||||
//SaveNotFoundKeys(lng.Path, notFoundKeys);
|
||||
}
|
||||
}
|
||||
|
||||
Assert.AreEqual(0, incompleteList.Count, message);
|
||||
Assert.AreEqual(false, exists, message);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
"AddAccount": "",
|
||||
"ArchivingData": "Archivieren der Daten",
|
||||
"ConnectingAccount": "Konto wird verbunden",
|
||||
"Copy": "Kopieren",
|
||||
@ -18,5 +19,6 @@
|
||||
"Presentations": "Präsentationen",
|
||||
"Restore": "Wiederherstellen",
|
||||
"Spreadsheets": "Tabellenkalkulationen",
|
||||
"ThirdPartyInfo": "",
|
||||
"UploadingLabel": "Dateien hochgeladen: {{file}} von {{totalFiles}}"
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
"ChangeToGuest": "Zu {{guestCaption}} ändern",
|
||||
"ChangeToUser": "Zu {{userCaption}} ändern",
|
||||
"EmptyGroupDescription": "Sie können neue Teammitglieder manuell oder über den Link einladen.",
|
||||
"EmptyGroupTitle": "",
|
||||
"LblInviteAgain": "Erneut einladen",
|
||||
"LblInvited": "Eingeladen",
|
||||
"LblOther": "Sonstiges",
|
||||
|
@ -2,12 +2,17 @@
|
||||
"Birthdate": "Geburtsdatum",
|
||||
"ChangeEmailSuccess": "E-Mail wurde erfolgreich geändert",
|
||||
"ChangesApplied": "Die Änderungen wurden übernommen",
|
||||
"Connect": "",
|
||||
"ContactInformation": "Kontaktdaten",
|
||||
"Disconnect": "",
|
||||
"EditPhoto": "Bild bearbeiten",
|
||||
"EditSubscriptionsBtn": "Abonnements bearbeiten",
|
||||
"EditUser": "Profil bearbeiten",
|
||||
"InviteAgainLbl": "Erneut einladen",
|
||||
"LoginSettings": "",
|
||||
"MessageEmailActivationInstuctionsSentOnEmail": "Die Hinweise für die Aktivierung wurden an <strong>{{ email }}</strong> versandt.",
|
||||
"PhoneLbl": "Telefon",
|
||||
"ProviderSuccessfullyConnected": "",
|
||||
"ProviderSuccessfullyDisconnected": "",
|
||||
"Subscriptions": "Abonnements"
|
||||
}
|
@ -8,6 +8,7 @@
|
||||
"ChangeButton": "Ändern",
|
||||
"ChangesSavedSuccessfully": "Änderungen wurden gespeichert",
|
||||
"ContactInformation": "Kontaktdaten",
|
||||
"CopiedResourceText": "",
|
||||
"CustomCreation": "{{user}} (Erstellung)",
|
||||
"EditPhoto": "Bild bearbeiten",
|
||||
"EditUserDialogTitle": "Profil bearbeiten",
|
||||
|
@ -5,5 +5,6 @@
|
||||
"RecoverContactEmailPlaceholder": "E-Mail-Adresse",
|
||||
"RecoverDescribeYourProblemPlaceholder": "Bitte Problem beschreiben",
|
||||
"RecoverTextBody": "Wenn Sie sich mit Ihren Anmeldeinformationen nicht einloggen können oder ein neues Profil erstellen möchten, wenden Sie sich an den Administrator des Portals.",
|
||||
"RecoverTitle": "Zugriffswiederherstellung"
|
||||
"RecoverTitle": "Zugriffswiederherstellung",
|
||||
"TurnOnDesktopVersion": ""
|
||||
}
|
@ -6,15 +6,22 @@
|
||||
"AccessRightsOwnerOpportunities": "Dieselben Operationen wie die Moduladministratoren durchführen|Moduladministratoren bestimmen|Modulzugriffsrechte bestimmen|Portal einrichten|Benutzerprofile verwalten|Portalbesitzer ändern|Backup von Portaldaten erstellen|Portal deaktivieren oder löschen",
|
||||
"AccessRightsProductUsersCan": "Im Modul {{category}} Portalbenutzer können",
|
||||
"AccessRightsUsersFromList": "{{users}} aus der Liste",
|
||||
"AddName": "",
|
||||
"Backup": "Backup",
|
||||
"BrowserNoCanvasSupport": "Ihr Browser unterstützt die HTML5 Canvas-Tag nicht.",
|
||||
"ChangeLogoButton": "Logo ändern",
|
||||
"ChooseOwner": "Besitzer wählen",
|
||||
"CompanyNameForCanvasLogo": "Name des Unternehmens",
|
||||
"ConfirmEmailSended": "",
|
||||
"Customization": "Anpassung",
|
||||
"CustomTitles": "Benutzerdefinierte Titel",
|
||||
"CustomTitlesSettingsDescription": "Wird auf Ihrer Begrüßungsseite angezeigt und für E-Mail-Benachrichtigungen verwendet (im Feld \"Von\"). Mit dem benutzerdefinierten Domainnamen können Sie eine andere URL für Ihr Portal festlegen. Der Name des benutzerdefinierten Portals wird neben der Adresse onlyoffice.com/onlyoffice.eu angezeigt.",
|
||||
"Employees": "Benutzer",
|
||||
"Group": "",
|
||||
"GroupLead": "",
|
||||
"Groups": "",
|
||||
"Guests": "",
|
||||
"Job/Title": "",
|
||||
"LanguageAndTimeZoneSettingsDescription": "Die Sprache für alle Portalbenutzer ändern und Zeitzone konfigurieren, so dass alle Veranstaltungen mit richtigen Daten und Uhrzeiten angezeigt werden.",
|
||||
"LogoDark": "Logo für die Login- und Informationsseite",
|
||||
"LogoDocsEditor": "Logo für Kopfzeile der Editoren",
|
||||
@ -29,8 +36,11 @@
|
||||
"NotFoundDescription": "Filterungsoptionen ändern und Personen zu diesem Bereich hinzufügen.",
|
||||
"NotFoundTitle": "Keine Suchergebnisse",
|
||||
"PeopleAdmin": "Administrator des Moduls Personen",
|
||||
"PortalAdmins": "",
|
||||
"PortalAdminsDescription": "",
|
||||
"PortalOwner": "Portalbesitzer",
|
||||
"ProductUserOpportunities": "Profile und Gruppen anschauen",
|
||||
"RegistrationDate": "",
|
||||
"RestoreDefaultButton": "Standardmäßige Einstellungen",
|
||||
"SetDefaultTitle": "Standardtitel setzen",
|
||||
"SetPeopleAdmin": "Administrator des Moduls Personen auswählen",
|
||||
@ -38,6 +48,9 @@
|
||||
"StudioTimeLanguageSettings": "Sprach- und Zeitzoneneinstellungen",
|
||||
"SuccessfullySaveGreetingSettingsMessage": "Die Begrüßungseinstellungen wurden gespeichert",
|
||||
"SuccessfullySaveSettingsMessage": "Die Einstellungen wurden erfolgreich aktualisiert",
|
||||
"TeamTemplate": "",
|
||||
"TeamTemplateSettingsDescription": "",
|
||||
"Template": "",
|
||||
"ThirdPartyAuthorization": "Dienste von Drittanbietern",
|
||||
"ThirdPartyBodyDescription": "Weitere Informationen finden Sie im <2>Hilfe-Center</2>.",
|
||||
"ThirdPartyBottomDescription": "Brauchen Sie Hilfe? Bitte an unser <2>Support-Team</2> wenden.",
|
||||
@ -47,6 +60,7 @@
|
||||
"ThirdPartyTitleDescription": "Mit Berechtigungsschlüsseln können Sie Ihr Portal mit den Drittleistungen verbinden. Loggen Sie sich einfacher mit Facebook, Twitter oder LinkedIn. Fügen Sie Dropbox, OneDrive usw. hinzu, um mit dort gespeicherten Dateien aus dem Modul Dokumente zu arbeiten.",
|
||||
"TimeZone": "Zeitzone",
|
||||
"UseAsLogoButton": "Als Logo verwenden",
|
||||
"Users": "",
|
||||
"WelcomePageTitle": "Titel der Begrüßungsseite",
|
||||
"YouHaveUnsavedChanges": "Sie haben nicht gespeicherte Änderungen."
|
||||
}
|
Loading…
Reference in New Issue
Block a user